Light version of convolutional neural network Yolo v3 & v2 for objects detection with a minimum of dependencies (INT8-inference, BIT1-XNOR-inference)
This repository supports:
- both Windows and Linux
- both OpenCV <= 3.3.0 and OpenCV 2.4.13
- both cuDNN >= 7.1.1
- CUDA >= 8.0
How to compile:
-
To compile for CPU just do
make
on Linux or buildyolo_cpu.sln
on Windows -
To compile for GPU set flag
GPU=1
in theMakefile
on Linux or buildyolo_gpu.sln
on WindowsRequired both CUDA >= 8.0 and cuDNN >= 7.1.1
How to start:
- Download
yolov3.weights
to thebin
directory and run./yolo.sh
on Linux (oryolo_cpu.cmd
/yolo_gpu.cmd
on Windows) - Download
yolov3-tiny.weights
to thebin
directory and run./tiny-yolo.sh
How to use INT8-inference:
- Use flag
-quantized
at the end of command, for example,tiny-yolo-int8.sh
oryolo_cpu_int8.cmd
- For the custom dataset, you should use
input_calibration=
parameter in your cfg-file, from the correspon cfg-file:yolov3-tiny.cfg
oryolov3.cfg
, ...
How to use BIT1-XNOR-inference - only for custom models (you should train it by yourself):
- You should base your cfg-file on
yolov3-spp_xnor_obj.cfg
and train it by using this repository as usual https://github.com/AlexeyAB/darknet by using pre-trained filedarknet53_448_xnor.conv.74
- Then use it for Detection-test or for getting Accuracy (mAP):
./darknet detector test data/obj.names yolov3-spp_xnor_obj.cfg data/yolov3-spp_xnor_obj_5000.weights -thresh 0.15 dog.jpg
./darknet detector map data/obj.data yolov3-spp_xnor_obj.cfg data/yolov3-spp_xnor_obj_5000.weights -thresh 0.15
Other models by the link: https://pjreddie.com/darknet/yolo/