与 YOLO 一起寻找 Waldo
克莱尔索西
在本教程中,我将展示如何使用一个有故障的旧网络摄像头、一块玻璃和一个高性能 GPU 来构建一个实时寻找沃尔多的 AI。
《沃利在哪里》是英国插画家马丁·汉福德于 1987 年首次出版的一系列儿童益智书籍。该系列在美国和加拿大以“Where's Waldo”的名义出版。超过 7300 万本书以 26 种语言出版,销往 50 多个国家。这本书的主题是沃尔多,他的圆眼镜、红白条纹毛衣和相配的条纹波波帽很容易辨认。然而,场景往往非常繁忙,并且在沃尔多的服装上带有许多图案不明显的红鲱鱼,这对读者定位沃尔多提出了挑战。
我们的 Waldo-finding 解决方案将基于 YOLOv7 ,一种快速的单阶段目标检测计算机视觉算法。
目标检测的挑战之一是速度和精度之间的权衡。在其他使用链式回归和分类网络的算法一直在努力解决比实时运行更快的推理问题,YOLO 对图像进行分割,并以更快的速度执行并发回归和分割。它使用 Intersection-Over-Union 评估置信度。
YOLO 代表“你只看一次”。第 7 版于 2022 年 7 月根据 GPT-3 开源许可证发布,代表了“最先进的技术”。最新版本由 王、博奇科夫斯基和廖 包含了研究人员所描述的“可训练的免费赠品包”,这超出了本文的范围,但包含了计划的重新参数化卷积、粗略的辅助引线损失和复合模型缩放。
YOLOv7 是用 C++ 编写的,但可以作为一组 Python 脚本使用,也可以在 PyTorch 的 TorchHub 中使用。它产生的 mAP 分数优于 EfficientNet-D7x,但推理时间呈指数级降低。它还优于带有 ResNet-101 的 F-RCNN。
YOLO v7 Performance Comparisons
事实上,更大的 W6 变体 YOLOv7 网络架构可以以高达每秒 84 帧的速度对 720p 高清视频切片执行连续实时推理:
Yolo Performance Metrics
理论够了。让我们在沃尔多失去兴趣并撤回对这个实验的同意之前开始吧。
良好的计算机视觉在训练之前很久就开始了。我们需要建立一个高质量的成像站,具有 (a) 良好的照明,(b) 不会扭曲几何形状的良好摄像机角度,以及 (c) 如果您没有足够的摄像机分辨率,可以扫描页面一次捕获整个页面。
不幸的是,我所拥有的只是一个有故障的旧罗技高清网络摄像头(它不会给我带来与 4K 数码单反相机完全相同的性能)。我将使用一块咖啡桌玻璃和便携式电池灯在我的厨房长凳上设置成像站,有时我会在黑暗的酒店房间中使用它来进行视频会议。 Waldo 书籍往往有光面的页面,这会导致眩光。我选择坚持,但如果这个相机光晕成为一个问题,你可以考虑稍微倾斜这本书(注意几何扭曲),或者用一些哑光喷雾处理它(注意页面粘在一起)。
为了捕捉训练图像,我使用 OpenCV 编写了一个简短的 Python 脚本,但您也可以使用自己喜欢的相机软件轻松完成相同的操作。我还使用在互联网上找到的一些“Waldo 壁纸在哪里”来扩充我的训练图像。在这里承认妥协很重要——总是最好使用相同的成像系统和环境进行训练和推理。拥有足够的训练数据以获得良好的精度也很重要。
接下来,我们需要对图像进行注释。 Groundtruth 注释可能是计算机视觉中成本最高的方面之一——尤其是当它需要你坐下来在数百张图像中找到每一个 Waldo 时!!!我注释使用 矩形标签 ,但您也可以使用 ImgLab 或 Scale 或 LabelBox 的托管服务之一。
Take Note, Computer — This is a Waldo
记住要遵循图像标注的原则:
- 将整个目标包括在边界框中
- 排除尽可能多的无关信息
- 在边界框中包括对象的任何被遮挡部分
RectLabel 以 PASCAL VOC 格式生成图像标签。然而,YOLO 期望在 DarkNet 中使用标签
因为我还需要一些训练数据预处理,所以我将训练数据上传到 机器人流 它提供托管的预处理服务。使用 Roboflow,我将填充图像以使其对称,执行图像增强,格式转换标签,并重新调整图像的大小以实现兼容性。 Roboflow 也有一个很好的模型动物园和笔记本集成,这使得从预处理到训练的快速跳板。
现在我们准备好训练我们的算法了。我从 Github 克隆了算法 这里 .为了加速训练,我还使用基于 COCO 图像分类数据集的预训练权重进行迁移学习(检查点文件可用 这里 )。我在 120 个训练图像上训练了 350 个 epoch——是的,我找到了 Waldo 120 次。该模型有 3700 万个参数。我们的训练运行消耗 37 GB 的 GPU RAM,在 NVIDIA A100 上需要 32 分钟才能完成。
让我们看一下结果:
有一些关于精度指标的有趣观察。事实证明,较新的“沃尔多在哪里”书籍增加了可找到角色的数量。 Waldo 的朋友 Wenda 和他的宿敌 Odlaw(Waldo 有异回文敌人?),他们的长相和穿着都与 Waldo 相似,也出现在每个场景中,给我们的模型引入了潜在的误报错误。
让我们看看我们的“Waldo-finding, webcam-binding”模型如何针对测试图像执行:
最后,让我们拿起一本“Waldo 在哪里”的书,并对实时视频进行一些实时推断。忽略我的网络摄像头的故障,我们能够在每个场景中实时快速检测到 Waldo!
在本教程中,我们讨论了应用最先进的 YOLOv7 算法来训练目标检测模型以寻找 Waldos。我们将其部署用于全帧速率实时视频的实时推理。实时目标检测是一种变革性技术,在媒体和娱乐、医疗保健和生命科学、生态和农业、国防和边境保护以及零售、工业和制造业的许多领域都有广泛的应用。
感谢您的关注。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明
本文链接:https://www.qanswer.top/1384/36312906
标签:尔多,Waldo,训练,YOLO,寻找,实时,图像 From: https://www.cnblogs.com/amboke/p/16634667.html