Yolov5—实现目标检测(win10)
该方法可以在win10上实现Yolov5的目标检测,配置前需要安装Anaconda3
一、环境配置
源码下载地址:/ultralytics/yolov5.git
推荐使用B站up主修改好的文件配置Yolov5环境。(链接点这里:提取码为“ugpg”)
Pytorch:1.5.1
Cuda:10.1
Python:3.7
打开Anaconda Prompt(Anaconda3)配置相关环境
conda create -n yolov5 python=3.7 #创建yolov5 (python3.7)环境
conda activate yolov5 #切换到yolov5环境
conda install pytorch torchvision cudatoolkit=10.1 #安装cuda10.1
pip install -U -r requirements.txt #安装依赖包。
之后使用Yolov5一定要切换到Yolov5环境
conda activate yolov5 #切换到yolov5环境
安装pycocotools
记得切换到cocoapi/PythonAPI路径在执行剩下安装步骤
cd cocoapi/PythonAPI #切换路径 安装pycocotools
python setup.py build_ext install
安装apex
cd apex-master #切换路径安装apex
pip install -r requirements.txt #安装依赖包
python setup.py install
使用电脑摄像头检测Yolov5是否配置成功
python detect.py --source 0 --weights="weights/yolov5x.pt" #socrce 0 表示从摄像头输入图像
二、准备数据集
可以使用up主提供的数据集(提取码为“1hfu”)格式为 yolov5 文章后面使用该数据集进行训练
检测目标:图片中的壶和书
数据集存放格式如下
coco
-image
- train#存放训练图片
- x.jpg
- val##存放验证图片
-label
- train#存放训练label
- x.txt
- val#存放验证label
数据集需要放在yolov5 data目录下面(如下图所示)
三、修改相关文件
1.修改coco128.yaml文件
coco128.yaml等文件路径为.. /yolov5_material/yolov5-master/data
将文件中的nc:80, 修改为nc:2(nc为要训练数据的类别个数)
将names:[’ ‘,’ '] 改为 names: [‘hu’, ‘shu’] (names 为要训练数据的类别名)
# COCO dataset - first 128 training images
# Download command: python -c "from yolov5.utils.google_utils import gdrive_download; gdrive_download('1n_oKgR81BJtqk75b00eAjdv03qVCQn2f','coco128.zip')"
# Train command: python train.py --data ./data/coco128.yaml
# Dataset should be placed next to yolov5 folder:
# /parent_folder
# /coco128
# /yolov5
# train and val datasets (image directory or *.txt file with image paths)
train: ./data/coco/images/train/
val: ./data/coco/images/val/
# number of classes
#nc: 80
nc:2
# class names
# names: ['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']
names: ['hu', 'shu']
在 yolov5l .yaml, yolov5m.yaml,yolov5x.yaml,yolov5s.yaml 中选择你使用的模型,修改该文件的nc(类别数目)【推荐使用yolov5s.yaml,他的训练速度最快】
yolov5l .yaml等文件路径为.. /yolov5_material/yolov5-master/models
修改nc值
#nc: 80
nc:2 # number of classes
四、Yolov5s模型训练
在配置好的环境中输入下面的代码进行模型训练
python train.py --img 640 --data data/coco128.yaml --cfg models/yolov5x.yaml --weights weights/yolov5s.pt --batch-size 8 --epochs 100
#img 640 为模型输入图片的分辨率为640
#batchsize 为每个batch中训练样本的数量
#epochs为模型迭代次数
#可以根据自己电脑的配置进行调节batchsize 和 epochs
执行完该段代码之后,会在weights目录下产生best.pt文件
,可以通过该文件对新输入的图片进行目标检测。
训练模型时会产生如下图像
五、对新输入的图片进行目标检测
python detect.py --source 00000.bmp --weights="weights/best.pt" --view-img
执行之后会在窗口显示检测结果
检测结果如图所示