目录
四、加载新的虚拟环境yolov5到jupyter notebook
基本环境:
Ubuntu 20.04
Python 3.10
CUDA 11.8
Pytorch 2.3.1
一、创建虚拟环境并激活
创建名为yolov5的conda虚拟环境,python版本为3.10
conda create -n yolov5 python==3.10
conda activate yolov5
查看Python版本:
二、下载Yolo v5源码
官方:https://github.com/ultralytics/yolov5?tab=readme-ov-file
git clone https://github.com/ultralytics/yolov5
进入文件夹并安装环境
cd yolov5
pip install -r requirements.txt
三、安装Pytorch
3.1 检查CUDA版本
nvcc -V
表明CUDA版本为11.8
3.2 安装适用于CUDA11.8的Pytorch
1. 进入官方网站地址:https://pytorch.org/get-started/previous-versions/
2. 安装V2.3.1版本的Pytorch
conda install pytorch==2.3.1 torchvision==0.18.1 torchaudio==2.3.1 pytorch-cuda=11.8 -c pytorch -c nvidia
3. 进入网站:https://download.pytorch.org/whl/torch_stable.html,下载CUDA支持的Pytorch
cu118 表示CUDA的版本为11.8
torch-2.3.1 表示torch版本为V2.3.1
cp310 表示Python的版本为3.10
4. 将下载的本地文件移动到Ubuntu
sudo cp /mnt/d/torch-2.3.1+cu118-cp310-cp310-linux_x86_64.whl ~
5. 安装CUDA支持的Pytorch
pip install torch-2.3.1+cu118-cp310-cp310-linux_x86_64.whl
6. 检查安装结果
pip list
出现 torch 2.3.1+cu118,表明适用于CUDA-11.8版本的Pytorch-V2.3.1安装成功
四、加载新的虚拟环境yolov5到jupyter notebook
1. 进入已创建的虚拟环境,安装ipykernel库
conda install ipykernel
2. 将当前虚拟环境添加到jupyter内核
python -m ipykernel install --user --name yolov5 --display-name yolov5
3. 在yolov5文件夹下进入jupyter notebook
cd yolov5
jupyter notbook
4. 打开tutorial.ipynb,切换Kernel为规定的yolov5
五、yolo v5官方复现
5.1 目标检测(以yolov5s为例)
使用模型实现目标检测功能
进入Detect模块,执行代码
自定义图片的原图和检测结果
5.2 验证模型(以yolov5s为例)
1. 进入Validate模块
2. 执行代码在线下载COCO数据集
# Download COCO val
torch.hub.download_url_to_file('https://github.com/ultralytics/assets/releases/download/v0.0.0/coco2017val.zip', 'tmp.zip') # download (780M - 5000 images)
!unzip -q tmp.zip -d ../datasets && rm tmp.zip # unzip
3. 验证结果
# Validate YOLOv5s on COCO val
python val.py --weights yolov5s.pt --data coco.yaml --img 640 --half
最终结果存储在 runs/val/文件夹。每执行一次将会依次创建一个exp文件夹
5.3 训练模型(以yolov5n为例)
训练集:train
测试集:test
验证集:val
1. 进入Train板块,使用coco128数据集训练模型
2. 修改train.py代码,设置为GPU运行(默认CPU运行)
--device中,设置default="0",即使用默认的GPU。
若有多个GPU,可更换数字使用特定的GPU。default=" "表示使用CPU
3. 训练模型
# Train YOLOv5n on COCO128 for 300 epochs
python train.py --img 640 --batch 16 --epochs 300 --data coco128.yaml --weights yolov5n.pt --cache
5.4 TensorBoard可视化训练过程
1. 安装TensorBoard
pip install tensorboard
2. 启动TensorBoard
tensorboard --logdir runs/train
3. 使用浏览器查看
打开网站查看:http://localhost:6006/
六、训练自己的数据集并实现目标检测
官方教程:https://docs.ultralytics.com/yolov5/tutorials/train_custom_data/
6.1 原始数据集
开源数据集PCBA-DET https://github.com/ismh16/PCBA-Dataset
共包含4000张图片,8种故障类型,数据集样式为YOLO数据格式。
6.2 数据标注(非YOLO模式需要进行的步骤)
1. 在命令行安装
sudo apt-get install pyqt5-dev-tools
git clone https://github.com/tzutalin/labelImg.git
cd labelImg
make all
2. 启动labelImg: labelImg
打开后界面如下:
3. 将要标注的数据集存放在images文件夹下,对应每张图片标注后的YOLO文件格式保存在labels文件夹下。
labels文件夹下每张图片对应一个.txt文件,包括分类的类型、位置坐标等信息
6.3 数据集划分
本文采用7:2:1将4000张图片划分为训练集、验证集、测试集。
import splitfolders
import os
import shutil
%输入的文件路径
input_path = 'newdata'
%划分之后保存的文件路径
output_path = 'finaldata'
# 划分数据集train:val:test = 7:2:1
splitfolders.ratio(input=input_path, output=output_path, seed=1234, ratio=(0.7, 0.2, 0.1))
其中newdata文件夹下所有文件会按对应情况同时划分。
最终共得到2800张训练图片、800张验证图片以及400张测试图片。
6.4 模型训练
1. 进入data文件夹下,创建训练集、验证集以及测试集的文件路径(根据自己情况修改)
# 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: ./finaldata # dataset root dir
train: images/train # train images
val: images/val # val images
test: images/test # test images (optional)
# Classes
nc: 8
names:
0: fanScratch
1: mbScratch
2: fanConnectionMissing
3: fanConnectionLoose
4: mbScrewLoose
5: mbScrewMissing
6: fanScrewLoose
7: fanScrewMissing
2. 修改train.py中的代码,变为在GPU下运行
3. 下载需要的yolov5模型,如yolov5s.pt
4. 模型训练(在train.py文件所在的路径下执行代码)
python train.py --img 640 --batch 16 --epochs 300 --data mainBoard.yaml --weights yolov5s.pt