岩石裂缝与CT岩心语义分割Python实战:源码、数据集与避坑指南
简介基于Python的岩石裂缝与CT岩心裂缝语义分割项目面向需要完成毕业设计、期末大作业或课程设计的学生解决岩石与CT图像中裂缝像素级分割及标注数据预处理问题代码注释到位新手也能快速上手实践。压缩包共11个文件以Python脚本、JPG样例图像与Markdown说明为主整体仅1.13MB其中脚本负责训练与推理图像样本覆盖岩石、混凝土、CT岩心等场景及对应标签图另有数据增强和均值计算工具脚本辅助理解数据准备与训练流程。解压后按说明简单配置即可运行注释覆盖关键步骤可帮助初学者理解数据准备、模型训练与结果评估的完整流程适合答辩演示、课程展示或二次开发。该项目已有226人学习下载是导师认可的高分项目结构清晰、复用性强是课程设计与毕业作品的实用参考模板。1. 岩石裂缝与 CT 岩心语义分割这套 Python 源码与数据集能直接复现什么岩石裂缝与 CT 岩心裂缝的语义分割是岩土、地质方向做毕业设计时最高频的一类题目数据要自己找裂缝在图上又细又少模型稍不注意就学偏。这套基于 Python 的源码加数据集把这条链路里最耗时间的部分直接打包好了。压缩包里有 rock、concrete、CT 三类样本图和对应 GT 标注图还有两个数据增强脚本 amplifyData.py、amplifyData-16.py以及一个算数据集均值的 calc-mean.py。等于从数据准备到训练输入的前半程都铺好了你只需要把训练跑起来再按自己的数据做迁移。代码带注释README 里写清楚了每个文件的用途新手按顺序跑就能把增强、归一化、训练这套流程走通。这个完成度拿来交毕业设计、期末大作业或课程设计导师验收时很难挑出硬伤。下面我按实际拆包的顺序把文件关系、脚本逻辑和训练阶段的坑逐条拆开讲。2. 数据集与标签配对rock_gt、concrete_gt、CT_gt 的格式与对应关系2.1 文件清单三类样本图与标注图的对应关系先看压缩包根目录文件不多但每个都有明确用途文件 / 目录作用dataset-kit/训练素材目录图片和标签都在里面rock.jpg / rock_gt.jpg岩石表面裂缝样本图与对应标注图concrete.jpg / concrete_gt.jpg混凝土裂缝样本图与对应标注图CT.jpg / CT_gt.jpgCT 岩心切片图与对应标注图calc-mean.py统计数据集 RGB 均值的脚本amplifyData.py单组数据增强脚本图与标签联动变换amplifyData-16.py增强脚本的另一个版本偏批量与 16 倍增强README.md说明文档建议先读再动手命名规律一眼能看出来原图叫 rock.jpg标注图就叫 rock_gt.jpg_gt 是 ground truth 的缩写concrete 和 CT 同理。训练代码只需要在原图文件名上拼 _gt 后缀就能同时读入图和标签不用维护额外的映射表。这是裂缝分割数据集最常见的组织方式比 CSV 记录路径的方式省事也不容易漏配对。我拿到这种压缩包第一步从来不是急着跑训练而是先写一个检查脚本逐张确认原图和 _gt 图分辨率完全一致、都能正常读取。裂缝标注要求像素级对齐如果有一张图尺寸对不上DataLoader 直接报错还算小事怕的是错误被静默跳过模型在残缺数据上训练完指标虚高可视化一放大就露馅。import cv2 import os base dataset-kit # 按实际目录调整 for name in sorted(os.listdir(base)): if not name.endswith(.jpg) or _gt in name: continue img_path os.path.join(base, name) gt_path os.path.join(base, name.replace(.jpg, _gt.jpg)) img cv2.imread(img_path) gt cv2.imread(gt_path) if img is None or gt is None: print(f文件缺失或无法读取: {name}) continue print(f{name}: img {img.shape}, gt {gt.shape})这段逻辑很简单但换任何数据集都值得跑一遍。cv2.imread 读不出来会返回 None 而不是抛异常所以必须显式判断。gt 这里先用彩色模式读只是为了看形状真正进模型时要改成 IMREAD_GRAYSCALE 读成单通道。提示检查脚本跑完后顺手看一眼输出里有没有 img 和 gt 尺寸不一致的行。裂缝分割对像素对齐极度敏感这一点在后面的避坑章节会反复出现。2.2 裂缝标注的本质二值 mask 与类别不平衡这类裂缝 GT 图的本质是二值图裂缝像素是白色255背景是黑色0。语义分割任务里把它当两类问题处理裂缝是一类、背景是一类不需要做实例级标注也不需要区分裂缝的走向或宽度。模型的输出层只需要一个通道最后用 sigmoid 出概率。这里有个关键点容易被新手忽略裂缝像素占整张图的比例极低。岩石表面裂缝通常只占 2% 到 5%CT 岩心切片里的裂缝占比可能更低。这就是典型的类别不平衡问题如果直接用普通交叉熵模型很快就会学会「全预测背景」——因为那样 loss 已经很低了它根本没必要冒险去预测裂缝。理解了这一点再看这个资源里几个脚本的设计意图就很清晰增强脚本在扩大样本量的同时相当于把裂缝以不同角度和亮度反复暴露给模型calc-mean 在保证输入分布一致后面训练部分还要搭配 Dice 系数的损失函数。整条链路都是围绕「让少量裂缝像素被充分放大」这个目标转的。2.3 训练集与验证集的划分思路数据集体量不大划分方式要特别小心。我见过不少人先做数据增强、再划分训练验证集结果同一张原始图的 8 个增强变体一半进了训练集、一半进了验证集验证分数虚高得离谱换真实数据立刻打回原形。正确做法是先按原始样本划分再只对训练集做增强。比如手头原始样本 30 张按 8:2 随机分出 24 张训练、6 张验证然后只对这 24 张调用 amplifyData.py 做增强验证集保持原样。这样验证集全部来自训练没见过的原始样本IoU 和 Dice 才有参考价值导师问起来也讲得清楚。另一个细节是随机种子。每次跑都换一批验证集调参时对比的就不是同一个基准。我一般会在划分脚本里固定 random.seed(42) 和 numpy.random.seed(42)保证实验可复现。这个习惯在交毕业设计时尤其重要导师要复现实验结果对不上会非常被动。3. 均值计算与数据增强calc-mean.py 和 amplifyData.py 的运行顺序与参数先确认环境Python 3.8 以上装好 opencv-python 和 numpy 就能跑这两个脚本要训练模型再补 PyTorch。新手上路建议先装 CPU 版把流程跑通再用 GPU 训练代码层面的差异几乎为零只是速度快慢的问题。3.1 calc-mean.py为什么先算均值再进模型calc-mean.py 的功能从名字就能看出来统计整个数据集每个通道的像素均值。它的输出不是给人看的而是给训练和推理做归一化用的。PyTorch 里常见做法是先把图像缩放到 [0,1]再减均值、除标准差。如果训练和推理用的均值不一致相当于输入分布变了模型输出会忽高忽低。很多裂缝项目翻车就翻在这训练时用了通用 ImageNet 均值推理时换成自己数据集的均值同一张图预测两次结果差不少而且说不清哪个是对的。脚本逻辑参考这段import os import cv2 import numpy as np img_dir dataset-kit sums np.zeros(3, dtypenp.float64) pixels 0 for name in os.listdir(img_dir): if not name.endswith(.jpg) or _gt in name: continue img cv2.imread(os.path.join(img_dir, name)) img cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # BGR - RGB通道顺序对齐 sums img.reshape(-1, 3).sum(axis0) pixels img.shape[0] * img.shape[1] mean sums / pixels print(RGB mean:, np.round(mean, 4))两个细节值得说。cv2.imread 读进来是 BGR 顺序PyTorch 训练一般用 RGB必须先转换否则算出的均值通道错位模型学到的颜色语义是错的。累加用 float64样本量到几百张时 float32 累加会丢精度而裂缝图的暗像素特别多误差会被放大。跑完会得到类似 [0.4821, 0.4512, 0.4124] 的三通道均值保存下来。训练脚本、验证脚本、推理脚本必须用同一个值这是后面第 6 章批量推理的基准也是整个项目输入标准化的锚点。3.2 amplifyData.py旋转翻转的增强逻辑与标签联动amplifyData.py 解决的是数据集太小的问题。手工标注几十张裂缝图直接喂给 UNet几个 epoch 后就过拟合了验证集上 IoU 上不去。增强的核心原则是图像怎么变标签图就怎么变两者必须用同一套几何变换参数。常见实现里旋转 90/180/270 度加水平翻转、垂直翻转一张图能扩出 8 张。参考写法如下import cv2 import os def augment_one(img_path, gt_path, out_dir): img cv2.imread(img_path) gt cv2.imread(gt_path, cv2.IMREAD_GRAYSCALE) base os.path.splitext(os.path.basename(img_path))[0] rot_ops { rot90: cv2.ROTATE_90_CLOCKWISE, rot180: cv2.ROTATE_180, rot270: cv2.ROTATE_90_COUNTERCLOCKWISE, } for tag, code in rot_ops.items(): img_r cv2.rotate(img, code) gt_r cv2.rotate(gt, code) cv2.imwrite(f{out_dir}/{base}_{tag}.jpg, img_r) cv2.imwrite(f{out_dir}/{base}_{tag}_gt.jpg, gt_r) img_h cv2.flip(img, 1) # 1 水平翻转 gt_h cv2.flip(gt, 1) cv2.imwrite(f{out_dir}/{base}_hflip.jpg, img_h) cv2.imwrite(f{out_dir}/{base}_hflip_gt.jpg, gt_h)关键在两点。cv2.rotate 和 cv2.flip 在图像、标签上各调用一次参数完全相同保证变换同步输出文件名继续沿用 _gt 后缀约定训练代码的读取逻辑一行不用改。cv2.flip 的第二个参数0 是垂直翻转1 是水平翻转-1 是双向翻转。写错不会报错但标签和图像的关系就错了这种错非常隐蔽loss 正常下降预测出来却完全对不上原因。我会在增强脚本跑完后抽几张增强结果把图和标签叠加看一眼再继续。3.3 amplifyData-16.py批量版本与增强倍数的选择amplifyData-16.py 从命名习惯看应该是 16 倍增强版本在旋转翻转的基础上再加亮度、对比度、平移等扰动把一张原始图扩展到 16 张。拆包后建议两个脚本都打开对比一下看差异是增强变换列表更长还是循环逻辑不同这能帮你快速判断它的设计意图。如果确实加了亮度扰动注意只对图像做不要对标签做标签是二值图变了就失真。裂缝在暗光下的可见度差异很大模型见过多种亮度之后泛化会明显改善尤其适合岩石表面那种光照不均匀的样本。增强倍数不是越大越好。裂缝是细长结构过度的旋转翻转和亮度扰动容易让模型去记住纹理统计规律而不是裂缝本身。我一般控制在 8 到 16 倍再往上提升有限。如果增强后发现验证集上裂缝出现断裂先怀疑增强伪影而不是急着加深网络。整体运行顺序固定为先 calc-mean.py 算原始数据均值再 amplifyData.py 做增强最后把增强输出目录交给训练脚本。增强前后均值理论上接近但加了亮度扰动之后重新算一遍更稳妥。换成自己的数据集时把脚本里的路径改掉就能直接用这是这套资源迁移成本最低的部分。4. 裂缝语义分割常见问题与避坑五个真实踩坑记录这一章我把跑这套资源时最容易翻车的五个点按「现象 → 原因 → 解决」拆开讲这几个坑我在其他裂缝项目里也反复见到属于典型的高频事故现场。4.1 标签没跟着图像一起增强现象loss 正常下降训练很顺但预测出来的 mask 和原图对不上裂缝明显偏移或形状扭曲。原因增强脚本里图像做了旋转标签读取漏了 IMREAD_GRAYSCALE 参数读成三通道后变换逻辑分叉或者代码报错后有人直接把标签变换那行注释掉了图转了标签没转。解决标签读取强制用灰度模式并在增强后抽检把增强图和标签图叠加保存肉眼确认裂缝轮廓重合再进训练。参考vis cv2.addWeighted(img_r, 0.6, cv2.cvtColor(gt_r, cv2.COLOR_GRAY2BGR), 0.4, 0) cv2.imwrite(check_aug.jpg, vis)这一步 30 秒能省掉后面一整个星期的排错时间。我后来养成的习惯是每次增强脚本改完必查一次叠加图不改也定期抽查。4.2 JPEG 压缩伪影被学成裂缝现象验证集 IoU 不低但把预测结果放大看裂缝周围多出一圈细碎的白色噪点而且这些噪点在每张图上都规律地出现在物体边缘。原因示例图是 jpg 格式压缩时边缘会出现方块伪影裂缝的锐利边界恰恰是伪影最严重的位置。网络很容易把这种高频噪声当成裂缝特征学到的边界比真实裂缝宽一圈。解决训练前对输入图做一次轻微高斯模糊或者统一缩放到 512×512 以下来削弱伪影。注意不要用中值滤波它会把细小裂缝一起抹掉。这一步在数据加载函数里做就行不用改动保存的文件。4.3 灰度 CT 图被当成三通道导致均值错乱现象CT.jpg 训练效果明显比岩石图差loss 下降得慢而且学习率怎么调都救不回来。原因CT 岩心切片本质是灰度图很多读取脚本复制成三通道calc-mean 算出来的均值三个通道几乎相同和预训练权重假设的分布差很远等于喂错了分布给模型。解决CT 图单独算均值、单独归一化或者干脆降采样后当成单通道输入。我一般会把 CT 样本和 rock、concrete 样本分开建两个训练集各算各的均值、各训各的模型互不污染。如果硬要放一起训练至少要把归一化参数拆开。4.4 显存 OOM 与 batch size 的取舍现象训练一开始就报 CUDA out of memory或者跑几个 epoch 之后爆掉。原因裂缝图为了保留细节常用 512×512 输入UNet 浅层特征图通道数大显存占用比普通分类网络高一个量级直接照搬分类任务的 batch size 必然出事。解决先降 batch size 到 2 或 4还不行就缩输入到 256×256。裂缝分割对分辨率敏感但 256×256 足够把流程跑通确认代码没问题再逐步调大。每个 epoch 验证前加一句 torch.cuda.empty_cache()避免验证阶段显存碎片累积。4.5 指标高但可视化裂缝断裂现象Dice 到了 0.85 以上平均 IoU 也好看但单张图放大看裂缝被切成几段断的地方正好是最细的部分。原因预测输出是概率图用 0.5 阈值一刀切细裂缝处的概率值在 0.4 到 0.6 之间波动阈值稍高就断。这是裂缝分割的后处理问题不是模型结构问题改网络结构没用。解决预测后先做形态学闭运算补断口再做开运算清噪点。具体参数在第 6 章给这里先记住结论固定 0.5 阈值是最懒也最容易翻车的做法后处理至少要做一步闭运算。5. 训练参数与验证方法裂缝分割模型怎么调才不虚高5.1 模型选型为什么裂缝优先选 UNet 结构裂缝是细长结构边界信息比语义信息重要。UNet 的编码器逐层下采样提取语义解码器通过跳跃连接把各层的空间细节拼回来输出边缘比纯下采样网络锐利很多这是它长期霸榜裂缝分割的根本原因。DeepLabV3 这类空洞卷积模型在自然场景分割上很强但它高度依赖 ImageNet 预训练权重裂缝数据的分布和 ImageNet 差太远直接迁移效果往往不如从零训练的 UNet。百张级别的小数据集UNet 从零训练反而更可控显存占用也友好。做毕业设计的话建议先用 UNet 把 pipeline 跑通、拿到指标再换 DeepLabV3 做对比实验。论文里既能交代 baseline又有明确的改进点导师会认为你对模型选型有实际思考而不是随手抄了个网络。5.2 损失函数Dice Loss 与 BCE 的组合裂缝像素占比低单用 BCE 会让模型倾向全预测背景。Dice Loss 直接优化目标区域的交并比对类别不平衡天然不敏感。常见组合是 BCE 和 Dice 各占一半def dice_loss(pred, gt, eps1e-6): pred torch.sigmoid(pred) # logit - 概率 inter (pred * gt).sum(dim(1, 2, 3)) union pred.sum(dim(1, 2, 3)) gt.sum(dim(1, 2, 3)) dice (2 * inter eps) / (union eps) return 1 - dice.mean() loss 0.5 * torch.nn.functional.binary_cross_entropy(pred.sigmoid(), gt) \ 0.5 * dice_loss(pred, gt)两个容易错的位置pred 是 logit进 dice_loss 前先过 sigmoidgt 必须是 0/1 的 float 张量如果标注读进来是 0/255记得先除 255。把 255 直接喂进去dice 的分子分母都会膨胀loss 直接变 NaN训练白跑。顺便说一句dice_loss 里那个 eps 不能省。裂缝区域太小遇到某张图完全没有裂缝的极端情况交并集都可能为 0不加 eps 会出现除零数值计算上就是玄学问题加了就稳。5.3 训练超参数与评估指标直接抄这个初始参数表跑通后再微调参数推荐值说明输入分辨率256×256 或 512×512先小后大确认问题再提分辨率batch size48显存优先OOM 就减半优化器Adamlr 1e-4 起步学习率策略ReduceLROnPlateau验证 loss 不降时减半epoch50100配 early stopping防过拟合预测阈值0.5后处理里再按效果微调评估指标用 IoU 和 Dice不要只看 pixel accuracy。裂缝占比 2% 时全预测背景的准确率也有 98%数字漂亮但模型什么都没学到。交实验报告时只贴准确率导师基本一眼就能看出水分。def calc_iou(pred, gt, eps1e-6): pred (pred 0.5).astype(np.uint8) gt (gt 0.5).astype(np.uint8) inter np.logical_and(pred, gt).sum() union np.logical_or(pred, gt).sum() return (inter eps) / (union eps)训练完把每张验证图的 IoU 单独打印看看是不是固定某几张特别低。如果是先查那几张图的标注有没有漏标、和训练样本的形态差异是不是太大再决定调参还是补数据顺序不能反。调参解决不了数据问题这个优先级搞错了会浪费大量时间。6. 进阶用法批量推理时把 calc-mean 和形态学后处理组合起来训练完成后批量推理最容易翻车的就是归一化参数不一致。我现在会把 calc-mean.py 的输出固定到一个 JSON 文件推理脚本启动时读进来保证训练、验证、推理三段用同一个均值彻底杜绝「训练一个均值、推理一个均值」的隐性问题。6.1 推理脚本的输入标准化把均值保存下来的方式很随意重定向输出即可python calc-mean.py mean.json推理时对每张图转 RGB、缩放到 [0,1]、减均值送入模型得到概率图。注意减均值前图像的缩放范围要和训练时完全一致这是最容易被忽略的一环。很多人只记得减均值忘了前面的除法预测效果差但又找不到原因。6.2 形态学后处理把断裂裂缝接回来后处理我固定用两步kernel cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (3, 3)) mask cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel, iterations1) # 先补断口 mask cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel, iterations1) # 再清噪点闭运算在前把细裂缝的断口接上开运算在后清掉孤立白点。kernel 别超过 3×3裂缝往往只有一到两个像素宽kernel 大了会把真裂缝一起吞掉。之后再用连通域统计把面积小于阈值的碎块直接丢弃n, labels, stats, _ cv2.connectedComponentsWithStats(mask.astype(np.uint8)) for i in range(1, n): if stats[i, cv2.CC_STAT_AREA] 20: mask[labels i] 0面积阈值 20 是按像素算的图分辨率变了要重新调。这个后处理组合做完可视化效果通常能明显上一个台阶断裂的裂缝接回来误检的噪点被清掉交上去的分割结果图干净很多。从那以后我每次做完裂缝分割项目都会强制走一遍「算均值 → 增强 → 训练 → 同一均值推理 → 形态学后处理」的闭环后处理参数单独记录不再拍脑袋调。这套资源能不能出好的可视化结果往往不在网络结构而在这些管线细节。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

