雪糕筒识别 道路障碍物检测 yolov5障碍物识别 雪糕筒识别(代码+教程)

雪糕筒识别 道路障碍物检测 yolov5障碍物识别 雪糕筒识别(代码+教程) 简介这是一个检测交通锥并识别颜色的项目。我使用 yolov5 来训练和检测视锥细胞。此外我使用 k 均值来确定主色以对锥体颜色进行分类。目前支持的颜色为红色、黄色、绿色和蓝色。其他颜色被归类为未知。数据集和注释我使用了一个自收集的锥体数据集其中包含 303 张锥体图像。这不是一个完美的做法因为它是一个很小的数据集。我还需要自己注释图像。在这里我使用了一个在线注释网站 Roboflow它提供注释、预处理和增强等服务。但是它对免费用户有 1,000 个源图像和 5,000 个生成图像的限制。model ├── 锥体检测Yolov5S └── 颜色识别主色k-means 用法 如果您有兴趣可以尝试 colab 中的代码。训练# display imagesfrom PILimportImageimportglobforimageNameinglob.glob(/content/yolov5/images/*.jpg): basewidth640imgImage.open(imageName)wpercent(basewidth/float(img.size[0]))hsizeint((float(img.size[1])*float(wpercent)))imgimg.resize((basewidth,hsize), Image.NEAREST)imgimg.convert(RGB)img.save(imageName)如果您有带注释的数据集则可以直接使用 train.ipynb 在 Colab 中打开项目。使用 Colab 进行训练和预测 Colab 是一个基于云的 Jupyter 笔记本服务能够在云端运行代码。通过提供的 Colab链接你可以直接在浏览器中打开并运行代码这对于快速尝试和理解项目非常方便。项目中的注意事项 数据集大小 作者使用了一个包含 303张图像的自定义数据集但指出这并不是一个理想的实践因为数据集规模较小。在实际应用中使用更大规模的数据集通常会有助于提高模型的性能。在线标注服务 使用 Roboflow进行图像标注该服务提供了标注、预处理和增强等功能。然而对于免费用户有一些使用限制包括最大处理图像数量和生成图像数量。%%writetemplate /content/yolov5/models/custom_yolov5s.yaml# parametersnc:{num_classes}# number of classesdepth_multiple:0.33# model depth multiplewidth_multiple:0.50# layer channel multiple# anchorsanchors: -[10,13,16,30,33,23]# P3/8-[30,61,62,45,59,119]# P4/16-[116,90,156,198,373,326]# P5/32# YOLOv5 backbonebackbone:# [from, number, module, args][[-1,1, Focus,[64,3]],# 0-P1/2[-1,1, Conv,[128,3,2]],# 1-P2/4[-1,3, C3,[128]],[-1,1, Conv,[256,3,2]],# 3-P3/8[-1,9, C3,[256]],[-1,1, Conv,[512,3,2]],# 5-P4/16[-1,9, C3,[512]],[-1,1, Conv,[1024,3,2]],# 7-P5/32[-1,1, SPP,[1024,[5,9,13]]],[-1,3, C3,[1024, False]],# 9]# YOLOv5 headhead:[[-1,1, Conv,[512,1,1]],[-1,1, nn.Upsample,[None,2,nearest]],[[-1,6],1, Concat,[1]],# cat backbone P4[-1,3, C3,[512, False]],# 13[-1,1, Conv,[256,1,1]],[-1,1, nn.Upsample,[None,2,nearest]],[[-1,4],1, Concat,[1]],# cat backbone P3[-1,3, C3,[256, False]],# 17 (P3/8-small)[-1,1, Conv,[256,3,2]],[[-1,14],1, Concat,[1]],# cat head P4[-1,3, C3,[512, False]],# 20 (P4/16-medium)[-1,1, Conv,[512,3,2]],[[-1,10],1, Concat,[1]],# cat head P5[-1,3, C3,[1024, False]],# 23 (P5/32-large)[[17,20,23],1, Detect,[nc, anchors]],# Detect(P3, P4, P5)]颜色分类 采用 k-means 算法确定主导颜色并将交通锥分为红、黄、绿和蓝等颜色。其他颜色被分类为未知。推荐的下一步 如果你对该项目感兴趣可以进一步探索以下方面数据增强 在数据集上应用更多的数据增强技术以提高模型的泛化能力。模型调优 尝试使用更大的 YOLOv5 模型例如 yolov5m、yolov5l 或yolov5x进行训练看看是否能够改善检测性能。更大的数据集 如果可能的话考虑收集更大规模的数据集以进一步提高模型的准确性。视频预测预测使用predict.ipynb进行锥体检测。 在 pycharm 中打开# use the best weights!%cd /content/yolov5/!python detect.py--weightsweights/best.pt--conf0.6--sourcevideos/cone_video.mp4注意需要使用作者在 model 文件夹中训练的权重并且有一些自定义的 YOLOv5 文件在 utils 文件夹中。