介绍
本文的重点是检测汽车划痕,与针对不同类型产品的自主质量检测系统的开发同步。在停车场,这种检测为客户提供了他们的汽车安全的保证;此外,如果发生某些事情,检测系统将有助于对这种情况进行谨慎处理。
我将这个问题作为一个单类分类问题来解决,将凹痕、损坏和划痕视为划痕,并进一步在 Flask 的帮助下制作了一个基本应用程序。我将向你介绍我在做这个项目时获得的所有想法、代码、算法和知识,我将通过Mask RCNN和Yolov5实现这个项目。

使用 Yolv5 进行预测
这是模型的最终结果。
学习目标
了解如何使用Mask RCNN和Yolov5 执行 自定义对象检测。
在使用在 coco 数据集和 Resnet50 上训练的模型时利用迁移学习。
了解质量数据收集和数据注释的重要性是任何项目中不可或缺且最耗时的部分。
目录
收集数据集
使用 Mask RCNN 进行实例分割
2.1 导入库
2.2 划分数据集
2.3 创建一个 Scratch 类
2.4 数据增强
2.5 创建模型
2.6 训练模型
通过 Yolov5 进行目标检测
3.1 数据标注
3.2 训练
3.3 结果
结论和要点
收集数据集
为了收集数据,我制作了一个数据抓取器,使用 Beautiful Soup 从adobe、Istock photo等在线网站抓取数据。
url = 'https://stock.adobe.com/in/search/images?k=car%20scratch'
# make a request to the url
r = requests.get(url)
# create our soup
soup = BeautifulSoup(r.text, 'html.parser')
print(soup.title.text)
images = soup.find_all('img')
for image in images[-1]:
name = image['alt']
link = image['src']
with open(name.replace(' ', '-').replace('/', '') + '.jpg', 'wb') as f:
im = requests.get(link)
f.write(im.content)
由于网站关于抓取的隐私政策,大部分图像都没有被抓取。由于隐私问题,我直接从 Istock photo、Shutter photo 和 Adobe 下载了图像。
我从大约 80 张图像开始,增加到 350 张图像,并进一步增加到大约 900 张图像以进行最终注释。
使用 Mask RCNN 进行实例分割
图像分割是基于像素将图像分割成不同的区域。Mask RCNN 是一种用于实例分割的模型,它是图像分割的一种子类型,可在对象边界中分离实例。它是在 Faster RCNN 的基础上进一步构建的。Faster RCNN 对每个对象都有两个输出,分别是类标签和边界框偏移,Mask RCNN 是第三个输出的附加,即对象的掩码。
Mask RCNN 架构
Mask RCNN 的架构由以下部分组成:
骨干网络
区域提案网络
掩码表示
感兴趣区域RoI
使用 Mask RCNN 检测汽车划痕的优势在于,我们可以使用多边形而不仅仅是边界框,并在我们的目标上创建一个掩码,使我们能够以更准确和简洁的方式获得和可视化结果。
让我们开始使用 Mask RCNN 来实现我们的问题。
导入库
导入实施我们的 Mask RCNN 算法所需的所有库。
# importing libraries
import pandas as pd
import n