win10 yolov5环境搭建

本来电脑装的是双系统的,另一个系统是Ubuntu18,自带python3.6.9,yolov5需要python3.8以上,死活装不上,根据网上教程还搞了PPA什么的也不行,最后下载了python3.8的源码包编译,就装上了;但是又有其他问题,opencv-python的4.11版本安装不了。。。

无奈换回windows10,下载了python3.8.8的exe,千万别下到32位版本的exe,不然后面pip装其他包的时候,有些没有32位的wheel包(编译好的二进制安装文件),就要下载来编译,就会报没有C编译器的错误;

下载64位的python3.8.8的exe:https://www.python.org/ftp/python/3.8.8/python-3.8.8-amd64.exe

安装的第一个页面记得勾选“add PATH”,这样后面就不用手动添加环境变量了

进到项目网址GitHub - ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite · GitHub

手动下载压缩包,并解压到桌面或者自己喜欢的目录,路径不要有中文

win+R 输入cmd回车,打开命令行

命令行中输入 修改为你的解压目录,在这里可以复制过去

cd C:\Users\xxxx\Desktop\robot_base\yolov5-master

输入     设置国内的镜像源,下载会比较快

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

输入      下载包依赖

pip install -r requirements.txt

   只要python版本>3.8.0,基本上不会出问题,怎么看电脑装的是多少版本的,命令行敲python后回车,就会打印出版本号了,输入exit()回车,就退出python

安装git,后面训练的时候要用到,右键复制下载链接到迅雷下会比较快。

Git - Install for Windows   安装的时候一直点next就行

测试安装

把要推理的图片放入项目的根目录

输入

python detect.py --weights yolov5s.pt --source img.jpg

其中报一些pip的错不理他,反正能正确推理出结果就不理他

识别出来的结果放到了这个文件夹里,至此,yolov5 的Windows环境搭建成功!

如果想识别一堆图片,那就把图片所在的路径复制一下

python detect.py --weights yolov5s.pt --source C:\Users\XXX\Desktop\chayou\source

输出结果

数据集准备

首先得收集图片,然后尽量给改成jpg格式的,可以用格式工厂转一下,

图片的名字可能千变万化,为了好看,便于整理,可以手动重命名排序一下,照片多就让ai写一个排序改名的python程序

收集的图片尽量是在那种在实际应用场景能碰到的,比如我这个应用场景是一个果实的采摘场景,你收集的图片就是在室外农场里近距离的,1-5个果实,相当于近距离引导机械臂视觉定位用;

像以上这种一大片的,或者在盆子里装着的、就不是我们的应用场景里的,没办法和叶子、背景那些区分开,就不要放到数据集里了。

下载一下数据标注软件:
链接: https://pan.baidu.com/s/1zzTqpKcPyQOXj-zzy6NzQw?pwd=6666 提取码: 6666

软件自带默认的标签,假如你有很多种物品要标注,那就按照下面来

apple
banana
orange

我这里只标注1种果子,就直接1个标签了

双击labelImg.exe 

软件默认标签文件是PascalVoc 格式,这种格式的标签文件是xml格式的,我们要的是yolo格式的,像上图一样,输出的是txt格式的

View选项里的Auto Save mode (自动保存)模式要开启,这样切换图片的时候不会跳出保存提示,开启后切换图片就可以自动保存标签文件到目录里;

如果只标注一种物品,则可以开启Single Class Mode,开启后拉完框框后不会跳出标签选择对话框,可以显著提供标注的速度;

按键盘的“W”键后会出现一个十字,按住鼠标左键开始拉框,拉完可以调整4个角点进行微调,或者选中框直接按Delete键删除标注框;标注完一张图后按“D”键进行下一张图片的标注,按“A”键返回上一张图片

标签文件打开后是这样的,有多少行就代表这张图标注了多少个框

标注好后我们开始制作数据集,先下一个别人的数据集,看看是怎么摆放的

我们下载的是最精简的数据集coco8,训练集和验证集加起来只有8张图片,

我们先新建一个文件夹,比如我这个项目叫茶油果目标检测项目,一共收集了76张照片,那数据集就命名为chayou76,在chayou76里面新建两个文件夹,分别叫images、labels

images文件夹里面再新建train、val两个文件夹,train里放01~38号jpg,val文件夹放39~76号jpg;

同样的labels文件夹里面再新建train、val两个文件夹,train里放01~38号txt,val文件夹放39~76号txt;

我们可以看到,txt里没有具体的标签名称,只有一个序号0,那怎么知道这个0对应的叫什么呢,就要用到yaml文件了,别人的yaml示例文件在yolov5项目文件夹里的data文件夹里可以找到

在yolov5项目文件夹新建一个chayou76.yaml文件,再把下面的贴进去,保存

# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# Example usage: python train.py --data coco128.yaml
# parent
# ├── yolov5
# └── datasets
#     └── coco128  ← downloads here (7 MB)

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: C:\Users\xxx\Desktop\chayou\chayou76 # dataset root dir
train: images/train # train images (relative to 'path') 128 images
val: images/val # val images (relative to 'path') 128 images
test: # test images (optional)

# Classes
names:
  0: fruit


训练模型

输入下面的 开始用CPU进行训练

python train.py --img 640 --batch 16 --epochs 3 --data chayou76.yaml --weights yolov5s.pt

如果训练报下面这个错就是没有装git导致的,装完git后重启命令行再进到yolov5项目文件夹中

C:\Users\XXX\Desktop\robot_base\yolov5-master>python train.py --img 640 --batch 16 --epochs 3 --data chayou76.yaml --weights yolov5s.pt
Traceback (most recent call last):
  File "C:\Users\xxx\AppData\Local\Programs\Python\Python38\lib\site-packages\git\__init__.py", line 296, in <module>
    refresh()
  File "C:\Users\xxx\AppData\Local\Programs\Python\Python38\lib\site-packages\git\__init__.py", line 287, in refresh
    if not Git.refresh(path=path):
  File "C:\Users\xxx\AppData\Local\Programs\Python\Python38\lib\site-packages\git\cmd.py", line 860, in refresh
    raise ImportError(err)
ImportError: Bad git executable.
The git executable must be specified in one of the following ways:
    - be included in your $PATH
    - be set via $GIT_PYTHON_GIT_EXECUTABLE
    - explicitly set via git.refresh(<full-path-to-git-executable>)

All git commands will error until this is rectified.

CPU强行练丹,速度也挺快的。

模型测试

看看练了3个回合的丹效果怎么样

python detect.py --weights runs\train\exp\weights\best.pt --source C:\Users\xxx\Desktop\chayou\source

结果拉了,完全不能用

一气之下训练200个回合,用时1h

python train.py --img 640 --batch 16 --epochs 200 --data chayou76.yaml --weights yolov5s.pt

可以看到200个回合的模型的预测结果已经有了置信度;之前训练3个回合的模型,val_batch0_pred一个框都没

对整个目录的图片进行目标检测

python detect.py --weights runs\train\exp2\weights\best.pt --source C:\Users\xxx\Desktop\chayou\source

虽然这个目录的图片在训练集中已经出现过,但对比3个回合的训练,模型性能已经有大幅度的提升了

茶油果数据集分享到云盘中
链接: https://pan.baidu.com/s/1AY4Wm9uZ4iQPMncVRmmYtQ?pwd=6666 提取码: 6666

参考原文:Train YOLOv5 on Custom Data - Ultralytics YOLO Docs

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