Mask R-CNN在显微矿物图像分割中的物理驱动改造
简介本资源是一套基于TensorFlow 2.x与Keras实现的Mask R-CNN显微矿物图像实例分割完整项目面向深度学习初学者、地质图像分析研究者及计算机视觉实践者解决矿物显微图像中多类别目标检测与像素级精确分割的实际问题适用于地质勘探、矿产资源智能识别与工业质检等场景。压缩包共29个文件含13个核心Python脚本如train_mineral.py、model.py、data_enhance_*.py、9个Jupyter Notebook覆盖数据检查、模型训练、CT岩石与矿物双任务推理等全流程、以及PNG/JPEG格式示例图与说明文档总大小23.27MB结构清晰模块化程度高。已有179人学习下载。读者可直接复现从数据增强、自定义Mask R-CNN模型构建、多尺度矿物实例训练到可视化预测的全链路流程获得可即用的mrcnn子模块封装、适配显微图像的数据预处理脚本、针对小目标优化的训练配置及典型后处理代码显著降低在专业图像领域落地实例分割的技术门槛。1. 显微矿物图像识别不是“调个模型就行”Mask R-CNN 在低对比度、高重叠、小目标密集场景下的真实落地难点你手头有一批显微镜下拍摄的矿物薄片图像——颗粒细小平均尺寸不足40像素、边界模糊、颜色相近石英/长石/云母灰度差常15、大量粘连与遮挡。这时候扔一个通用COCO预训练的Mask R-CNN进去mAP可能直接掉到0.2以下掩码边缘全是毛刺连“这是不是同一个颗粒”都分不清。这份基于TensorFlowKeras实现的Mask R-CNN矿相分割项目不是教学Demo而是一线地质图像处理团队在真实岩矿标本数据集上反复迭代出的可复现方案它绕开了Keras官方示例中对大目标、高对比图像的隐含假设针对性重构了数据增强策略、ROI Align梯度回传路径、以及小目标专用的mask head损失加权机制。适合正在处理薄片扫描图、电子探针图像或XRD-SEM联用数据的地质工程师、材料研究员以及需要将学术论文方法快速转为工程可用pipeline的AI落地工程师。它不承诺“开箱即用”但每一步改动都有对应图像缺陷的物理依据。2. 为什么必须用Mask R-CNN而不是U-Net或YOLOv8从矿物图像物理特性反推模型选型逻辑2.1 矿物颗粒的三大不可回避的成像硬约束显微矿物图像不是普通自然图像——它的退化模式有明确物理来源光学衍射极限在100×油镜下理论分辨率约0.2μm但实际图像中矿物颗粒轮廓受阿贝衍射影响呈高斯模糊导致边缘梯度信息严重衰减偏光干涉色干扰同一矿物在不同旋转角度下RGB通道响应剧烈波动单张图内可能出现红/绿/蓝主导区域破坏颜色一致性制样引入伪影薄片厚度不均导致局部过曝如黑云母边缘发白、环氧树脂填充气泡形成类颗粒噪点、盖玻片划痕产生线性干扰。这些不是“噪声”而是与目标共生的系统性退化。U-Net类全卷积结构在编码器阶段会无差别平滑掉本就微弱的衍射边缘YOLO系列的anchor-based检测框无法描述不规则裂隙状矿物如绢云母的丝状集合体且其mask分支如YOLOv8-seg默认采用双线性插值上采样在40像素级目标上会丢失亚像素定位能力。2.2 Mask R-CNN的不可替代性ROI Align 实例级解耦的物理意义本项目坚持使用Mask R-CNN而非改用其他架构核心在于其两个设计与矿物分析需求严丝合缝ROI Align替代ROI Pooling矿物颗粒常呈细长条状如角闪石或破碎状如蚀变绿泥石传统ROI Pooling的量化取整会切断关键晶界线。ROI Align通过双线性插值保留原始特征图的空间连续性实测在30–50像素目标上使mask IoU提升12.7%见项目附带benchmark_roi_align_vs_pooling.ipynb检测框掩码双任务解耦地质工作者需要先确认“是否存在该矿物类型”分类置信度再精确提取“这个颗粒的实际轮廓”mask。Mask R-CNN的并行分支允许我们单独调整分类损失权重如对稀有矿物提高focal loss γ值而不影响分割精度——这在U-Net单任务框架中无法实现。提示项目未使用Detectron2或MMDetection因TensorFlowKeras栈更易嵌入地质领域先验。例如在custom_loss.py中我们重写了mask_loss函数当预测mask与GT的IoU0.3时自动切换为Dice Loss而非二值交叉熵专门应对衍射模糊导致的低置信度边缘。2.3 TensorFlow 2.x Keras的工程权衡为什么不用PyTorch虽然PyTorch生态更活跃但本项目选择TF2.x有三点硬性理由部署端兼容性某高校实验室现有GPU服务器仅部署TensorFlow Serving且需对接其自研的岩矿数据库API基于TF-serving gRPC协议确定性训练地质数据标注成本极高单张薄片需3名高级工程师交叉验证必须保证tf.random.set_seed()后每次训练结果完全一致而PyTorch的torch.backends.cudnn.deterministicTrue在混合精度训练中仍有微小浮动自定义层可控性项目中的AdaptiveROIPooling层见layers/roi_pooling.py需在call()中动态计算每个ROI的采样点密度TF的tf.function装饰器能确保该计算图被完整固化避免PyTorch的torch.jit.trace对复杂控制流支持不佳的问题。3. 数据准备不是“放几张图就行”矿物图像的标注规范与增强陷阱3.1 地质学友好的标注标准非COCO式粗放本项目拒绝直接套用COCO标注格式因为矿物颗粒存在三类COCO未定义的拓扑关系包裹关系如石英颗粒中包裹磁铁矿微粒需标注为“石英外轮廓 磁铁矿内轮廓”而非简单叠加裂隙依附绢云母常沿长石解理缝生长其mask必须严格贴合解理线走向不能简化为多边形透明度分层云母类矿物具强双折射同一区域在不同偏光角度下呈现不同透明度标注时需按“最清晰角度图像”为基准但保存原始多角度序列供后续多视图学习。项目提供tools/geology_annotator.py这是一个基于OpenCV的轻量级标注工具支持按矿物类型自动分配颜色石英蓝色长石红色云母绿色避免人工混淆绘制时实时显示当前笔触的HSV色域范围防止将阴影误标为矿物导出时生成.json标注文件其中segmentation字段为RLE编码非polygon适配Mask R-CNN的mask head输入要求。3.2 针对衍射模糊的定制化增强策略通用增强库如Albumentations对矿物图像有害GaussianBlur会加剧本已存在的光学模糊使边缘彻底消失RandomBrightnessContrast在偏光图像中导致干涉色失真破坏矿物鉴定依据GridDistortion扭曲晶界直线性违背地质学中“矿物晶面为平面”的基本假设。本项目在data/augmentation.py中实现三类物理驱动增强# 物理模拟模拟不同物镜倍数下的衍射效应 def simulate_diffraction_blur(image, kernel_size3): # 使用修改版的高斯核中心权重更高模拟阿贝极限下的主极大 kernel np.zeros((kernel_size, kernel_size)) center kernel_size // 2 kernel[center, center] 0.6 # 主极大占60% kernel[center-1:center2, center-1:center2] 0.4 / 9 # 次极大均匀分布 return cv2.filter2D(image, -1, kernel) # 偏光补偿在HSV空间对S饱和度通道做定向扰动 def polarize_saturation(image, delta_s0.1): hsv cv2.cvtColor(image, cv2.COLOR_RGB2HSV) hsv[:,:,1] np.clip(hsv[:,:,1] * (1 np.random.uniform(-delta_s, delta_s)), 0, 1) return cv2.cvtColor(hsv, cv2.COLOR_HSV2RGB)参数说明simulate_diffraction_blur的kernel_size必须为奇数且建议设为3对应40×物镜或5对应100×物镜过大则过度模糊polarize_saturation的delta_s0.1是经实验确定的阈值超过0.15会导致石英与斜长石的干涉色混淆二者在蓝紫区饱和度差异仅≈0.12。3.3 小目标密集场景的采样策略避免“一张图只训出背景”矿物图像中单张1024×1024图常含200颗粒但90%为64像素的小目标。若直接按常规方式随机裁剪batch中极易出现“无有效目标”的样本。项目在data/dataset.py中实现MineralBalancedSampler预扫描所有图像统计每张图的“有效目标密度”面积16px²且IoU0.5的颗粒数/图像面积训练时按密度分桶低/中/高每个batch强制包含各桶至少1张图对低密度图启用patch_crop模式以每个小目标为中心裁剪256×256子图并用copy-paste将其他小目标粘贴进来代码见augmentation.py的copy_paste_augment函数确保每个patch至少含3个目标。4. 模型改造不是“改改config.yaml”而是直击矿物分割的四个核心瓶颈4.1 FPN特征金字塔的通道重校准解决多尺度矿物的特征坍缩标准FPN在P2–P5层使用相同通道数256但矿物图像中P2层对应原图1/4尺度需捕捉晶界细节应强化高频信息P4层对应原图1/16尺度需区分大颗粒类型应强化语义信息。项目在model/fpn.py中插入ChannelReCalibration模块class ChannelReCalibration(tf.keras.layers.Layer): def __init__(self, reduction_ratio16, **kwargs): super().__init__(**kwargs) self.reduction_ratio reduction_ratio def build(self, input_shape): # 对P2层全局平均池化后接[256→16→256]强调通道间差异 # 对P4层改用全局最大池化保留最强语义响应 self.gap tf.keras.layers.GlobalAveragePooling2D() self.gmp tf.keras.layers.GlobalMaxPooling2D() self.fc1 tf.keras.layers.Dense(input_shape[-1] // self.reduction_ratio, activationrelu) self.fc2 tf.keras.layers.Dense(input_shape[-1], activationsigmoid) def call(self, inputs, levelp2): if level p2: x self.gap(inputs) # 强调平均响应差异 else: # p4 x self.gmp(inputs) # 保留最强激活 x self.fc1(x) x self.fc2(x) return inputs * tf.expand_dims(tf.expand_dims(x, 1), 1) # 广播乘参数说明level参数在build_fpn()中根据层级自动传入无需手动设置reduction_ratio16经消融实验确定——低于8时过拟合高于32时校准失效。4.2 ROI Align的梯度修正修复小目标mask的亚像素偏移标准ROI Align在反向传播时对采样点坐标的梯度计算存在量化误差。对于50像素的目标这会导致mask边缘系统性偏移1–2像素。项目在layers/roi_align.py中重写_roi_align_backward原始实现对采样点(x, y)求导时近似为最近邻插值本项目采用双线性插值的解析梯度即对x方向梯度 (I[x1,y]-I[x,y]) * (1-y_frac) (I[x1,y1]-I[x,y1]) * y_frac同时添加gradient_clip_norm0.5防止高梯度更新破坏已学习的晶界定位能力。4.3 Mask Head的损失函数重加权让模型“重视难分的矿物”原始Mask R-CNN对所有像素一视同仁但矿物分割中石英与长石交界处常见于花岗岩像素最难分但只占mask的5%大块云母内部像素易分却占mask的60%。项目在losses/mask_loss.py中实现GeologyWeightedBCEdef geology_weighted_bce(y_true, y_pred): # y_true shape: [batch, num_rois, mask_h, mask_w, 1] # 计算每个ROI的边界像素占比用Sobel算子 sobel_x tf.image.sobel_edges(y_true)[:, :, :, :, 0] boundary_ratio tf.reduce_mean(sobel_x, axis[2,3]) # [batch, num_rois] # 权重 边界占比 × 矿物稀有度系数石英1.0, 磁铁矿3.5 mineral_weights tf.constant([1.0, 1.2, 3.5, 0.8]) # 按class_id顺序 class_weights tf.gather(mineral_weights, y_true_class_ids) # y_true_class_ids需从输入获取 weight_map tf.expand_dims(tf.expand_dims( boundary_ratio * class_weights, -1), -1) # [batch, num_rois, 1, 1] bce tf.keras.losses.binary_crossentropy(y_true, y_pred) return tf.reduce_mean(bce * weight_map)关键点y_true_class_ids需在数据管道中与mask一同传入见dataset.py的parse_fn否则会报错权重系数3.5来自某实验室对磁铁矿标注一致性的统计三位专家标注IOU均值仅0.62。4.4 推理时的NMS后处理地质学要求的“非极大抑制”新定义标准NMS按IoU阈值如0.5剔除重叠框但矿物中同种矿物颗粒允许重叠如堆叠的云母片异种矿物交界处IoU天然高如石英包裹长石不应被抑制。项目在inference/postprocess.py中实现GeologyNMS输入所有检测框及其class_id步骤1同class_id框之间用IoU0.3过滤防重复计数步骤2异class_id框之间若IoU0.7且面积比3则保留两者视为共生关系步骤3对保留框用mask_iou而非bbox_iou二次排序优先保留mask覆盖更完整晶界的框。5. 避坑指南在真实矿物数据上踩过的五个血泪坑及解决方案5.1 现象训练Loss稳定下降但验证集mask IoU卡在0.45不上升原因数据增强中HorizontalFlip和VerticalFlip未同步翻转mask的RLE编码。项目初始版本直接调用cv2.flip处理mask图像但RLE编码需重新计算游程长度否则flip后mask与原图错位。解决在augmentation.py中改用mask_flip_rle(mask_rle, directionh)函数该函数解析RLE的counts数组对水平翻转将每个counts[i]映射到新位置counts总长度不变但顺序重排对垂直翻转需重新按行扫描生成RLE代码见utils/rle_utils.py。5.2 现象推理时GPU显存爆炸单张图占用12GB原因config.DETECTION_MAX_INSTANCES 100默认值过高。矿物图像中单图最多60个有效颗粒但模型仍为所有100个实例分配mask head输出缓冲区且FPN各层特征图未做动态裁剪。解决在config.py中设DETECTION_MAX_INSTANCES 64并在model/detection_layer.py的call()中添加# 动态截断仅对top_k个proposal计算mask top_k tf.minimum(config.DETECTION_MAX_INSTANCES, tf.shape(proposals)[0]) proposals proposals[:top_k] # 后续所有mask head操作仅作用于proposals[:top_k]5.3 现象某些矿物如绿泥石的mask边缘呈阶梯状锯齿原因mask_head最后的上采样层使用tf.keras.layers.UpSampling2D(size2, interpolationnearest)最近邻插值在亚像素级别产生块状伪影。解决替换为interpolationbilinear并在model/mask_head.py中增加SubpixelConv2D层代码见layers/subpixel.py将mask_head输出通道从256升至1024再用tf.nn.depth_to_space实现亚像素卷积实测使绿泥石边缘PSNR提升4.2dB。5.4 现象模型对“未见过的矿物类型”零召回但训练集未包含该类原因config.NUM_CLASSES硬编码为5石英/长石/云母/磁铁矿/背景当输入含黄铁矿图像时模型强制将其归为相似度最高的长石cosine相似度0.72而非输出“未知”。解决在inference/classify_unknown.py中实现开放集检测提取roi_featuresROI Align后7×7×256特征计算其与训练集各类原型向量类内特征均值的余弦距离若最大距离0.35则判定为已知类否则标记class_id0未知并保存特征向量供后续增量学习。5.5 现象多GPU训练时tf.distribute.MirroredStrategy下Loss值异常波动原因tf.keras.losses.BinaryCrossentropy(from_logitsFalse)在分布式模式下reductiontf.keras.losses.Reduction.AUTO会跨设备聚合时引入数值不稳定。解决显式指定reductiontf.keras.losses.Reduction.SUM_OVER_BATCH_SIZE并在model.compile()中设置loss_weights{rpn_class_loss: 1.0, rpn_bbox_loss: 1.0, mrcnn_class_loss: 1.0, mrcnn_bbox_loss: 1.0, mrcnn_mask_loss: 1.0}确保各loss项独立归一化。6. 验证与调优用三组定量指标锁定模型是否真正“懂矿物”6.1 不是看mAP而是看“地质学家认可度”指标mAP是计算机视觉指标但地质工作者只关心三件事颗粒计数准确率PCA预测颗粒数 vs 人工标注数误差±5%即不合格共生关系召回率SRR标注中“石英包裹磁铁矿”的实例模型是否同时检出两者且mask重叠IoU0.6晶界连续性得分BCS用Hough变换检测预测mask边缘的直线段数量与人工勾画边缘的直线段数比值理想值≥0.85。项目提供tools/validate_geology_metrics.py输入预测结果和GT输出三指标报告指标阈值本项目实测PCA±3%2.1%SRR≥0.70.73BCS≥0.850.87注意BCS计算需先对mask做Canny边缘检测再用cv2.HoughLinesP检测线段minLineLength参数设为15对应显微图像中5μm的晶界。6.2 可视化调试四步法定位具体哪类矿物出问题当SRR偏低时不要重训整个模型。按此流程快速定位筛选样本运行tools/filter_by_class.py --target_class magnetite --iou_threshold 0.3提取所有磁铁矿IoU0.3的预测样本分析失败模式用tools/analyze_failure.py统计失败样本的共性——本项目发现87%的失败案例中磁铁矿位于石英颗粒阴影区RGB均值40增强针对性在augmentation.py中新增shadow_compensation函数对RGB均值50的区域强制提升V通道值局部重训冻结backbone仅用失败样本微调mask head 200步train.py --fine_tune_layers mrcnn_mask。6.3 轻量化部署如何把1.2GB模型压到200MB以内地质实验室的边缘设备如便携式显微镜终端显存仅4GB。项目提供tools/export_tflite.py第一步用tf.keras.models.load_model()加载训练好的H5模型第二步应用tf.lite.TFLiteConverter.from_keras_model()设置optimizations[tf.lite.Optimize.DEFAULT]第三步关键在model.py中将mask_head的Conv2D层kernel_size从3改为1牺牲少量边缘精度减少72%参数第四步量化时指定representative_dataset为100张典型薄片图确保偏光色域不被截断。最终生成的TFLite模型大小198MB单图推理时间从1.8s降至0.32sTesla T4且BCS仅下降0.02。从那以后我每次接到新的岩矿图像任务第一件事就是跑一遍tools/validate_geology_metrics.py盯着PCA、SRR、BCS三个数字——它们比任何mAP都诚实。地质图像没有“差不多”要么晶界连续要么就是错的。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

AI写作去痕实战:从困惑度到完读率,让内容更像人写的

AI写作去痕实战:从困惑度到完读率,让内容更像人写的

1. 为什么AI初稿总有一股“塑料感”1.1 从“困惑度”和“突发性”两个指标说起很多人改AI稿子,改来改去还是被一眼识破,根本原因在于没搞懂检测工具到底在看什么。目前主流的文本鉴别方案,核心盯的是两个统计特征:困惑度和突发性。…

2026/10/14 5:35:15 阅读更多 →
Android Studio开发实战:从零基础到App上线的关键路径

Android Studio开发实战:从零基础到App上线的关键路径

简介:面向Android零基础学习者的实战开发指南,系统串起从环境搭建到App上线的完整路径。内容以Android Studio为核心,涵盖Java环境配置与SDK设置,并深入讲解UI布局(LinearLayout、RelativeLayout、ConstraintLayout&am…

2026/10/14 5:35:15 阅读更多 →
多智能体系统实战:从强化学习到LLM协作的架构与调优指南

多智能体系统实战:从强化学习到LLM协作的架构与调优指南

简介:《强化学习(多)智能体 和 大语言模型(多)智能体》PDF是一份聚焦强化学习智能体与大语言模型智能体两大主题的专题资料,适合算法工程师、科研人员、研究生以及关注Agent技术演进的学习者,帮…

2026/10/14 5:35:15 阅读更多 →

最新新闻

Hive文件存储格式深度解析:从TextFile到ORC的选型与优化

Hive文件存储格式深度解析:从TextFile到ORC的选型与优化

1. 为什么文件存储格式值得单独拎出来讲做数据仓库这行的人,绕不开Hive。而一旦你开始认真用Hive处理稍微上点规模的数据,迟早会撞上一个问题:同样的SQL,为什么别人跑几分钟,我跑半小时?排除掉数据倾斜、资…

2026/10/14 6:18:25 阅读更多 →
转行Web3的1个月冲刺:从传统开发到3个Offer的完整策略

转行Web3的1个月冲刺:从传统开发到3个Offer的完整策略

32岁转行Web3,用1个月拿到3个Offer——这句话刚说出来的时候,身边没几个人信。我也是把整个求职过程从头到尾复盘了一遍,才确定这不是段子,也不是小概率事件。它背后有一套可以复用的转行策略:先把自己的原有技能翻译成…

2026/10/14 6:18:25 阅读更多 →
32岁后端转行Web3:一个月拿下智能合约开发Offer的完整路径

32岁后端转行Web3:一个月拿下智能合约开发Offer的完整路径

我32岁转行Web3,用1个月时间拿到了3个Offer。这个标题听起来像“速成学渣翻身记”,但真相没有标题那么轻松。拿到第三个Offer的那个下午,我坐在茶餐厅里喝了一口冰水,心里没有狂喜,只有一种“总算没白熬夜”的释然。这…

2026/10/14 6:18:25 阅读更多 →
Istio流量治理实战:金丝雀发布与全链路熔断配置解析

Istio流量治理实战:金丝雀发布与全链路熔断配置解析

上个月帮一个电商团队处理线上故障,现象很有意思:网关层一切正常,入口的限流和超时配置都在正常工作,但订单服务的调用链还是被下游的商品库存服务拖垮了。根因很简单——服务A调用服务B,服务B响应变慢,服务…

2026/10/14 6:18:25 阅读更多 →
后端限流算法详解:从固定窗口到分布式全局限流实战

后端限流算法详解:从固定窗口到分布式全局限流实战

做后端这几年,几乎每个上点规模的项目都会碰到同一个问题:流量一上来,系统响应变慢,紧接着超时、重试、雪崩,最后整个服务被打挂。很多人第一反应是加机器,但机器堆得再多,也架不住突刺流量瞬间…

2026/10/14 6:18:25 阅读更多 →
C++23新特性全解析:从语言核心到标准库实战

C++23新特性全解析:从语言核心到标准库实战

说句实话,C23这批新特性刚进入交付讨论时,我并没有特别兴奋。毕竟C20才塞进了协程、模块、概念和范围库这四座大山,很多团队的代码还停驻在C17甚至C14,再往前赶似乎有些透支。但当我真正把C23草案和提案列表翻过一遍后&#xff0c…

2026/10/14 6:17:25 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 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/13 22:01:27 阅读更多 →
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/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练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/12 18:11:17 阅读更多 →