首先,我想请大家回想一下,自己抖音里点赞最多的视频是什么?相信不少人和我一样,一旦滑到可爱的狗子视频,都会忍不住多看几秒,然后狠狠地点个赞。都说“吸狗一时爽,一直吸狗一直爽”,不过尽管“云吸狗”十分流行,我在这里要说,“云吸狗”还是没有真·吸狗来得香。
和我所见略同的,还有这个加拿大小哥Ryder。
不同的是,Ryder真的亲手做了一个狗子探测器,这个探测器还和扩音喇叭联结在了一起,但凡有人遛狗经过了他们家,探测器首先会进行识别,然后这个喇叭就会提醒他,“快来吸狗啦!”这还不止,Ryder还突发奇想,这些狗子都这么可爱,它们的主人也应该得到赞赏。于是,他对整个系统进行了改进。
现在这个扩音喇叭不仅能提醒他赶紧吸狗,还能对着路边的狗主人大声说到,“我喜欢你家的狗子(I like your dog)”。
当然,不明所以的路人可能会一脸懵逼:甚至还有热心的读者留言到,“其实你还可以装一个零食发射器,给路过的狗子派发零食”。那我就在这里坐等这个装配了零食发射器的狗子探测器了。
超简单的狗子探测器,只需树莓派,项目已开源。
根据Ryder自己介绍,这个项目是为了自己的一个朋友,他曾经做出翻越6英尺围栏就为了撸一只狗的创举。所以,其实整个项目的思路也很简单,只需要去识别经过的狗子,然后通知他就行了。那么就动手吧。首先,准备一个树莓派相机,对准窗外的大街,实时记录动态,然后将这些数据喂给一个机器学习模型,模型便会根据输入数据识别对象。
Ryder使用的这个模型叫做YOLOv3,这个模型中的数据都是人工进行标记的,当数据达到一定的量级后,他们便把这些数据喂给机器学习系统,随后进行训练。据了解,这个模型能识别80多种物体,包括狗子、人和汽车等。Ryder用自定义码将这些系统组合在一起,然后就可以上街进行测试了。可以看到,系统不仅正确识别出了人和狗子,路边的汽车也被标记了出来。
接下来,Ryder拿出了一个扩音喇叭,录入了语音消息,这下子有狗子经过,就能得到实时通报了。不过也不是每次都能保证有很好的视野就是了。目前,Ryder也把这个“狗子识别”项目开源在了GitHub上,有需求的朋友自取~GitHub链接:https://github.com/rydercalmdown/dog_detector。
说到目标检测网络YOLO,这应该是目前最为常用的目标检测算法了,在自动驾驶、人脸识别等领域都有一展身手之地。YOLO最早是由Joseph Redmon等人在2015年提出,并在随后的几篇论文中进行了修订。单是凭借YOLO,Redmon就先后获得2016年CVPR群众选择奖、2017年CVPR最佳论文荣誉奖。在学术界,YOLO也是广受欢迎,三篇一作论文总引用量已经超过16000次。
在性能上,由于YOLO只使用单个网络,其便可以直接在检测性能上进行端到端优化,使得基础YOLO模型能以每秒45帧的速度实时处理图像。就以YOLOv3为例,在Pascal Titan X上处理608x608图像速度达到20FPS,在COCO test-dev上 mAP@0.5达到57.9%,与RetinaNet的结果相近,并且速度快4倍。
同时,YOLOv3在发扬了YOLO系列速度优点的同时,还提升了模型精度,尤其加强了对小目标和重叠遮挡目标的识别,补齐了此前的短板,是当时速度和精度均衡的目标检测网络。
不过,就在去年初,YOLO之父Joseph Redmon却突然宣布,退出计算机视觉领域。Redmon在推特上表示,由于军用和隐私方面的问题和担忧,自己选择不再进行CV方面的研究。
Fast.ai创始人Jeremy Howard转推评论到,“我之前从来没见过这种事”。更让大家关心的是,YOLO的更新也暂时被搁浅。不过好在两个月后,另一位曾经参与YOLO项目维护的Alexey Bochkovskiy,在arXiv上提交了YOLOv4,这篇论文也被拉入原来YOLO之父建立的项目主线。
根据论文介绍,在COCO数据集上,YOLOv4达到了43.5%AP,65FPS,分别提高了10%和12%,运行速度是EfficientNet的2倍。YOLOv4的速度(FPS)、精度(MS COCO AP50…95和AP50)均超过了其他目标检测器。
论文总结道,YOLOv4主要有以下3点贡献:提出了一种高效而强大的目标检测模型,使用1080Ti或2080Ti就能训练出超快、准确的目标检测器;在检测器训练过程中,验证了最先进的Bag-of-Freebies和Bag-of-Specials方法对目标检测器的影响;改进了SOTA方法,使其更有效、更适合单GPU训练。
据介绍,YOLOv4也用到相当多的技巧:用于backbone的BoF:CutMix和Mosaic数据增强,DropBlock正则化,Class label smoothing用于backbone的BoS:Mish激活函数,CSP,MiWRC用于检测器的BoF:CIoU-loss,CmBN,DropBlock正则化,Mosaic数据增强,Self-Adversarial 训练,消除网格敏感性,对单个ground-truth使用多个anchor,Cosine annealing scheduler,最佳超参数,Random training shapes用于检测器的Bos:Mish激活函数,SPP,SAM,PAN,DIoU-NMS。
不过,文摘菌还是要说,技术是中立的,区别在于使用技术的人。比如这个狗子探测器,既能够发挥YOLO的价值,也能治愈人心,何乐而不为呢?