YOLO 物件侦测模型
@说到物件侦测的 AI 模型,应该直接就会联想到 YOLO (You Only Look Once) 这个知名的物件侦测模型,其最令人夸赞的就是推论的速度相当快,且仍保有相当程度的辨识度!若将其放到边缘装置 Jetson Nano 上运行,还可以有 25FPS 左右的效能!但说到要训练一个客制化 YOLO 模型,可能就要让不少人皱起眉头了!本篇则要介绍 Roboflow 与 Ultralytics HUB 这两个工具,在不需要安装任何软体、写任何程式的条件下,完成一个客制化物件侦测 YOLO 模型!
图1 : YOLOv8 整合了物件侦测、分类、分割等多种模型。(图片来源:ultralytics) |
|
怎麽玩?
Roboflow 是线上资料集管理工具,具备标注影像资料、设定资料增强、产生资料集等功能,虽然 Roboflow 也有提供线上 AutoML 专有模型,但因为限制是必须使用网路呼叫,不便利布署在边缘装置而较少人使用。Ultralytics HUB 则是 YOLO 模型的管理工具,可以汇入资料集、训练模型、测试模型与汇出模型等。 首先分别前往 Ultralyrics HUB 与 Roboflow 注册免费帐号,笔者将会使用 Roboflow 标注资料与产生资料集,接着将资料及汇出到 Ultralytics HUB 进行 YOLO 模型训练与管理。
图2 : Roboflow 提供资料集管理与 AutoML 等服务 |
|
登入 Roboflow 网站後,系统会引导建立工作空间(workspace),每个工作空间可以存放多个专案(projects)。接着建立一个专案,专案类型为 ”物件侦测” Object Detection,专案名称与说明可以自行填写。需要特别注意的是免费帐号所建立的专案皆为公开专案(Public Project),所有人皆可以在检索或是浏览到专案内的影像资料并且打包带走,所以如果影像中含有机密资料或敏感个资千万不要使用公开专案!
图3 : Roboflow 可以建立物件侦测、实例分割、影像分类等不同专案。 |
|
接着就可以上传资料集的照片或影片,甚至还可以从 YouTube 汇入影片。影片的部分在上传後可以设定图片的取样率,从一秒30张到60秒一张都可以弹性设定。完成之後会统计出所有影像数量,并且还可以邀请其他帐号,进行影像资料标注的数量分配,对於资料量庞大的资料集来说,这个功能可说是相当人性化。
接下来就是最痛苦的影像标注地狱了!必须逐一在照片中框选出要侦测的物件并给予其标签,整体过程会相当的费时,但为了模型的正确性也不能马虎。以笔着的范例来说,拿了 MKR Zero、Pi Pico、LinkIt7697、TTGO 等不同的开发板进行标注。好处则是 Roboflow 线上标注工具还算直觉与人性化,藉由快捷键的操作可以省下一点点时间。
比较偷??的话可以跟笔者一样,先上传小部分的影像资料,将模型训练完成之後评估,再逐步增加资料量达到比较好的效果。标记完成会转跳到产生资料集的阶段,这边会自动拆分训练(Training)、验证(Validation)、测试(Testing)等不同比例数量的资料,也可以手动调整。影像前处理(Preprocessing)可以选择是否自动转向以及重新调整尺寸大小为何。
接着设定资料增强(Augmentation)的部分,这也是笔者觉得 Roboflow 最好用的功能之一。可以设定将资料随机翻转、裁切、旋转、增加躁点、模糊化、亮度调整等等,藉此来增加资料集的多样性并提高训练出来模型的适应性。
完成之後可以看到资料集的版本列表中多了一个项目,後续若有持续增加新的资料或是使用不同的前处理与资料增强等叁数,皆可以产生不同版本的资料集,并且在此页面中管理与查找。
点选右上角的 “Export” 可选择把资料及汇出成不同格式的标记资料,如COCO、Pascal VOC、YOLO等。选择最下方的 “Ultralytics HUB” 进行汇出,将自动转跳到 Ultralytics HUB 网站,登入後便可以在 Ultralytics HUB 管理与训练模型了!
Ultralytics HUB
串接到 Ultralyrics HUB 後选择汇入(Import) 资料集,就能进入到模型的设定了。若暂时没有想要建立的资料集,也可以从 Roboflow Universe 上找寻社群提供的资料集,有些也提供了蛮有趣的概念,如扑克牌辨识、麻将辨识等等。训练阶段这边可提供训练 YOLOv5 与 YOLOv8 不同大小的模型架构,并且选择是否要使用预训练模型。
接下来就进入到了模型训练环节,提示说明在开启 Colab 後将这三行程式码贴到 ipynb 的程式段落执行即可。下方还有一些超叁数(hyperparameters)可以做微调。
图11 : 透过 Ultralyrics HUB 连线到 Colab 训练 YOLO 模型 |
|
开启Colab范例可以看到几??没有什麽程式码,将刚刚复制的程式码贴过来并选择全部执行。程式会安装一些必要套件,接着就会跟 Ultralyrics HUB 进行连线,把 Colab 训练的结果传回 Ultralyrics HUB。
图12 : Ultralyrics 提供的 Colab 程式码 |
|
回到 Ultralyrics HUB 就能即时监控在 Colab 训练模型的状态。以笔者的状态为例,在资料不多的情况下,大约十分钟就可以完成训练了!
训练完成之後可以做线上的预览(Preview),验证一下模型训练的成果。若没有太大的问题则可以选择到布署(Deploy)的页签,选择合适的模型档案格式,下载到边缘装置进行推论罗!
实测 NVIDIA Jetson Orin NX 推论
笔者最後将训练完的 YOLOv8 模型下载到 NVIDIA Jetson Orin NX 核心的 reComputer J4011 上进行推论,先不论模型的辨识度好与坏(毕竟笔者提供的资料量非常少),实际推论的速度以 YOLOv8s 来说可以达到41ms。使用 TesnorRT 优化後的速度更可以缩短到 33.8 ms,等同於做到 30FPS 即时物件侦测是没有问题的!并且与 YOLOv8s pre-trained model 效能是一模一样的!
图15 : Orin NX 8GB 使用 TensorRT 优化过的 YOLOv8s 模型(pre-trained model) |
|
小结━YOLO 版本的 Teachable Machine
Ultralytics 这间公司推出的 YOLOv5 与 YOLOv8,虽然都因为进步性不足且没有论文技术原理支撑,并没有被学术界与 YOLO 官方所承认,但不可否认此二版本都因为整合性的提升而更加便利於社群开发者使用。早期可能会觉得训练影像分类模型很困难,但 google 推出 Teachable Machine 之後,看似一切都变简单了!如果觉得训练YOLO物件侦测模型很困难,不妨试一下 Roboflow + Ultralyrics HUB ,说不定各位也能轻松驾驭罗!
(本文由VMAKER授权转载;连结原文网址)