基于YOLO的WSI细胞核分割:从切块到部署全流程
2026/8/26 23:46:57 网站建设 项目流程

简介:深度学习技术正在加速渗透医学影像分析领域,目标检测与分割算法为病理图像的自动化解读提供了核心支撑。全切片图像(WSI)作为数字病理的标准格式,具有像素级超大、组织占比低、细胞核密集等特点,传统方法难以高效处理。YOLO作为一阶段目标检测框架的代表,将定位与分割任务统一在端到端模型中,具备推理速度快、工程化程度高的优势,尤其适合对大规模病理图像进行细胞核级分析。围绕WSI细胞核分割这一典型场景,从图像切块、数据增强、模型训练到全局推理与后处理,形成了一条完整可落地的技术链路。同时,针对密集小目标、掩码粘连、重复检测等工程难点,也有相应调优策略。借助该方案,研究者能够在全切片尺度上获取细胞核的精确位置与形态参数,为肿瘤微环境定量分析、病理辅助诊断等应用提供基础。 拿到这个WSI细胞核YOLO分割.zip的时候,我第一反应是:终于有人把病理切片上的细胞核检测这摊事儿,给封装成一个能直接跑的完整工程了。做数字病理的朋友都懂,一张WSI全玻片图像动辄几个GB,宽度几万像素起步,上面密密麻麻全是细胞核,靠人眼在镜下数细胞既不现实也没法规模化。而YOLO这个目标检测框架在速度和易用性上又几乎是当下最合适的选项。这个zip里装的东西,基本就是一套“从WSI切块、训练YOLO分割模型、再拼回原图出统计结果”的完整工作流。

这个项目最适合两类人:一类是刚接触病理图像分析的算法工程师,想快速拿到一份可以复现的baseline;另一类是自己手头攒了一堆病理切片数据、但一直卡在“不知道从哪儿下手训练模型”这一步的科研人员。我这次把它完整跑了一遍,把关键的思路、参数、坑全都记录下来,希望对你有用。

1. 项目整体设计与核心思路拆解

1.1 WSI细胞核检测到底难在哪

先说清楚我们面对的数据。WSI全称是Whole Slide Image,也就是全切片扫描图像,病理科把组织切片放到扫描仪里,通过显微成像拼出的一张超大分辨率数字图像。常见规格是40倍物镜扫描,分辨率大约0.25微米/像素,一张完整的WSI能到100000x100000像素这个量级。这种图像有几个特点:

第一,超大尺寸。普通CNN网络的输入通常是512x512或者640x640,你不可能把一整张WSI直接喂进网络,显存直接炸穿。第二,组织区域占比很低。一张切片上真正有组织的区域可能只占全图面积的20%到40%,其余都是空白背景。如果无脑切块,大部分patch都是白片,训练时全是无效样本。第三,细胞核本身是密集小目标。在40倍下,一个典型的细胞核直径大概只有40到80像素,而且核与核之间几乎没有间隙,密集区域几十个核甚至互相贴着边。这种场景下,传统的滑动窗口分类方法效率极低,而普通的目标检测器又容易出现漏检和框重叠的问题。

所以,整个项目的核心思路就一句话:把WSI切成小patch,用YOLO做实例分割,再按坐标拼回原图。这里选择YOLO的分割版本,而不是单纯的检测框,是因为在病理分析中,细胞核的形态、面积、周长这些形态学特征很重要,光给一个矩形框根本满足不了后续分析需求。YOLOv8-seg这类模型在检测框基础上额外输出每个目标的轮廓多边形,既能给出位置和类别,又能给出分割掩码,刚好够用。

1.2 为什么在这个场景下选YOLO而不是语义分割模型

做过分割的都知道,Unet、DeepLab这类语义分割模型在医学图像领域有着深厚的根基,尤其是在细胞核分割这个任务上,很多经典论文都是基于Unet的变体。那么为什么这个zip里选的是YOLO?

核心原因是效率与工程化。Unet系模型做语义分割,输出的是一张逐像素的类别概率图,像素级操作在训练和推理时都更吃显存和算力。而一张WSI如果按patch来跑Unet,要处理几十万个patch,推理速度会非常感人。YOLO系列这边,检测和分割是同时完成的,推理速度快一到两个数量级,尤其是YOLOv8的小模型版本,在GPU上跑一张512x512的patch只需要几毫秒。

