【YOLO】实时对象检测使用体验
官网:https://pjreddie.com/darknet/yolo/
以下全部在服务器上完成,服务器上是有opencv等。
1.安装Darknet
git clone https://github.com/pjreddie/darknet cd darknet make
2.下载预先训练的权重文件(258 MB)。或者只是运行这个:
wget https://pjreddie.com/media/files/yolo.weights
3.运行检测器
./darknet detect cfg/yolo.cfg yolo.weights data/dog.jpg
你会看到一些这样的输出:
layer filters size input output 0 conv 32 3 x 3 / 1 416 x 416 x 3 -> 416 x 416 x 32 1 max 2 x 2 / 2 416 x 416 x 32 -> 208 x 208 x 32 ....... 29 conv 425 1 x 1 / 1 13 x 13 x1024 -> 13 x 13 x 425 30 detection Loading weights from yolo.weights...Done! data/dog.jpg: Predicted in 0.016287 seconds. car: 54% bicycle: 51% dog: 56%
Darknet打印出它检测到的对象,它的信心,以及找到它们需要多长时间。我们没有编译Darknet,OpenCV
所以它不能直接显示检测。目录下predictions.png可看到上图
。您可以打开它来查看检测到的对象。由于我们在CPU上使用了Darknet,所以每个图像需要大约6-12秒。如果我们使用GPU版本,会更快。
4.下面是使用GPU需要修改的命令
不要忘了修改目录下的makefile! GPU,cudnn,opencv设为1 make后重新跑一次(必须make)
这是我服务器跑的结果,没设置GPU的话用了50s。因为设置了opencv,所以直接弹出了图片。
5.更改检测阈值(可选)
默认情况下,YOLO仅显示以0.25以上的置信度检测到的对象。您可以通过将该-thresh <val>
标志传递给该yolo
命令来进行更改。例如,要显示所有检测,您可以将阈值设置为0:
./darknet detect cfg/yolo.cfg yolo.weights data/dog.jpg -thresh 0
6.small yolo(可选)
微型YOLO基于Darknet参考网络,并且比正常的YOLO型号快得多但不太准确。使用VOC训练的版本:
wget https://pjreddie.com/media/files/tiny-yolo-voc.weights ./darknet detector test cfg/voc.data cfg/tiny-yolo-voc.cfg tiny-yolo-voc.weights data/dog.jpg
7.如果OpenCV可以读取视频,也可以在视频文件上运行它:(可选)
./darknet detector demo cfg/coco.data cfg/yolo.cfg yolo.weights <video file>
关于一次性检测多张图片和训练自己的模型后续加入。