 C++ Library with Neural Networks for Object
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.
