585张眼底JPG的像素级分割实战:数据探查、UNet训练与避坑指南
简介面向糖尿病视网膜病变DR两阶段AI检测流程的第一阶段这份数据集将四个公开眼底图像资源整合为统一格式的585张标注影像覆盖血管与7类病灶微动脉瘤、出血、硬渗出、软渗出、视盘、新生血管、棉絮斑适合从事医学图像分割与DR智能筛查的算法工程师、科研人员直接用于训练与验证。资源共2000个文件以1591个png掩膜为主配合408个tif原始眼底图与1个json标注说明整体压缩包约644.8MB采用7z格式便于一次解压后按目录使用。目前已有26人浏览学习。得益于IDRiD与MAPLES-DR等多源标注的互补微动脉瘤、出血、渗出等病灶均具备像素级分割标签既可用于血管树提取也可支撑病变区域定位省去跨数据集格式转换与清洗工作是构建完整DR分级模型前段模块的实用训练集。1. 585张眼底JPG的分段数据集先认清它能做什么、不能做什么这个标题里的“分段”在医学影像里就是像素级分割segmentation给每张视网膜眼底JPG配上一张或多张掩膜把血管、出血、渗出这类结构逐像素标出来。585张图像听起来不多但作为起步数据已经足够把一整套血管与病灶分割流程跑通验证模型选型、损失函数和训练配置是否靠谱。适合的场景是算法预研、论文复现、课程设计和比赛练手不适合的场景是直接拿去做临床辅助判断样本量和标注粒度都还不够。本文按我自己的做事顺序展开先摸清数据格式再定模型和损失然后调训练参数最后把避坑和验证方法给你。2. 先确认输入输出格式眼底JPG怎么读、掩膜是单通道还是彩色2.1 遍历JPG文件并检查尺寸、通道与灰度分布拿到一个眼底分段数据集我第一步不会碰模型而是先写一个探路脚本把所有JPG读一遍确认三件事图像尺寸是否一致、通道数量、像素值分布。眼底图像的光照差异比自然图像大不同设备拍出来的图整体亮度和暗角情况可能差很多这个分布直接决定后面预处理要不要做CLAHE、归一化用什么均值。import cv2 import glob import numpy as np jpg_paths sorted(glob.glob(data/*.jpg)) # 匹配所有JPG文件 print(共发现 %d 张图像 % len(jpg_paths)) shapes set() stats [] for p in jpg_paths: img cv2.imread(p) # BGR顺序读取 if img is None: print(读取失败:, p) continue shapes.add(img.shape) stats.append((img.mean(), img.std())) print(尺寸集合:, shapes) means np.array([s[0] for s in stats]) print(像素均值范围: %.2f ~ %.2f % (means.min(), means.max()))这段脚本做了三件事用glob收集所有JPG路径注意后缀大小写用 OpenCV 的imread读取返回H x W x 3的BGR数组最后统计每张图的均值和标准差观察有没有曝光差异极大的离群样本。shapes集合如果只有一个元素说明后续训练可以统一resize到同一尺寸如果有多个就要决定是全部缩放还是按主要尺寸裁剪。像素均值如果跨度超过50以上说明这批数据的光照条件不一致CLAHE基本是必做的。2.2 掩膜文件格式确认黑白掩膜、彩色标注与坐标一致性问题眼底分段数据集的掩膜文件我在经手的数据里至少见过三种形态单通道黑白PNG血管和病灶为白色、背景为黑色彩色标注图不同颜色代表不同类别还有一种很少见但很坑的情况——掩膜以JPG格式保存这就会带来压缩伪影。标题后缀是JPG所以原图大概率是JPG格式但掩膜是不是JPG必须动手确认。mask_paths sorted(glob.glob(data/masks/*.png)) sorted(glob.glob(data/masks/*.jpg)) print(掩膜文件数:, len(mask_paths)) for mp in mask_paths[:3]: m cv2.imread(mp, cv2.IMREAD_UNCHANGED) # 保留原始通道 print(mp, shape:, m.shape, dtype:, m.dtype) print(唯一值:, np.unique(m)[:20])关键点在于np.unique的输出。如果唯一值只有[0, 255]说明是干净的二值掩膜可以直接用。如果出现[0, 0.02, 0.98, 255]这类小数或者接近但不等于255的值说明掩膜经过有损压缩必须先做阈值二值化再参与训练否则模型会在边界上收到混乱的监督信号。如果唯一值数量很多且分布连续那就不是简单的二值标注大概率是多类别彩色标注需要按颜色映射表转换成类别索引。掩膜和原图的坐标一致性也要在这一步确认打印一张掩膜的shape和对应原图的shape如果不一致后续resize时两边的缩放参数很容易错位。我见过因为原图裁剪过而掩膜没同步裁剪导致整个训练集标签整体偏移十几个像素的情况这属于查不出来、但会一直拉低指标的隐蔽问题。2.3 预处理排序归一化、CLAHE与阈值参数怎么定预处理顺序我一般固定为读图 → 可选灰度化 → CLAHE → resize或crop → 归一化 → 转Tensor。顺序不能乱尤其是CLAHE和resize先resize再做CLAHE会让增强统计量受尺度影响边缘更容易出光晕。眼底图有一个特点背景是暗红或偏黑的视网膜区域血管是暗红色树枝状结构病灶里出血偏暗、渗出偏亮黄。如果直接套用ImageNet的均值和标准差做归一化分布错得离谱模型收敛会变慢。常见做法是先用2.1的统计脚本算出这批585张图自己的mean和std写入归一化参数。import albumentations as A from albumentations.pytorch import ToTensorV2 preprocess A.Compose([ A.CLAHE(clip_limit2.5, tile_grid_size(8, 8), p0.8), A.Resize(512, 512), A.Normalize(mean(0.32, 0.28, 0.26), std(0.18, 0.16, 0.15)), ToTensorV2(), ])CLAH E参数上clip_limit我一般取2.0到3.0太高会在细血管边缘产生过冲光晕看起来对比度变强了实际上把血管边界“烧”白了tile_grid_size取(8, 8)或(16, 16)格子太小会放大局部噪声。如果保留RGB三通道CLAHE最好在LAB空间的L通道上做而不是直接在BGR三个通道分别做否则色彩会明显偏移。如果只分割血管转灰度完全够用但病灶中的出血和渗出靠颜色区分明显我建议保留RGB输入。3. 眼底分割模型选型与损失设计为什么第一选择是UNet3.1 UNet的skip connection对细血管的意义输入分辨率选多大585张图不算大模型参数必须要克制。UNet基础版本的参数量在千万以下编码器下采样四次解码器通过上采样把分辨率逐步恢复而skip connection把浅层的边缘细节直接拼到深层特征上。这件事对眼底血管分割尤其关键视网膜主干血管有几十像素宽末梢细血管可能只有1到2个像素经过四次下采样后末梢血管在特征图里已经不足一个像素如果没有skip connection浅层的位置信息根本传不到解码端细血管必断。输入分辨率的选择比模型结构更影响细血管连续性。常见的做法是把图像resize到512×512或使用随机crop到512低于384会导致末梢血管大量消失。如果原始图像超过1200像素宽建议用“随机crop 全图resize”混合策略让模型同时见过局部细节和全局结构。3.2 损失函数Dice Loss与BCE的加权组合及参数建议眼底血管和病灶在整张图里占比通常很低血管约占10%左右出血和渗出甚至只有百分之几。如果只用逐像素交叉熵模型学到的解是“全部预测为背景”因为背景类占比太高对误差的惩罚贡献也最高。Dice Loss直接优化预测掩膜与真实掩膜的重叠率天然对类别不平衡不敏感但在训练初期梯度比较振荡BCE提供更稳定的逐像素梯度。常见做法是两者加权求和。损失函数设计还要先确认输出通道数。如果标注里血管和病灶是两张独立掩膜可以把它们合并成一张三通道标注通道0是背景通道1是血管通道2是病灶。如果数据集里没有病灶掩膜病灶通道全部置零也不会影响训练。模型输出三个通道用Softmax转成概率再分别计算Dice和BCE。我常用的损失配置是loss 0.4 * dice_loss 0.6 * bce_loss。血管比病灶占比高很多可以给病灶通道的Dice额外乘一个1.2的权重让模型不至于完全忽略小目标的梯度。另一个备选项是Focal Loss它对极端类不平衡有效但alpha和gamma两个超参在小数据集上调起来成本很高不建议第一轮就上。3.3 最小可跑的训练主循环代码PyTorch下面是针对这个任务的最小训练主循环重点看三个地方三通道输出的损失计算、Dice系数的写法、以及每个epoch末尾验证集的评估方式。import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import DataLoader import numpy as np def dice_loss(pred, target, smooth1.0): pred torch.softmax(pred, dim1)[:, 1:] # 去掉背景通道 target target.float() intersection (pred * target).sum(dim(2, 3)) union pred.sum(dim(2, 3)) target.sum(dim(2, 3)) return 1 - ((2 * intersection smooth) / (union smooth)).mean() def bce_with_logits(pred, target): loss nn.functional.binary_cross_entropy_with_logits( pred[:, 1:], target) return loss model UNet(in_channels3, out_channels3) # 背景、血管、病灶 optimizer optim.AdamW(model.parameters(), lr1e-4, weight_decay1e-5) train_loader DataLoader(train_dataset, batch_size8, shuffleTrue) for epoch in range(100): model.train() epoch_loss 0 for images, masks in train_loader: images images.float().cuda() masks masks.float().cuda() logits model(images) loss 0.4 * dice_loss(logits, masks) 0.6 * bce_with_logits(logits, masks) optimizer.zero_grad() loss.backward() optimizer.step() epoch_loss loss.item() print(epoch %d loss %.4f % (epoch, epoch_loss / len(train_loader)))这段代码里dice_loss先对输出做softmax再丢弃背景通道只在前景通道上计算重叠避免背景类占比高导致Dice虚高。bce_with_logits里pred[:, 1:]同样把背景通道去掉否则BCE也会被背景主导。学习率选1e-4配合AdamW对小数据集比较稳weight_decay设为1e-5是轻量正则。每个epoch后的验证逻辑没有贴在这里但必须做不能只看训练loss。4. 训练585张图的参数配置batch、学习率、增强与防过拟合4.1 batch size与学习率的匹配关系在512×512输入下基础UNet用8G显存可以跑batch_size8这是小数据集上比较稳的起点。batch size不要盲目加大585张图本来样本就少batch太大每个step看到的样本多样性下降模型容易在几个样本上反复拟合。学习率与batch size挂钩batch8时AdamW初始学习率1e-4即可如果显存只够batch4学习率降到5e-5如果够大跑到16到32学习率可以提到2e-4到3e-4。epoch数量方面100到120轮是一个合理的区间。训练前5个epoch建议用较低学习率做热身比如固定为1e-5让解码器先稳定下来再进入主学习率。后半程用余弦退火把学习率降到1e-6附近细调末梢血管的边界。注意一个容易翻车的点如果开了NVIDIA AMP混合精度Dice Loss在FP16下容易产生数值不稳定loss出现NaN我一般会关掉AMP或者对Dice的分子分母做float32强制转换。4.2 在线数据增强清单哪个操作对血管连续性和病灶边界最有帮助585张图想防过拟合主要靠在线增强而不是加正则项。眼底图有特殊的解剖学约束视盘可以偏左也可以偏右所以水平翻转和垂直翻转都可用不会破坏语义但旋转角度不宜过大超过±20度会让视盘位置分布失真我用±15度。弹性形变对血管这类长条形目标效果明显血管在真实眼底里受个体差异影响会有弯曲变化用轻微的弹性变形模拟这种形态波动能显著降低验证集上血管断裂的概率。亮度与对比度扰动用于模拟不同拍摄设备的光照差异眼底数据集最常见的问题就是训练集和验证集亮度分布不一致。噪声不要加太重高斯噪声概率0.15、幅度小否则细血管会被噪声淹没。train_transform A.Compose([ A.HorizontalFlip(p0.5), A.VerticalFlip(p0.5), A.Rotate(limit15, border_modecv2.BORDER_CONSTANT, p0.6), A.RandomBrightnessContrast(brightness_limit0.15, contrast_limit0.15, p0.6), A.ElasticTransform(alpha120, sigma8, p0.2), A.GaussNoise(var_limit(5.0, 20.0), p0.15), A.Resize(512, 512), ToTensorV2(), ])这套增强里ElasticTransform的alpha120, sigma8是血管分割任务里经验比较稳的参数组合变形幅度足够模拟血管轻微弯曲又不会把血管扭成不自然的形状。RandomBrightnessContrast的扰动幅度不要超过0.15眼底图亮度过曝后视盘区域会被“烧白”病灶细节直接丢失。另外建议加一个随机crop策略一半概率直接从原图裁512×512区域另一半概率整图缩放到512这样模型同时学习局部细节和全局布局。4.3 过拟合信号训练loss下降但验证Dice不动时先查什么训练过程中最典型的过拟合信号是训练Dice一路升到0.95以上验证Dice卡在0.7附近不再变化或者验证损失在第30轮后开始回头涨。很多人的第一反应是加Dropout或者把模型缩小但我的排查顺序是先查验证集本身是否太小或划分不当。585张图如果随机划分验证集只有117张偶然波动很大最好用第6章的五折交叉验证替代单次划分。如果划分没问题第二步看增强强度是不是过猛。增强太强会导致训练集分布和验证集分布越拉越远表现为训练loss下降平稳但验证指标上不去这时把旋转角度从15度缩到10度、关闭弹性形变再看一轮。第三步才考虑模型改动把UNet第一层卷积的通道数从64缩到48降低模型容量通常比加Dropout有效。还有一个对眼底数据集特别有用的做法如果有ImageNet预训练编码器冻结第一个block的权重让底层特征先适应眼底图的暗红纹理再逐步解冻这会大幅缓解小数据下的收敛抖动。5. 眼底分段训练里最常翻车的五个坑避坑与排查5.1 预测图全黑或全白正负样本失衡的典型症状现象验证集上输出的概率图整体在0到0.1之间用0.5阈值一划分预测掩膜全黑。或者反过来全白概率图整体偏高。原因几乎都是背景类占比过高。眼底图里血管加病灶通常不超过20%像素如果损失函数只用了逐像素交叉熵模型发现全预测为背景也能拿到80%以上的准确率就会收敛到这种“最优解”。解决换用Dice Loss与BCE的加权组合并且验证时不要死守0.5阈值。细血管末梢的预测概率经常只有0.3左右可视化时在0.3到0.5之间多试几个阈值找一个在形态上最连续的值。5.2 血管断成虚线宽高下采样与插值方式同时背锅现象血管主干连续但末梢血管在预测图里是一段一段的短线像虚线一样。原因一方面输入分辨率不足末梢血管在经过四次下采样后丢失另一方面resize时原图用了双线性插值掩膜用了最近邻虽然标注没错但训练时网络收到的输入特征和标签细节不匹配边界学不干净。解决把输入分辨率从384提到512以上并在预处理里保持原图和掩膜使用同一个缩放变换掩膜强制用最近邻插值避免标签边缘出现平滑过渡。最后在验证时对概率图做一次轻量形态学闭运算核的大小取3×3能在不断裂主干的前提下把细小的断点接上。5.3 掩膜与原图错位resize时mask用错插值算法现象训练loss低但预测图和原图叠加后血管边缘整体偏移一两个像素视盘边缘出现明显“套圈”。原因最常见的是resize原图用OpenCV默认的双线性插值掩膜用同一个函数处理却没用INTER_NEAREST导致掩膜边缘被过渡像素“推”偏。另一种情况是原图做了裁剪而掩膜没有做相同坐标裁剪。解决统一封装一个预处理函数原图和掩膜必须走同一套Resize与Crop流程。每次训练前抽20张图把原图和掩膜叠加保存成巡检图人工快速扫一遍Shift键按住了直接看边缘对不齐的样本发现错位立刻停训排查。5.4 验证指标虚高同一病人多张眼底图泄漏进训练集现象训练Dice和验证Dice都高得离谱比如验证Dice超过0.9但把模型挪到新采集的眼底图上效果明显变差。原因眼底数据集的采集往往是一人拍多张如果按文件名随机划分数据集同一个人的左右眼可能分别混进训练集和验证集。左右眼眼底结构高度相似模型等于提前见过了“同款”样本。解决划分数据集时按病人ID分组而不是按文件名随机分文件名前缀相同的样本必须进同一折。没有病人ID时退而求其次按采集批次划分。这是小数据集评估里最隐蔽的泄漏来源也是我吃过亏最多的地方。5.5 视盘被误判成病灶灰度相近区域的输出处理顺序现象预测图里视盘边缘一圈被标成病灶或者黄斑区域出现规则圆形的高概率响应。原因视盘是亮黄色圆盘状结构在灰度分布上和渗出、硬性渗出非常接近。如果训练样本里病灶样本少模型没有足够的病灶多样性就会把“亮而规则”的区域当成病灶。解决数据层面把视盘区域在预处理阶段加一个额外掩膜通道让模型知道这块区域是解剖结构而非病灶后处理层面对病灶通道使用最大连通域过滤丢弃面积过小的孤立区域再结合位置先验排除图像中心偏鼻侧的高亮圆盘。纯颜色阈值在后处理里不值得依赖眼底图光照差异会让阈值完全失效。6. 585张图怎么拿出可信指标五折交叉验证与外部数据对拍6.1 按病人分层的五折交叉验证脚本单次划分训练集和验证集在585张的规模下结论不可靠折数稍微变一下指标就波动几个点。我一般用五折交叉验证并且严格按病人ID分组避免5.4里的样本泄漏。每一折用468张训练、117张验证最终报告五折Dice的均值和标准差。from sklearn.model_selection import KFold file_names sorted(glob.glob(data/*.jpg)) patient_ids [f.split(/)[-1].split(_)[0] for f in file_names] # 假设文件名前缀是病人ID kf KFold(n_splits5, shuffleTrue, random_state42) folds list(kf.split(file_names, groupspatient_ids)) for fold_idx, (train_idx, val_idx) in enumerate(folds): print(fold %d 训练样本 %d 验证样本 %d % (fold_idx, len(train_idx), len(val_idx)))KFold的groups参数确保同一个病人ID的所有图像只出现在同一侧脚本先打印每折的样本数检查类别分布是否极端偏离。如果某一折里病灶样本接近为零就按掩膜前景像素占比做分层采样把这取决于一个简单的做法先把所有样本按血管占比分成高、中、低三桶在每一桶内部再做KFold保证每折占比均衡。6.2 预测叠加可视化检查清单指标只能告诉你趋势不能告诉你细血管是不是断的。我的固定习惯是每折训练结束后保存20张验证集的预测叠加图用cv2.addWeighted把原图和半透明预测掩膜叠在一起然后逐张过一遍。检查重点血管末梢有没有出现反常的截断视盘边缘的预测是否贴合真实边界病灶区域的预测边缘是否锐利、有没有一堆孤立噪点。如果模型在某个视盘或病灶形态上系统性失败叠加图比任何指标都直观。每折跑完把这些图归档和下一折对比能肉眼看到增强策略改动带来的实际差异。6.3 用公开血管分割基准集做泛化对拍585张图上五折Dice 0.85只能说明在这批数据内部表现稳定跨设备泛化能力还需要额外验证。常见做法是把训练好的模型直接跑在公开的血管分割基准集上比如DRIVE和STARE这套经典眼底数据计算同样的Dice指标看是否明显掉点。掉点严重说明模型记住了训练集的设备特性和灰度分布而不是抽象的血管形态特征。没有外部标注也能做泛化自测收集一批完全没参与训练的眼底照片直接推理人工对比预测结果的形态合理性。我第一次跑这类任务时五折Dice看着能用放到另一台设备拍的几十张图上直接跌破0.5回去一查是预处理标准差没对齐从那以后我养成了两个固定习惯训练前先跑完整的数据探查脚本训练后强制存叠加图而不是只看数字。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

基于微信小程序的校园资讯共享平台开发实践与部署指南

基于微信小程序的校园资讯共享平台开发实践与部署指南

每年到这个时间点,论坛和群里最多人问的就是“资讯类小程序怎么做”“发帖功能怎么实现”“后端选什么”。你把这个标题拆开看——基于微信小程序的校园资讯共享平台系统,后面还跟着源码、lw、部署文档、讲解等一串交付物——这其实是一个非常典型的、面…

2026/10/11 17:09:07 阅读更多 →
Flutter for OpenHarmony实战:首页Banner轮播与快捷入口适配

Flutter for OpenHarmony实战:首页Banner轮播与快捷入口适配

(这里我替换了原编号,其余内容未作改动,仅调整了标题序号以符合要求顺序。直接输出Markdown正文。)1. 项目概述与核心痛点拆解最近在做一款基于 Flutter for OpenHarmony 的剧本杀组队App,项目代号暂定为某跨平台组队工…

2026/10/11 17:09:06 阅读更多 →
IEEE 33节点系统:配电网潮流计算的黄金基准与实操避坑指南

IEEE 33节点系统:配电网潮流计算的黄金基准与实操避坑指南

简介:本资源是面向电力系统专业本科生及初学者的课程实践包,聚焦IEEE 33节点配电网建模与潮流计算核心能力训练,解决教学中理论脱离实操、缺乏标准算例验证的常见痛点。压缩包共2个文件(28KB),含Simulink仿…

2026/10/11 17:08:06 阅读更多 →

最新新闻

MVDR波束形成协方差矩阵原理与MATLAB稳健实现

MVDR波束形成协方差矩阵原理与MATLAB稳健实现

简介:本资源是一套基于MATLAB实现的MVDR(最小方差无失真响应)波束形成算法完整源码,面向通信工程、阵列信号处理方向的新手及进阶学习者,用于理解经典自适应波束形成原理、掌握干扰抑制与主瓣增强的编程实现。压缩包共…

2026/10/11 18:00:38 阅读更多 →
动力电池SOH/RUL深度学习实战:从公开数据集到可复现评估链路

动力电池SOH/RUL深度学习实战:从公开数据集到可复现评估链路

简介:本资源面向计算机、人工智能、自动化等专业的在校学生与研究人员,提供一套基于深度学习的动力电池健康状态评估与剩余寿命预测完整项目源码及设计资料,可用于毕业设计、课程设计或项目初期立项演示。项目融合SVR、ElasticNet、KernelRid…

2026/10/11 18:00:38 阅读更多 →
8089张野生动物数据集实战:YOLO与VOC格式转换及YOLOv8训练避坑指南

8089张野生动物数据集实战:YOLO与VOC格式转换及YOLOv8训练避坑指南

简介:这份资源是面向计算机视觉与目标检测学习者的野生动物标注数据集,适用于野外固定视角摄像场景下的动物识别模型训练与算法验证,尤其适合从事YOLO系列或VOC格式检测任务的中高级开发者。压缩包共约2000个文件,以1999个xml标注…

2026/10/11 18:00:38 阅读更多 →
802.11权威指南中文版翻译复盘:协议、术语与审校实战

802.11权威指南中文版翻译复盘:协议、术语与审校实战

断断续续搞了快十个月,总算把这个项目收尾了——《802.11 Wireless Networks: The Definitive Guide》中文版,从初译、技术审校到最终排版定稿,全部走完。做无线协议这行的人对这本书应该都不陌生,很多写路由器固件、无线网卡驱动…

2026/10/11 18:00:38 阅读更多 →
电缆表皮腐蚀检测数据集:1583张实采图+双格式标注

电缆表皮腐蚀检测数据集:1583张实采图+双格式标注

简介:电缆表皮腐蚀检测是工业视觉中典型的小目标、低对比度、类内差异大任务,其核心挑战在于缺乏真实场景覆盖的高质量标注数据。基于YOLO与VOC双格式兼容的实采数据集,可支撑模型从原理理解(归一化坐标与绝对坐标的转换机制&…

2026/10/11 17:59:37 阅读更多 →
YOLOv8表情识别实战:数据校验、训练调参与避坑指南

YOLOv8表情识别实战:数据校验、训练调参与避坑指南

简介:面向深度学习开发者与计算机视觉学习者,这是一份完整的YOLOv8人脸表情识别工程包,整合了标注数据集、可运行源码与手把手的配套教程,帮助读者快速跨越从环境搭建、数据预处理到模型训练与部署的全流程,尤其适合课…

2026/10/11 17:59:37 阅读更多 →

日新闻

流感时间序列预测实战: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/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练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/11 14:36:54 阅读更多 →