C++ Library with Neural Networks for Object
Detection Based on LibTorch.
Visit Libtorch Tutorials Project if you want to know more about Libtorch Detection library.
- Download the VOC image dataset, and split the dataset into train and val parts as follows:
dataset
├── train
│ ├── images
| | ├──xxx.jpg
| | └......
│ ├── labels
| | ├──xxx.xml
| | └......
├── val
│ ├── images
| | ├──zzz.jpg
| | └......
│ ├── labels
| | ├──zzz.xml
| | └......
- Download the yolo4_tiny pretrained weight here. And load it into your cpp project as follows:
Detector detector;
detector.Initialize(-1, /*gpu id, -1 for cpu*/
416, /*resize width*/
416, /*resize height*/
"your path to class name.txt");
detector.Train("your path to dataset dir",
".jpg", /*image type*/
30,/*training epochs*/
4, /*batch size*/
0.001, /*learning rate*/
"path to save detector.pt",
"path to load pretrained yolo4_tiny.pt");
- Predicting test. A detector.pt file is provided in the project here (trained on VOC for one epoch, just for testing...). Click and download, then you can directly test the detection result through:
cv::Mat image = cv::imread("your path to 2007_005331.jpg");
Detector detector;
detector.Initialize(0, 416, 416, "your path to voc_classes.txt");
detector.LoadWeight("detector.pt"/*the saved .pt path*/);
detector.Predict(image, true,/*show result or not*/, 0.1, /*confidence thresh*/, 0.3/*nms thresh*/);
the predicted result shows as follow:
-
Create your own dataset. Using labelImg through "pip install" and label your images. Split the output xml files and images into folders just like the example above.
-
Training or testing. Just like the example of VOC detection, replace with your own dataset path.
Dependency:
Windows:
Configure the environment for libtorch development. Visual studio and Qt Creator are verified for libtorch1.7+.
Linux && MacOS:
Install libtorch and opencv.
For libtorch, follow the official pytorch c++ tutorials here.
For opencv, follow the official opencv install steps here.
If you have already configured them both, congratulations!!! Download the pretrained weight here and a demo .pt file here into weights. Then just do the following:
export Torch_DIR='/path/to/libtorch'
cd build
cmake ..
make
./LibtorchDetection
- More detection architectures, mainly one-stage algorithms.
- Data augmentations.
- Training tricks.
This project is under developing. By now, these projects helps a lot.
@misc{Chunyu:2021,
Author = {Chunyu Dong},
Title = {Libtorch Detection},
Year = {2021},
Publisher = {GitHub},
Journal = {GitHub repository},
Howpublished = {\url{https://github.com/AllentDan/LibtorchDetection}}
}
Project is distributed under MIT License.
Based on libtorch, I released following repositories:
Last but not least, don't forget your star...
Feel free to commit issues or pull requests, contributors wanted.