肺炎检测数据集VOC+YOLO格式4983张2类别:从标注到YOLOv8训练全流程
简介本资源为肺炎检测数据集面向医学影像分析方向的算法工程师、研究生及深度学习入门者用于训练和验证肺炎阳性与阴性二分类目标检测模型。数据集同时提供Pascal VOC与YOLO两种标注格式包含jpg图片及对应的xml、txt标注文件标注工具为labelImg采用矩形框标注共2个类别pneumonia negative与pneumonia positive总框数达10041个其中阴性框5328个、阳性框4713个。压缩包为7z格式共2000个文件以1999个xml标注文件和1个txt说明文件为主整体约112.65MB目录结构清晰便于直接接入主流检测框架。需注意数据集中包含较多增强图片建议下载前仔细查看图片预览并斟酌使用。目前已有469人学习下载适合需要快速获取标注数据、开展医学影像检测实验与模型对比的读者参考使用。1. 肺炎检测数据集 VOCYOLO 格式 4983 张 2 类别这批数据到底能训出什么拿到一个标注好的肺炎检测数据集第一反应通常不是「太好了」而是「这 4983 张到底够不够、2 个类别是哪两类、VOC 和 YOLO 两种格式怎么选」。肺炎检测在胸片场景里属于典型的密集小目标问题——病灶区域边界模糊、对比度低、不同设备成像差异大和 COCO 里那些轮廓清晰的日常物体完全不是一回事。这批数据同时提供 VOC XML 和 YOLO TXT 两套标注意味着你既能直接喂给 YOLOv8/v11 这类检测器也能用 VOC 格式做数据清洗和可视化复核。它适合两类人一是想跑通医学目标检测全流程的入门者二是手里有胸片数据、需要一份可对照的标注规范做参考的从业者。核心价值不在「数据量大」而在「格式齐全、类别干净」省掉了最耗时的格式转换和标注校验环节。2. 肺炎检测数据集的两套标注格式VOC 与 YOLO 到底差在哪2.1 VOC XML 的结构与肺炎场景下的字段含义Pascal VOC 格式用一张图对应一个 XML 文件核心节点是object里面记录类别名和bndbox的四个坐标。肺炎检测里name通常就是pneumonia和normal两类bndbox用的是绝对像素坐标左上角xmin/ymin、右下角xmax/ymax。这种绝对坐标的好处是直观——你打开 XML 就能知道框在图上哪个位置做可视化复核时不用换算。但缺点也明显图像缩放后坐标全部失效必须重新标注或做同步缩放。annotation filenamepatient_001.png/filename size width1024/width height1024/height depth3/depth /size object namepneumonia/name !-- 类别名2 类别场景下另一类是 normal -- bndbox xmin312/xmin !-- 绝对像素坐标左上角 -- ymin208/ymin xmax498/xmax !-- 右下角 -- ymax376/ymax /bndbox /object /annotation上面这段 XML 里size记录原图宽高是后续做坐标归一化的基准。name必须和你的classes.txt严格一致大小写、空格都不能差否则训练时会出现「标注文件里有的类别模型配置里没有」的报错。bndbox四个值必须是整数且xmax xmin、ymax ymin肺炎病灶框如果出现零宽或零高多半是标注时误操作训练前必须过滤。2.2 YOLO TXT 的归一化坐标与类别索引映射YOLO 格式每张图对应一个 TXT每行一个目标格式是class_id x_center y_center width height全部是归一化到 0~1 的浮点数。和 VOC 最大的区别有两点一是类别用整数索引而不是字符串索引顺序由classes.txt或data.yaml里的names列表决定二是坐标是中心点加宽高不是角点。肺炎检测里病灶框往往偏小归一化后数值可能只有 0.0x 级别这时候要特别注意浮点精度——用 Python 写回文件时保留 6 位小数足够保留 2 位会把小框压没。# VOC XML 转 YOLO TXT 的核心换算 def voc_to_yolo(xmin, ymin, xmax, ymax, img_w, img_h): x_center (xmin xmax) / 2.0 / img_w # 中心点 x 归一化 y_center (ymin ymax) / 2.0 / img_h # 中心点 y 归一化 w (xmax - xmin) / img_w # 宽归一化 h (ymax - ymin) / img_h # 高归一化 return x_center, y_center, w, h这段换算里img_w和img_h必须来自 XML 的size节点不能凭经验假设 1024。肺炎数据集里图像尺寸不统一是常态有的设备出 2048有的出 512写死尺寸会导致框整体偏移。换算完建议做一次反向校验把 YOLO 坐标还原成像素坐标和原 XML 对比误差超过 1 像素就说明中间有取整问题。2.3 两类别标注在训练配置里的写法2 类别意味着nc2names列表顺序必须和 TXT 里的class_id对应。常见做法是0: pneumonia、1: normal但有些数据集会把normal放 0。这个顺序一旦定下训练、验证、推理全流程都不能改否则模型会把肺炎当正常。建议在data.yaml里显式写清楚并在训练前用脚本统计一遍每个类别的框数量确认没有类别被漏标。# data.yaml 关键字段 path: ./pneumonia_dataset train: images/train val: images/val nc: 2 names: 0: pneumonia 1: normalpath指向数据集根目录train和val是相对路径。如果 VOC 和 YOLO 两套格式都保留建议只把 YOLO 格式放进images/labels结构VOC XML 单独放一个annotations_voc目录做备份避免训练时路径扫描到多余文件。nc写错是最隐蔽的坑——写成 1 时模型只学一个类另一个类的框会被当成背景训练 loss 看着在降实际漏检严重。3. 用这批数据跑通 YOLOv8 训练从解压到第一轮验证3.1 解压后的目录整理与文件配对检查拿到.7z压缩包先别急着解压到桌面。肺炎数据集 4983 张图加标注解压后文件数接近一万散落在桌面会拖慢文件系统。我一般建一个pneumonia_workspace目录里面分raw、datasets、runs三个子目录。raw放解压原始内容datasets放整理后的 YOLO 结构runs留给训练输出。# 解压并整理目录结构 mkdir -p pneumonia_workspace/{raw,datasets,runs} 7z x pneumonia_dataset.7z -o./pneumonia_workspace/raw # 整理成 YOLO 标准结构 cd pneumonia_workspace/datasets mkdir -p images/train images/val labels/train labels/val # 假设原始图片和 TXT 在同一目录按 8:2 划分 python split_dataset.py --src ../raw --dst . --ratio 0.8split_dataset.py的核心逻辑是遍历所有图片找到同名 TXT按比例复制到images/train和labels/train。这里有个血泪经验——图片和标注必须同名且成对缺一个就跳过并在日志里记下来。肺炎数据集里偶尔会有标注文件存在但图片损坏的情况直接训练会在 dataloader 阶段报错提前检查能省掉半夜排查的时间。3.2 训练命令与 batch size 在 4983 张规模下的取值4983 张图、2 类别属于中小规模检测任务。YOLOv8n 或 YOLOv8s 足够没必要上 L 或 X参数量大了反而过拟合。batch size 取决于显存8G 显存跑 640 分辨率batch16比较稳12G 以上可以上batch32。epoch 建议 100 起步肺炎病灶特征不明显收敛比 COCO 慢。yolo detect train \ data./datasets/data.yaml \ modelyolov8s.pt \ epochs150 \ imgsz640 \ batch16 \ device0 \ patience30 \ project./runs \ namepneumonia_v1imgsz640是 YOLO 默认值但肺炎胸片原始分辨率往往更高直接缩到 640 会丢失小病灶细节。如果显存允许可以试imgsz1024mAP 通常有 2~5 个点提升。patience30表示 30 轮验证指标不升就早停避免无效训练。device0指定第一块 GPU多卡场景下要确认 CUDA 可见设备顺序。3.3 第一轮验证看什么指标mAP50 与混淆矩阵训练跑完先别只看mAP50。肺炎检测里mAP50-95更能反映框的定位质量因为病灶边界本身就模糊IOU 阈值一高很多框就掉到 0.5 以下。混淆矩阵要重点看normal被误判成pneumonia的比例——临床上把正常当肺炎是过度诊断反过来是漏诊两者代价不同调阈值时要有倾向。from ultralytics import YOLO model YOLO(./runs/pneumonia_v1/weights/best.pt) metrics model.val(data./datasets/data.yaml, imgsz640) print(metrics.box.map) # mAP50-95 print(metrics.box.map50) # mAP50 print(metrics.confusion_matrix.matrix) # 混淆矩阵metrics.box.map是核心指标肺炎场景下能到 0.35 以上就算可用。混淆矩阵打印出来是二维数组行是真实类别列是预测类别对角线是正确预测。如果normal那一行的非对角线值很高说明模型对正常样本过敏感可以适当提高推理时的conf阈值。4. 肺炎检测训练避坑标注、坐标与类别索引的 5 个翻车现场4.1 现象训练 loss 正常下降但 mAP 始终为 0原因通常是类别索引错位。VOC XML 里写的是pneumonia但data.yaml的names列表里pneumonia排在索引 1而 TXT 文件里写的是 0。模型学的是「0 类」验证时按「1 类」去匹配自然全错。解决方法是写一个脚本统计所有 TXT 里出现的class_id集合和data.yaml的names长度对比不一致就停下来查。4.2 现象部分图片训练时报「坐标越界」原因是 VOC 转 YOLO 时没有做边界裁剪。肺炎标注里偶尔会出现xmax略大于图像宽度的情况归一化后x_center w/2 1。YOLO 的 dataloader 对越界坐标容忍度低直接报错。解决是在转换脚本里加一行裁剪x_center min(max(x_center, 0), 1)宽高同理同时记录被裁剪的样本人工复核是不是标注错误。4.3 现象验证集 mAP 比训练集低 20 个点以上这是典型的划分泄漏。4983 张图如果按随机划分同一患者的多次检查可能同时出现在训练和验证集模型记住了患者特征而不是病灶特征。肺炎数据尤其要注意按患者 ID 划分而不是按图片随机分。如果数据里没有患者 ID至少按图像来源设备或时间做分组划分。4.4 现象小病灶框在训练中被忽略原因是 YOLO 的 anchor 匹配机制对小目标不友好。640 分辨率下小于 16x16 像素的框很难被正样本匹配到。解决有两个方向一是提高imgsz到 1024让小框的绝对像素变大二是用 YOLOv8 的close_mosaic参数在最后几轮关掉 mosaic 增强让模型专注小目标。4.5 现象推理时同一张图框数量忽多忽少原因是conf阈值和 NMS 的iou阈值没调好。肺炎病灶密集时NMS 的iou0.7默认值会误删相邻框。建议推理时把iou降到 0.5conf从 0.25 起调观察框数量和实际病灶数的关系。如果框明显偏多提高conf框粘连降iou。5. 把 2 类别肺炎检测推到可用阈值调优与误检复核的一个习惯训练出best.pt只是起点真正决定这批数据值不值得投入的是推理阶段的阈值调优和误检复核。我一般会留出 200 张不参与训练的图做「临床模拟测试」用不同conf和iou组合跑一遍画一条 precision-recall 曲线找那个「漏检可接受、误检不离谱」的平衡点。肺炎检测里conf0.35、iou0.45是我在多个胸片数据集上试出来的起点但每个数据集的成像风格不同必须自己扫一遍。import numpy as np from ultralytics import YOLO model YOLO(./runs/pneumonia_v1/weights/best.pt) confs np.arange(0.15, 0.65, 0.05) ious np.arange(0.3, 0.7, 0.05) best None for c in confs: for i in ious: r model.val(data./datasets/data.yaml, confc, ioui, imgsz640) # 综合 mAP50 和误检率误检率用 1 - precision 近似 score r.box.map50 - 0.3 * (1 - r.box.mp) if best is None or score best[0]: best (score, c, i, r.box.map50, r.box.mp) print(f最佳组合 conf{best[1]:.2f} iou{best[2]:.2f} mAP50{best[3]:.3f} precision{best[4]:.3f})这段扫描的逻辑是score把 mAP50 和 precision 加权权重 0.3 是我根据肺炎场景定的——宁可稍微降一点 mAP也要保证 precision 不太低因为误检带来的复核成本很高。r.box.mp是平均 precision1 - mp近似误检率。扫完之后把最佳组合固定下来写进推理脚本的默认参数。另一个习惯是每次推理完随机抽 20 张图把预测框和原图叠在一起看。肺炎病灶有时候模型框的是肋骨边缘或者设备标记这种误检在指标上看不出来但临床上一眼假。我一般用 OpenCV 画框后存到runs/review目录文件名带上conf值方便回溯是哪组参数出的问题。这个复核习惯坚持下来比多训 50 个 epoch 更能提升实际可用性。最后说一句实在的4983 张 2 类别的肺炎数据训一个能用的筛查辅助模型是够的但别指望它直接上临床。把它当成一个高质量的起点用 VOC 格式做标注复核用 YOLO 格式做快速迭代把阈值调优和误检复核变成固定流程这批数据的价值才能真正落地。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

