一眼的事儿

#AI#独立开发

现在说起 AI,大伙儿想到的都是聊天的大模型,动不动几百亿参数,得拿一屋子显卡供着。

可有一类 AI 不爱说话,就爱盯着看,个头还小得出奇。最小的那个,权重文件才 5.5MB,比你手机里一张照片大不了多少,树莓派、手机、无人机上都能跑。

它叫 YOLO,是开源视觉模型里最有名的一家。

卡通插图:阳台上挂着一个木头喂鸟器,左边站着一只麻雀,被橙色框框住,标着“麻雀 0.92”;右边站着一只喜鹊,被蓝色框框住,标着“喜鹊 0.88”。栏杆上夹着一块绿色小电路板,带着摄像头,贴着“5.5MB”的标签。栏杆后面一只灰猫扒着栏杆往上瞧,被红色框框住,标着“猫 0.97”。右边戴黑色棒球帽的 lzbob 坐在桌后,桌上放着搪瓷缸子,面前立着一块小屏幕,写着“今日到访:麻雀 ×23、喜鹊 ×4、猫 ×1”。
麻雀、喜鹊挨个儿点名,一只都跑不了。左下角扒栏杆那位,它也认出来了。

先说是个啥

YOLO 全名 You Only Look Once,翻过来就是“只看一眼”。名字就是它的看家本事:一张图进去,过一遍网络,所有东西在哪儿、是什么、有多大把握,一次全吐出来。不先圈候选框,也不回头看第二遍。

现在最常用的是 Ultralytics 家的版本,代码在 ultralytics/ultralytics,6.2 万多颗星(我看的时候是 62,815),将近 1.2 万个 fork。当家的是 YOLO26,下一代 YOLO27 已经挂了预告,还没放出来。老一辈的 YOLOv5 单独一个仓库,也有 5.8 万颗星。

最小的 YOLO26n,参数 240 万,权重文件 5.5MB。在 COCO 数据集上 80 类东西都认,mAP 40.9。搁大模型那儿,这点参数连塞牙缝都不够;搁视觉这行,够干不少正经活儿了。

小个子能干多少活儿

同一家子模型,能干的活儿不少:

  • 检测:框出来是什么、在哪儿,带个置信度。
  • 分割:不光框,还把轮廓抠出来。
  • 姿态:找出人身上的关节点。
  • 旋转框:航拍图里斜着停的车、斜着放的零件,框也跟着斜。
  • 分类、深度估计,新版本也都有了。

每样活儿有自己的一套权重,比如 yolo26n.pt 管检测,yolo26n-pose.pt 管姿态,文件名一看就明白。

视频也能干。连续每一帧都检测,再用跟踪器把前后帧里的同一个东西串起来,给它一个固定的编号。内置了六种跟踪器,大名鼎鼎的 ByteTrack 就是其中一个。

串成轨迹以后,就能算账了:过线的有多少,在一块区域里待了多久,跑得多快。官方还现成做好了一堆“解决方案”:过线计数、停车位管理、排队管理、测速、健身动作监测,拿来就能用。

它不会开口回答你,但会把答案给你算出来。

文字卡片:只看一眼。一张图进去,过一遍网络,在哪儿、是什么、有多大把握,一次全吐出来。下面是三个步骤:每帧检测、跨帧跟踪、算出答案:过线多少,待了多久。

到底能跑多快

这得说实话。官方在树莓派 5 上测过 YOLO26n,640 的图,纯 CPU:

  • 直接用 PyTorch 跑,一张图将近 300 毫秒。
  • 导出成 NCNN 格式,一张 67 毫秒,一秒十五帧上下。

一秒十五帧,盯个喂鸟器、看个停车场,绰绰有余;想看清球场上飞着的球,就得把图缩小点儿,或者换块带加速芯片的板子。手机、电脑的 CPU 比树莓派快,帧数还能往上走。

部署也省心,一行就能导出成别的格式:ONNX、NCNN、OpenVINO、TensorRT、CoreML,各家的芯片基本都有对应的。

教它认你家的东西

COCO 那 80 类是人、车、猫、狗、杯子这些大路货。想让它认你家的快递箱、你厂里的零件,得自己教。

办法是微调:拍一批照片,把要认的东西框出来,从官方的预训练权重接着训。场景简单的话,几百张图、训一晚上,就能先有个能用的模型;想要稳当,官方的建议是每类 1500 张图、1 万个标注往上。

训完导出,照样塞回树莓派上跑。

能玩的花样就多了:

  • 阳台挂个喂鸟器,每天来了几只麻雀、几只喜鹊,它给你记着账。
  • 一个摄像头,管一整片停车位,哪个空着一目了然。
  • 健身的时候,它盯着你的姿势,深蹲蹲没蹲到位,它比教练还较真儿。
  • 球赛录像里,进球那一帧前后各剪 5 秒,集锦自己就出来了。
  • 猫门只给自家猫开,邻居家的猫、胡同里的黄鼠狼,一律不让进。
  • 工厂里看电路板焊点,有毛病的挑出来,眼神儿比老师傅还好使,还不知道累。

最值钱的一段:许可证

前面说的都是好消息,这一段是得多看两眼的。

Ultralytics 的 YOLO,从 v5、v8、11 到 26,用的都是 AGPL-3.0 协议。这个协议的脾气是:你的东西用了它,整个项目就得按同样的协议开源;通过网络给人提供服务,也算数。

按 Ultralytics 官方的说法,管得还要宽:闭源的商业产品、嵌入式硬件、公司内部工具,连你自己拿它训出来的模型,用在商业场景里,都在这个范围里头。不想开源,就得买他们的企业授权。

最常见的坑是:产品都上线了,才有人想起来看许可证。

想闭源商用,大概三条路:

  1. 买 Ultralytics 的企业授权。 最省事,花钱买踏实。
  2. 换协议宽松的分支。 比如 YOLOX,Apache-2.0 协议,闭源商用没这么多讲究。代价是精度略逊一筹,代码也一年多没怎么动了,好些地方得自己调。
  3. 整个项目开源。 你本来就打算开源,那就什么事儿都没有。

我不是律师,这段只是提个醒。真要商用,先找懂行的确认清楚。

最后说两句

聊天的大模型负责能说会道,YOLO 这种小个子负责眼明手快。一个 5.5MB 的文件,揣在树莓派里,就能替你盯着阳台、盯着车位、盯着流水线。

YOLO 看东西,一眼的事儿。许可证这东西,可不是一眼的事儿,你得多看几眼。

红墙结尾卡片:YOLO 看东西,一眼的事儿。许可证可不是一眼的事儿,你得多看几眼。下面是戴黑色棒球帽的 lzbob 卡通头像。

Comments

More writing