DMA总读旧数据?多半是Cache一致性惹的祸:三招排查与解决

DMA总读旧数据?多半是Cache一致性惹的祸:三招排查与解决

先讲个我踩过的坑。有一回调某个采集项目里的DMA搬运,数据源是外设通过DMA直接写入内存,CPU这边负责把结果取出来做处理。启动之后,我反复读同一个缓冲区,读出来的内容永远是上一轮的旧值。新数据明明已经由DMA搬到物理内存了&…

2026/10/14 14:38:18 阅读更多 →
如何生产级部署Jonex:GPU加速、HTTPS接入与安全加固检查清单(附常见故障排查)

如何生产级部署Jonex:GPU加速、HTTPS接入与安全加固检查清单(附常见故障排查)

【免费下载链接】jonex All-in-One Multimodal Parsing Engine Ontology-Powered, LLM Wiki-Driven AI-Ready Knowledge Engine 项目地址: https://gitcode.com/gh_mirrors/jo/jonex 点击查看 免费下载 Jonex 是一个一站式多模态解析引擎 本体驱动的 AI 知识引擎…

2026/10/13 13:08:18 阅读更多 →
采购智能体落地实战:从AI辅助到人机协同的完整指南

采购智能体落地实战:从AI辅助到人机协同的完整指南