Trae上下文压缩的定义、必要性和意义:从多智能体协作到TaoToken统一Key的工程实践

Trae上下文压缩的定义、必要性和意义:从多智能体协作到TaoToken统一Key的工程实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:34:14 阅读更多 →
Yuvomi是什么?一款自托管家庭规划系统,一个应用替代20个付费订阅

Yuvomi是什么?一款自托管家庭规划系统,一个应用替代20个付费订阅

【免费下载链接】yuvomi Self-hosted family planner - tasks, calendars, shopping, meals, budget. Your data, your server. 项目地址: https://gitcode.com/gh_mirrors/oi/yuvomi 点击查看 免费下载 Yuvomi 是一款免费的自托管家庭规划系统(Self-ho…

2026/10/11 10:34:14 阅读更多 →
PLC工程师12年经验:给自动化应届生的90条入行生存指南

PLC工程师12年经验:给自动化应届生的90条入行生存指南

1. 这个项目到底在做什么我打开这个标题看了三遍,脑子里蹦出来的第一个念头是:这玩意儿太真实了。“工作12年的PLC工程师,给自动化应届生的90条入行经验(每天更新)”,这句话没有炫技,没有标题党…

2026/10/11 10:33:14 阅读更多 →

最新新闻

接口测试全解析:从HTTP原理到自动化与工具落地实践

