简要学习 YoloV5,通过在云端训练和本地推理,初步入门 ML 的图形识别场景。实现对特定物体的检测和框选。

在进行物体识别的图形应用场景下,看到 Yolo 的普遍应用,便希望自己能够用到 [[YoloV5]] 框架,同时在整个机器学习,人工智能,学习的环境下,图像类的机器学习是最为热门和具有实用性质的内容。而区别于物体分类,物体检测相对更为复杂,但是也更具有实用性和拓展性,能够在众多的场景和众多设备下进行应用与部署。因此特地进行 Yolo 的学习,希望能够尽快掌握自定义数据集的物体检测的能力。
积累了关于 物体识别 的相关技术栈经验。

课程主要跟随 Bilibili 的网课 进行学习。

安装 YoloV5 5.0 时的问题

直接下载 tag 5.0 版本 的源代码进行学习即可。
如果因为网络环境打不开,可以通过 Gitee 的 5.0 链接 进行下载

下载后,通过 Pycharm 打开(非要用其他的也 OK),继而在 Conda 或其他 Python 选择好的环境下,根据 requerments.txt 进行 pip install ~即可。

pycocotools 安装失败

而对于 特殊的 pycocotools ,很难在 windows 上进行安装,目前采用的简单的方法是:

GitHub 上有 windows 版 pycocotools 了。
pip install pycocotools-windows
win10+anaconda 环境亲测有效

在打开 detect.py 进行运行(相当于 Hello world )时,可能会出现一些报错提醒你有些插件没有安装,继续 pip install 即可

对于 其他问题,多半通过复制最后一行代码,百度即可找到方案

出现 Can’t get attribute SPPF on module models.common

运行 yolov5 下面 Tags5 的代码,出现了这个报错:
AttributeError: Cant get attribute SPPF on module models.common from e: \pyWorkSpace\yolov5-5.0\models\common.py

解决方案是:去 Tags6 里面的 model/common.py 里面去找到这个 SPPF 的类,把它拷过来到你这个 Tags5 的 model/common.py 里面,这样你的代码就也有这个类了,还要引入一个 warnings 包就行了!

有的同学找不到 SPPF 这个类,那我现在直接粘贴在这里,你们只需要复制到你们的 common.py 里面即可,记得把 import warnings 放在上面去:

import warnings

class SPPF(nn.Module):
    # Spatial Pyramid Pooling - Fast (SPPF) layer for YOLOv5 by Glenn Jocher
    def __init__(self, c1, c2, k=5):  # equivalent to SPP(k=(5, 9, 13))
        super().__init__()
        c_ = c1 // 2  # hidden channels
        self.cv1 = Conv(c1, c_, 1, 1)
        self.cv2 = Conv(c_ * 4, c2, 1, 1)
        self.m = nn.MaxPool2d(kernel_size=k, stride=1, padding=k // 2)

    def forward(self, x):
        x = self.cv1(x)
        with warnings.catch_warnings():
            warnings.simplefilter('ignore')  # suppress torch 1.9.0 max_pool2d() warning
            y1 = self.m(x)
            y2 = self.m(y1)
            return self.cv2(torch.cat([x, y1, y2, self.m(y2)], 1))

在运行 detect 或 train 时,提示 缺少 pycocotools

这是因为在运行的时候,程序会去检测 requerments 是否完全达标,在 requerments 里面将 pycocotools 屏蔽 ‘#’ 即可,因为我们已经安装了 pycocotools-windows ,而其其意义不大。

运行 YoloV5

通过 在 Terminal 运行
python detect.py
或者 Pycharm 在 detect 文件下的运行

当然,我们在这个下面进行运行视频,也是可以的,但其实也是一帧一帧进行处理的。

之后,在 [[Colab]] 上进行 YoloV5 的学习不仅能够快速方便地配置环境,而且能够充分利用云服务器的 GPU 进行训练。
Colab 的服务器上 GPU,免费的一半是 K80,12G ,粗略计算 比本人笔记本的 Cpu 推理,机器学习的速度快 30 倍。
之后通过 Google Driver 进行保存相关的模型数据,自己是将其作为了一个大的压缩包,给放到云盘上了,方便下次直接恢复运行的环境。

当然之后又通过 螺丝螺母 分类的项目通过 Yolov5 进行了重新训练,主要耗费时间的就是 数据集格式的转换,通过自己的低水平 Python 代码和高水平的 GitHub AutoPiolt 的协作,写了好几个小时,才将其转换过来,好在跑起来之后 的效果不错,97% 的准确率。