Yolov5-7.0机器视觉应用教程

1.安装anaconda 下载地址
https://www.anaconda.com/download
添加环境变量
默认安装后的路径
C:\ProgramData\anaconda3
C:\ProgramData\anaconda3\Scripts
C:\ProgramData\anaconda3\Library\bin
2.安装cuda
可先用nvidia-smi命令查看自己显卡最高支持的版本
https://developer.nvidia.com/cuda-toolkit-archive
选择并安装 CUDA Toolkit 11.8.0 (October 2022)
3.创建python环境
安装anaconda完后打开cmd执行
创建一个名为yolo的环境
conda create -n yolo python==3.8
查看现有环境
conda env list
激活环境 (如果激活失败就执行conda init cmd.exe 然后关闭从新打开cmd再次执行)
conda activate yolo
删除环境命令
conda env remove -n yolo
4.安装torch
打开https://pytorch.org/get-started/locally/
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
或者使用
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
5.下载yolo源码(这里也可以直接下载源码使用vscode打开源码进行以下的环境安装)
pip install ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple
6.安装onnx装换
pip install onnx -ihttps://pypi.tuna.tsinghua.edu.cn/simple
pip install onnxsim -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install onnxruntime -i https://pypi.tuna.tsinghua.edu.cn/simple
7.测试
YOLOv8n下载地址
https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8n-pose.pt
YOLOv8s下载地址
https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8s-pose.pt
选择并下载一个推理模型
本机新建一个文件夹目录,将推理模型(yolov8s.pt)放在里面,再放入一个图片A.jpg
使用cmd打开这个目录路径,执行
yolo predict model=yolov8s.pt source=A.jpg
源码报错处理:
cannot import name 'Callable' from 'collections'...
根据提示打开源码文件..\anaconda3\Lib\site-packages\keyring\util\properties.py
把第一行的
from collections import Callable
修改为
from collections.abc import Callable
CryptographyDeprecationWarning: Blowfish has been deprecated
根据提示打开源码文件..\anaconda3\Lib\site-packages\paramiko\transport.py:219
把这块注释掉:
# "blowfish-cbc": {
# "class": algorithms.Blowfish,
# "mode": modes.CBC,
# "block-size": 8,
# "key-size": 16,
# },
No such command 'predict'
在根目录下执行
python setup.py install
=======================以下旧版教程 已过时==========
1.安装python 下载地址(必备的环境)
https://www.python.org/getit/
2.下载VScode(我们用这个工具写代码)
https://code.visualstudio.com/
3.下载YOLOV5(笔者用的7.0)
https://github.com/ultralytics/yolov5
4.下载YOLOV5 模型(笔者用的yolov5s.pt)下载后可以放在yolov5根目录里
https://github.com/ultralytics/yolov5/releases
5.添加Py环境变量(一般会自动添加上,防止意外还是自己手动添加一下)
如果是默认安装路径的话参考这两个地址,注意Python310是我自己起的python安装文件目录
C:\Users\vision\AppData\Local\Programs\Python\Python310\Scripts
C:\Users\vision\AppData\Local\Programs\Python\Python310
6.安装依赖的库
使用VScode打开YOLOV5源码 安装依赖库
pip install -r requirements.txt # install
这个requirements.txt文件就在yolo5目录里
===================================================
7.下载标记工具LabelImg
https://github.com/heartexlabs/labelImg
8.收集要标记的图片、准备标记目录、开始使用Labelimg标记
建一个文件夹dataset,里面目录结构为:(笔者为了方便所以多建了一层目录)

然后temp文件夹下 新建jwt.yaml文件

文件内容如下:
# train and val data as 1) directory: path/images/, 2) file: path/images.txt, or 3) list: [path1/images/, path2/images/]
train: ../datasets/temp/images/
val: ../datasets/temp/images/
# number of classes
nc: 7
# class names
names: ['body','head','car','JT1','JT2','JT4','JT6']
#======
#注意nc代表你有几个标记,names代表你的标记name,上面的路径是对应你建立的images文件夹
下一步就把你的图片放在images里
VS打开labelimg源码:修改里面的类别txt为你的标记,然后执行labelimg开启工具开始标记



打开目录为你的images文件夹,改变存放目录为旁边的labels文件夹
注意选择YOLO模式,快捷键W开始标记,导航栏点击查看把自动保存、单一类别都勾上(如果你只想标记一个类别的话),这样方便你快速标记,按D时进行下一张。
都标记完后我们就开始用YOLOV训练
9.开始对标记好的数据集训练
训练的时候:需要两个yaml文件
准备好yolov8.yaml文件
yolov8.yaml文件在源码的..\ultralytics-main\ultralytics\cfg\models\v8
记得修改标记数量nc
准备好jwt.yaml 可参考示例文件coco128.yaml
coco128.yaml文件在源码的..ultralytics-main\ultralytics\cfg\datasets
可以复制过来后修改数据集所在路径和标记
然后训练指令:这两个文件的路径可以是全路径
yolo detect train data=jwt.yaml model=yolov8s.yaml batch=-1 epochs=100 imgsz=640 resume=True
如果训练报错:
Initializing libiomp5md.dll, but found libiomp5md.dll already initialized.
则删掉或者重命名..\anaconda3\Library\bin下的libiomp5md.dll
最后
pt转换onnx
yolo mode=export model=runs/detect/train/weights/best.pt format=onnx simplify=True
到此就训练完成 就可以使用pt或者onnx去调用使用了。
===============以下是旧版的,可以不看================
py train.py --img 600 --batch 50 --epochs 300 --data ../datasets/temp/jwt.yaml --weights yolov5s.pt --cache --batch-size 8
yolo detect train data=../datasets/temp/jwt.yaml model=yolov8s.pt epochs=100 imgsz=600
说明文档:https://docs.ultralytics.com/usage/cli/
其中data就是你刚才标记好的数据集所在路径的那个yaml文件
model 可以指向你第4步下载好的模型yolov5s.pt
10.训练结束后
在train目录下会有你的训练结果


然后你就可以拿着这个去用代码调用啦
笔者用的python torch gpu调用的 速度很快
调用代码参考:
device = torch.device("cuda") #GPU 模型
model = torch.hub.load('F:\CG_Work\CG2022\YOLO5\yolov5-7.0', 'custom', 'F:\CG_Work\CG2022\YOLO5\yolov5-7.0\pt\last.pt',source='local', force_reload=False) #模型位置
results = model(img) #图像识别获取结果
xmins = results.pandas().xyxy[0]['xmin'] #方框左上角x
ymins = results.pandas().xyxy[0]['ymin'] #方框左上角y
xmaxs = results.pandas().xyxy[0]['xmax'] #方框右下角x
ymaxs = results.pandas().xyxy[0]['ymax'] #方框右下角y
class_list = results.pandas().xyxy[0]['class'] #标记的分类索引
confidences = results.pandas().xyxy[0]['confidence'] #识别权重