颈椎CT骨骼分割数据集实战:三轴2D切片与可视化代码解析
简介本资源面向医学图像分割方向的算法工程师、研究生及深度学习爱好者提供一套完整的人体颈椎CT骨骼分割数据集可用于训练与验证2D分割模型也适合作为医学影像入门练手项目。数据按横断面、冠状面、矢状面三个方向切分x轴为512×512分辨率共3734张图像及对应masky轴为512×196分辨率共4252张z轴为512×196分辨率共2426张mask灰度值取0、1、2图像与标签均为png格式并附show.py可视化脚本便于快速查看标注效果。压缩包为7z格式共约2000个文件其中1998个png图像与掩膜、1个txt说明、1个py脚本整体约348.63MB目录按切面方向组织清晰。目前已有212人学习下载配套博文还整理了医学图像分割与分割任务的系列参考内容便于读者对照理解数据组织方式与训练思路。1. 颈椎CT骨骼分割数据集三轴2D切片与可视化代码拿到手怎么跑做医学图像分割的同行大概都有过这种体验算法论文里的 Dice 刷到 0.9一换到自己的颈椎 CT 数据就翻车mask 边缘糊成一团椎体之间粘连分不开。问题往往不在模型而在数据——颈椎结构细长、椎体间距小、骨组织与周围软组织灰度接近随便找个通用分割数据集练手迁移过来基本没法用。这次拆的是一份专门针对颈椎 CT 骨骼分割的三轴 2D 切片数据集包含横断面、冠状面、矢状面三个方向的切面图像和对应 maskmask 灰度值为 0/1/2 的阈值图还附带一个 show.py 可视化脚本。适合正在做脊柱分割、骨科术前规划、CT 骨骼三维重建的从业者也适合想拿真实医学数据练 2D 分割模型的新手。下面按「数据长什么样 → 怎么读怎么可视化 → 怎么接进训练流程 → 坑在哪」的顺序拆一遍。2. 三轴切片的组织方式与 mask 编码逻辑2.1 x/y/z 三轴切片的尺寸与数量差异这份数据按解剖学三个正交方向切分每个方向的图像数量和分辨率都不一样这不是随便定的而是由颈椎的几何形状决定的。切面方向分辨率图像数量mask 数量对应解剖视角x 轴512×51237343734横断面轴位y 轴512×19642524252冠状面z 轴512×19624262426矢状面x 轴切面是 512×512 的正方形因为横断面在人体中本身就是左右对称的宽幅视野颈椎位于图像中央周围有气管、食管、血管等结构。y 轴和 z 轴都是 512×196 的长条形这是因为冠状面和矢状面在前后方向上只需要覆盖颈椎及其邻近区域196 像素的高度刚好够用再大就是浪费显存。图像和 mask 一一对应命名规则一致比如HN_P004_265.png对应的 mask 就是同名文件放在 mask 目录下。这种命名方式的好处是写 DataLoader 时直接按文件名配对不需要额外维护映射表。注意三个轴的切片数量不同说明原始 3D 体数据在不同方向上的层厚和覆盖范围有差异。x 轴切片最多3734 张意味着横断面方向的层间距最密做 2D 训练时这个方向的样本量最大。2.2 mask 灰度值 0/1/2 的语义与阈值图含义mask 不是常见的二值图0/255而是 0、1、2 三个灰度值的阈值图。这个设计在颈椎分割里很关键灰度值 0背景包括软组织、空气、非骨骼区域灰度值 1颈椎骨骼区域椎体、椎弓、棘突等骨性结构灰度值 2通常用于标记相邻椎体之间的分界或特定解剖标志为什么不用 0/255 二值因为颈椎是多节段结构C1 到 C7 共 7 节椎体如果只做前景/背景二分类模型学不到椎体之间的边界后处理时无法把粘连的椎体分开。用 0/1/2 三值编码相当于在像素级别保留了「这是骨骼」和「这是哪一节骨骼的分界」两层信息。实际训练时怎么处理这个三值 mask常见做法有两种import numpy as np from PIL import Image # 读取 mask mask np.array(Image.open(mask/HN_P004_265.png)) # 方案一转为二值分割骨骼 vs 背景 binary_mask (mask 0).astype(np.uint8) # 0 背景1 骨骼 # 方案二保留三值做多分类 # 类别 0背景1骨骼2分界 multi_mask mask.copy() # 直接使用原始 0/1/2 # 查看每个类别的像素占比 for cls in [0, 1, 2]: ratio (mask cls).sum() / mask.size print(f类别 {cls} 占比: {ratio:.4f})这段代码的逻辑说明mask 0把所有非背景像素归为骨骼适合做二分类分割任务如果要做多分类直接保留原始灰度值即可。参数上需要注意的是PIL 读取 PNG 时默认是 8 位灰度值域 0-255但这份数据的 mask 实际只用了 0、1、2 三个值所以读进来后最大值就是 2不需要做归一化。如果发现读进来的 mask 最大值是 255说明文件被重新编码过需要用mask mask // 127之类的操作还原。提示先跑一遍上面的像素占比统计如果某个切面的类别 1 占比低于 1%说明这个切面几乎不含骨骼训练时可以考虑过滤掉避免正负样本极度不平衡。3. 可视化代码 show.py 的拆解与改造3.1 show.py 的核心逻辑与运行方式数据集附带的 show.py 是用来快速查看图像和 mask 叠加效果的。虽然只有几十行但它是验证数据配对是否正确、mask 是否对齐的第一道关卡。常见实现逻辑如下import os import numpy as np from PIL import Image import matplotlib.pyplot as plt def show_overlay(img_path, mask_path, alpha0.5): 叠加显示 CT 图像和分割 mask img_path: CT 图像路径 mask_path: mask 路径 alpha: mask 透明度 img np.array(Image.open(img_path).convert(L)) mask np.array(Image.open(mask_path)) # 创建彩色 mask骨骼为红色分界为绿色 color_mask np.zeros((*mask.shape, 3), dtypenp.uint8) color_mask[mask 1] [255, 0, 0] # 骨骼 → 红 color_mask[mask 2] [0, 255, 0] # 分界 → 绿 # 叠加 plt.figure(figsize(10, 5)) plt.subplot(1, 3, 1) plt.imshow(img, cmapgray) plt.title(CT Image) plt.axis(off) plt.subplot(1, 3, 2) plt.imshow(mask, cmapjet) plt.title(Mask) plt.axis(off) plt.subplot(1, 3, 3) plt.imshow(img, cmapgray) plt.imshow(color_mask, alphaalpha) plt.title(Overlay) plt.axis(off) plt.tight_layout() plt.show() # 使用示例 show_overlay(image/HN_P004_265.png, mask/HN_P004_265.png)逻辑说明先分别读取 CT 和 mask然后把 mask 的 0/1/2 映射成彩色红骨骼绿分界最后用 matplotlib 的 alpha 混合叠加在原图上。参数alpha控制 mask 的透明度默认 0.5 能同时看清骨骼轮廓和原始灰度。如果叠加后发现 mask 和图像有明显偏移说明数据配对有问题需要检查文件名是否一一对应。3.2 批量可视化与三轴对比的改造单张查看效率太低实际调试时我一般会改成批量采样 三轴对比。下面这个脚本从 x、y、z 三个方向各随机抽 3 张拼成 3×3 网格import random import glob def batch_show(data_root, n3): 从三个轴各随机抽 n 张做叠加对比 data_root: 数据根目录下含 x/y/z 三个子目录 fig, axes plt.subplots(3, n, figsize(4*n, 12)) for row, axis in enumerate([x, y, z]): img_dir os.path.join(data_root, axis, image) mask_dir os.path.join(data_root, axis, mask) files glob.glob(os.path.join(img_dir, *.png)) samples random.sample(files, min(n, len(files))) for col, img_path in enumerate(samples): fname os.path.basename(img_path) mask_path os.path.join(mask_dir, fname) img np.array(Image.open(img_path).convert(L)) mask np.array(Image.open(mask_path)) color_mask np.zeros((*mask.shape, 3), dtypenp.uint8) color_mask[mask 1] [255, 0, 0] color_mask[mask 2] [0, 255, 0] axes[row][col].imshow(img, cmapgray) axes[row][col].imshow(color_mask, alpha0.4) axes[row][col].set_title(f{axis}: {fname}) axes[row][col].axis(off) plt.tight_layout() plt.savefig(batch_check.png, dpi150) print(已保存 batch_check.png) batch_show(./data, n3)参数说明data_root是数据根目录下面按 x/y/z 分三个子目录每个子目录里再分 image 和 mask。n控制每个轴抽几张。保存成图片而不是直接 show是为了在远程服务器上跑的时候能下载下来看。这个脚本跑一遍基本能确认三件事图像和 mask 是否对齐、mask 的 0/1/2 编码是否正确、三个轴的解剖视角是否符合预期。4. 接进 2D 分割训练流程从 DataLoader 到增强策略4.1 自定义 Dataset 与文件名配对这份数据的目录结构如果是x/image/、x/mask/、y/image/、y/mask/这样组织的写 PyTorch Dataset 时核心就是按文件名配对。下面是一个可直接用的模板import torch from torch.utils.data import Dataset, DataLoader import torchvision.transforms as T import os from PIL import Image import numpy as np class CervicalCTDataset(Dataset): def __init__(self, img_dir, mask_dir, transformNone, target_transformNone): self.img_dir img_dir self.mask_dir mask_dir self.transform transform self.target_transform target_transform # 按文件名排序确保 image 和 mask 一一对应 self.filenames sorted([ f for f in os.listdir(img_dir) if f.endswith(.png) ]) def __len__(self): return len(self.filenames) def __getitem__(self, idx): fname self.filenames[idx] img_path os.path.join(self.img_dir, fname) mask_path os.path.join(self.mask_dir, fname) img Image.open(img_path).convert(L) # 灰度图 mask Image.open(mask_path) # 0/1/2 阈值图 img np.array(img, dtypenp.float32) / 255.0 # 归一化到 [0,1] mask np.array(mask, dtypenp.int64) # 保持整数类别 if self.transform: img self.transform(img) if self.target_transform: mask self.target_transform(mask) return img, mask # 使用 train_dataset CervicalCTDataset( img_dir./data/x/image, mask_dir./data/x/mask, transformT.Compose([ T.ToTensor(), # 转为 [C,H,W]值域 [0,1] ]), target_transformT.Lambda(lambda x: torch.from_numpy(x).long()) ) train_loader DataLoader(train_dataset, batch_size8, shuffleTrue, num_workers4)逻辑说明filenames排序后按索引取保证 image 和 mask 严格配对。图像归一化到 [0,1] 是标准操作mask 保持整数是因为后面用 CrossEntropyLoss 做多分类。参数上batch_size设 8 是因为 512×512 的图在 8GB 显存上跑 U-Net 差不多刚好如果显存小就降到 4。num_workers设 4 是经验值太多反而会因为 IO 竞争变慢。4.2 医学图像增强的边界与参数选择医学图像增强和自然图像不一样不能随便翻转旋转。颈椎有明确的左右对称性和上下连续性增强策略要尊重解剖约束# 适合颈椎 CT 的增强组合 train_transform T.Compose([ T.ToTensor(), T.RandomHorizontalFlip(p0.5), # 左右翻转颈椎左右对称安全 T.RandomAffine( degrees10, # 旋转 ±10°再大椎体方向就变了 translate(0.05, 0.05), # 平移 5%模拟定位偏差 scale(0.95, 1.05), # 缩放 5%模拟不同层厚 ), T.RandomAdjustSharpness(sharpness_factor2, p0.3), # 锐化模拟低剂量CT的噪声 ])参数说明RandomHorizontalFlip对横断面和冠状面是安全的因为人体左右对称但矢状面翻转要谨慎因为矢状面有前后方向的不对称性。RandomAffine的degrees不要超过 15°颈椎椎体排列紧密旋转太大会导致椎体间相对位置失真。RandomAdjustSharpness是模拟低剂量 CT 图像噪声的常用手段低剂量 CT 在临床上越来越普遍模型需要对这种噪声有鲁棒性。注意不要用 RandomVerticalFlip上下翻转颈椎的上下方向有明确的解剖顺序C1 在上C7 在下翻转后语义完全变了。也不要用力过猛的弹性形变椎体是硬组织形变不符合物理规律。5. 避坑与排查这份数据最容易翻车的五个地方5.1 mask 读进来全是 0 或全是 255现象用 PIL 或 OpenCV 读 mask发现像素值只有 0 和 255没有 1 和 2。原因PNG 保存时被某些工具重新量化了或者读取时用了convert(L)之外的模式导致值域被拉伸。解决先打印np.unique(mask)看实际值。如果是 0/255用mask (mask 0).astype(np.uint8)还原成 0/1如果原始就是 0/1/2确保读取时不经过任何归一化。OpenCV 的cv2.imread(path, cv2.IMREAD_GRAYSCALE)默认保持原始值比 PIL 更稳妥。5.2 三个轴的切片数量对不上怀疑数据缺失现象x 轴 3734 张y 轴 4252 张z 轴 2426 张数量差异很大担心是不是漏了文件。原因这不是数据缺失而是原始 3D 体数据在不同方向上的层厚和覆盖范围不同。x 轴横断面层间距最密所以切片最多z 轴矢状面层间距最疏切片最少。解决不需要补齐。训练时按轴分别建 Dataset或者把三个轴的数据混合成一个大数据集让模型同时学到三个视角的特征。如果要做 3D 重建需要根据原始体数据的 spacing 信息做插值这份 2D 数据本身不包含 spacing 元信息。5.3 训练时 loss 不下降Dice 一直在 0.3 左右现象模型训练几个 epoch 后loss 震荡不降验证集 Dice 卡在 0.3。原因最常见的是类别不平衡——骨骼像素占比可能只有 5% 不到背景占 95%模型学会了全预测背景也能拿到 95% 的像素准确率但 Dice 很低。解决换损失函数。把 CrossEntropyLoss 换成 DiceLoss 或 Combined LossCE Dice。如果做二分类用BCEWithLogitsLoss(pos_weighttorch.tensor([10.0]))给正样本加权。另外检查一下 mask 的 0/1/2 编码是否被正确转成了训练用的类别数如果模型输出 2 类但 mask 有 3 个值会直接报错或静默出错。5.4 可视化时 mask 和图像错位现象show.py 叠加显示时mask 的骨骼轮廓和 CT 上的骨骼对不上偏移几个像素。原因图像和 mask 在预处理时用了不同的 resize 或 crop 参数或者文件名配对时用了不稳定的排序比如os.listdir的顺序在不同系统上不一致。解决确保 image 和 mask 用完全相同的预处理流水线。文件名配对用sorted()固定顺序。如果做了 resizeimage 用双线性插值mask 必须用最近邻插值Image.NEAREST否则 mask 的类别值会被插值成小数破坏 0/1/2 编码。5.5 显存不够512×512 的图 batch_size 只能设 2现象8GB 显存跑 U-Netbatch_size 设 4 就 OOM。原因512×512 的输入在 U-Net 的浅层特征图很大显存占用主要来自激活值。解决三个方向。一是用混合精度训练torch.cuda.amp显存直接省 40% 左右二是把输入 crop 成 384×384 或 256×256颈椎区域通常在图像中央crop 掉边缘不影响分割三是用梯度累积batch_size 设 2累积 4 步等效于 batch_size 8。我一般优先上混合精度改动最小效果最明显。6. 进阶技巧用三轴数据做交叉验证与模型集成这份数据最大的价值在于三个轴的切片可以互相做交叉验证。同一个颈椎在横断面上分割好了投影到冠状面和矢状面应该是一致的。利用这个约束可以做两件进阶的事。第一件是三轴一致性校验。训练一个 2D 分割模型后把同一个病例的 x、y、z 三个轴的预测结果做 3D 重建检查三个方向的预测是否在空间上对齐。如果横断面预测的椎体边界和矢状面预测的对不上说明模型在某些视角上过拟合了。具体做法是把三个轴的预测 mask 按原始空间坐标映射回 3D 体数据然后计算三个方向投影的一致性指标。第二件是多视角模型集成。分别用 x、y、z 三个轴的数据训练三个独立的 2D 分割模型推理时对同一个 3D 体数据从三个方向分别预测再把三个预测结果做投票或平均。常见做法是# 伪代码三轴集成推理 pred_x model_x(img_x) # 横断面预测 pred_y model_y(img_y) # 冠状面预测 pred_z model_z(img_z) # 矢状面预测 # 把三个预测映射回 3D 空间 vol_x project_to_3d(pred_x, axisx) vol_y project_to_3d(pred_y, axisy) vol_z project_to_3d(pred_z, axisz) # 投票集成 final_vol (vol_x vol_y vol_z) / 3 final_mask (final_vol 0.5).astype(np.uint8)这个思路在医学图像分割比赛里很常见单视角模型的 Dice 可能只有 0.85三视角集成后能到 0.90 以上。代价是推理时间翻三倍但颈椎分割对实时性要求不高术前规划场景下完全可以接受。还有一个细节三个轴的图像分辨率不同x 轴 512×512y/z 轴 512×196训练时如果混在一起要么统一 resize 到相同尺寸要么分别用不同的输入尺寸。我一般会分别训练因为 resize 会引入额外的插值误差而颈椎的精细结构对插值很敏感。从那以后我每次拿到新的医学分割数据都强制先跑一遍np.unique(mask)和批量可视化确认 mask 编码和图像对齐没问题再写训练代码。这个习惯帮我省了至少两次通宵排查数据 bug 的时间。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

基于Web的教师调停课系统:双部门审核与SQL Server建表实战

基于Web的教师调停课系统:双部门审核与SQL Server建表实战

简介:这份毕业设计文档面向高校计算机相关专业学生与教学管理人员,围绕基于Web的教师调停课系统展开管理分析与设计,帮助读者理解如何用信息化手段替代传统人工调课流程,解决审批环节繁琐、信息传递滞后与调课冲突等问题。资源包内…

2026/10/11 20:33:20 阅读更多 →
C++模板进阶:非类型参数与分离编译的底层机制

C++模板进阶:非类型参数与分离编译的底层机制

C 的模板是典型的“入门容易进阶难”。入门阶段&#xff0c;你知道了template <typename T>可以把类型变成参数&#xff0c;于是写一个泛型栈、泛型排序&#xff0c;觉得自己已经会了。但只要一碰真实项目里的模板代码&#xff0c;遇到undefined reference、遇到几百行看…

2026/10/11 20:32:19 阅读更多 →
C++飞机大战源码解析:Qt框架下的游戏开发实战

C++飞机大战源码解析:Qt框架下的游戏开发实战

简介&#xff1a;这是一份用C编写的飞机大战游戏完整源码&#xff0c;面向正在学习C、希望借助小游戏项目巩固面向对象编程与图形渲染的初学者和进阶者。压缩包共55个文件&#xff0c;约2.45MB&#xff0c;包含13个cpp与13个h源文件、13个mp3音效、6个png图片及psd切图、ui界面…

2026/10/11 20:32:19 阅读更多 →

最新新闻

新浪Level2接口SDK接入实战:授权、协议解析与避坑指南

新浪Level2接口SDK接入实战:授权、协议解析与避坑指南

简介&#xff1a;新浪Level2接口SDK是一份面向量化开发与行情分析人员的Java工程&#xff0c;用于对接新浪Level2全推行情&#xff0c;获取股票、基金等品种的深度交易数据。相比普通免费接口&#xff0c;Level2数据在速度与深度上更适合机构级策略&#xff0c;适合有一定Java基…

2026/10/11 22:50:35 阅读更多 →
一个 Key 调用所有模型:2026 四大聚合平台价格、生态与稳定性横评

一个 Key 调用所有模型:2026 四大聚合平台价格、生态与稳定性横评

大模型 API 聚合平台的核心价值一句话就能说清&#xff1a;一个 Key 接入多家大模型&#xff0c;统一计费与访问管理&#xff0c;把供应商切换成本降到最低。市面上的主流玩家分三类——国际商业聚合、国内商业聚合、自托管开源方案&#xff0c;路线不同&#xff0c;取舍也不同…

2026/10/11 22:50:35 阅读更多 →
HOP上游升级SOP:pnpm upstream:update一键同步rhwp并全链路验证的完整流程

HOP上游升级SOP:pnpm upstream:update一键同步rhwp并全链路验证的完整流程

【免费下载链接】hop 项目地址&#xff1a; https://gitcode.com/gh_mirrors/hop22/hop 点击查看 免费下载 HOP 是一款开源的 HWP/HWPX 文档编辑器&#xff0c;桌面外壳由 HOP 团队维护&#xff0c;而文档解析与渲染引擎来自上游项目 rhwp。如何安全地跟随上游版本前进&#x…

2026/10/11 22:50:35 阅读更多 →
Android游戏逆向重构实战:从植物大战僵尸源码2到可运行工程

Android游戏逆向重构实战:从植物大战僵尸源码2到可运行工程

简介&#xff1a;本资源为《植物大战僵尸》Android平台开源实现的完整工程源码&#xff0c;面向Android游戏开发初学者与进阶者&#xff0c;聚焦塔防类游戏架构设计、图形渲染与状态管理等核心实践。压缩包共173个文件&#xff0c;含20个Java源文件&#xff08;涵盖GameScene、…

2026/10/11 22:50:35 阅读更多 →
基于线性回归的PM2.5预测系统Python源码实战解析

基于线性回归的PM2.5预测系统Python源码实战解析

简介&#xff1a;基于线性回归的PM2.5预测系统源码&#xff0c;是一套面向Python学习者、机器学习入门者及大气环境数据分析场景的小型完整项目。代码以单文件Python脚本承载数据读取、特征构造、模型训练与结果预测等关键流程&#xff0c;配套原始训练/测试CSV表、处理后的特征…

2026/10/11 22:50:35 阅读更多 →
PgQue 监控实战:5 个必须告警的队列健康指标 + 如何揪出卡住的消费者

PgQue 监控实战:5 个必须告警的队列健康指标 + 如何揪出卡住的消费者

【免费下载链接】PgQue PgQue – Zero-bloat Postgres queue built on top of on battle-proven Skypes PgQ. One SQL file to install, pg_cron to tick https://pgque.dev 项目地址&#xff1a; https://gitcode.com/gh_mirrors/pg/PgQue 点击查看 免费下载 PgQue 是一个零膨…

2026/10/11 22:49:35 阅读更多 →

日新闻

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

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

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

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

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

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

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

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

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

2026/10/11 0:00:27 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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