萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI
最轻的YOLO算法出来了!
这是个模型非常小、号称目前最快的YOLO算法——大小只有1.3MB,单核每秒148帧,移动设备上也能轻易部署。
而且,这个YOLO-Fastest算法满足所有平台的需要。
不论是PyTorch,还是Tensorflow,又或者是Keras和Caffe,可以说是全平台通用。
此外,作者还推出了超轻YOLO的“加大版”,同样只需要3.5MB,就能实现比YOLOv3更好的目标检测效果。
那么,这么轻的网络,检测效果怎么样?
1.3MB的超轻YOLO
检测效果
下图是一只快速跑动的动物,可以看见,算法预测这只动物为鸡(chicken)的概率是95%。
不仅在动物检测上,对于人的检测效果也不错。
从图中可见,正面人物的预测概率都超过了90%,即使是接近侧面的人脸,系统也能准确预测出来,只是概率会偏小,接近50%。
此外也能看见,YOLO不仅能检测行人和动物,类似于餐桌和瓶子这样的目标物体也能检测出来。
当然,桌上还有其他的瓶子,不过没有检测出来。
而这样的检测效果,只需要1.3MB大小的YOLO-Fastest模型,相比于3.0MB的MobileNet-YOLOv3,参数少了65%,速度还要快上45%。
如果硬件要求没那么高,相比之下,还是精度更重要的话,这里的YOLO-Fastest-XL会更加适合。
这个“加大版”YOLO-Fastest算法是一个3.5MB的算法模型,mAP要高上不少,达到了68.8%。
整体来说,YOLO-Fastest是个牺牲一定精度 (大约5%的mAP)、大幅提升速度的目标检测模型。
结合最强移动端轻量级神经网络食用
之所以这么小,也是因为这个YOLO-Fastest搭配了号称当前最强的移动端轻量级神经网络EfficientNet-lite。
这是个比MobileNet更轻的神经网络,但图像分类的效果还不错。
△ EfficientNet-lite架构
不过,这样的压缩会牺牲一定的精度,相比于YOLOv3,YOLO-Fastest模型的mAP只有60.8%。
但对于一些容量有限的硬件来说,已经足够适用了。
那么,究竟为什么要在目标检测算法中选择YOLO呢?
YOLO:快速目标检测
目标检测算法YOLO的核心,在于它模型体积小、运算速度快。
与R-CNN系列(Fast R-CNN、Faster R-CNN等)的算法相比,YOLO的精度上不了台,但它的速度却是杠杠的。
检测速度,从先验框(下图中五彩斑斓的框架)变换的频次就能看出来。
之所以追求速度,是因为作为安防、自动驾驶领域的核心算法,目标检测讲究实时。
如果安防要过几秒钟才能检测出窃贼的存在、或是自动驾驶汽车对路障的感知非常缓慢,那么后果可能会不堪设想。
此后诞生出来的SSD算法,有点像R-CNN和YOLO算法的折中。但对于某些存储体积有限的硬件来说,依旧只有YOLO才能“装得进去”。
而只有230MFLOPS(每秒运行230万次浮点运算)的YOLO-Fastest模型,又给算力不足的硬件提供了机会,使得它有机会在更小的机器上运行。
作者相关
有意思的是,这位在GitHub上名为dog-qiuqiu的作者,此前还写过基于MobileNet图像分类算法的YOLOv3(GitHub 1.1k星),同样可以在全平台使用。
不仅如此,这个全平台通用的MobileNet-YOLOv3,体积和精度都要优于MobileNet-SSD。
在体积只有8.0MB(相比于SSD减少了15.1MB)的情况下,MobileNet-YOLOv3的mAP达到了73.26%(相比于SSD上升了0.56%)。
如果感兴趣的话,可以一同戳下方传送门查看这个目标检测算法。
传送门
1.3MB超轻YOLO: https://github.com/dog-qiuqiu/Yolo-Fastest
比SSD效果更好的MobileNet-YOLO: https://github.com/dog-qiuqiu/MobileNet-Yolo