接口测试全解析:从HTTP原理到自动化与工具落地实践

一说接口测试,很多刚转过来做测试、或者从纯功能测试往自动化方向走的朋友,第一反应往往是:页面上的功能我都验证过了,为什么还要去测接口?点开一个接口测试教程,看到满屏的参数、JSON、状态码,…

2026/10/11 12:19:18 阅读更多 →
基于SAM的半自动标注工具:从环境搭建到COCO导出的完整指南

基于SAM的半自动标注工具:从环境搭建到COCO导出的完整指南

简介:这是一套面向计算机视觉开发者与数据标注人员的半自动图像标注工具源码,基于 Segment Anything Model 实现,只需鼠标左键点击一次即可完成目标分割与标注,并支持多目标、多类别批量处理及 YOLO 数据格式转换,适合…

2026/10/11 12:19:18 阅读更多 →
基于YOLO的交通流量统计与违章检测:从检测跟踪到规则引擎的工程实践

基于YOLO的交通流量统计与违章检测:从检测跟踪到规则引擎的工程实践

简介:这份资源面向人工智能、深度学习方向的毕业设计与课程设计学习者,提供一套基于YOLO的交通流量统计与违章行为检测完整项目源码。系统通过交通摄像头采集视频流,利用YOLO模型对车辆、行人、自行车等目标进行实时检测,统计车流…

