Sipakmed宫颈细胞分类复现:从手工特征到深度学习的完整实战

发布时间:2026/10/15 20:40:01

Sipakmed宫颈细胞分类复现:从手工特征到深度学习的完整实战 1. 从数据集到分类器Sipakmed复现的完整技术链路Sipakmed这个数据集在细胞图像分类圈子里算是比较特殊的存在。它不像ImageNet那样动辄上千万张图也不像某些医学数据集那样只有几百张样本而是介于两者之间——大约4000多张宫颈细胞图像分成了5个类别。我第一次拿到这个数据集的时候第一反应是这规模挺友好但真正跑起来才发现坑远比想象中多。这篇内容适合谁看如果你正在做医学图像分类的课程项目、毕业设计或者单纯想找一个中等规模的数据集练手Sipakmed是个不错的选择。但如果你指望直接套一个ResNet就能刷到95%以上的准确率那可能会失望。我会把从数据预处理到模型训练、从特征工程到结果分析的完整链路拆开讲重点放在那些论文里不会写、但实际复现时一定会遇到的问题上。整个复现过程我分成了三个阶段第一阶段是数据集的深入理解和预处理第二阶段是基于手工特征的分类尝试第三阶段是基于深度学习的端到端分类。这三个阶段不是简单的递进关系而是各有各的价值——手工特征能帮你理解数据本身的特点深度学习能帮你拿到更好的指标两者结合才能对这个问题有完整的认知。2. Sipakmed数据集的真实面貌与预处理中的隐形陷阱2.1 数据集结构解析5个类别到底意味着什么Sipakmed的全称是Sipakmed: A New Dataset for Feature and Image Based Classification of Cervical Cells名字本身就点明了它的双重用途——既可以做基于特征的分类也可以做基于图像的分类。数据集包含5个类别分别是 superficial、intermediate、parabasal、metaplastic、koilocytotic。这5个类别不是随便分的它们对应的是宫颈细胞在不同生理状态下的形态。superficial和intermediate属于正常细胞的不同成熟阶段parabasal是更原始的细胞形态metaplastic是化生细胞koilocytotic则与特定病理变化相关。理解这一点很重要因为不同类别的细胞在形态上的差异程度是不一样的——有些类别之间差异明显有些则非常微妙。我实际打开数据集后发现每个类别下的图像数量并不均衡。superficial和intermediate的样本相对较多而koilocytotic的样本明显偏少。这种类别不平衡在医学图像数据集中非常常见但如果不处理模型会倾向于预测多数类导致少数类的召回率惨不忍睹。2.2 图像预处理的三个关键决策第一个决策是图像尺寸。原始图像的尺寸并不统一有的偏大有的偏小。我试过直接缩放到224×224也试过先裁剪再缩放。实测下来直接缩放到224×224会丢失一些细胞边缘的细节尤其是对于koilocytotic这类需要观察细胞核形态的类别。后来我改成先做中心裁剪到512×512再缩放到224×224效果好了不少。第二个决策是颜色空间。原始图像是RGB的但细胞图像的核心信息其实在亮度通道里。我对比过RGB、灰度、HSV三种输入方式发现灰度输入在手工特征阶段效果最好但到了深度学习阶段RGB反而略优于灰度——因为网络能自己学到颜色通道里的有用信息。这个结论和很多论文里说的灰度就够了不太一样我猜测是因为深度学习模型有足够的容量去过滤颜色噪声。第三个决策是数据增强策略。医学图像的数据增强不能乱来水平翻转和垂直翻转是安全的因为细胞没有固定的方向。但旋转就要小心了小角度旋转±15度没问题大角度旋转会改变细胞核与细胞质的相对位置关系反而引入噪声。颜色抖动也要谨慎过度的颜色变化会让模型学到与类别无关的特征。# 我实际使用的预处理流程 import cv2 import numpy as np from albumentations import Compose, HorizontalFlip, VerticalFlip, Rotate, Resize, CenterCrop train_transform Compose([ CenterCrop(512, 512), Resize(224, 224), HorizontalFlip(p0.5), VerticalFlip(p0.5), Rotate(limit15, p0.3), ]) # 注意验证集和测试集不做增强只做裁剪和缩放 val_transform Compose([ CenterCrop(512, 512), Resize(224, 224), ])提示预处理阶段一定要把训练集、验证集、测试集分开处理。我见过有人把增强后的图像混进了验证集导致验证指标虚高实际部署时性能暴跌。2.3 类别不平衡的处理从采样到损失函数前面提到koilocytotic类别样本偏少我试过三种方案。第一种是简单过采样把少数类复制多份。这种方法训练时容易过拟合验证集上的表现波动很大。第二种是SMOTE在特征空间做插值。但SMOTE对图像数据不太友好因为像素空间的插值没有明确的物理意义。第三种是调整损失函数的类别权重给少数类更高的权重。最终我采用的是第三种方案配合适度的过采样。具体来说在交叉熵损失里给每个类别设置权重权重与类别频率成反比。这样模型在训练时会更关注少数类但不会像纯过采样那样过拟合。# 计算类别权重 from sklearn.utils.class_weight import compute_class_weight class_weights compute_class_weight( balanced, classesnp.unique(train_labels), ytrain_labels ) # 将class_weights传入损失函数 criterion nn.CrossEntropyLoss(weighttorch.FloatTensor(class_weights))实测下来这种组合方案在少数类上的召回率比基线提升了大约12个百分点而多数类的准确率只下降了不到2个百分点。这个 trade-off 是值得的因为在医学场景下漏诊少数类尤其是与病理相关的类别的代价远高于多数类的轻微误判。3. 手工特征工程为什么在深度学习时代还要做这件事3.1 形态学特征从细胞轮廓到核质比很多人觉得有了深度学习就不需要手工特征了但在Sipakmed这个数据集上手工特征有两个不可替代的价值。第一它能帮你理解数据——当你把细胞的面积、周长、圆形度、核质比这些指标算出来之后你会对类别之间的差异有直观的感受。第二在某些样本量极少的类别上手工特征配合简单的分类器比如SVM反而比深度学习更稳。我提取的形态学特征包括细胞区域的面积、周长、等效直径、圆形度、偏心率、实心度以及细胞核区域的对应指标。核质比是一个特别重要的特征因为细胞从parabasal到superficial的成熟过程中核质比会逐渐降低。from skimage.measure import label, regionprops from skimage.filters import threshold_otsu def extract_morphology_features(image): # 灰度化 gray cv2.cvtColor(image, cv2.COLOR_RGB2GRAY) # Otsu阈值分割 thresh threshold_otsu(gray) binary gray thresh # 连通域分析 labeled label(binary) regions regionprops(labeled) # 取最大的区域作为细胞区域 if len(regions) 0: return None cell_region max(regions, keylambda r: r.area) features { area: cell_region.area, perimeter: cell_region.perimeter, eccentricity: cell_region.eccentricity, solidity: cell_region.solidity, circularity: 4 * np.pi * cell_region.area / (cell_region.perimeter ** 2) } return features这里有个坑Otsu阈值分割对光照变化很敏感。有些图像整体偏暗Otsu会分割出大片背景有些图像对比度低分割出的细胞区域会残缺。我的解决方案是先做CLAHE限制对比度自适应直方图均衡化再做分割。CLAHE的参数clipLimit和tileGridSize需要根据图像特点调我试下来clipLimit2.0、tileGridSize(8,8)是比较通用的设置。3.2 纹理特征GLCM和LBP的实战对比纹理特征我主要用了两种GLCM灰度共生矩阵和LBP局部二值模式。GLCM能捕捉像素对之间的空间关系适合描述细胞质的颗粒感LBP对光照变化更鲁棒适合描述细胞核的纹理。GLCM的关键参数是距离和方向。我试过距离1、2、3方向0°、45°、90°、135°最终发现距离1、四个方向取平均的效果最稳定。提取的统计量包括对比度、相关性、能量、同质性。from skimage.feature import graycomatrix, graycoprops def extract_glcm_features(gray): # 量化到16级减少计算量 gray_quantized (gray / 16).astype(np.uint8) glcm graycomatrix(gray_quantized, distances[1], angles[0, np.pi/4, np.pi/2, 3*np.pi/4], levels16, symmetricTrue, normedTrue) features {} for prop in [contrast, correlation, energy, homogeneity]: features[prop] graycoprops(glcm, prop).mean() return featuresLBP我用了uniform模式半径1、采样点8。这个配置下特征维度是10维比原始LBP的256维低很多但保留了大部分判别信息。实测下来LBP在区分superficial和intermediate这两个类别上比GLCM更有效因为这两个类别的差异主要体现在细胞核的细微纹理上。3.3 特征融合与分类器选择SVM还是随机森林把形态学特征和纹理特征拼在一起大概得到30维左右的向量。这个维度不算高SVM和随机森林都能处理。我两个都试了SVMRBF核在准确率上略胜一筹但随机森林在可解释性上更好——你可以直接看特征重要性。SVM的参数调优我用了网格搜索C在[0.1, 1, 10, 100]里选gamma在[0.001, 0.01, 0.1, 1]里选。最终C10、gamma0.01的组合在验证集上表现最好。这里要注意SVM对特征尺度很敏感一定要先做标准化。from sklearn.svm import SVC from sklearn.preprocessing import StandardScaler from sklearn.pipeline import Pipeline pipeline Pipeline([ (scaler, StandardScaler()), (svm, SVC(C10, gamma0.01, kernelrbf, class_weightbalanced)) ])手工特征方案最终的准确率大概在78%左右比深度学习低了十几个百分点。但它的训练时间只需要几秒钟而且在小样本类别上的表现更稳定。如果你的计算资源有限或者需要快速验证想法手工特征方案是很好的起点。4. 深度学习方案从ResNet到注意力机制的演进4.1 基线模型选择为什么ResNet50不是最优起点我一开始用的是ResNet50预训练权重来自ImageNet。训练了50个epoch准确率卡在85%左右上不去。分析混淆矩阵后发现主要的错误集中在intermediate和parabasal之间以及superficial和intermediate之间。这说明模型没有学到足够细粒度的特征。后来我换成了EfficientNet-B0参数量更少但准确率反而提升到了88%。原因可能是EfficientNet的复合缩放策略让它在不同尺度上都有较好的特征提取能力而细胞图像的判别信息恰恰分布在多个尺度上——细胞整体形态是粗尺度细胞核纹理是细尺度。再后来我试了ConvNeXt-Tiny准确率到了89.5%。ConvNeXt的设计借鉴了Transformer的一些思路比如大卷积核和LayerNorm在细粒度分类上确实有优势。但它的训练时间比EfficientNet长了大约40%需要权衡。模型参数量验证准确率单epoch训练时间ResNet5025.6M85.2%45sEfficientNet-B05.3M88.1%38sConvNeXt-Tiny28.6M89.5%62sViT-Base86M87.3%95s注意ViT在小数据集上表现不如CNN因为缺乏归纳偏置需要更多数据或更强的增强才能发挥优势。Sipakmed的规模不足以让ViT充分发挥。4.2 注意力机制的引入CBAM和SE的对比为了进一步提升性能我在EfficientNet-B0的基础上加了注意力模块。试了两种SESqueeze-and-Excitation和CBAMConvolutional Block Attention Module。SE只关注通道注意力CBAM同时关注通道和空间注意力。在Sipakmed上CBAM的效果略好于SE准确率提升了约1.2个百分点。我分析原因是空间注意力帮助模型聚焦到了细胞核区域而通道注意力帮助模型筛选了更有判别力的特征通道。但CBAM的参数量和计算量也更大如果部署环境资源受限SE是更务实的选择。import torch.nn as nn class CBAM(nn.Module): def __init__(self, channels, reduction16): super().__init__() self.channel_att nn.Sequential( nn.AdaptiveAvgPool2d(1), nn.Conv2d(channels, channels // reduction, 1), nn.ReLU(), nn.Conv2d(channels // reduction, channels, 1), nn.Sigmoid() ) self.spatial_att nn.Sequential( nn.Conv2d(2, 1, 7, padding3), nn.Sigmoid() ) def forward(self, x): ca self.channel_att(x) x x * ca sa torch.cat([x.mean(dim1, keepdimTrue), x.max(dim1, keepdimTrue)[0]], dim1) sa self.spatial_att(sa) return x * sa4.3 训练策略学习率调度与早停的实战参数学习率调度我用了余弦退火配合warmup。warmup的前5个epoch学习率从1e-6线性增加到1e-3然后余弦退火到1e-6。这个策略比StepLR稳定很多尤其是在训练初期warmup能避免模型在预训练权重上跑偏。早停的patience设的是10个epoch监控指标是验证集的macro F1。为什么用macro F1而不是准确率因为类别不平衡的情况下准确率会被多数类主导macro F1对每个类别一视同仁更能反映模型的真实性能。优化器用的AdamWweight decay设0.01。这里有个细节weight decay不要作用在LayerNorm和bias上否则会影响模型的表达能力。PyTorch里可以通过参数分组来实现。# 参数分组不对LayerNorm和bias做weight decay no_decay [bias, LayerNorm.weight] optimizer_grouped_parameters [ {params: [p for n, p in model.named_parameters() if not any(nd in n for nd in no_decay)], weight_decay: 0.01}, {params: [p for n, p in model.named_parameters() if any(nd in n for nd in no_decay)], weight_decay: 0.0} ] optimizer torch.optim.AdamW(optimizer_grouped_parameters, lr1e-3)4.4 混合方案深度学习特征手工特征的融合分类这是我在复现过程中发现的一个有意思的点。把深度学习模型倒数第二层的特征比如EfficientNet-B0的1280维特征和手工特征30维拼在一起再训练一个简单的分类器比如逻辑回归准确率比纯深度学习高了约0.8个百分点。为什么有效因为深度学习特征擅长捕捉全局的、抽象的形态模式而手工特征提供了精确的、可解释的局部测量。两者互补尤其是在那些深度学习模型犹豫不决的样本上手工特征能提供额外的判别信息。融合时要注意特征尺度差异。深度学习特征的数值范围通常比手工特征大很多直接拼接会让手工特征被淹没。我的做法是对两组特征分别做标准化然后再拼接。from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LogisticRegression # 假设deep_features是N×1280handcrafted_features是N×30 scaler_deep StandardScaler() scaler_hand StandardScaler() deep_scaled scaler_deep.fit_transform(deep_features) hand_scaled scaler_hand.fit_transform(handcrafted_features) combined np.concatenate([deep_scaled, hand_scaled], axis1) clf LogisticRegression(max_iter1000, class_weightbalanced) clf.fit(combined, labels)5. 复现过程中踩过的坑与排查实录5.1 数据泄露一个差点让我白干两周的错误我第一次跑实验的时候验证准确率到了92%当时特别兴奋。但后来做测试集评估时准确率只有76%。排查了半天才发现我在划分数据集之前就做了全局的标准化——用整个数据集的均值和方差来标准化导致验证集的信息泄露到了训练过程中。正确的做法是先划分训练集、验证集、测试集然后只用训练集的统计量来做标准化再应用到验证集和测试集。这个坑在图像分类里尤其隐蔽因为很多人觉得图像像素值本来就是0-255不需要标准化。但如果你用了Z-score标准化或者PCA降维就一定要小心。提示任何涉及全局统计量的操作标准化、PCA、特征选择都必须在训练集上fit然后transform到验证集和测试集。这是铁律。5.2 学习率过大导致的假收敛有一次我把学习率设成了1e-2训练loss在前几个epoch下降得很快但验证loss很快就反弹了。我一开始以为是过拟合加了dropout和weight decay都没用。后来把学习率降到1e-3问题就消失了。这个现象叫假收敛——学习率太大时模型会在损失曲面上跳来跳去训练loss看起来在下降但实际上模型没有找到好的局部最优。验证loss的反弹就是信号。我的经验是如果验证loss在训练loss还在下降时就开始上升先检查学习率是不是太大了而不是急着加正则化。5.3 图像读取的通道顺序问题OpenCV读取图像默认是BGR顺序而PyTorch的预训练模型期望RGB。我一开始忘了转换导致模型的输入通道顺序反了。这个问题很隐蔽因为模型仍然能训练只是性能会下降几个百分点。后来我统一用PIL读取图像或者在OpenCV读取后手动转换通道顺序。# OpenCV读取后转RGB img cv2.imread(path) img cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # 或者直接用PIL from PIL import Image img np.array(Image.open(path).convert(RGB))5.4 类别标签的映射错误Sipakmed的类别标签在文件夹名称里但文件夹名称的排序和类别索引的映射需要手动确认。我有一次想当然地按字母顺序映射结果superficial和parabasal的标签反了导致混淆矩阵完全对不上。后来我写了一个脚本打印每个类别的文件夹名称和对应的索引确认无误后才开始训练。这个坑的教训是不要假设任何东西尤其是标签映射。花五分钟写个检查脚本能省下几小时的排查时间。6. 结果分析与性能对比数字背后的故事6.1 混淆矩阵揭示的类别混淆模式最终模型的混淆矩阵显示主要的混淆发生在intermediate和parabasal之间约15%的intermediate被误判为parabasal以及superficial和intermediate之间约10%的superficial被误判为intermediate。koilocytotic的召回率最低只有82%但考虑到它的样本量最少这个结果可以接受。从生物学角度理解这些混淆intermediate和parabasal都是未完全成熟的细胞形态上有重叠superficial和intermediate的差异主要在细胞核的固缩程度上这个差异在低分辨率下不明显。这提示我们如果要进一步提升性能可能需要更高分辨率的图像或者针对这些易混淆类别设计专门的判别特征。6.2 不同方案的性能对比与适用场景方案准确率Macro F1训练时间适用场景手工特征SVM78.3%0.751分钟快速验证、资源受限ResNet5085.2%0.83约40分钟基线对比EfficientNet-B088.1%0.86约35分钟平衡性能与效率EfficientNet-B0CBAM89.3%0.87约40分钟追求更高精度深度学习手工特征融合90.1%0.88约45分钟最终方案从表格可以看出融合方案在准确率和Macro F1上都取得了最好的结果。但它的复杂度也最高需要同时维护深度学习模型和手工特征提取流程。如果是在实际部署场景中需要权衡性能和工程复杂度。6.3 模型可解释性Grad-CAM热力图告诉了我们什么我用Grad-CAM生成了热力图观察模型在判断时关注了哪些区域。对于superficial类别模型主要关注细胞核区域对于parabasal类别模型关注的是整个细胞区域对于koilocytotic模型关注的是细胞核周围的空晕区域。这些关注区域和病理学家的判断依据基本一致说明模型学到了有意义的特征而不是靠背景或噪声来分类。但也有一些样本模型关注了图像边缘的背景区域。这些样本通常是分割不完整的细胞被截断或者背景干扰严重。这提示我们在预处理阶段要更严格地筛选图像剔除质量太差的样本。7. 如果重新做一次我会在哪些地方省下时间如果让我重新复现一遍Sipakmed我会在数据预处理阶段花更多时间做质量筛查。第一次做的时候我直接把所有图像都扔进了训练流程结果发现大约5%的图像存在严重的模糊、过曝或分割不完整问题。这些低质量样本不仅拖累了模型性能还让错误分析变得困难。第二个会改进的地方是实验记录。我一开始用Excel手动记录每次实验的参数和结果后来实验多了就乱了。建议从一开始就用结构化的方式记录比如用JSON文件或者简单的数据库记录每次实验的超参数、随机种子、验证指标。这样后面做消融实验或者对比分析时能省下大量翻记录的时间。第三个是尽早建立可视化的评估流程。不要只看准确率一个数字要同时看混淆矩阵、各类别的precision/recall、以及典型错误样本的可视化。这些信息能帮你快速定位问题而不是盲目地调参。最后分享一个小技巧在训练深度学习模型之前先用手工特征方案跑一个基线。这个基线可能只有75%左右的准确率但它能帮你确认数据加载、标签映射、评估流程都是正确的。如果手工特征方案的结果合理再上深度学习如果手工特征方案的结果都很差那大概率是数据或流程有问题这时候调深度学习模型是浪费时间。
延伸阅读

更多相关文章

2026/10/15 20:35:00

ThinkJS 快速上手:从零搭建基于 ES2015+ 的 Node.js Web 应用

后端Web框架 【免费下载链接】thinkjs Use full ES2015 features to develop Node.js applications, Support TypeScript. 项目地址: https://gitcode.com/gh_mirrors/thi/thinkjs 点击查看 免费下载 本文以 ThinkJS 官方快速开始文档为主线,完整走通「…

2026/10/15 20:35:00

CTB地形切片生成器:从DEM到Cesium瓦片金字塔的完整指南

简介:CTB地形切片生成器是一款面向Cesium三维GIS开发者的实用工具,可将TIF高程影像切割为Cesium可直接加载的.terrain地形数据,解决三维场景中地形瓦片制作流程繁琐的问题,适合具备一定GIS基础、从事Web三维可视化开发的技术人员使…

2026/10/15 21:40:12

树莓派4 UART多串口配置与通信实战指南

1. 为什么树莓派 4 的 UART 值得单独拿出来聊 树莓派 4 这块板子,但凡你玩过一阵子,大概率都会碰到一个绕不开的需求:接一个串口设备。可能是 GPS 模块、可能是某款工业传感器、可能是和另一块单片机做点对点通信,也可能是调试一个…

2026/10/15 21:40:12

ArcGIS ModelBuilder批量裁剪遥感影像实战指南

简介:本资源是一份面向GIS初学者与ArcGIS实操用户的高效工作流指南,聚焦解决多边形面层驱动的影像批量裁剪这一典型生产需求。文档详细拆解了利用ArcGIS Desktop内置模型构建器(ModelBuilder)搭建自动化裁剪流程的完整路径&#x…

2026/10/15 21:40:12

C++ Builder课程设计:基于ODBC和Access的选课系统开发全流程

简介:这是一份面向计算机科学与技术专业学生的软件工程实践指导书,围绕选课系统的小型项目开发,帮助初学者按照软件工程思想与面向对象方法,将编程语言、数据库等专业知识综合运用到实际系统中。指导书明确了实验目的、专业方向与…

2026/10/15 21:40:12

XDMA实战笔记:通道模型、描述符队列与避坑指南

简介:Xilinx XDMA(DMA/Bridge Subsystem for PCI Express v4.1)中文读书笔记,以官方PG195文档为主线,并结合GitHub上的dma_ip_drivers驱动与Xilinx官方FAQ整理,弥补官方英文手册阅读门槛高、中文系统资料少…

2026/10/15 21:40:12

C++入门之list的使用详解

前言 std::list&#xff08;头文件 <list>&#xff09;是 C 标准库里的双向链表&#xff08;doubly linked list&#xff09;。 它最核心的特性只有一句话&#xff1a;在任意位置插入和删除元素都是常数时间&#xff0c;且除了被删除的那个迭代器&#xff0c; 其他迭代器…

2026/10/15 21:35:12

Cookie注入攻防实战:从原理到防护的完整指南

1. 从一次内部演练说起&#xff1a;为什么Cookie注入值得单独拿出来讲很多做Web安全测试的朋友&#xff0c;入门时接触的第一个漏洞类型大概率是SQL注入&#xff0c;而练手的第一个场景&#xff0c;往往是在URL参数或者表单输入框里构造payload。这很正常&#xff0c;因为GET和…

2026/10/14 11:31:03

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”&#xff0c;而是它给出一段看起来合理的说明&#xff0c;程序却从中猜错优先级。通俗做法是&#xff1a;要求模型只交 JSON&#xff08;JavaScript Object Notation&#xff0c;轻量数据格式&#xff09;&#xff0c;再让代码验证它。Gem…

2026/10/14 17:41:07

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里&#xff0c;有A同学跑来问我&#xff1a;选什么毕设题目最稳妥&#xff0c;既能让评审老师觉得工作量够&#xff0c;又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/15 13:42:16

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友&#xff0c;在看完一堆“Hello World”和基础组件之后&#xff0c;大概率都会撞上同一堵墙&#xff1a;StatefulWidget 里那堆 initState、build、dispose 方法&#xff0c;到底什么时候被调用&#xff1f;为什么顺序是那样&#xff1f;在里面到…

2026/10/15 0:02:22

防关联浏览器哪个好?三款产品实测差异解析

新手做多店铺&#xff0c;最纠结的就是防关联浏览器选哪个。飞跨、网易、站斧这三款被问得最多&#xff0c;先给结论&#xff1a;要一体化省心、长期便宜&#xff0c;选站斧&#xff1b;要网易招牌和稳&#xff0c;选网易&#xff1b;预算紧做东南亚 Lazada&#xff0c;选飞跨。…

2026/10/15 0:02:22

影刀RPA深度实战:大模型Fine-tuning定制RPA专用Prompt与指令生成

影刀RPA深度实战&#xff1a;大模型Fine-tuning定制RPA专用Prompt与指令生成 一、技术背景 大模型&#xff08;LLM&#xff09;在通用场景下表现强大&#xff0c;但当我们将 GPT-4 或 Qwen 直接用于生成影刀RPA操作指令和 XPath 定位时&#xff0c;准确率通常只有 40%-60%。原因…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