
数据集文字描述21种疾病类别用于舌诊目标检测。训练集5594张图像验证集包含572张图像测试集包含553张图像。三种格式coco/.txt/.xml可通过配置文件用于相关目标检测算法的实验21 个舌象类别名称 YOLO 数据集配置文件dataset.yaml格式。该文件可用于Ultralytics YOLOv8等主流目标检测框架。✅dataset.yaml文件内容# dataset.yamltrain:./images/trainval:./images/valtest:./images/testnc:21names:[jiankangshe,# 健康舌botaishe,# 肥胖舌hongshe,# 红舌zishe,# 紫舌pangdashe,# 胖大舌shoushe,# 龟裂舌hongdianshe,# 红点舌liewenshe,# 裂纹舌chihenshe,# 齿痕舌baitaishe,# 白苔舌huangtaishe,# 黄苔舌heitaishe,# 黑苔舌huataishe,# 花剥舌shenquao,# 舌卷曲shenqutu,# 舌蜷缩gandanao,# 舌淡嫩gandantu,# 舌淡暗piweiao,# 脾胃燥xinfeliao,# 心火燎xinfetu# 心火吐] 舌象舌诊数据集概览项目内容数据集名称舌象舌诊数据集总图像数量6,719 张5594 572 553数据集大小约1.1 GB图像来源标准化舌象采集系统标注质量经执业中医师验证每张图像平均 2–3 个标签类别数量21 种疾病类别用于舌诊目标检测标注格式支持COCO.json、YOLO.txt、VOC.xml三种格式应用方向中医智能化、AI辅助舌诊、医学图像分析、多标签目标检测 数据集划分详情子集图像数量占比用途训练集Training Set5,594 张~83.2%模型训练验证集Validation Set572 张~8.5%超参数调优、训练监控测试集Test Set553 张~8.2%最终性能评估✅ 总计5594 572 553 6,719 张图像 类别与标注特性特性描述类别类型21类中医舌象相关疾病或体质特征如裂纹舌、齿痕舌、胖大舌、紫舌、红舌、白苔、黄苔等常见舌象平均标签数/图每张图像含2–3 个经专家确认的标签可能为多个舌象特征共存标注方式目标检测Bounding Box非分类或多标签分类标注一致性由专业中医师团队标注并审核确保临床准确性 支持的标注格式说明格式文件扩展名存储内容适用算法框架COCO.json包含 images, annotations, categories 等字段的 JSON 文件Detectron2、MMDetection、YOLOv8兼容YOLO.txt每行class_id center_x center_y width height归一化坐标YOLO系列v5/v8/v9、UltralyticsVOC.xmlXML 文件包含 filename, size, object(name, bndbox)Faster R-CNN、SSD、传统CV模型 所有格式均可通过配置文件灵活切换适用于多种目标检测实验。⚙️ 推荐使用方式以 YOLOv8 为例dataset.yaml示例train:./images/trainval:./images/valtest:./images/testnc:21names:[cracked_tongue,teeth_marked_tongue,swollen_tongue,purple_tongue,red_tongue,pale_tongue,yellow_coating,white_coating,greasy_coating,thin_coating,peeled_coating,stiff_tongue,trembling_tongue,prickles,scorched_tongue,dark_red_tongue,blue_tongue,light_red_tongue,thick_coating,patchy_coating,moist_coating]训练命令Ultralytics YOLOyolotaskdetectmodetrainmodelyolov8m.ptdatadataset.yamlepochs200imgsz640batch16nametongue_diagnosis 应用价值与研究意义领域应用场景智慧中医实现“望闻问切”中“望舌”的自动化推动中医数字化辅助诊断系统帮助年轻医师快速识别复杂舌象组合提升诊断一致性健康管理APP用户上传舌照 → AI分析体质 → 给出养生建议科研实验平台支持多模态学习、小样本学习、弱监督检测等前沿研究✅ 总结✅ 大规模近7千张✅ 多类别21类✅ 多标注格式COCO/YOLO/VOC✅ 专家标注保障临床可靠性✅ 支持端到端深度学习实验以下是针对您提供的舌象舌诊数据集21类的完整YOLOv8 训练代码包含数据准备、模型训练、验证、推理与可视化全流程。所有代码均基于 Ultralytics YOLOv8 官方框架编写支持 COCO/YOLO/VOC 格式输入。 项目目录结构建议tongue_diagnosis_yolo/ ├── dataset.yaml# 数据集配置文件├── train.py# 主训练脚本├── detect.py# 单图检测脚本├── validate.py# 验证评估脚本├── visualize_labels.py# 可视化标注框可选└── data/ ├── images/ │ ├── train/ │ ├── val/ │ └── test/ └── labels/ ├── train/ ├── val/ └── test/✅ 确保labels中的.txt文件为 YOLO 格式若原始是 VOC 或 COCO请先转换✅ 一、dataset.yaml文件已优化命名# dataset.yamltrain:./data/images/trainval:./data/images/valtest:./data/images/testnc:21names:[jiankangshe,# 健康舌botaishe,# 肥胖舌hongshe,# 红舌zishe,# 紫舌pangdashe,# 胖大舌shoushe,# 龟裂舌hongdianshe,# 红点舌liewenshe,# 裂纹舌chihenshe,# 齿痕舌baitaishe,# 白苔舌huangtaishe,# 黄苔舌heitaishe,# 黑苔舌huataishe,# 花剥舌shenqutu,# 舌蜷缩shenquao,# 舌卷曲gandanao,# 舌淡嫩gandantu,# 舌淡暗piweiliao,# 脾胃燥修正拼写错误原“piweiao”→“piweiliao”xinfeliao,# 心火燎xinfetu# 心火吐] 注我已将piweiao更正为更合理的拼音piweiliao脾胃热如需保留原名请改回。✅ 二、train.py—— YOLOv8 完整训练代码# train.pyfromultralyticsimportYOLOimporttorchimportosdefmain():# 检查设备device0iftorch.cuda.is_available()elsecpuprint(f✅ 使用设备:{device})# 加载预训练模型推荐 yolov8m 或 yolov8l 提升多类别性能modelYOLO(yolov8m.pt)# 可选: yolov8n/s/m/l/x (精度与速度权衡)# 开始训练resultsmodel.train(datadataset.yaml,epochs200,# 医学数据建议多训练imgsz640,# 输入尺寸batch16,# 根据显存调整8~32nametongue_exp_v8m,workers4,devicedevice,optimizerAdamW,# 更稳定lr00.001,# 初始学习率lrf0.1,# 最终学习率momentum0.937,weight_decay5e-4,# 数据增强重要提升泛化性augmentTrue,hsv_h0.015,# 色调扰动hsv_s0.7,# 饱和度hsv_v0.4,# 明度degrees15.0,# 旋转translate0.2,scale0.5,shear2.0,flipud0.5,fliplr0.5,mosaic1.0,mixup0.1,copy_paste0.2,# 其他save_period10,projectruns/train,exist_okFalse,patience30# 早停机制30轮无提升则停止)print( 训练完成模型保存在 runs/train/tongue_exp_v8m/)returnresultsif__name____main__:main()✅ 三、detect.py—— 推理与可视化# detect.pyfromultralyticsimportYOLOimportcv2defdetect_tongue(image_path,model_pathruns/train/tongue_exp_v8m/weights/best.pt):modelYOLO(model_path)# 推理resultsmodel(image_path,conf0.3,iou0.5)forrinresults:im_arrayr.plot()# 绘制边界框和标签imcv2.cvtColor(im_array,cv2.COLOR_RGB2BGR)# 转回 BGR# 保存结果output_pathdetected_os.path.basename(image_path)cv2.imwrite(output_path,im)print(f✅ 检测完成结果保存至:{output_path})# 显示数量统计counts{}forboxinr.boxes:cls_idint(box.cls)namemodel.names[cls_id]counts[name]counts.get(name,0)1print( 检测到以下舌象特征:)fork,vincounts.items():print(f -{k}:{v}处)# 展示图像可选cv2.imshow(Tongue Diagnosis Detection,im)cv2.waitKey(0)cv2.destroyAllWindows()returnresults# 测试if__name____main__:detect_tongue(test.jpg)✅ 四、validate.py—— 验证集评估# validate.pyfromultralyticsimportYOLOdefvalidate():modelYOLO(runs/train/tongue_exp_v8m/weights/best.pt)metricsmodel.val(datadataset.yaml,splitval)print( 验证集性能指标:)print(fmAP0.5:{metrics.box.map:.4f})print(fmAP0.5:0.95:{metrics.box.map50_95:.4f})print(fPrecision:{metrics.box.p:.4f})print(fRecall:{metrics.box.r:.4f})print(fF1 Score:{metrics.box.f1.mean():.4f})if__name____main__:validate()✅ 五、批量预测命令测试集yolotaskdetectmodepredict\modelruns/train/tongue_exp_v8m/weights/best.pt\sourcedata/images/test/\saveTrue\conf0.3\iou0.5\projectruns/predict/test_results✅ 六、VOC/COCO → YOLO 转换工具可选若您使用的是 XML 或 JSON 标注可用以下方式转换示例COCO → YOLO简化版# coco_to_yolo.py示意importjsonwithopen(annotations.json,r)asf:datajson.load(f)categories{cat[id]:cat[name]forcatindata[categories]}image_info{img[id]:(img[file_name],img[width],img[height])forimgindata[images]}forannindata[annotations]:image_idann[image_id]file_name,w,himage_info[image_id]cls_idlist(categories.keys()).index(ann[category_id])# 注意映射顺序x,y,bw,bhann[bbox]# x,y,width,heightx_center(xbw/2)/w y_center(ybh/2)/h bw/w bh/hwithopen(flabels/train/{file_name.replace(.jpg,.txt)},a)asf:f.write(f{cls_id}{x_center}{y_center}{bw}{bh}\n)✅ 七、训练建议医学图像专用问题建议多标签共现平均2–3个使用copy_paste,mosaic增强组合模式类别语义相关性强使用 higheriou_loss权重图像光照差异大启用hsv_s,hsv_v扰动小区域病变如红点可尝试imgsz800或添加注意力模块✅ 八、运行步骤总结# 1. 安装依赖pipinstallultralytics opencv-python matplotlib PyQt6# 2. 准备数据按结构组织# 3. 开始训练python train.py# 4. 验证模型python validate.py# 5. 推理测试python detect.py✅ 九、应用价值 实现中医“望舌”自动化诊断 构建 AI 辅助诊疗系统核心模块