采购行业这两年最热的一个词,就是“智能体”。但说实话,我见过不少企业的采购数字化项目,所谓的智能体落地以后,本质上还停留在“AI辅助功能”的阶段:系统帮你填个表单、识别一张发票、推荐一个供应商,然后…

2026/10/13 12:56:11 阅读更多 →

最新新闻

Pandas线性插值实战:空气质量数据异常值与缺失值处理

Pandas线性插值实战:空气质量数据异常值与缺失值处理

这段时间帮某个环境监测项目处理城市空气质量数据,遇到最多的不是模型效果差,而是数据本身的问题。一套PM2.5、PM10、NO2、SO2浓度数据拿过来,缺失值、异常值、重复记录混在一起,直接建模结果根本没法看。把这些数据清洗干净&…

2026/10/14 14:37:53 阅读更多 →
Res2dmod二维正演原理与地形建模实战指南

Res2dmod二维正演原理与地形建模实战指南

简介:本资源为地球物理勘探领域专业正演软件Res2dmod的完整安装包,面向地质勘查、矿产与石油勘探、环境及工程地质等方向的科研人员与高年级本科生/研究生,用于开展二维高密度电法正演模拟与反演建模。包内共5个文件:setup.exe与s…

2026/10/14 14:37:53 阅读更多 →
Feature-level SMOTE:破解PHM故障诊断中的类别不平衡难题

