可
可见光红外数据集KAIST
现在多数使用KAIST的论文中的数据集都是经过清洗了的,因为本数据集是取自视频连续帧图片,相邻图片相差不大,故进行一定程度的清洗。 将person、cyclist类统一为person。 训练集7601 验证集2257 红外光和可见光共用一个标签
txt格式yolo可直接训练
可见光红外数据集(KAIST Multispectral Pedestrian Detection Benchmark)
摘要
KAIST 多光谱行人检测基准数据集是一个专为多光谱行人检测设计的数据集,它包含了从韩国科学技术院(KAIST)校园内收集的大量可见光和长波红外(LWIR)图像对。这些图像对是从视频序列中提取出来的连续帧,因此相邻图片之间存在一定的相似性。为了提高训练效率和模型性能,许多研究者会对原始数据进行一定程度的清洗,例如去除高度相似的帧以及将person
和cyclist
类别统一为person
。
数据集特点
- 多光谱图像:每张可见光图像都有对应的长波红外图像,这种双模态信息对于在不同光照条件下的行人检测非常有用。
- 丰富的场景变化:图像来自不同的时间、天气条件和环境背景,提供了多样化的训练样本。
- 精准的标注:所有行人目标都经过了手动标注,并且在可见光和红外图像上使用相同的边界框标签。
- 类别简化:通常会将
person
和cyclist
两类合并为单一的person
类,以简化问题并集中于主要任务。 - 易于使用:数据集已经按照YOLO格式整理,可以直接用于训练和评估YOLO系列的目标检测模型。
数据集构成
- 总图像数量:
- 可见光图像:约100,000张
- 长波红外图像:约100,000张
- 类别数:1类(
person
) - 数据集划分:
- 训练集: 7601个图像对
- 验证集: 2257个图像对
示例代码
以下是一个简单的Python脚本示例,用于加载数据集中的一对可见光-红外图像及其对应标签,并可视化其中的标注信息:
python
深色版本
import os
import cv2
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Rectangle
# 数据集目录路径
data_dir = 'path/to/kaist_dataset'
train_visible_dir = os.path.join(data_dir, 'images/train/visible')
train_lwir_dir = os.path.join(data_dir, 'images/train/lwir')
train_label_dir = os.path.join(data_dir, 'labels/train')
# 选取一对训练图像及其对应标签
image_files = os.listdir(train_visible_dir)
image_file = image_files[0] # 假设取第一对图
label_file = os.path.splitext(image_file)[0] + '.txt' # 假设是TXT格式的标签
visible_image_path = os.path.join(train_visible_dir, image_file)
lwir_image_path = os.path.join(train_lwir_dir, image_file) # 红外图像文件名与可见光相同
label_path = os.path.join(train_label_dir, label_file)
# 加载图像
visible_image = cv2.imread(visible_image_path, cv2.IMREAD_COLOR)
lwir_image = cv2.imread(lwir_image_path, cv2.IMREAD_GRAYSCALE)
height, width, _ = visible_image.shape
# 解析YOLO格式标签
def parse_yolo_label(label_path, image_width, image_height):
bboxes = []
with open(label_path, 'r') as f:
lines = f.readlines()
for line in lines:
class_id, x_center, y_center, box_width, box_height = map(float, line.strip().split())
x_min = int((x_center - box_width / 2) * image_width)
y_min = int((y_center - box_height / 2) * image_height)
box_width = int(box_width * image_width)
box_height = int(box_height * image_height)
bboxes.append((class_id, x_min, y_min, box_width, box_height))
return bboxes
# 解析标签
bboxes = parse_yolo_label(label_path, width, height)
# 可视化标注
fig, axs = plt.subplots(1, 2, figsize=(20, 10))
# 可见光图像上的标注
axs[0].imshow(cv2.cvtColor(visible_image, cv2.COLOR_BGR2RGB))
for bbox in bboxes:
_, x, y, w, h = bbox
rect = Rectangle((x, y), w, h, linewidth=2, edgecolor='red', facecolor='none')
axs[0].add_patch(rect)
axs[0].set_title('Visible Image with Annotations')
axs[0].axis('off')
# 红外图像上的标注
axs[1].imshow(lwir_image, cmap='gray')
for bbox in bboxes:
_, x, y, w, h = bbox
rect = Rectangle((x, y), w, h, linewidth=2, edgecolor='white', facecolor='none')
axs[1].add_patch(rect)
axs[1].set_title('LWIR Image with Annotations')
axs[1].axis('off')
plt.show()
数据集使用指南
-
数据准备:
- 确认数据集路径是否正确,并且图像和标签文件均存在指定的目录下。
- 检查数据集是否有损坏或缺失的文件,确保所有图像和对应的标注文件都是完整的。
-
数据预处理:
- 如果需要,可以进一步清洗数据集,比如去除重复帧或者调整标签格式。
-
配置文件:
- 根据所使用的深度学习框架(如YOLOv5, YOLOv7, Detectron2等),创建合适的配置文件,设置好训练参数,包括学习率、批次大小、迭代次数等。
-
模型训练:
- 使用提供的数据集开始训练模型,注意根据实际情况调整模型参数。
-
模型评估:
- 训练完成后,在验证集上评估模型的表现,观察其在不同光照条件下的准确性和召回率。
- 在最终测试集上进行评估以获取模型的真实性能。
-
应用实践:
- 将训练好的模型部署到实际的应用场景中,如夜间监控、智能交通系统等,实现全天候的行人检测功能。