这里以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。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