还有一个实际原因:下游分析任务往往不需要那么精细的像素级边界。病理科统计细胞数量、计算核质比、测细胞核面积,需要的其实是“每个核在哪、大概长什么样”,而不是严格的细胞膜边界。YOLO的实例分割输出轮廓坐标,已经足够支撑这些形态学统计。如果你真的需要非常精确的边界,完全可以把这个工程的输出作为初筛结果,再交给精细分割模型做二次优化,这也是很多工业级方案的通用做法。

2. 数据集准备:从原始切片到YOLO训练格式

2.1 数据来源与公开数据集选型

训练数据是整个项目里最花时间、也最决定上限的一环。好消息是细胞核分割有几个非常著名的公开数据集可以直接用,不用从零标注:

  • MoNuSeg:2018年MICCAI竞赛数据集,包含30张WSI的标注,覆盖多种器官,标注方式是细胞核边界多边形,标注质量高,是小样本训练的理想选择。
  • CoNSeP:纽卡斯尔大学发布的结直肠数据集,不仅标注了细胞核,还额外标注了核的分类(上皮、炎症、纤维、坏死等),如果后续要做核型分析,这个数据集更有价值。
  • PanNuke:包含19种组织的细胞核标注,标注了7种细胞类别,规模更大,但标注一致性稍弱,训练出来的模型泛化性更好。

实际项目里如果你的数据是公开数据集,直接用就好。但如果你手头有自己医院的WSI,建议先用QuPath或者CVAT这类工具手动框几十张图,然后再用半自动标注的方式扩充。我自己的经验是,标注细胞核用多边形标注,一个视野下几十个核大概要花十五到二十分钟,优先保证质量和代表性,数量倒在其次。

2.2 WSI切块:大小、重叠与背景滤除

拿到WSI之后,第一步就是把大图切成patch。这个步骤做不好,后面全白搭。首先说patch大小。YOLO训练时默认输入是640x640,实际训练时我习惯用512或640作为patch尺寸。原因很简单:patch太大训练显存吃不消,推理时对小核的定位精度也不够;patch太小又会让上下文信息变少,细胞核在组织中的相对位置关系就丢失了。对于40倍扫描的WSI,512x512大约对应128x128微米的组织区域,已经能包含足够的组织纹理信息。

接下来是重叠率。切块时如果完全不重叠,那么刚好落在patch边缘的细胞核会被截断,要么只留下一部分导致漏检,要么前后两张patch重复检测导致重复计数。我一般设10%到20%的重叠率。太低效果不明显,太高会大大增加patch数量,还容易造成同一个核在多张patch里被反复检测到,增加后处理的难度。

背景滤除也是关键。计算patch的灰度方差或者统计像素值分布,如果patch里组织区域占比过小就直接丢弃。常见做法是计算黑色背景像素比例,阈值设在20%到30%之间。这一步能有效减少无效训练样本,节省训练时间。

2.3 标注格式转换与坐标映射

公开数据集的标注通常是多边形坐标,而YOLO分割训练需要的是pacnorm分割掩码文件,也就是每张图对应一个黑白的掩码文件,白色区域表示目标。转换脚本的核心逻辑是:读取多边形坐标,用OpenCV的fillPoly函数在掩码图上填充,然后把轮廓点归一化到0到1之间,按YOLO格式写入txt。

这里有一个容易踩坑的地方:YOLO分割要求每个目标的轮廓点坐标是归一化的浮点数,同时要求每个目标至少有3个点构成闭合多边形。如果标注数据里有一些特别小的细胞核,轮廓点可能只有几十个像素,归一化之后容易出问题,需要做平滑处理。

坐标映射也不简单。训练前切patch时记录下每个patch的左上角坐标,推理完结果后把这些坐标加上去,才能还原到原图坐标系。我习惯保存一个patch_info.json文件,记录每张patch的ID、文件名、左上角坐标、尺寸信息,这样后续无论是拼回原图还是做统计分析,都有据可查。

2.4 数据增强策略的取舍

YOLO内置的数据增强模块默认是常规的自然图像增强方案,包括HSV色彩抖动、随机翻转、缩放、平移等。但在病理图像场景下,需要做取舍。色彩抖动这块我建议调小甚至关闭,因为病理切片的染色标准化很重要,H&E染色的色彩空间是相对固定的,过度随机颜色扰动反而会让模型学到错误的颜色特征。我自己的配置是把hsv_h、hsv_s、hsv_v都调到0.1以下,让模型更多依赖形态特征。

翻转和旋转很有用,因为细胞核的朝向是不固定的,旋转180度或者水平翻转都不会改变语义。缩放和平移可以稍微放宽一点,但注意不要缩得太小,否则密集小目标很容易变成几个像素,训练会非常不稳定。另外,Mosaic增强在细胞核场景下反而有点问题,Mosaic是把四张图拼在一起训练,对自然图像目标大小不一的情况很好,但病理图像背景相对单一,Mosaic容易让模型学到拼接痕迹,我建议关闭或者只在最后几十轮关闭。

3. 训练实操:参数配置与模型调优记录

3.1 环境搭建与依赖版本

整个环境搭建并不复杂,项目基于ultralytics这个库实现。我的环境是Python 3.10 + PyTorch 2.1.0 + CUDA 11.8,GPU是单张RTX 4090 24GB。安装依赖就一条命令:

pip install ultralytics opencv-python

项目结构大致是:

  • data/:存放数据集和配置
  • models/:预训练权重和输出权重
  • scripts/:切块、格式转换、推理脚本
  • runs/:训练日志和结果

花几分钟把requirements装好,跑通一个最简单的训练代码,就可以开始正式训练了。

3.2 训练参数配置与模型选型

模型选型上,我强烈建议先用最小的YOLOv8n-seg跑通流程,验证数据格式和代码没有大问题之后,再换更大的模型追求精度。实际测试中,YOLOv8n-seg在MoNuSeg上的mAP50大概能到0.6到0.65,而YOLOv8s-seg能到0.7以上,精度提升大约8到10个百分点,但推理时间也相应增加。对于细胞核这个任务,密集小目标本身比较难,模型参数量带来的收益相对有限,从小模型起步性价比最高。

训练参数我整理了一份自己的配置,供你参考:

参数我的配置备注
imgsz640512也可以,640信息更丰富
batch16单卡24GB显存,16比较稳妥
epochs100病理数据量小,100轮足够
patience20早停,防止过拟合
optimizerAdamW比SGD收敛快一些
lr00.001初始学习率
hsv_h0.02几乎关闭色彩增强
hsv_s0.05同上
hsv_v0.05同上
mosaic0.0关闭拼接增强
fliplr0.5水平翻转
flipud0.0垂直翻转性价比低

训练命令:

yolo segment train data=custom.yaml model=yolov8n-seg.pt imgsz=640 batch=16 epochs=100 patience=20 hsv_h=0.02 hsv_s=0.05 hsv_v=0.05 mosaic=0.0

custom.yaml的内容是数据集的路径和类别配置,格式大致如下:

path: /path/to/dataset train: images/train val: images/val nc: 1 names: ['nucleus']

3.3 训练过程中最值得关注的问题

第一是过拟合。病理数据集的标注量通常不大,MoNuSeg只有30张WSI,切块之后大约能凑出几千张patch,对深度学习来说属于小样本。这种情况下模型很容易过拟合训练集,具体表现是训练集loss持续下降,但验证集指标不涨反跌。对策是调高增强力度、加早停、用预训练权重做迁移学习。这个项目里直接用yolov8n-seg.pt做基础权重,已经是标准的迁移学习流程。

第二是类别不平衡。如果数据集里包含多种类型的细胞核,比如肿瘤核和正常核数量差距悬殊,简单训练会让模型偏向多数类。解决办法有几种,最简单的是按类别做采样,让每类的patch数量大致均衡;或者使用focal loss这类损失函数,让模型更关注难分样本。Ultralytics内置了类别权重参数,可以在训练时指定。

第三是验证集指标不能只看mAP。在密集小目标场景下,mAP会低估模型的实用价值,因为mAP对IoU阈值很敏感,细胞核重叠严重时,预测框和真实框的IoU普遍不高。建议同时观察F1-score和Precision、Recall曲线,综合判断模型的漏检和误检情况。

4. 全切片推理与结果后处理

4.1 滑窗推理与坐标还原

模型训练完之后,就要在整张WSI上进行推理。推理流程和训练时的切块是对称的:把WSI按同样的patch大小重叠切块,过滤背景,逐块送进模型,得到检测结果,再通过记录的坐标还原到原图坐标系。

这步的重点是重叠区的处理。同一张patch的重叠区域,同一个核会被重复检测,如果只是简单地把所有检测框画上去,最后统计数量时就会重复计数。常见的处理办法是在重叠区域做NMS(非极大值抑制)。实际操作中,我把所有patch的检测结果汇集到一个列表里,按置信度降序排列,然后在整个原图范围内做一次全局NMS,把各类核之间的重复框合并掉。我用OpenCV的cv2.dnn.NMSBoxes函数实现,控制IoU阈值在0.5左右,效果不错。

推理时有一个性能优化的点:可以把多张patch拼成一个batch送进模型,而不是一张一张地跑。GPU处理batch的吞吐量远高于单张推理,我的机器上batch=8时,每张512x512的patch平均推理时间能压到15毫秒以内。这个项目里如果WSI切出了大约3万张patch,单卡并行跑完大概需要十分钟左右,属于可以接受的范围。

4.2 分割掩码的后处理

YOLO分割输出的原始结果是一些多边形轮廓点,但在密集细胞核场景下,经常会遇到几个核的轮廓粘在一起,或者一个核被分割成两半的情况。这时候需要一些经典的图像处理手段做后期修正。

我常用的一个后处理流程是:先用模型得到每个核的矩形框和掩码,然后在掩码内部做形态学操作,比如开运算去掉小噪点、闭运算填补细小空洞。如果掩码出现明显的粘连,用分水岭算法(watershed)把相邻核分开。具体做法是:对掩码做距离变换,找到局部极大值点作为每个核的种子点,然后执行分水岭分割。这一步能显著改善密集区域的分割质量,代价是每个patch多花几毫秒的处理时间,完全值得。

分水岭算法在OpenCV里有现成实现:

import cv2 import numpy as np def watershed_split(mask): # mask是模型输出的二值掩码 dist = cv2.distanceTransform(mask, cv2.DIST_L2, 5) _, sure_fg = cv2.threshold(dist, 0.3 * dist.max(), 255, 0) sure_fg = np.uint8(sure_fg) unknown = cv2.subtract(mask, sure_fg) _, markers = cv2.connectedComponents(sure_fg) markers = markers + 1 markers[unknown == 255] = 0 markers = cv2.watershed(cv2.cvtColor(mask, cv2.COLOR_GRAY2BGR), markers) return markers

使用分水岭时要小心的一个坑:如果细胞核本身粘连非常严重,距离变换的极大值点数量会小于实际核数,分水岭会把两个核合并成一个。这种情况只能通过调整训练数据质量来改善,比如在标注时就尽量把贴边核精确交代清楚。

4.3 形态学特征提取与结果导出

分割完成之后,真正的“下游价值”才出来。病理医生关心的是细胞核数量、核面积分布、核密度、核质比这些量化指标。有了掩码,这些指标都可以直接计算。用OpenCV的cv2.connectedComponentsWithStats函数可以拿到每个核的面积、周长、外接矩形、质心坐标等基础特征。在此基础上可以进一步计算:

  • 核密度:每平方毫米的细胞核数量
  • 核面积分布:直方图、均值、标准差
  • 核形态:圆度、长宽比、凹凸度
  • 核间距:计算每个核到最近邻核的距离

这些特征对后续的机器学习分类模型非常有价值,比如诊断恶性组织的时候,细胞核密度增大、核面积变异度上升都是重要的病理标志。最终结果可以导出成CSV文件,每一行是一个细胞核,列包括编号、坐标、面积、周长、圆度等特征。也可以导出成GeoJSON,方便在GIS或者QuPath里查看。

4.4 全流程在单张WSI上的时间分配

跑完整个流程后,我顺手记录了一下耗时分布,方便你评估是否满足自己的时效需求:

步骤消耗时间说明
WSI切块与背景过滤2-5分钟主要受磁盘IO影响
模型推理8-15分钟3万patch,batch=8
后处理3-6分钟全局NMS+分水岭
特征提取与导出1-2分钟连通域统计
总计约15-30分钟单张WSI

如果后续要处理几百上千张WSI,务必用多进程并行处理,另外建议把中间结果(patch和坐标映射表)存盘,避免反复切块浪费时间。

5. 实操中遇到的坑与排查手册

5.1 压缩包解压失败:file is not a zip file

这个项目以zip包分发,但很多朋友反馈解压报错。我自己也遇到过,现象是解压到一半提示“file is not a zip file”或者“invalid zip archive: could not find EOCD”。这个报错的本质是:zip文件的结尾没有找到End of Central Directory record,也就是EOCD标记,文件不完整或者损坏了。

排查思路分两步。第一步先检查文件是否下载完整。Windows下看文件大小和源文件是否一致,Linux下可以用sha256sum比对校验值。我自己有一次就是下载工具中断,文件只有实际大小的80%,解压到一半就报错。第二步确认文件扩展名是否被改过。有时候从网盘下载会莫名其妙把扩展名改了,比如zip.zipzip.1这种情况,用file命令看真实文件类型就能识别出来。

Linux下解压这种问题文件,我一般这样操作:

# 检查文件类型 file WSI细胞核YOLO分割.zip # 查看zip文件内容,同时验证完整性 zip -T WSI细胞核YOLO分割.zip # 如果zip工具不兼容,可以直接用unzip强制解压 unzip -o WSI细胞核YOLO分割.zip -d output_dir

如果确认文件已经损坏,别指望修复工具能救回来。最简单可靠的方案是重新下载,换一个下载源或者用支持断点续传的下载工具。为了赶工临时修复导致后续代码跑出诡异结果,反而得不偿失。

5.2 路径问题:中文目录和空格带来的折磨

这个项目包名里就带着中文和空格,下载解压后如果路径处理不当,轻则报错,重则关键脚本直接跑不了。ultralytics库底层依赖的系统命令对路径中的空格处理得不太友好,建议整个项目目录都放在纯英文无空格路径下,比如D:\projects\wsi_yolo_seg这种。

另外,解压出来的代码里如果按相对路径读取数据,工作目录必须切到项目根目录才能正常运行。我看到过有人把代码文件单独复制到别的目录,然后对着环境变量和路径报错信息一头雾水。最好的习惯是解压后先看一下README或者数据配置文件,把路径改成自己机器的实际路径。数据集、权重、输出目录这三个路径是最容易踩坑的地方,建议写成一个常量文件统一管理。

5.3 显存不足与OOM问题

训练和推理阶段最常见的运行错误是CUDA out of memory。如果你只有一张8GB显存的显卡,batch=16imgsz=640基本跑不动。这个时候先降batch,再考虑降分辨率,顺序不要搞反,因为分辨率直接和目标大小相关,降太多会影响检测精度。

推理阶段OOM的处理方式和训练不同,训练没有足够显存就用梯度累积模拟大batch,推理则可以直接把batch降到1,一张patch一张patch地过。如果显存还是有压力,可以把patch大小从640降到512,或者开启半精度推理,也就是设置fp16=True。对YOLO这种检测模型来说,半精度几乎不影响结果,但显存占用能降一半以上。

5.4 分割掩码粘连:密集核处理

这个场景最常见的问题。细胞核紧密贴在一起,模型输出的掩码是两个核连成一坨,用分水岭算法也救不回来。我总结了一下,有两条路可以走:

第一条路是在训练时增加难例挖掘。把推理时粘连严重的patch收集起来,跟原标注放在一起作为额外训练样本,重新微调模型。这种在线难例挖掘的做法效果很实在,通常微调几十张patch就能大幅改善粘连问题。

第二条路是在推理时调整置信度阈值。密集区域核与核重叠严重,模型经常会把两个核之间的缝隙也预测成前景,导致粘连。这种情况下把置信度阈值适当地调高一些,比如从默认的0.25调到0.35,可以滤掉一些低置信度的错误掩码。代价是漏检率会略微上升,需要在实际应用里权衡。

5.5 漏检与重复检测并存:NMS参数调优

推理时还会遇到一个很烦人的情况:同一个核被检测了三次,而旁边紧挨着的另一个核却完全没被检测到。这背后其实是NMS处理统一性的问题——不同patch重叠区域的检测框没有在全局范围内被抑制干净,同时密集排列又导致部分目标被强检测框压制。

解决办法是分两步走。第一步是放宽非极大值抑制的IoU阈值。默认的NMS IoU阈值是0.45,我在细胞核场景下调到了0.6,这样相邻核即使有重叠也不会被轻易合并。第二步是引入跨patch的二次NMS,把同属一个核的多组检测按置信度排序后合并掉。这样做之后,重复检测和漏检的情况都得到了明显改善。

6. 进阶扩展:从目标分割走向全切片分析

6.1 细胞核密度热图与组织区域分析

这个项目的输出不只是坐标和掩码,把这些结果聚合起来还能生成更有价值的分析图。最常见的是细胞核密度热图,做法是把WSI划分成固定大小的网格(比如256x256像素一格),统计每个网格内检出的细胞核数量,再根据数量映射成颜色,叠加在原图上。这种热图能一眼看出肿瘤组织区域的分布和边界,对病理医生识别病变高度具有参考意义。

热图不仅直观,还能做定量分析。结合组织区域的分割结果,可以计算单位面积内的细胞核密度,结合细胞核形态特征做分级评估。有朋友基于这个功能在结直肠癌数据集上做了测试,核密度这个特征在区分肿瘤区和正常区上表现相当突出,AUC能到0.9上下,已经可以作为临床辅助指标来用。

6.2 细胞核分类:从单类到多类

这个项目默认只检测细胞核这一个类别,但实际病理分析往往需要区分细胞核的类型。比如在结直肠癌的病理报告里,上皮细胞核、淋巴细胞核、纤维细胞核、肿瘤核的分布情况对诊断和分级都有帮助。要做多类检测,有两个方向:

第一个方向是直接找多类的标注数据。CoNSeP和PanNuke都自带细胞核分类标签,可以直接适配到YOLO的多类检测场景,只需要在yaml配置里把nc改成对应的类别数,再准备对应的类别名称列表即可。训练方式没有本质差别,但类别数多了之后,要注意各类别样本数量的均衡问题。

第二个方向是训练一个单类检测模型作为候选区域生成器,再加一个轻量级的分类头对每个候选核做分类。这种方式的好处是灵活:如果你想更新分类规则,不用重新跑完整的目标检测训练流程,只需要训练那个轻量级的分类模型就行,实验迭代速度快很多。

6.3 与SAM大模型结合做精细分割

如果觉得YOLO分割出来的轮廓还不够精细,一个很流行的方案是把YOLO的输出当成SAM(Segment Anything Model)的提示输入,让SAM做二次分割。YOLO负责找出所有细胞核的位置,生成候选框或点坐标,SAM根据这些提示输出更精细的掩码。这种级联方式在边界质量上确实比单独YOLO好不少,尤其对细胞核边界模糊的情况改善明显。

我试过用ultralytics的YOLO检测结果作为SAM的box prompt,在几个公开数据集上精分割结果比YOLO原生分割的Dice系数高5到8个百分点。代价是推理时间变长,SAM模型本身比较大,跑一张512x512的patch可能要多花几十毫秒。在项目初期追求吞吐量的时候,直接用YOLO分割就够了;在追求精度的后期分析阶段,再考虑加SAM做精修,性价比更高。

6.4 部署到病理科工作站

模型训练好后,不要只停留在脚本调用阶段。病理科的实际工作流里,医生更希望有一个简单的可视化界面,上传WSI就能看到检测结果、统计指标和热图。常见的部署方案是把模型封装成一个HTTP API服务,配合一个简单的Web界面。用ultralytics自带的YOLO对象加载权重,用Flask或者FastAPI写一个接口,接收WSI路径或者上传文件,返回检测结果和统计特征,这样一个轻量级的服务就能落地使用。

部署时要注意模型版本和依赖环境的锁定。训练环境里跑得好好的代码,部署到另一台机器上经常因为PyTorch版本、CUDA版本不一致而出各种奇怪的兼容性问题。通用做法是打包成Docker镜像,把Python版本、CUDA版本、依赖库全部固化在一个镜像里,这样无论部署到哪个机器上都能稳定运行。

一点个人的体会

这套WSI细胞核YOLO分割项目,我跑完之后最大的感受是:它解决了一个很实际的问题,也就是用一套完整工具链路把WSI和深度学习连接起来。但我也要提醒你,这个工程只是起点,数据质量和模型调优才是真正拉开差距的地方。如果你手头的切片染色风格和公开数据集差异很大,刚开始模型的mAP可能会比较低,这时候不要急着改网络结构,先把更多的本地数据补充进来,微调几轮,效果通常会好得多。

最后再分享一个小技巧:我建议把切块和推理阶段的中间结果全部缓存下来。这个项目跑一次完整流程要二三十分钟,缓存中间结果可以让你在调整后处理参数时不用重新跑一遍切块和推理,直接复用之前的检测结果做实验,实测下来能把每次迭代的时间从半小时压缩到两三分钟。做研究嘛,省下来的时间都能拿去看论文,一举两得。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询