一、yolo从入门到精通
1.1、环境安装
1.1.1、前置环境安装一miniconda
miniconda安装
下载地址:https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/,我选的py38版本的x86-64版本
如果C盘有空间,最好安装在C盘,且安装目录中不要有中文
勾选将其添加到PATH

1.1.2、conda环境创建
命令:conda create -n yolov8 python=3.8
- 明确指定版本,否则可能会因版本过高导致有包装不上
pypi配置国内源
- 清华源:https://mirrors.tuna.tsinghua.edu.cn/help/pypi/
备注:如果创建虚拟环境失败,比如http错误,ssl错误,采用以下步骤:
将Miniconda3/Library/bin
目录下的libcrypto-1_1-x64.dll
和libssl-1_1-x64.dll
复制到Miniconda3/DLLs
目录(注意使用复制粘贴而非拖拽操作)
conda config --set ssl_verify false #临时解决方案
conda config --remove-key channels # 清除所有自定义通道
conda clean -i # 清除索引缓存
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/
conda config --set show_channel_urls yes
conda config --show channels # 应只显示清华镜像源
ping mirrors.tuna.tsinghua.edu.cn # 测试网络连通性
conda create -n yolov8 python=3.9 # 新建测试环境
conda activate yolov8
conda install numpy # 测试包安装
1.1.3、pytorch安装
- 官方地址:https://pytorch.org/
在一个单独的环境中,能使用pip就尽量使用pip,实在有问题的情况,例如没有合适的编译好的系
统版本的安装包,再使用conda进行安装,不要来回混淆
CUDA是否要安装
- 如果只需要训l练、简单推理,则无需单独安装CUDA,直接安装pytorch;如果有部署需求,例如导出TensorRT模型,则需要进行CUDA安装
Pytorch安装注意事项
16XX的显卡,安装cu102的版本,否则可能训练出现问题
30XX、40XX显卡,要安装cu111以上的版本,否则无法运行
pip install torch==1.13.1+cpu torchvision==0.14.1+cpu torchaudio==0.13.1 --extra-index-url https://download.pytorch.org/whl/cpu
pip install --trusted-host mirrors.tuna.tsinghua.edu.cn --trusted-host download.pytorch.org torch==1.13.1+cpu torchvision==0.14.1+cpu torchaudio==0.13.1 --extra-index-url https://download.pytorch.org/whl/cpu
1.1.4、ultralytics(YOLO V8)安装
1.1.4.1 pip源码安装
Yolov8模型导出并用Autojs调用_哔哩哔哩_bilibili
https://github.com/ultralytics/ultralytics 选择tags找到8.0.98下载zip解压。
*(1)全安装--在anaconda prompt进入8.0.98目录,执行
pip install -e ".[export]"
(-e参数必须要有,否则后续修改代码无效)
*(2)分步安装--创建一个 constraints.txt
文件,包含所有关键包的精确版本
numpy==1.23.5
scipy==1.10.1
opencv-python==4.11.0.86 # 指定您想要的4.11版本
matplotlib==3.8.0
pillow==10.0.0
pyyaml==6.0.1
requests==2.31.0
tqdm==4.66.1
psutil==5.9.5
py-cpuinfo==9.0.0
pandas==2.0.3
torch==1.13.1
torchvision==0.14.1
pip install matplotlib opencv-python pillow pyyaml requests tqdm psutil py-cpuinfo pandas scipy -c constraints.txt
pip install -e . -c constraints.txt
使用pycharm打开ultralytics 项目,配置好编译器。
模型下载:https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8n.pt
下载完放在根目录即可。
1.1.4.2 测试
创建测试代码 test-pytorch.py:
import torch
import numpy as np
from ultralytics import YOLO
print(f"PyTorch version: {torch.__version__}")
print(f"Is CUDA (GPU) available? {torch.cuda.is_available()}") # 预期输出 False
print(f"NumPy version: {np.__version__}") # 检查numpy版本,应 >= 1.22.2
print("Ultralytics library imported successfully!")
1. 终端选择commond prompt,可以看到当前conda环境已经是yolov8了,
执行命令python test-pytorch.py
2. 执行预测命令:
yolo task=detect mode=predict model=./yolov8n.pt source="./ultralytics/assets/bus.jpg"
也可以在根目录新建detect.py,粘贴内容
from ultralytics import YOLO
yolo = YOLO("yolov8n.pt",task="detect") # load a pretrained model (recommended for training)
results = yolo(source="./ultralytics/assets/bus.jpg",save=True,conf=0.8) # perform inference on an image
然后右键运行detect.py即可。
最后可将环境导出:conda env export --name yolov8 > environment.yml
1.1.5、模型导出
1. ultralytics/nn/modules/block.py:
179行 forward内容注释,修改为:
def forward(self, x):
"""Forward pass of a YOLOv5 CSPDarknet backbone layer."""
# y = list(self.cv1(x).chunk(2, 1))
# y.extend(m(y[-1]) for m in self.m)
# return self.cv2(torch.cat(y, 1))
x=self.cv1(x)
x=[x,x[:,self.c:,...]]
x.extend(m(x[-1]) for m in self.m)
x.pop(1)
return self.cv2(torch.cat(x, 1))
2. ultralytics/nn/modules/head.py
43行 forward 在53行处添加:
return torch.cat([xi.view(shape[0],self.no,-1) for xi in x],2).permute(0,2,1)
3. 安装库:
pip install onnx == 1.16.1
pip install onnx-simplifier
4. 在根目录新建export.py
from ultralytics import YOLO
model = YOLO("./yolov8n.pt") #要导出的模型
success = model.export(format="onnx",simplify=True, opset=12)
5. 在根目录生成的 yolov8n.onnx 可用工具转换成移动端可以用的模型,比如使用onnx2ncnn:
onnx2ncnn yolov8n.onnx yolov8n.param yolov8n.bin
1.2 模型预测
1.2.1 jupyterlab
安装jupyterlab,python版本必须大于3.9
pip install jupyterlab
在 VS Code 中打开或创建一个 .ipynb
文件 (Jupyter Notebook)。
如果没有安装相关扩展,VS Code 通常会提示你安装 “Jupyter” 扩展。请务必安装它。
你也可以直接去扩展市场搜索
Jupyter
并安装
选择内核:
打开 Notebook 后,VS Code 右上角或者底部状态栏会显示当前选择的 Python 环境(比如
Python 3.xx.xx ('base': conda)
)。点击这个区域
选择你的 Conda 环境:
在命令面板中,输入并选择
Jupyter: Select Interpreter to Start Jupyter Server
。或者,在弹出的环境列表中,你应该能看到所有 VS Code 自动检测到的 Conda 环境。它们通常带有
('env-name': conda)
的标识。找到你安装了
jupyterlab
的那个 Conda 环境并选择它。
点击+代码,然后运行即可。
from ultralytics import YOLO
yolo = YOLO("./yolov8n.pt",task="detect")
result = yolo(source="./ultralytics//assets/bus.jpg")
import matplotlib.pyplot as plt
%matplotlib inline
plt.imshow(result[0].plot()[:,:,::-1])
result[0].boxes.xywh.cpu().numpy()
注意事项
Jupyter中使用,要可视化模型预测结果,一定要设置%matplotlibinline,否则无法使用,因为在plot部分,YOLO强制将后端设置为了Agg。
Jupyter中使用,要重新加载模型,否则预测过程中的参数,将不会更新,除非手动再次给出
1.3 数据集构建
图片类型数据:无需额外处理,直接可以进行标注
视频类型数据:进行抽帧处理,导出为图片
1.3.1 labelimg数据集标注
环境安装
pip install labelimg
启动命令
labelimg
关键设置
views->autosave
左侧标签:YOLO format
1.3.2 make sence数据集标注
在线地址:make sence
辅助标注
pip install tensorflowjs==2.8.5
YOLOv5 模型导出tfis
make scene上传模型
1.3.3 robotflow公开数据集
Object Detection Datasets
Roboflow Universe: Computer Vision Datasets
1.4 模型训练
1.4.1 训练前准备
将images 和 数据集文件创建以下结构
然后将images和labels放在一个文件夹下,并将这个文件夹放在根目录datasets下面。例如datasets/bvn,如果报错找不到就将bvn放在C:\Users\soitis\AppData\Roaming\Ultralytics\setting.json设置的datasets_dir里面
然后在根目录拷贝一份
1.4.2 训练
执行yolo task=detect mode=train model=./yolov11n.pt data=yolo-bvn.yaml epochs=30 workers=1 batch=10
或者创建train.py
from ultralytics import YOLO
import os
# 加载模型(确保 './yolov11n.pt' 路径正确)
model = YOLO("./yolov11n.pt")
# 开始训练
results = model.train(
data="yolo-bvn.yaml", # 确保你的数据配置yml文件路径正确
epochs=30,
batch=10,
workers=0,
# 可以添加其他参数,如:
# imgsz=640,
# device=0, # 如果我想用GPU,device=0 代表使用第一块GPU
)
执行python train.py
复制默认配置文件
yolo copy-cfg
根目录会多出来一个default_copy.yaml文件,修改data、model、epochs、workers、batch
再次训练:
yolo cfg=default_copy.yaml
训练结果位于runs/detect/train里面,weights文件夹里面有两个模型,best.pt和last.pt。接下来就可以使用best.pt做预测了。
1.4.3 常见问题
* 以代码方式运行时:workers要设置成0
* 页面文件太小,无法完成操作:调整训l练参数中的workers,设置为1/0;修改虚拟内存,将环境安装位置所在的盘,设置一个较大的参数
* 数据集描述文件:数据地址从datasets目录里开始写起,且就放在根目录下,会避免很多坑
* 调整数据集目录后再次训练:删除~/AppData/Roaming/Ultralytics文件夹下的settings.yaml