缺点 yolo_SAST Weekly | 初探YOLO

d77764a64fc9232967f2ba24de917fbd.png 65dc2b4205bf255dd8e4e1302e8aa829.png 603015dc1981506242dbd6d40fe3dcd5.png

SAST Weekly 是由电子工程系学生科协推出的科技系列推送,内容涵盖信息领域技术科普、研究前沿热点介绍、科技新闻跟进探索等多个方面,帮助同学们增长姿势,开拓眼界,每周更新,欢迎关注!欢迎愿意分享知识的同学投稿至 eesast@mail.tsinghua.edu.cn , 期待你的作品!

d0431f395163f366024da30965809222.png 0df5039a7dcb3502d1f80aa64f9e3799.png 570585978538ea5770e47d77195eb530.gif

什么是YOLO

fe9df9c75b5c8badad59d4fa52647759.gif

YOLO是“You Only Look Once”的简称,是继R-CNN,fast-RCNN 和 faster-RCNN之后的又一个深度学习目标检测框架。YOLO 的核心思想就是利用整张图作为网络的输入,直接在输出层回归边界框的位置和类别。相较于之前的框架,YOLO的速度要上许多,不过准确率仍有待提升(不过在后人的努力下,YOLO的准确率较最初已经有了很大进步)。

d420f40acbd529f4a73f99382724d1fa.png 4dcd7d5544969cfc2adfa461012f4371.gif

YOLO的网络结构

d2e2be00fe5000d77f12e7e3adeda42d.gif b2cbb70d54fa9c3e48cf4758fec09bf4.png

YOLO的整体架构如上图所示,包含了三个部分:(1)将输入图像的大小调整为448×448(2)在图像上运行单个卷积网络(3)根据模型的置信度对得到的检测进行阈值化。

4b7d187ecdbee0d37b6bedf71f144eda.png

检测网络包括24个卷积层和2个全连接层,具体细节可以参看上图。YOLO网络借鉴了GoogLeNet分类网络结构。不同的是,YOLO未使用inception module。

4b9618f308455d66eb82c42ad61f8459.gif

具体实现细节(部分)

YOLO将输入图像分成SxS个格子,每个格子负责检测‘落入’该格子的物体。若某个物体的中心位置的坐标落入到某个格子,那么这个格子就负责检测出这个物体。

每个格子输出B个bounding box的信息,以及C个物体属于某种类别的概率信息。其中,每个bounding box包含了x,y,w,h以及confidence共5个数据,其中x,y是指当前格子预测得到的物体的bounding box的中心位置的坐标。w,h是bounding box的宽度和高度。Confidence反映当前bounding box是否包含物体以及物体位置的准确性,计算公式如下图所示:

1883fa6ef3d88622f509db404970eedf.png

这里,IOU(intersection over union)为预测bounding box与物体真实区域的交集面积

因此,YOLO网络最终的全连接层的输出维度是 S*S*(B*5 + C)。YOLO论文中,作者训练采用的输入图像分辨率是448x448,S=7,B=2;采用VOC 20类标注物体作为训练数据,C=20。因此输出为7*7*(20 + 2*5)=1470维的张量。

4b9618f308455d66eb82c42ad61f8459.gif

效果

下表给出了YOLO与其他物体检测方法,在检测速度和准确性方面的比较结果(使用VOC 2007数据集)。

57ca5ccb3b3786f62071a80265b3d487.png

不难看出,在该数据集下,YOLO的速度比R-CNN系列的框架要快上非常多。

bffea414f5c8d1ab16ad856deeb4f069.png 4b9618f308455d66eb82c42ad61f8459.gif

优点&缺点

先说说优点,YOLO最为突出的优点就是。结构的简单使得YOLO在titan x GPU上,在保证检测准确率的前提下(63.4% mAP,VOC 2007 test set),可以达到45fps(frame per second)的检测速度。

YOLO的第二个优点是背景误检率低。YOLO在训练和推理过程中能‘看到’整张图像的整体信息,而基于region proposal的物体检测方法(如R-CNN/fast RCNN),在检测过程中,只能‘看到’候选框内的局部图像信息。

当然,YOLOv1的缺点同样存在。比如,YOLO对相互靠的很近的物体,还有很小的群体检测效果不好,这是因为一个网格中只预测了两个框,并且只属于一类。同时,泛化能力偏弱也是YOLOv1的缺点之一。

4b9618f308455d66eb82c42ad61f8459.gif

运行YOLOv3的实例

说了那么多,那我们赶紧来试一试这个程序吧!在https://pjreddie.com/darknet/yolo/上我们可以看到作者提供的使用这些代码的方式。如果懒得点开看英文也没关系,我在下面示范一下该如何进行操作,代码如下:

$git clone https://github.com/pjreddie/darknet

$cd darknet

$cd make

接下来是下载预训练的数据的文件,分为正常(237MB)和迷你版,下载指令如下:(这是linux指令,如果是windows直接到这个网页上下载即可,但要把这个文件放在darknet的子目录下)

$wget https://pjreddie.com/media/files/yolov3.weights

$wget https://pjreddie.com/media/files/yolov3-tiny.weights

然后输入下面的代码开始运行(当然你要把dog换成其他的什么诸如“data/eagle.jpg, data/person.jpg”也完全没所谓):

$./darknet detect cfg/yolov3-tiny.cfg yolov3-tiny.weights data/dog.jpg

当我们看到下面的输出时说明我们成功运行了文件并生成了prediction.png,这里的输出给出了置信度的信息,由于这里我使用的是mini所以置信度不高,但如果使用正常版的话是可以正确预测,并且置信度是很高的,大概在90%以上。

Loading weights from yolov3-tiny.weights...Done!

data/dog.jpg: Predicted in 1.042714 seconds.

dog: 57%

car: 52%

truck: 56%

car: 62%

bicycle: 59%

下面分别展示一下使用正常的预处理weights和tiny-weights的生成的图片:

4dcd7d5544969cfc2adfa461012f4371.gif

买家秀

d2e2be00fe5000d77f12e7e3adeda42d.gif 6b9ecb6f71831b4407e4c7eef0dc116a.png 4dcd7d5544969cfc2adfa461012f4371.gif

卖家秀

d2e2be00fe5000d77f12e7e3adeda42d.gif 389d43684ff0c9f9de5ea6672f7a4776.png 4b9618f308455d66eb82c42ad61f8459.gif

写在最后

值得一提的是,就在几天前,YOLOv4已经问世,其在COCO数据集上的表现较YOLOv3也有了非常大的提升。在这个网络中,作者用到了非常多的tricks,比如Mosaic数据增强,Cross mini-batch Normal(跨最小批的归一化)等手段来提升网络的性能。这里我放一张论文中使用的图来让大家直观感受一下作者的码力。

1b9e534d3745f0b94852b683354c0245.png

对YOLOv4感兴趣的同学可以去https://arxiv.org/pdf/2004.10934.pdf进行下载。其代码也已经放在了github上:https://github.com/AlexeyAB/darknet,感兴趣的同学可以去跑一跑看~

参考文献:

1.You Only Look Once: Unified, Real-Time Object Detection  by Joseph Redmon, Santosh Divvala, Ross Girshick, Ali Farhadi(https://arxiv.org/abs/1506.02640)

2.YOLOv4: Optimal Speed and Accuracy of Object Detection   Alexey Bochkovskiy  et.al

4a03db4ddc912fc33f934c4151acf40f.png

撰稿:郑荣坤

审核:孙志尧

c2c528738ec2fd2b74fae458c12832ea.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值