扩展阅读:CSV格式的目标检测(Object Detection)标注文件示例
CSV 格式的 目标检测(Object Detection)标注文件 ,采用的是 边界框(Bounding Box)标注,属于 矩形框标注(Axis-Aligned Bounding Box, AABB) 类型。
CSV示例内容:
image_name,x_min,y_min,x_max,y_max,label  
image_1.jpg,30,50,150,200,face  
image_2.jpg,20,40,180,220,face
这个 CSV 格式存储的目标检测边界框标注文件,采用 (x_min, y_min, x_max, y_max) 表示人脸位置,属于 矩形框标注(Bounding Box Annotation),常用于人脸检测、通用目标检测等任务。
🔍详细解析:
每一行的字段含义如下:
| 字段名 | 含义 | 
|---|---|
| image_name | 图像文件名 | 
| x_min | 边界框左上角的 x 坐标(最小 x) | 
| y_min | 边界框左上角的 y 坐标(最小 y) | 
| x_max | 边界框右下角的 x 坐标(最大 x) | 
| y_max | 边界框右下角的 y 坐标(最大 y) | 
| label | 目标类别标签(这里是 "face") | 
这种表示方式是目标检测任务中 非常常见的一种标注格式,尤其在以下场景中广泛使用:
- 自定义数据集训练(如 YOLO、Faster R-CNN、SSD 等模型的前期数据准备)
- Kaggle 竞赛中的检测任务
- 简单的 CSV 格式便于人工检查和编辑
与其他常见标注格式对比:
| 格式 | 特点 | 示例 | 
|---|---|---|
| CSV(如你所示) | 简洁、易读、适合单框或多框(每行一个框) | image.jpg,10,20,100,150,face | 
| Pascal VOC (XML) | 结构化 XML,支持多目标、难例标记等 | <bndbox><xmin>10</xmin>...</bndbox> | 
| COCO (JSON) | 复杂但功能强大,支持检测、分割、关键点 | "bbox": [x, y, width, height] | 
| YOLO (TXT) | 每张图一个 .txt文件,归一化坐标 | 0 0.5 0.6 0.2 0.3 | 
注意:这个 CSV 示例使用的是 (x_min, y_min, x_max, y_max) 格式,而 YOLO 格式使用的是 (center_x, center_y, width, height) 且坐标归一化到 [0,1],两者不同。
如何使用这种 CSV 标注?
-  训练模型前转换: 
 大多数深度学习框架(如 Detectron2、MMDetection、YOLOv5/v8)不直接读取 CSV,需要先转换为对应格式(如 COCO JSON 或 YOLO TXT)。
-  自定义 Dataset 类(PyTorch 示例): import pandas as pd from torch.utils.data import Dataset from PIL import Imageclass CSVDataset(Dataset):def __init__(self, csv_file, img_dir, transform=None):self.annotations = pd.read_csv(csv_file)self.img_dir = img_dirself.transform = transformdef __len__(self):return len(self.annotations)def __getitem__(self, idx):img_path = os.path.join(self.img_dir, self.annotations.iloc[idx, 0])image = Image.open(img_path).convert("RGB")bbox = self.annotations.iloc[idx, 1:5].values.astype("float32") # [x_min, y_min, x_max, y_max]label = self.annotations.iloc[idx, 5]# ... 转换为 tensor 等
-  可视化检查: 
 可用 OpenCV 或 Matplotlib 读取 CSV 并在图像上画框,验证标注质量。
