首页 / 资讯中心 / 文章详情

骨骼癌目标检测数据集实战:从数据准备到YOLOv8训练全流程

骨骼癌目标检测数据集实战:从数据准备到YOLOv8训练全流程 ★ FEATURED ARTICLE
简介骨骼癌目标检测数据集是一份面向医学影像AI开发与肿瘤学研究的标准YOLO标注数据集涵盖908张训练图像与380张验证图像聚焦原发性及转移性骨肿瘤的CT/MRI影像病灶定位适用于训练YOLOv12等目标检测模型辅助放射科医生快速筛查骨肿瘤区域。资源包共2000个文件包含1288个txt标注文件含边界框坐标与类别标签、710张jpg医学影像、1个yaml配置及1份docx说明文档压缩包大小约41.14MB目录结构清晰可直接接入主流深度学习框架。数据标注经临床影像专家校验覆盖溶骨性与成骨性病变样本具备临床诊断参考价值既可作为智能影像诊断系统的训练基准也可用于医学影像专业教学与住院医师AI辅助诊断培训。目前已有86人学习下载适合医疗AI研究人员、算法工程师及医学教育工作者使用。1. 骨骼癌目标检测数据集.zip医学影像里的“找病灶”问题远不止训练一个分类器拿到这个压缩包第一反应可能是在训练“是不是癌症”的分类模型。但“骨骼癌目标检测数据集.zip”这个名字里藏着一个更重要的事实医生在X光片、CT或病理切片上确诊骨肿瘤前第一件事是在大片骨骼影像中找到可疑区域再谈“是良性还是恶性”。这个“找出来、框出来”的动作正是目标检测要解决的问题也是这个zip能派上用场的场景。它适合谁?适合手里有一批医学影像、想把病灶定位做成自动化初筛工具的人也适合想跑通 YOLO/RTMDet 等检测框架、但暂时没有干净医疗数据的学生。和遥感目标检测、鸟类目标检测的数据集不同医疗数据集通常样本少、正样本稀疏、边界框带主观性这些特点会一路影响目录整理、格式转换、训练参数甚至模型评估方式。这篇文章就按“拿到zip之后怎么拆、怎么转格式、怎么训练、怎么验证”的顺序把这套流程和里面的坑一次讲透。2. 拆开zip的第一步标注格式和目录结构决定了后面一周的工作量2.1 一套医学目标检测数据集最常见的三种组织方式“骨骼癌目标检测数据集.zip”解压之后常见做法是三种内部结构之一。第一种是Pascal VOC风格一个Annotations文件夹放XML文件一个JPEGImages放原图文件名一一对应;第二种是COCO风格所有标注集中在一个annotations.json里里面用images、annotations、categories三个数组描述图片路径、边界框坐标和类别;第三种是YOLO风格每个图片对应一个同名TXT文件每行写“类别ID center_x center_y width height”坐标是归一化比例值。三种结构里YOLO格式最容易被训练脚本直接消费VOC和COCO则需要转换。医学影像数据集更常见的反而是VOC或COCO因为很多标注工具如LabelImg、Label Studio默认导出这两种而且医疗团队习惯先看XML里的可视化边界框。这里给经验不够的人一个最低成本判断路径先看压缩包里有没有labels或annotations文件夹有就直接拆训练集没有就按“XML/JSON - YOLO”的统一转换路线走。还有一类容易翻车的情况有些医疗数据集的标注不是普通边界框而是“点”或“分割掩码”。比如骨肿瘤数据集里的标注可能是一个中心点加上半径或者一串轮廓坐标。如果压缩包里的标注长这样转换脚本就不能只算中心点和宽高还要根据掩码的像素坐标去计算外接矩形。拿到zip之后第一步不要急着写训练脚本而是写一段数据体检代码把标注类型、类别数量、每类的样本数、边界框的面积分布打出来。这一步能省掉后面至少一周的无效训练时间。2.2 解压后先做的三件事统计类别、检查边界框、划分数据集无论最终用哪个检测框架数据准备阶段的顺序基本是固定的。第一件事是遍历所有标注文件统计每个类别出现了多少次。骨骼癌数据集的类别通常不会太多常见的有osteosarcoma骨肉瘤、normal、metastasis转移灶这类区分但问题往往是类别严重不平衡——正常骨骼样本可能占八成病灶样本只有两成。这个比例会对后面的采样策略产生很大影响参看第2.3节的脚本输出。第二件事是检查边界框本身的合法性。医学影像尤其是CT和X光片经常出现“标注框超出图像边界”的问题比如标注员在缩放后的图像上画框导出时没有裁剪到图幅内导致框的左上角或右下角坐标变成负数或超过图像宽高。YOLO格式对这类非法框很敏感轻则训练时loss异常重则直接报错终止。检查的办法是写一个循环读取每个标注判断x_min 0、y_min 0、x_max width、y_max height遇到非法框要么裁剪到边界要么丢弃并在日志里记录。第三件事是划分数据集也就是train/val/test的分配。医学数据集样本少常见做法是721或811坑在于划分前必须先按类别做分层抽样否则可能出现验证集里没有病灶样本训练完评估时mAP是NaN的情况。还要注意一点如果同一患者的多个切片或序列图片都在数据集里不能随机打乱划分应该按患者ID分组后再划分否则同一患者的数据同时出现在训练集和验证集里属于数据泄漏评估出来的指标会虚高到无法信任。关于这一点第5章避坑指南里会专门展开。2.3 用一段Python脚本快速体检数据集分布、合法性、可训练性import os import json import xml.etree.ElementTree as ET import glob data_root ./骨骼癌目标检测数据集 pattern data_root /Annotations/*.xml ann_files glob.glob(pattern) class_counter {} box_area_list [] invalid_boxes 0 total_boxes 0 for ann_file in ann_files: tree ET.parse(ann_file) root tree.getroot() img_width int(root.findtext(size/width)) img_height int(root.findtext(size/height)) for obj in root.findall(object): name obj.findtext(name) class_counter[name] class_counter.get(name, 0) 1 bndbox obj.find(bndbox) xmin int(float(bndbox.findtext(xmin))) ymin int(float(bndbox.findtext(ymin))) xmax int(float(bndbox.findtext(xmax))) ymax int(float(bndbox.findtext(ymax))) total_boxes 1 # 检查越界框 if xmin 0 or ymin 0 or xmax img_width or ymax img_height: invalid_boxes 1 w xmax - xmin h ymax - ymin box_area_list.append((w * h) / (img_width * img_height)) print(类别统计:, class_counter) print(总标注框数:, total_boxes) print(越界框数量:, invalid_boxes) print(框面积占比 中位数:, sorted(box_area_list)[len(box_area_list)//2]) print(框面积占比 最小5%:, sorted(box_area_list)[:int(len(box_area_list)*0.05)])这段脚本假设压缩包是VOC风格。逻辑上分成三段统计类别、检查越界框、计算边界框面积占整张图的比例前两个直接决定后续要不要清理数据第三个决定目标大小。如果最小5%的框面积占比在0.01以下说明存在大量小目标后面训练时需要专门调低模型anchor、提高输入分辨率或者用切块策略这些在下一章细说。参数说明里有一个容易被忽略的点int(float(...))这种写法。XML里坐标有时是整数、有时是带小数的字符串直接int()解析会报错先转float再转int是最稳的。如果你是COCO风格的JSON把tree.parse替换成json.load循环体改成遍历annotations数组即可判定越界框时用图片宽高字典去查。数据体检这一步本质上是把“能不能训练”变成一个可量化的答案而不是靠感觉。后面不管用什么模型这一步数据底数都要先摸清。3. 把标注转成YOLO格式医学大图切块与边界框归一化3.1 为什么医学影像大多数时候不能直接整图送进YOLO医学影像和自然图像有一个根本区别尺寸差异巨大。普通照片两三千像素宽已经很夸张但一张骨肉瘤X光片或病理切片经常是4096x4096甚至更高CT层面图也能到1024x1024。直接整图送进YOLO主要卡在两处。第一是模型下采样倍数YOLOv8的backbone会把输入分辨率缩放到640x640如果原始大图是4096模型从4096下采样到640很多小病灶在特征图里只有一两个像素R-CNN系列骨干网络虽然可以多尺度但同样面临计算量和显存的问题。第二是显存一张大图放进dataloaderbatch size稍微一调大就OOM训练速度慢到无法接受。所以医学影像目标检测的常见做法是“切块训练”英文管这叫patch-based training或sliding window cropping。做法是把原始大图按固定尺寸比如1024x1024切块有病灶的块保留下来参与训练没有病灶的块按一定比例丢弃或作为负样本。这个策略和遥感目标检测处理超大影像的方式非常接近所以如果你之前做过DOTA这类遥感数据集的切分迁移过来并不复杂。区别在于医学影像的病灶区域更小、边界更模糊切块尺寸要仔细选择切太大容易把小目标进一步压缩切太小又把上下文信息割裂。切块还有一个实际问题大图上的边界框跨越切块边界。比如一个肿瘤框正好压在切块线的左右两侧切完之后左块和右块各有一个残破的框。这种框需要特殊处理常见做法是IOU阈值过滤如果某个框和切块的交集面积占原框面积的比例低于0.5直接丢弃;高于0.5则把框裁剪到切块内再保留。这就是为什么纯写一个“把XML换成TXT”的简单脚本不够用。3.2 大图切块与标注同步裁剪的Python实现import cv2 import numpy as np import os import xml.etree.ElementTree as ET def crop_image_with_boxes(image, boxes, crop_size1024, overlap0.25, min_keep_ratio0.5): h, w image.shape[:2] stride_x int(crop_size * (1 - overlap)) stride_y int(crop_size * (1 - overlap)) crops [] for y in range(0, h, stride_y): for x in range(0, w, stride_x): x2 min(x crop_size, w) y2 min(y crop_size, h) # 保证所有块都是正方形不足部分用边界补齐 if x2 - x crop_size: x2 min(w, x crop_size) x x2 - crop_size if y2 - y crop_size: y2 min(h, y crop_size) y y2 - crop_size if x 0 or y 0: continue crop_img image[y:y2, x:x2] kept_boxes [] for box in boxes: bx1, by1, bx2, by2, cls box ix1, iy1 max(bx1, x), max(by1, y) ix2, iy2 min(bx2, x2), min(by2, y2) inter_w max(0, ix2 - ix1) inter_h max(0, iy2 - iy1) inter_area inter_w * inter_h orig_area (bx2 - bx1) * (by2 - by1) if inter_area / orig_area min_keep_ratio: continue # 裁剪框并钳制到切块范围内 nx1 max(0, ix1 - x) ny1 max(0, iy1 - y) nx2 min(crop_size, ix2 - x) ny2 min(crop_size, iy2 - y) if nx2 nx1 or ny2 ny1: continue kept_boxes.append((nx1, ny1, nx2, ny2, cls)) if kept_boxes: crops.append((crop_img, kept_boxes, (x, y))) return crops这个函数的逻辑骨架是滑窗遍历stride_x和stride_y由overlap参数控制。重叠率是切块常见的必调参数0.25意味着相邻两个块有25%的像素面积重叠好处是病灶恰好落在块边缘的概率降低代价是训练图片数量增加约30%。对于骨骼癌这类疑似区域占比很小的数据集建议重叠率不低于0.25否则框在边界上的比例会很高大量样本被min_keep_ratio0.5过滤掉。min_keep_ratio这个参数值得单独说。它控制一个框被切块“截断”到什么程度就放弃。设成0.5表示原框面积被保留不到一半就丢弃。理论上丢弃会少一些训练样本但比保留残框然后硬算中心点的做法更安全——残框会让模型学到半个肿瘤的边界而不是完整的病灶形状。处理完后每个切块的标注原点会被平移nx1 max(0, ix1 - x)这一步就是把原图坐标减掉切块左上角坐标转成切块内的相对坐标。切块完成后还需要把相对坐标归一化成YOLO格式。具体是把x1、y1、x2、y2转成中心点和宽高再分别除以切块尺寸写入TXT文件。这里有一个常见的“玄学”翻车现场有人忘记在归一化前把图片转成统一的输入尺寸导致同一个数据集里既有1024的块又有512的块训练时模型看到的bbox空间尺度完全错乱。解决方法是切块尺寸统一之后训练配置文件里的imgsz也要和它保持一致或者至少让imgsz能被切块尺寸整除。3.3 切块策略的参数组合与显存权衡切块尺寸、重叠率、最小保留比例这三个参数是相互牵制的。以有限显存为前提我常用的参数组合是crop_size1024, overlap0.25, min_keep_ratio0.5。为什么1024因为YOLOv8的默认训练分辨率是6401024的切块在下采样到640的过程中保留了更多局部结构信息同时又不会像2048那样让每张图占据巨大显存。如果你用RTX 3090或A100可以把切块设成1536但要注意dataloader的batch size要相应降下来否则照样OOM。有重叠的切块还会带来另一个问题训练集和验证集之间的信息冗余。同一张大图切出的两个重叠块内容高度相似如果都在训练集里模型看到的是“两张很像的图”对泛化能力没有额外贡献;如果一块在训练集、一块在验证集就会导致验证指标虚高。因此切块应该在划分train/val之前做同一个原始图的所有切块必须进入同一个集合。这一点和前面说的患者ID分组划分是同一个道理只是粒度更细。如果数据集里的图像本身就不大比如是已经缩小过的X光片或CT缩略图整图宽度在1000像素以内就没有必要切块了。判断要不要切的一个可量化标准是目标边界框面积占比的中位数小于0.05时建议切块大于0.05时可以直接整图训练。这个阈值是我从几个医学影像和遥感数据集上总结出来的经验值不绝对但能帮你快速决定“要不要往切块方向走”。4. 用YOLOv8在骨骼癌数据集上跑通训练从最小命令到三个必调参数4.1 环境准备与目录改造切块和标注转换完成后下一步就是把数据集组织成YOLOv8期望的目录结构并跑一次训练。YOLOv8ultralytics包的期望结构是datasets/下面有images/train、images/val、labels/train、labels/val四个目录标签文件是TXT格式每行“类别ID cx cy w h”类别映射文件data.yaml里写names列表。这里不涉及“骨骼癌目标检测数据集.zip”里的具体文件个数只讲目录怎么迁。mkdir -p datasets/bone_cancer/images/train mkdir -p datasets/bone_cancer/images/val mkdir -p datasets/bone_cancer/labels/train mkdir -p datasets/bone_cancer/labels/val mv train_imgs/*.jpg datasets/bone_cancer/images/train/ mv val_imgs/*.jpg datasets/bone_cancer/images/val/ mv train_labels/*.txt datasets/bone_cancer/labels/train/ mv val_labels/*.txt datasets/bone_cancer/labels/val/目录搬移逻辑没什么复杂之处关键在于确保图片文件和标签TXT文件名完全一致包括扩展名前的部分。我见过有人因为jpg和JPG混用导致图片和标签对不上YOLOv8会静默跳过没有标签的图片训练集悄悄减少。data.yaml里用一个简单映射即可path: datasets/bone_cancer train: images/train val: images/val nc: 2 names: [benign, malignant]nc是类别数names的顺序必须和转换脚本里的类别ID一一对应。如果你的数据集是osteosarcoma和normal这种二分类这没问题;如果有多类转换脚本里的ID分配策略按类别名排序或按出现次数排序要和yaml一致否则模型输出的类别含义就是错的。4.2 训练命令最小可跑命令与参数表yolo detect train \ modelyolov8n.pt \ databone_cancer.yaml \ imgsz640 \ epochs100 \ batch8 \ device0 \ patience20 \ projectruns/bone_cancer \ nameexp1这是最小的可跑命令替换掉databone_cancer.yaml的路径后在配好ultralytics的Python环境里就能直接训练。逻辑说明yolov8n.pt是最轻量的预训练权重参数约320万适合样本量不大的医学数据集作为起点;imgsz640是统一输入分辨率;batch8在24G显存下可以跑如果是12G显存建议降到4;patience20表示验证集mAP连续20个epoch不提升就早停。医学数据集训练时间通常不太长100个epoch在单卡上大概一到三小时。训练启动后建议观察两个指标。第一个是train/box_loss如果它从头到尾不下降先回头检查标签文件里的归一化坐标是否超过[0,1]区间;第二个是val/box_loss和val/cls_loss训练集loss正常下降但验证loss在某个epoch后反弹多半是过拟合此时优先调augment参数而不是换模型。表格里的核心参数如下参数默认值医学影像建议值调整理由imgsz640640或768分辨率高对小目标友好但显存和速度代价明显batch默认按显存4-8医疗数据常伴随大图切块batch过大容易OOMmosaic1.00.5-0.8保留Mosaic增强但比例调低避免病灶上下文被拼贴破坏fliplr0.50.0或0.5X光片左右翻转可能改变解剖结构语义谨慎使用patience10020-30医疗数据训练时间有限早停更实用augment默认添加hsv_h0.02对灰度图像轻度HSV增强有助于抑制噪声干扰4.3 正样本稀疏时怎么调anchor和采样骨骼癌数据集最常见的毛病是负样本正常骨骼切块远多于正样本含病灶切块。如果正负比超过110训练时模型会倾向于把所有切块都预测为背景mAP看起来凑合但召回率很低。两个常用的解决手段是class weights和sampler。YOLOv8不像分类模型那样直接给每个样本设权重但可以在data.yaml里通过weight:字段指定部分版本支持也可以从数据层面解决负样本切块随机下采样到正样本数量的2-3倍。另一个直接影响是anchor尺寸。YOLOv8的anchor是自动学习的训练时会根据数据集的框分布自动聚类但如果你的数据集中目标框面积差异极大自动聚类效果也不好。这时可以在训练命令里加anchors3之类或者先跑一个yolo detect train ... epochs0读输出的anchors日志看聚类中心是否覆盖了最小框。如果最小框在聚类的第一档都挤在一起说明小目标漏检风险大优先把imgsz调大到768并把iou0.2这种阈值调宽松一点让模型更容易匹配到小物体anchor。这里有一个经验医学目标检测的mAP和自然场景目标检测的mAP在数值意义上不对等。因为医疗数据中“漏诊”的代价高于“误报”最终调参时应优先关注召回率曲线和PR曲线下的面积。第6章会专门讲怎么验证这个。5. 医学目标检测避坑指南五条血泪踩坑记录5.1 类别不平衡炸掉训练正常样本淹没了病灶样本现象训练完的模型在验证集上把所有图都预测成“正常”mAP0.5看着有0.6但翻开PR曲线病灶类别的召回率只有0.1。原因正负样本比例悬殊模型发现“全部预测为背景”也能把loss降到很低尤其是加上Mosaic增强后负样本切块和正样本切块在梯度中的贡献完全不成比例。解决先把负样本下采样到正样本的2-3倍再训练一轮看PR曲线。如果下采样后损失下降仍不理想可以尝试cls_loss权重调整或者在data.yaml里给正样本类别更高的weight。用YOLOv8时还有一个轻量方案训练命令里加class_weightsTrue它会按类别频率自动计算权重。5.2 灰度图当三通道用模型的“颜色特征”全是噪声现象X光片和CT灰度图被直接转成三通道RGB训练出来的模型在灰度图上表现正常但换一个设备采集的新数据就翻车甚至出现“框到软组织阴影上”的离谱预测。原因灰度图转三通道是三个通道完全相同模型虽然学了形状特征但同时也在利用“三通道相同”这个伪特征做判断;如果同一批数据里混入了少量伪彩图像模型更会被颜色带偏。解决要么所有图像统一转灰度再复制三通道要么在预处理里做对比度归一化。我一般是先做CLAHE局部对比度增强再复制三通道效果比直接归一化稳定。对比度增强本身不是玄学它对骨小梁和肿瘤边界这些低对比度结构帮助很大但增强参数clipLimit2.0、gridSize(8,8)这样的小配置就够了。5.3 验证集指标好到离谱大概率数据泄漏了现象验证集mAP0.5达到0.95以上但拿去测另一家医院拍的新数据mAP直接掉到0.4。原因同一个患者的多个切块被随机分配进了train和val模型“见过”这些图的近亲版本验证时相当于开卷考试。这种情况在切块数据集里尤其常见同一张大图切出的相邻两块高度重叠一块在train一块在val相似度极高。解决划分数据时严格按患者ID或原始大图ID分组保证同一个来源的所有切块落在同一个集合里。代码上就是在划分时把“图片文件名前缀”作为分组的key而不是逐张随机分配。5.4 小病灶在切块后消失框还在模型看不见现象训练loss正常下降但验证结果里最小面积那一档目标的AP为0。原因某些病灶在原始图上只有几十个像素切块之后虽然框还在标签文件里但在缩放到640分辨率的过程中一个30x30像素的框缩到了不到10x10像素特征图里只剩1-2个特征点anchor根本匹配不上。解决除了提高imgsz768或1024之外更直接的方法是做“过采样”对小目标切块做复制或在原图附近多生成几个偏移切块人为提高小目标在batch中的占比。还有一种更省事做法是降低anchor匹配IOU阈值YOLOv8里对应的是anchor_t参数从默认的4.0改成3.5左右让更多小框能匹配到anchor。5.5 数据泄漏的另一张脸重叠切块放进同一数据流现象训练几轮后验证集和训练集同时出现相同的纹理区域模型学到的“特征是某张图的局部像素”而不是“病灶的共性结构”。原因切块重叠率设得高且切块完成后才划分train/val导致两个集合里存在来源相同的切块。这和第5.3条本质上同源但更隐蔽——因为你看到的是两块图并不完全一样凭肉眼很难发现。解决把切块和划分的顺序反过来先按原始图划分train/val再对train和val分别切块。这条顺序问题建议直接在数据准备脚本里写成注释不然几个月之后复盘自己都会忘记当时是怎么切的了。6. 验证模型不能只看mAP把预测结果可视化回原图上的三个技巧模型训练完最容易被忽视的是最后一步验证。这里说的验证不是打开验证集日志看一眼mAP就收工而是把预测框画回原始大图做一次“人眼闭环”。理由很直接医学影像的病灶没有清晰边界mAP数值完全无法告诉你模型框的位置是靠前、靠左还是整个框都偏了。我自己的习惯是写一个回绘脚本把每个切块的预测框映射回原图坐标按坐标平移和尺寸缩放后画在原图上保存成整张大图的对比图。这一步看起来简单却能在三分钟内暴露前面所有环节的问题比如切块处理的坐标偏移、归一化错误、类别ID错位。先给回绘脚本一个可以直接改的模板import cv2 from ultralytics import YOLO model YOLO(runs/bone_cancer/exp1/weights/best.pt) # 假设大图是4096x4096切块是1024x1024重叠率0.25 crop_size 1024 overlap 0.25 stride int(crop_size * (1 - overlap)) image cv2.imread(large_image.png) h, w image.shape[:2] fake_crops [(x, y) for y in range(0, h, stride) for x in range(0, w, stride)] for x, y in fake_crops: crop image[y:ycrop_size, x:xcrop_size] results model.predict(crop, imgsz640, conf0.25, verboseFalse) for box in results[0].boxes: x1, y1, x2, y2 [int(v) for v in box.xyxy[0]] conf float(box.conf[0]) cls_id int(box.cls[0]) # 画回原图坐标 cv2.rectangle(image, (xx1, yy1), (xx2, yy2), (0, 255, 0), 2) cv2.putText(image, f{model.names[cls_id]} {conf:.2f}, (xx1, yy1-5), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0, 255, 0), 2) cv2.imwrite(large_image_pred.png, image)这段代码的逻辑是把原图按训练时的切块参数重新切块逐块预测然后把检测框的坐标加上切块在原图中的偏移量(xx1、yy1)画回大图。需要注意的点是imgsz640要和训练时的输入分辨率一致否则预测效果会直接打折。如果你训练时用了mosaic增强且模型对图像尺寸敏感这里的推理尺寸差异可能造成置信度普遍偏高或偏低。三个进阶验证技巧里第一个是滑窗合并去重。重叠切块会导致同一个病灶被多个切块的预测框重复框出且置信度不同。做法是收集所有预测框的坐标和置信度映射回原图坐标后进行NMS合并iou_threshold0.45比较合适。第二个是用TTA(Test Time Augmentation)推理时同时跑原图、翻转图、多尺度图取平均结果。这个技巧不能改善模型本身的识别能力但能把边缘模糊病灶的置信度拉高几个点代价是推理时间变成三到五倍。第三个是画PR曲线和混淆矩阵重点看每个类别的召回率而不只是mAP。医疗场景下漏检的代价远高于误检如果“恶性骨骼”类别的召回率低于0.8这个模型就不应该上线辅助初筛哪怕别的指标再漂亮。最后一个我个人的教训务必保留训练时的data.yaml、切块脚本参数和回绘脚本三样东西放进同一个项目文件夹。医学数据集迭代频繁一个月后你会拿到新一批标注数据如果切块脚本里的overlap参数改过、切块尺寸换过而data.yaml没同步更新模型输出的坐标空间会全乱。这个坑我踩过两次每次都是重新看训练日志才排查出来耗时一晚上。现在我把所有配置统一放在config.yaml里每次训练直接引用不再手改脚本。回到最初那个zip上如果时间允许建议在拆包后做一个数据版本管理文件记录原始解压结构、标注格式、切块参数和数据划分依据。这份记录会在结论汇报、论文复现、模型复盘时成为最重要的原材料——比模型权重本身还难重建。希望帮到你。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?
咨询建站