yolo肺炎数据集 有7278张 带标注(yolo格式)
类别为一种 0为健康,1为生病的,2为潜伏性结核病,3为活动性结核病
YOLO肺炎数据集(YOLO Pneumonia Dataset, YPD)
摘要
YOLO肺炎数据集(YPD)是一个专为肺炎检测任务设计的数据集,包含7278张胸部X光图像,并采用YOLO格式进行标注。该数据集旨在帮助研究人员和工程师开发更精确的肺炎检测模型,特别是用于区分健康状态、生病状态以及不同类型结核病的检测。数据集中的类别包括健康、生病、潜伏性结核病和活动性结核病,适用于目标检测任务。
数据集特点
- 多类别:数据集中包含4个不同的类别,分别是:
0
:健康1
:生病2
:潜伏性结核病3
:活动性结核病
- 高质量图像:图像分辨率高,清晰度好,能够准确反映胸部X光的情况。
- 详细的YOLO格式标注:每张图像都有边界框和类别的标注信息,确保了标注的准确性。
- 标准化格式:数据集采用YOLO格式进行标注,便于使用现有的YOLO框架进行训练。
- 易于使用:数据集已经划分好了训练集、验证集和测试集,可以直接用于训练目标检测模型。
数据集构成
- 总图像数量:7278张
- 类别数:4类
- 类别名称:
0
:健康1
:生病2
:潜伏性结核病3
:活动性结核病
- 数据集划分:
- 训练集: 约5822张
- 验证集: 约728张
- 测试集: 约728张
- 数据量:具体大小取决于图像的分辨率,但通常在几GB左右。
数据集结构
数据集的文件结构如下:
yolo_pneumonia_dataset/
├── images/
│ ├── train/
│ ├── val/
│ └── test/
└── labels/
├── train/
├── val/
└── test/
images/
目录下存放图像文件。labels/
目录下存放对应的YOLO格式的文本标注文件。
每个YOLO格式的标注文件包含一个或多个边界框的标注信息,每行描述一个边界框。例如:
0 0.487500 0.531250 0.250000 0.375000
1 0.625000 0.750000 0.375000 0.500000
2 0.375000 0.437500 0.500000 0.625000
3 0.750000 0.812500 0.625000 0.750000
每一行的格式为:
<class> <x_center> <y_center> <width> <height>
<class>
:类别索引(0, 1, 2, 3)<x_center>
:边界框中心点的x坐标(归一化到0-1之间)<y_center>
:边界框中心点的y坐标(归一化到0-1之间)<width>
:边界框的宽度(归一化到0-1之间)<height>
:边界框的高度(归一化到0-1之间)
示例代码
以下是一个详细的Python脚本示例,用于加载数据集中的一对图像-标签对,并可视化其中的标注信息。此外,还包括了如何使用常用的YOLOv5进行训练的基本步骤。
加载并可视化图像与标签
import os
import cv2
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Rectangle
# 数据集目录路径
data_dir = 'path/to/ypd_dataset'
train_image_dir = os.path.join(data_dir, 'images/train')
train_label_dir = os.path.join(data_dir, 'labels/train')
# 选取一张训练图像及其对应标签
image_files = os.listdir(train_image_dir)
image_file = image_files[0] # 假设取第一张图
label_file = os.path.splitext(image_file)[0] + '.txt' # YOLO格式的标签
image_path = os.path.join(train_image_dir, image_file)
label_path = os.path.join(train_label_dir, label_file)
# 加载图像
image = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)
height, width = image.shape
# 解析YOLO格式标签
def parse_yolo_label(label_path, image_width, image_height):
with open(label_path, 'r') as f:
lines = f.readlines()
bboxes = []
for line in lines:
class_id, x_center, y_center, bbox_width, bbox_height = map(float, line.strip().split())
x_min = int((x_center - bbox_width / 2) * image_width)
y_min = int((y_center - bbox_height / 2) * image_height)
x_max = int((x_center + bbox_width / 2) * image_width)
y_max = int((y_center + bbox_height / 2) * image_height)
bboxes.append((int(class_id), x_min, y_min, x_max, y_max))
return bboxes
# 解析标签
bboxes = parse_yolo_label(label_path, width, height)
# 可视化标注
fig, ax = plt.subplots(figsize=(10, 10))
ax.imshow(image, cmap='gray')
colors = ['#00FF00', '#FF0000', '#FFFF00', '#0000FF'] # 四种颜色分别对应四个类别
names = ['Healthy', 'Sick', 'Latent TB', 'Active TB']
for bbox, color_name in zip(bboxes, colors):
class_id, x_min, y_min, x_max, y_max = bbox
rect = Rectangle((x_min, y_min), x_max - x_min, y_max - y_min, linewidth=2, edgecolor=colors[class_id], facecolor='none')
ax.add_patch(rect)
ax.text(x_min, y_min - 10, names[class_id], color=colors[class_id], fontsize=8)
plt.title('YOLO Pneumonia Dataset')
plt.axis('off')
plt.show()
使用YOLOv5进行训练
假设你已经安装了YOLOv5,并且配置文件(例如ypd.yaml
)已经准备好,以下是使用YOLOv5进行训练的基本步骤:
-
克隆YOLOv5仓库(如果尚未完成):
git clone https://github.com/ultralytics/yolov5 cd yolov5
-
安装依赖:
pip install -r requirements.txt
-
创建数据配置文件(如果尚未创建): 创建一个名为
ypd.yaml
的文件,内容如下:train: path/to/ypd_dataset/images/train val: path/to/ypd_dataset/images/val test: path/to/ypd_dataset/images/test nc: 4 # 类别数 names: ['Healthy', 'Sick', 'Latent TB', 'Active TB']
-
开始训练:
python train.py --img 416 --batch 16 --epochs 100 --data ypd.yaml --weights yolov5s.pt
其中,
--img 416
指定输入图像大小,--batch 16
指定批量大小,--epochs 100
指定训练轮数,--data ypd.yaml
指定数据配置文件,--weights yolov5s.pt
指定预训练权重。 -
评估模型: 训练完成后,你可以使用以下命令来评估模型性能:
python val.py --img 416 --batch 16 --data ypd.yaml --weights runs/train/exp/weights/best.pt
-
推理和可视化: 你还可以使用训练好的模型进行推理,并可视化结果:
python detect.py --source path/to/your_test_images --weights runs/train/exp/weights/best.pt --save-txt --save-conf --save-crop
通过上述步骤,你可以轻松地使用这个数据集来训练一个高效的肺炎检测模型。