目录
前言
在AI与深度学习逐渐发展成熟的趋势下,人工智能和大数据等技术开始进入了医疗领域,它们把现有的一些传统流程进行优化,大幅度提高各种流程的效率、精度、用户体验,同时也缓解了医疗资源的压力和精确度不够的问题。
智能医疗有很多的发展方向,例如医学影像处理、诊断预测、疾病控制、健康管理、康复机器人、语音识别病历电子化等。当前人工智能技术新的发力点中的医学图像在疾病的预测和自动化诊断方面有非常大的意义,本篇即针对医学影像中的胸部X射线部分进行研究,利用公开数据集+开源算法YOLOv8来训练模型,模拟医疗胸X射线方向实用场景。
数据集
为了向研究界提供具有高质量标签的大型胸部x射线(CXR)图像数据集,vindr从108医院和河内医科大学医院(越南最大的两家医院)收集的100,000多张DICOM格式的原始图像中构建了VinDr-CXR数据集。公布的数据集由18,000个前后(PA)CXR扫描组成,这些扫描带有关键发现的定位和常见胸部疾病的分类。这些图像由一组至少有8年经验的17名放射科医生对22个关键发现(局部标签)和6个诊断(全局标签)进行注释;每个发现都用边界框来定位。局部和全局标签分别对应于标准放射学报告的“发现”和“印象”部分。
vindr将数据集分为两部分:15000次扫描的训练集和3000次扫描的测试集。训练集中的每幅图像都由3名放射科医生独立标记,而测试集中的每幅图像的注释经过更仔细的处理,并从5名放射科医生的共识中获得。标记过程是通过我们自己的基于网络的框架VinDr Lab执行的,该框架建立在图像存档和通信系统(PACS)之上。
此数据集为vindr公开数据集,原版是DICOM格式,我自己处理了一下,转成了YOLO格式,已上传至百度网盘(24.2G大小)请先下载:
百度网盘链接点击下载https://pan.baidu.com/s/1WfvgaPOXjLSLS-l6qXgLDQ?pwd=omue
数据集牌配置文件coco8_CN.yaml预览
path: ../../datasets # dataset root dir (leave empty for HUB)
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 images
test: images/test # images (optional)
# Classes
names:
0: "主动脉增大"
1: "肺不张"
2: "钙化"
3: "心脏肥大"
4: "实变"
5: "间质性肺疾病"
6: "浸润"
7: "肺不透明"
8: "结节/肿块"
9: "其他病变"
10: "胸腔积液"
11: "胸膜增厚"
12: "气胸"
13: "肺纤维化"
实验环境
仅供参考:矩池云GPU服务器(NVIDIA GeForce RTX 2080 Ti)
Python 3.10,Pytorch 2.1.1
省钱小技巧:先将数据集上传至矩池云网盘,再租用矩池云服务器,服务器内可直接读取网盘数据,省去数据集上传服务器时间。
使用步骤
1.安装依赖库
安装yolov8(用自己电脑的建议先创建虚拟环境)
pip install ultralytics
2.训练模型
下载的数据集名为vinbigdata.zip,里面包含yolov8预训练模型,运行即可:
unzip /mnt/vinbigdata.zip -d /home # 解压缩(仅供参考)
cd /home/vinbigdata/models # 进入项目目录(仅供参考)
python train.py # 训练
train.py文件预览:
# 参数详细注释:https://docs.ultralytics.com/modes/train/#key-features-of-train-mode
from ultralytics import YOLO
# Load a model
model = YOLO('yolov8s.pt') # load a pretrained model (recommended for training)
# Train the model
results = model.train(
data='../datasets/coco8_CN.yaml', # 数据集配置文件
epochs=50, # 训练次数
device=0, # 使用GPU(如果用CPU训练 device=cpu)
imgsz=640, # 图像大小(默认640)
batch=-1, # 批次(-1=根据GPU自动调整,默认16)
lr0=0.01, # 初始学习率(默认0.01)
lrf=0.0001, # 结束学习率(默认0.01)
)
训练过程预览:
3.测试模型
mode为训练后模型路径,source为测试数据集:
yolo predict model=runs/detect/train/weights/best.pt source='../datasets/images/test'
测试图片预览: