摘要:工作原理以前的检测系统通过重复利用分类器和定位器来实现目标识别。修改检测阈值缺省情况下,只显示信心大于的对象。用法如下这个,呵呵,不完美把白马识别成绵羊了,把黑狗识别成奶牛了,但确实很快。
原标题:YOLO: Real-Time Object Detection
英文原文:https://pjreddie.com/darknet/...强烈推荐(TED视频):https://www.ted.com/talks/jos...
You only look once (YOLO)是目前最先进的实时对象检测系统。在一台Titan X上它能实时处理40-90帧每秒的图像,并且准确率高达78.6%(VOC 2007)和48.1%(COCO test-dev)。
Model Train Test mAP FLOPS FPS Cfg Weights Old YOLO VOC 2007+2012 2007 63.4 40.19 Bn 45 link SSD300 VOC 2007+2012 2007 74.3 - 46 link SSD500 VOC 2007+2012 2007 76.8 - 19 link YOLOv2 VOC 2007+2012 2007 76.8 34.90 Bn 67 cfg weights YOLOv2 544x544 VOC 2007+2012 2007 78.6 59.68 Bn 40 cfg weights Tiny YOLO VOC 2007+2012 2007 57.1 6.97 Bn 207 cfg weights SSD300 COCO trainval test-dev 41.2 - 46 link SSD500 COCO trainval test-dev 46.5 - 19 link YOLOv2 608x608 COCO trainval test-dev 48.1 62.94 Bn 40 cfg weights Tiny YOLO COCO trainval - - 7.07 Bn 200 cfg weights工作原理
以前的检测系统通过重复利用分类器和定位器来实现目标识别。它们把模型套在图像的不同位置和大小区域,通过图像各区域的最高分值来判定结果。
我们使用了完全不同的方法。我们通过把一个多带带的神经网络放在整个图像上来进行识别。这个网络把图像分成区域并对边框和各区域的可能性进行预测。这些边框通过预测到的可能性进行加权。
我们的模型相比于基于分类器的系统有几个优势。它在测试时观察整个图像,所以它的预测是基于整个图像上下文的。并且它通过一个单一网络进行预测,不像那些R-CNN系统需要对一幅图像运用上千的网络。这一特点使我们的系统超级快,速度是R-CNN的上千倍,一百倍快于快速R-CNN。想对全系统有更深入了解,可以阅读我们的论文。
使用预先训练好的模型进行预测下面带你使用预先训练好的模型通过YOLO系统进行对象检测。如果你还没有安装Darknet的话,你可以通过以下命令安装:
git clone https://github.com/pjreddie/darknet cd darknet make
就是这么简单!
cfg/子目录下已经预置好了YOLO的配置文件。你还需要下载预先训练好的权重文件(258 MB):
wget https://pjreddie.com/media/files/yolo.weights
然后就可以开始运行检测器了!
./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版本的话,所需时间会短得多。
我在这里提供了其它几幅图像,如果你感兴趣可以逐一尝试一下。试试data/eagle.jpg, data/dog.jpg, data/person.jpg和data/horses.jpg吧!
上面那个命令里的detect是一个更通用命令的精简版,它等价于下面这个命令:
./darknet detector test cfg/coco.data cfg/yolo.cfg yolo.weights data/dog.jpg
如果你只是想在一幅图像上进行检测的话,你不需要了解这些。但如果你想在摄像头上进行检测的话,这个命令还是非常有用的。后面我们会讲如何在摄像头上进行实时检测。
多幅图像除了在命令行提供文件名进行一幅图像检测以外,你也可以不输入文件名,这样就可以进行多幅图像检测了。配置和权重文件加载完成后,系统会提示你输入文件名:
./darknet detect cfg/yolo.cfg yolo.weights 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! Enter Image Path:
在这里输入图像文件名如data/horses.jpg就可以对这幅图像进行检测。
检测完成后系统会提示你输入其它图像的文件名。全部检测完成后按下Ctrl-C来退出。
修改检测阈值缺省情况下,YOLO只显示信心大于.25的对象。你可以通过附加-thresh
./darknet detect cfg/yolo.cfg yolo.weights data/dog.jpg -thresh 0
结果如下:
这样的结果似乎没什么用,不过你可以通过修改为不同数值来控制模型检测的结果。
Tiny YOLOTiny YOLO是基于Darknet参考网络的非常快速但准确率不如常规YOLO的模型。用法如下:
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
这个,呵呵,不完美(把白马识别成绵羊了,把黑狗识别成奶牛了),但确实很快。在GPU版本上,它能处理超过200帧每秒的图像。
摄像头实时检测在测试数据上运行YOLO没什么意思,无法直接看到结果。下面我们让它来直接处理摄像头的输入!
要运行这个示例,你需要把Darknet和CUDA和OpenCV集成编译,然后运行以下命令:
./darknet detector demo cfg/coco.data cfg/yolo.cfg yolo.weights
YOLO显示当前帧率并在它检测到的对象上加上方框。
你必须在电脑上安装好摄像头连接到OpenCV,否则没法工作。如果你有多个摄像头,可以通过-c
你也可以让它对一段视频进行处理:
./darknet detector demo cfg/coco.data cfg/yolo.cfg yolo.weights
下面这段Youtube视频就是这么处理的:
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/40687.html
摘要:工作原理以前的检测系统通过重复利用分类器和定位器来实现目标识别。修改检测阈值缺省情况下,只显示信心大于的对象。用法如下这个,呵呵,不完美把白马识别成绵羊了,把黑狗识别成奶牛了,但确实很快。 原标题:YOLO: Real-Time Object Detection英文原文:https://pjreddie.com/darknet/... 强烈推荐(TED视频):https://www....
摘要:等一下,什么样的神经网络才算是小型的哈哈这不一定,会随着时间改变。我们一般是依照神经网络之间的连接数划分。训练的神经网络的连接数量一般可以达到几百亿。许多语言学家对此表示强烈的不满,甚至公开地向我表示反对。 在原文作者Caleb Garling对话吴恩达时,他刚结束在旧金山的深度学习大会,这名斯坦福深度学习教授,前Google Brain负责人,Coursera的创始人和现任百度首席科学家在...
摘要:但是如果你和我是一样的人,你想自己攒一台奇快无比的深度学习的电脑。可能对深度学习最重要的指标就是显卡的显存大小。性能不错,不过够贵,都要美元以上,哪怕是旧一点的版本。电源我花了美元买了一个的电源。也可以安装,这是一个不同的深度学习框架。 是的,你可以在一个39美元的树莓派板子上运行TensorFlow,你也可以在用一个装配了GPU的亚马逊EC2的节点上跑TensorFlow,价格是每小时1美...
摘要:学习笔记七数学形态学关注的是图像中的形状,它提供了一些方法用于检测形状和改变形状。学习笔记十一尺度不变特征变换,简称是图像局部特征提取的现代方法基于区域图像块的分析。本文的目的是简明扼要地说明的编码机制,并给出一些建议。 showImg(https://segmentfault.com/img/bVRJbz?w=900&h=385); 前言 开始之前,我们先来看这样一个提问: pyth...
阅读 2942·2023-04-25 19:20
阅读 785·2021-11-24 09:38
阅读 2039·2021-09-26 09:55
阅读 2430·2021-09-02 15:11
阅读 2013·2019-08-30 15:55
阅读 3610·2019-08-30 15:54
阅读 3147·2019-08-30 14:03
阅读 2961·2019-08-29 17:11