计算机视觉
YOLO(You Only Look Once,单次检测)
/ YOH-loh /
YOLO——「You Only Look Once」(你只看一次)的缩写——是一种为速度而生的目标检测风格。R-CNN一族要分两趟走(先提议区域,再分类),YOLO却在对图像的一瞥之间把整件事做完。它把画面切成网格,然后对每一个网格单元同时预测:可能有什么物体的中心落在这里,以及围住它们的框。一次前向处理,所有框一并输出——名字就是这么来的。
正是这种单次处理的设计,让YOLO能够实时运行,在普通硬件上每秒处理几十帧视频。这使它成为一切「现场直播」类任务的首选:行车记录仪、无人机、体育追踪、工厂流水线、手机应用。坦白说,代价就是经典的「速度对准确率」拉锯战。早期的YOLO版本明显不如那些更慢的两阶段检测器准确,尤其是面对又小又密集的物体时。后来的许多版本已大幅缩小了这个差距,但基本取舍依旧成立:当延迟最关键时,你才选YOLO。
有一点要分清楚:「YOLO」不是某一个固定的程序,而是多年来由不同团队发布、不断演化的一长串版本,每个版本都重新调过架构。所以「YOLO能达到某某准确率」这种说法,若不交代是哪个版本、在哪个数据集上、以什么速度跑,就毫无意义。和视觉领域里一贯的情况一样,真实世界中的可靠性,极大地取决于你的场景是否像训练数据。
一架无人机以每秒30帧的速度回传视频。一个YOLO模型在每帧上大约20毫秒内跑完,随着无人机飞行实时地在人和车辆周围画框——快到足以追踪它们,而画面看起来不会卡顿。
每帧只看一次,让实时检测成为可能——这正是单阶段设计的全部用意。
速度来自架构,而非魔法:单次处理的检测器没法回头重看它一眼扫过的区域。现代YOLO版本远比初代准确,但「实时」永远以某个特定的分辨率和硬件为前提——为了保住帧率而降低分辨率,小物体就更难抓到了。
又称
另见