YOLO系列——使用预训练模型的预测、训练
·
这里以YOLOv8为例(也可以换成其它的预训练模型),来进行图像、视频、摄像头目标检测。
创建一个yolo-env, 也就是创建: conda create -n yolo-env
然后: conda activate yolo-env
下载:ultralytics
1 命令行
(1) 检测: yolo detect predict model=yolov8n.pt source=./data/images/train/1.png conf=0.5 save=True show=True
source 可以是图片、视频、摄像头、网络流文件
# 单张图像
yolo detect predict model=yolov8n.pt source=test.jpg conf=0.5
# 多张图像(用空格分隔)
yolo detect predict model=yolov8n.pt source=img1.png img2.jpg
#支持本地视频(格式:mp4、avi、mov等),会逐帧检测并生成带标注的视频:
yolo detect predict model=yolov8n.pt source=video.mp4 conf=0.5
#通过摄像头 ID 指定(通常0表示默认摄像头,1表示外接摄像头)
# 使用默认摄像头(0)实时检测
yolo detect predict model=yolov8n.pt source=0 conf=0.5
# 使用外接摄像头(1)
yolo detect predict model=yolov8n.pt source=1 conf=0.5
#指定目录路径,会自动检测目录下所有图像 / 视频:
# 检测目录下所有图像
yolo detect predict model=yolov8n.pt source=./data/images/ conf=0.5
# 检测目录下所有视频
yolo detect predict model=yolov8n.pt source=./data/videos/ conf=0.5
#支持 RTSP、HTTP 等网络视频流(如监控摄像头流):
# RTSP流示例(需替换为实际流地址)
yolo detect predict model=yolov8n.pt source=rtsp://username:password@192.168.1.100:554/stream
# RTSP流示例(需替换为实际流地址)
yolo detect predict model=yolov8n.pt source=rtsp://username:password@192.168.1.100:554/stream
#httpx
yolo detect predict model="yolov8n.pt" source=https://x0.ifengimg.com/res/2025/B3CFFED8183219281DC0CB35CEC33C4A45449BA1_size197_w1600_h1068.jpg conf=0.5
(2) 训练: yolo detect train model=yolov8n.pt data=my_dataset.yaml epochs=50 imgsz=640 batch=32 lr0=0.01
# 或者:从零开始训练(不推荐,效果差且慢)
yolo detect train model=yolov8n.yaml data=my_dataset.yaml epochs=100 imgsz=640
要求:my_dataset.yaml格式:
# 1. 数据集根目录(推荐使用绝对路径,避免相对路径报错;Windows路径需用"/"或双反斜杠"\\")
path: /home/user/datasets/fruit_dataset # 对应上面的"your_dataset"目录
# 2. 训练/验证/测试集的图像路径(相对于path的相对路径)
train: images/train # 训练集图像目录
val: images/val # 验证集图像目录
test: images/test # 测试集图像目录(可选)
# 3. 类别相关配置(核心)
nc: 3 # number of classes,类别总数(如:苹果、香蕉、橙子共3类)
names: ['apple', 'banana', 'orange'] # 类别名称列表,顺序必须与标注文件中的class_id对应
# 例:class_id=0 → 'apple',class_id=1 → 'banana'
目录格式:
fruit_dataset
images
train
val
test
labels
train
val
test
完整的训练格式
# 使用YOLOv8s预训练模型,在自定义数据集上训练50轮,图像尺寸640,批次大小16
yolo detect train \
model=yolov8s.pt \
data=./datasets/my_data.yaml \
epochs=50 \
imgsz=640 \
batch=16 \
lr0=0.002 \
device=0 \
project=my_training_results
2. python代码
(1) 检测
from ultralytics import YOLO
if __name__== "__main__":
model = YOLO("../yolov8n.pt")
# 本地图片
# model("../data/images/train/2.png",show=True,save=True)
# 本地视频
# model("../data/v1.mp4", show=True, save=True)
# 摄像头
model("0",show=True)
(2)训练
from ultralytics import YOLO
if __name__== "__main__":
model = YOLO("../yolov8n.pt")
model.train(
data="data.yaml",
epochs=2,
batch=16,
imgsz=640,
device='cpu'
)
print("训练完毕")
训练结束后,在run/detect/train/weights下面有两个权重文件,分别是best.pt、last.pt。
更多推荐
所有评论(0)