Feature-level SMOTE:破解PHM故障诊断中的类别不平衡难题

1. 从一次翻车的轴承故障诊断说起去年帮一个做风电齿轮箱状态监测的团队调模型,他们手里有三年多的振动数据,正常样本几十万条,早期微弱故障样本满打满算不到三百条。当时用常规的SMOTE在原始时序上做增强,训练集AUC能刷到0.98&am…

2026/10/14 14:37:53 阅读更多 →
Python第4周循环与列表常见错误深度复盘

Python第4周循环与列表常见错误深度复盘

1. 这不是一份普通作业复盘,而是一份“Python语法肌肉记忆”养成指南你打开浏览器,输入“Python语言程序设计第4周测验练习题复盘”,页面跳出的多半是零散的答案截图、几道题的简短解析,或者某个学生在论坛里发的“求大佬帮看第3题…

2026/10/14 14:37:53 阅读更多 →
博弈论:从棋局到现实决策的策略思维工具

博弈论:从棋局到现实决策的策略思维工具

我最早在书架上看《博弈论》这类书时,第一反应是:这是教人下棋打牌的书吗?“博弈”两个字听起来就像棋盘上的事,翻了几页才发现完全跑偏了。它不是教你怎么下棋,而是在回答一个更底层的问题:当我的决定会影…

2026/10/14 14:37:53 阅读更多 →
WSL2 GPU直通实战:在Windows上搭建深度学习与大模型微调环境

WSL2 GPU直通实战:在Windows上搭建深度学习与大模型微调环境

做 AI 开发,环境折腾永远是逃不掉的课题。以前我在 Windows 上跑深度学习,常用方案各有各的别扭:双系统切换要重启,传统虚拟机里 GPU 基本是摆设,Docker Desktop 又总在资源隔离上出问题。后来把 WSL2 这套组合拳打顺了…

2026/10/14 14:36:51 阅读更多 →

日新闻

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/14 7:53:34 阅读更多 →