2026/10/11 12:19:18 阅读更多 →
morphing原理深剖:bloub如何用径向轮廓采样绕开路径变形库,零依赖实现14态SVG变形

morphing原理深剖:bloub如何用径向轮廓采样绕开路径变形库,零依赖实现14态SVG变形

前端图形学 【免费下载链接】bloub SVG recreation of the x.ai bot avatar. One shape morphing through 14 states, measured off the reference video frame by frame. 项目地址: https://gitcode.com/gh_mirrors/bl/bloub 点击查看 免费下载 bloub 是一个零依赖…

2026/10/11 12:19:18 阅读更多 →
OpenClaw部署实战:从阿里云一键部署到飞书机器人接入全指南

OpenClaw部署实战:从阿里云一键部署到飞书机器人接入全指南

OpenClaw这个开源项目,最近几个月在自动化圈子里的讨论热度一直没降过。简单说,它就是一个能“听懂人话”的个人AI助理框架:你给它一句话,它能拆成任务、调用工具、写脚本、请求API,最后把结果整理好回给你。而OpenCla…

2026/10/11 12:19:17 阅读更多 →
深入zlibrary-to-notebooklm源码:Python + Playwright + NotebookLM CLI全链路架构解析

深入zlibrary-to-notebooklm源码:Python + Playwright + NotebookLM CLI全链路架构解析

【免费下载链接】zlibrary-to-notebooklm 一键将 Z-Library 书籍自动下载并上传到 Google NotebookLM 项目地址: https://gitcode.com/gh_mirrors/zl/zlibrary-to-notebooklm 点击查看 免费下载 zlibrary-to-notebooklm 是一个开源的自动化桥梁工具:一条…

2026/10/11 12:18:15 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →