YOLOv5速成教程

目标检测任务是计算机视觉领域的一大任务,依据是否有候选框(Region Proposal)大致可以分为两阶段目标检测(Two-stage Object Detection)与一阶段目标检测(One-Stage Object Detection)。两阶段目标检测模型以Faster R-CNN为代表,特点是精度高但速度慢;一阶段目标检测模型以YOLO系列为代表,其特点是速度快但精度略逊。YOLO的原作者Joseph Redmon自从发布YOLOv3后就退出了CV界,2020年四月Alexey等人发表了YOLOv4的论文,一个多月后,Ultralytics公司开源了YOLOv5并发布到github上,然而YOLOv4与YOLOv5的性能比较还没有明确的结论。本文主要讲解如何从零训练自己的YOLOv5模型与其一些重要参数的含义。

一、配置环境

1.1 创建虚拟环境

俗话说,环境配不对,学习两行泪,首先我们需要安装Anaconda(Anaconda安装非常简单并且百度上有大量资料),然后创建一个专门用来训练YOLOv5的虚拟环境,按win+r打开“运行对话框”,输入“cmd”打开cmd。输入下面代码创建虚拟环境:

conda create -n course_yolov5 python==3.8

其中“course_yolov5”是虚拟环境的名称,“python==3.8”是虚拟环境的python版本。然后我们需要将Ultralytics开源的YOLOv5代码Clone或下载到本地,可以直接点击Download ZIP进行下载,地址:https://github.com/ultralytics/yolov5。

在这里插入图片描述

接下来激活刚刚创建的虚拟环境并解压刚下好的压缩文件,将工作路径切换到解压好的文件夹下:

conda activate course_yolov5
cd D:\Study\PyCharm20\PycharmProjects\course_yolov5\yolov5-master
d:

这里需要将" D:\Study\PyCharm20\PycharmProjects\course_yolov5"替换为自己的路径

1.2 安装模块:

在安装模块之前,最好先更换pip源为阿里源或国科大源,然后安装yolov5需要的模块,记住工作路径要在yolov5文件夹下:

python -m pip install -r requirements.txt

如果没有安装cuda默认安装pytorch-cpu版,如果有gpu可以安装pytorch-gpu版,windows、mac、ubuntu安装pytorch gpu版可以移步下面链接https://mp.weixin.qq.com/s/ZTzfC7xp8PVMvOONVIiK6g。

二、检测

2.1 COCO数据集

在正确配置好环境后就可以检测自己的图片或视频了。YOLOv5已经在COCO数据集上训练好,COCO数据集一共有80个类别,如果您需要的类别也在其中的话,可以直接用训练好的模型进行检测。这80个类分别是:‘person’, ‘bicycle’, ‘car’, ‘motorcycle’, ‘airplane’, ‘bus’, ‘train’, ‘truck’, ‘boat’, ‘traffic light’, ‘fire hydrant’, ‘stop sign’, ‘parking meter’, ‘bench’, ‘bird’, ‘cat’, ‘dog’, ‘horse’, ‘sheep’, ‘cow’, ‘elephant’, ‘bear’, ‘zebra’, ‘giraffe’, ‘backpack’, ‘umbrella’, ‘handbag’, ‘tie’, ‘suitcase’, ‘frisbee’, ‘skis’, ‘snowboard’, ‘sports ball’, ‘kite’, ‘baseball bat’, ‘baseball glove’, ‘skateboard’, ‘surfboard’, ‘tennis racket’, ‘bottle’, ‘wine glass’, ‘cup’, ‘fork’, ‘knife’, ‘spoon’, ‘bowl’, ‘banana’, ‘apple’, ‘sandwich’, ‘orange’, ‘broccoli’, ‘carrot’, ‘hot dog’, ‘pizza’, ‘donut’, ‘cake’, ‘chair’, ‘couch’, ‘potted plant’, ‘bed’, ‘dining table’, ‘toilet’, ‘tv’, ‘laptop’, ‘mouse’, ‘remote’, ‘keyboard’, ‘cell phone’, ‘microwave’, ‘oven’, ‘toaster’, ‘sink’, ‘refrigerator’, ‘book’, ‘clock’, ‘vase’, ‘scissors’, ‘teddy bear’, ‘hair drier’, ‘toothbrush’。

2.2 用预训练模型进行测试

下面我们先演示如何检测图片中的目标。我们一般将要检测的数据放在’./data/images’路径下,’.'代表当前路径即解压好的yolov5-master文件夹,然后我们在cmd中输入下面代码:

python detect.py --source ./data/images/example.jpg --weights weights/yolov5s.pt --conf-thres 0.25

如果没有下载预训练模型需要等预训练模型下好,没有报错就说明我们的图像检测成功了!检测好的图片会放在’./runs/detect’下,各个参数的含义下面会有具体的介绍。

在这里插入图片描述

我们也可以对视频进行检测:

python detect.py --source ./data/images/happysheep.mp4 --weights weights/yolov5s.pt --conf-thres 0.25

或一个文件夹中的所有图片和视频(图片支持的格式:‘bmp’, ‘jpg’, ‘jpeg’, ‘png’, ‘tif’, ‘tiff’, ‘dng’, ‘webp’, ‘mpo’,视频支持的格式:‘mov’, ‘avi’, ‘mp4’, ‘mpg’, ‘mpeg’, ‘m4v’, ‘wmv’, ‘mkv’),检测结果同样放在’./runs/detect’下。

python detect.py --source ./data/images/ --weights weights/yolov5s.pt --conf-thres 0.25

在这里插入图片描述

仔细观察中途我们可以发现,官方训练好的模型虽然能将物体框出来,但是对物体的分类存在一些问题,一会儿将那只边牧预测为奶牛,一会儿预测为绵羊,边牧:

在这里插入图片描述

这是目标检测目前的难点之一,即不容易区分图像中与目标物体外形相似的非目标物体,对于这个问题,我们可以在检测出目标区域后再接一个分类器对物体进行分类。另外,地上的树枝被误认为是小鸟,我们可以通过调整置信度阈值来解决这一问题。

2.3 检测文件参数说明

yolov5的参数是由argparse包传入的,我们可以通过命令行传入参数,也可以直接设置参数默认值。我们打开yolov5-master文件加下的detect.py文件,传参的代码在主函数中,几个关键参数如下:

parser.add_argument('--weights', nargs='+', type=str, default='yolov5x.pt', help='model.pt path(s)')
parser.add_argument('--source', type=str, default='data/images/happysheep.mp4', help='source')
parser.add_argument('--img-size', type=int, default=640, help='inference size (pixels)')
parser.add_argument(
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值