1. yolov5简介:yolov5是一种基于深度学习算法的目标检测框架,其独特的设计使得它在速度和精度之间能够取得良好的平衡。相比于传统的目标检测方法,yolov5具有更高的检测速度和更准确的识别能力。
2. 障碍物识别的重要性:在自动驾驶、智能机器人等领域中,准确地识别和理解道路上的障碍物是至关重要的。yolov5可以对道路上的障碍物进行实时监测和识别,帮助车辆或机器人做出正确的决策。
3. yolov5在障碍物识别中的应用:通过训练yolov5模型,可以实现对各种类型的障碍物的识别,包括车辆、行人、自行车等。利用yolov5的高效性和准确性,可以实现高速场景下的实时障碍物检测,提高交通安全性和智能机器人的工作效率。
4. 雪糕筒识别的挑战:雪糕筒作为一种常见的零食,其形状多变且颜色各异,对于传统的目标检测方法来说,往往难以准确地识别和定位。然而,yolov5具有较强的泛化能力和适应性,可以应对雪糕筒的形状和颜色变化,实现准确的识别。
5. yolov5在雪糕筒识别中的应用:通过针对雪糕筒进行训练,yolov5可以实现对不同类型的雪糕筒的识别,包括圆锥形、棱柱形等。这在零售行业中具有重要的应用价值,可以帮助商家对商品进行快速计数和库存管理。
总之,yolov5在障碍物识别和雪糕筒识别方面展示了其在目标检测领域的优势。其高效性、准确性和泛化能力使得yolov5成为应对复杂场景下目标识别的一种有效解决方案。随着深度学习技术的不断发展,yolov5将在更多领域中发挥重要作用。
这是一个检测交通锥并识别颜色的项目。我使用 yolov5 来训练和检测视锥细胞。此外,我使用 k 均值来确定主色,以对锥体颜色进行分类。目前,支持的颜色为红色、黄色、绿色和蓝色。其他颜色被归类为未知。
我使用了一个自收集的锥体数据集,其中包含 303 张锥体图像。这不是一个完美的做法,因为它是一个很小的数据集。我还需要自己注释图像。在这里,我使用了一个在线注释网站 Roboflow,它提供注释、预处理和增强等服务。但是,它对免费用户有 1,000 个源图像和 5,000 个生成图像的限制。
model
├── 锥体检测:Yolov5S
└── 颜色识别:主色(k-means)
用法
如果您有兴趣,可以尝试 colab 中的代码。
QQ767172261
# display images
from PIL import Image
import glob
for imageName in glob.glob('/content/yolov5/images/*.jpg'):
basewidth = 640
img = Image.open(imageName)
wpercent = (basewidth/float(img.size[0]))
hsize = int((float(img.size[1])*float(wpercent)))
img = img.resize((basewidth,hsize), Image.NEAREST)
img = img.convert("RGB")
img.save(imageName)
如果您有带注释的数据集,则可以直接使用 train.ipynb 在 Colab 中打开项目。
使用 Colab 进行训练和预测: Colab 是一个基于云的 Jupyter 笔记本服务,能够在云端运行代码。通过提供的 Colab
链接,你可以直接在浏览器中打开并运行代码,这对于快速尝试和理解项目非常方便。
%%writetemplate /content/yolov5/models/custom_yolov5s.yaml
# parameters
nc: {num_classes} # number of classes
depth_multiple: 0.33 # model depth multiple
width_multiple: 0.50 # layer channel multiple
# anchors
anchors:
- [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 backbone
backbone:
# [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 head
head:
[[-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)
]
预测:
使用 predict.ipynb
进行锥体检测。 在 pycharm 中打开
# use the best weights!
%cd /content/yolov5/
!python detect.py --weights weights/best.pt --conf 0.6 --source videos/cone_video.mp4
注意:需要使用作者在 model 文件夹中训练的权重,并且有一些自定义的 YOLOv5 文件在 utils 文件夹中。