使用YOLOv8训练热成像目标检测数据集 520000个标注目标,标注物包括人,自行车,汽车,摩托车,巴士,火车,卡车,灯,消防栓,交通标志,狗,滑板等,热成像数据集该如何训练
如何训练使用——热成像目标检测数据集V2版本,总计26,442帧(9,233个可见光图像,9,711个热成像图像和7,498个匹配的热成像/可见光视频帧)热成像图像注释,520000个标注目标,标注物包括人,自行车,汽车,摩托车,巴士,火车,卡车,灯,消防栓,交通标志,狗,滑板,婴儿车,电动踏板,其他车辆
热成像目标检测数据集 V2 版本包含 26,442 帧,其中包括 9,233 个可见光图像、9,711 个热成像图像和 7,498 个匹配的热成像/可见光视频帧。数据集中共有 520,000 个标注目标,标注物包括以下类别:
人
自行车
汽车
摩托车
巴士
火车
卡车
灯
消防栓
交通标志
狗
滑板
婴儿车
电动踏板
其他车辆
数据集结构
假设数据集的目录结构如下:
深色版本
thermal_detection_dataset_v2/
├── images/
│ ├── visible/
│ │ ├── 000001.jpg
│ │ ├── 000002.jpg
│ │ └── …
│ ├── thermal/
│ │ ├── 000001.jpg
│ │ ├── 000002.jpg
│ │ └── …
│ ├── matched/
│ │ ├── 000001_visible.jpg
│ │ ├── 000001_thermal.jpg
│ │ ├── 000002_visible.jpg
│ │ ├── 000002_thermal.jpg
│ │ └── …
├── labels/
│ ├── visible/
│ │ ├── 000001.txt
│ │ ├── 000002.txt
│ │ └── …
│ ├── thermal/
│ │ ├── 000001.txt
│ │ ├── 000002.txt
│ │ └── …
│ ├── matched/
│ │ ├── 000001_visible.txt
│ │ ├── 000001_thermal.txt
│ │ ├── 000002_visible.txt
│ │ ├── 000002_thermal.txt
│ │ └── …
使用YOLOv8训练热成像目标检测数据集
环境准备:
bash
深色版本
pip install ultralytics
下载YOLOv8:
bash
深色版本
git clone https://github.com/ultralytics/ultralytics
cd ultralytics
pip install -e .
配置数据集:
创建一个配置文件 thermal_detection_v2.yaml,内容如下:
yaml
深色版本
path: thermal_detection_dataset_v2 # 数据集路径
train: images/train # 训练集图像路径
val: images/val # 验证集图像路径
nc: 15 # 类别数
names: [‘person’, ‘bicycle’, ‘car’, ‘motorcycle’, ‘bus’, ‘train’, ‘truck’, ‘light’, ‘fire_hydrant’, ‘traffic_sign’, ‘dog’, ‘skateboard’, ‘stroller’, ‘electric_scooter’, ‘other_vehicle’] # 类别名称
训练模型:
bash
深色版本
yolo train data=thermal_detection_v2.yaml model=yolov8n.pt epochs=100 imgsz=640
或者通过Python代码进行训练:
python
深色版本
from ultralytics import YOLO
加载预训练模型
model = YOLO(‘yolov8n.pt’)
训练模型
results = model.train(
data=‘thermal_detection_v2.yaml’, # 数据集配置文件
epochs=100, # 训练轮数
imgsz=640, # 图像尺寸
batch=16, # 批量大小
name=‘thermal_detection_v2’ # 实验名称
)
模型评估:
训练完成后,可以使用以下命令评估模型在验证集上的性能:
bash
深色版本
yolo val data=thermal_detection_v2.yaml model=runs/detect/thermal_detection_v2/weights/best.pt imgsz=640
或者通过Python代码进行评估:
python
深色版本
评估模型
results = model.val(data=‘thermal_detection_v2.yaml’, imgsz=640)
可视化结果:
你可以使用以下代码来可视化模型的预测结果:
python
深色版本
import cv2
import torch
from ultralytics import YOLO
加载训练好的模型
model = YOLO(‘runs/detect/thermal_detection_v2/weights/best.pt’)
读取测试图像
image_path = ‘thermal_detection_dataset_v2/images/val/000001.jpg’
image = cv2.imread(image_path)
进行预测
results = model(image)
可视化预测结果
for result in results:
boxes = result.boxes.xyxy # 获取边界框
confidences = result.boxes.conf # 获取置信度
class_ids = result.boxes.cls # 获取类别ID
for box, confidence, class_id in zip(boxes, confidences, class_ids):
x1, y1, x2, y2 = map(int, box)
label = f'{["person", "bicycle", "car", "motorcycle", "bus", "train", "truck", "light", "fire_hydrant", "traffic_sign", "dog", "skateboard", "stroller", "electric_scooter", "other_vehicle"][int(class_id)]} {confidence:.2f}'
color = (0, 255, 0) # 绿色
cv2.rectangle(image, (x1, y1), (x2, y2), color, 2)
cv2.putText(image, label, (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, color, 2)
显示图像
cv2.imshow(‘Prediction’, image)
cv2.waitKey(0)
cv2.destroyAllWindows()
改进策略
为了提高模型的性能,可以尝试以下改进策略:
数据增强:
使用更多的数据增强技术,如随机裁剪、旋转、翻转等。
使用MixUp、CutMix等高级数据增强方法。
模型架构改进:
替换主干网络,例如使用ResNet、EfficientNet等更强大的主干网络。
引入注意力机制,如SENet、CBAM等。
使用更高效的特征融合方法,如BiFPN、ASFF等。
优化器和学习率调度:
尝试不同的优化器,如AdamW、RMSprop等。
使用更复杂的学习率调度策略,如Cosine Annealing、OneCyclePolicy等。
损失函数:
尝试不同的损失函数,如Focal Loss、Dice Loss等。
正则化:
使用Dropout、L2正则化等技术防止过拟合。
多尺度训练:
在不同尺度的图像上进行训练,提高模型的泛化能力。
集成学习:
训练多个模型,然后进行集成,提高整体性能。
示例代码
以下是一个示例代码,展示如何在训练时应用一些常见的改进策略:
python
深色版本
from ultralytics import YOLO
import albumentations as A
from albumentations.pytorch import ToTensorV2
定义数据增强
transform = A.Compose([
A.RandomCrop(width=450, height=450),
A.HorizontalFlip(p=0.5),
A.VerticalFlip(p=0.5),
A.RandomRotate90(p=0.5),
A.Cutout(num_holes=8, max_h_size=64, max_w_size=64, fill_value=0, p=0.5),
A.Normalize(mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225)),
ToTensorV2()
])
加载预训练模型
model = YOLO(‘yolov8n.pt’)
训练模型
results = model.train(
data=‘thermal_detection_v2.yaml’, # 数据集配置文件
epochs=100, # 训练轮数
imgsz=640, # 图像尺寸
batch=16, # 批量大小
name=‘thermal_detection_v2_improved’, # 实验名称
augment=True, # 使用数据增强
transform=transform # 自定义数据增强
)
总结
以上步骤涵盖了从数据集准备到模型训练、评估和可视化的完整流程,并提供了一些常见的改进策略。
更多推荐



所有评论(0)