目标

基于yolo8m模型进行火焰类型的识别训练,生成一个可识别fire和smoke的视觉模型。

一、yolo模型类别

ultralytics通过coco训练集得到的yolo模型主要的识别类别如下

# Classes
names:
  0: person
  1: bicycle
  2: car
  3: motorcycle
  4: airplane
  5: bus
  6: train
  7: truck
  8: boat
  9: traffic light
  10: fire hydrant
  11: stop sign
  12: parking meter
  13: bench
  14: bird
  15: cat
  16: dog
  17: horse
  18: sheep
  19: cow
  20: elephant
  21: bear
  22: zebra
  23: giraffe
  24: backpack
  25: umbrella
  26: handbag
  27: tie
  28: suitcase
  29: frisbee
  30: skis
  31: snowboard
  32: sports ball
  33: kite
  34: baseball bat
  35: baseball glove
  36: skateboard
  37: surfboard
  38: tennis racket
  39: bottle
  40: wine glass
  41: cup
  42: fork
  43: knife
  44: spoon
  45: bowl
  46: banana
  47: apple
  48: sandwich
  49: orange
  50: broccoli
  51: carrot
  52: hot dog
  53: pizza
  54: donut
  55: cake
  56: chair
  57: couch
  58: potted plant
  59: bed
  60: dining table
  61: toilet
  62: tv
  63: laptop
  64: mouse
  65: remote
  66: keyboard
  67: cell phone
  68: microwave
  69: oven
  70: toaster
  71: sink
  72: refrigerator
  73: book
  74: clock
  75: vase
  76: scissors
  77: teddy bear
  78: hair drier
  79: toothbrush

二、数据训练集

训练集:17,221张图片

测试集:4,306张图片

验证集:47张图片

三、建立数据集yaml文件

train: "/mnt/workspace/demos/YOLOv8-Fire-and-Smoke-Detection/datasets/fire-8/train/images"
val: "/mnt/workspace/demos/YOLOv8-Fire-and-Smoke-Detection/datasets/fire-8/valid/images"
test: "/mnt/workspace/demos/YOLOv8-Fire-and-Smoke-Detection/datasets/fire-8/test/images"  # 可选,确保路径正确
nc: 3  # 类别数,例如 1 类
names: ["fire","default","smoke"]  # 类别名称

四、CV模型训练

from ultralytics import YOLO

# 加载模型(也可以使用 yolov8n.pt / yolov8s.pt 等)
model = YOLO('yolov8m.pt') #此处填写的模型会在进程中进行下载

# 开始训练
model.train(
    data='/mnt/workspace/demos/CV/Fire-Detection-using-YOLOv8/ultralytics/yolo/data/datasets/fire.yaml',  # 数据集配置路径
    epochs=100,              # 训练轮数
    batch=16,                # 每批次图像数量
    imgsz=800,               # 输入图像大小
    scale=0.75,              # 多尺度增强(代替 multi_scale)
    patience=20,             # 提前终止等待轮数
    project='runs/fire-detection',  # 输出根目录
    name='fire-v1-m',        # 当前训练的子目录名
    exist_ok=True,            # 若目录存在则继续写入
    cos_lr=True
)

训练任务中的参数设置需要依赖于GPU、内存等性能指标决定

(阿里云环境的 8vgpu 单卡 NVIDIA A10 内存30GiB的环境下,batch设置为64时报错内存不足,降低为16时可正常训练)

五、CV模型格式转换

完成训练后得到训练指标结果以及best.pt模型

执行第一条语句进行格式转换,PyTorch 格式的模型被转换为TensorRT ,以便使用导出的模型进行推理,转换后获得.engine和.onnx格式的模型。

# Export a YOLO11n PyTorch model to TensorRT format
yolo export model=yolo11n.pt format=engine # creates 'yolo11n.engine'

# Run inference with the exported model
yolo predict model=yolo11n.engine source='https://ultralytics.com/images/bus.jpg'

六、结果测试

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