乳腺癌YOLO医学影像数据集训练避坑:从数据校验到滑窗推理
简介这是一份面向乳腺癌医学影像AI检测场景的目标检测数据集适用于医疗影像研究人员、算法工程师及医学教学人员可支撑乳腺X光、超声等设备AI辅助诊断模块开发以及癌症早期检测算法的科研与教学。压缩包共2000个文件以YOLO格式txt标注文件、医学影像jpg图像为主另有yaml模型配置和docx说明文档整体57.65MB结构清晰。已有236人学习/下载适合需要高质量乳腺影像数据支持论文实验或产品原型验证的开发者。数据包含1053张训练图与263张验证图覆盖不同形态恶性病变组织标注由医学团队完成所有图片均配有对应YOLO边界框标注可直接导入YOLOv5/v7/v8等主流框架也可拓展用于癌变区域关注度分析等衍生任务为构建实用化乳腺癌自动检测模型、辅助医生快速定位可疑病灶提供扎实的数据基础。1. 乳腺癌医学影像检测数据集1316张图能直接开训但先搞清楚三件事乳腺癌医学影像检测数据集1316张专业医学影像训练集1053张、验证集263张全部带YOLO格式边界框标注类别只有一个Breast Cancer。这是那种解压后就能扔进YOLOv5/v7/v8甚至v12训练管线的目标检测数据集适合医学影像AI诊断系统开发、智能医疗设备辅助模块以及癌症检测方向的课题和论文。不过这类“平台导出的标注数据集”我拆过不少下载它只是第一步真正的坑在解压后标签文件语义是什么、坐标是否干净、train/val划分会不会泄漏。这三件事不搞清楚就开训后面全是返工。这篇就把拆包校验、训练配置到整图推理的完整路径走一遍。2. 拆开zip看数据YOLO标注语义、文件命名与标签分布检查2.1 从文件名反推数据来源与组织方式拿到压缩包先别急着解压跑训练花两分钟扫一眼文件名结构很多信息都在里面。典型的文件名是SOB_M_DC-14-2985-400-013_png.rf.05f4523563d54d7afd1047bf91e9e481.jpg拆成几段看SOB_M是来源项目前缀这种写法在公开的组织病理切片数据集里很常见DC-14大概率是病例编号2985是切片编号400基本可以断定是显微放大倍率而不是图像像素_png.rf.hash是 Roboflow 平台导出时加的后缀.rf.后面那串哈希是防重名用的随机串没有任何业务含义。后面跟着的.jpg才是真实格式。这一段命名信息直接决定训练策略这批图更像显微镜下的病理切片视角而不是乳腺X光片。病理切片里病灶区域通常边界清楚、尺度相对大而X光片里早期病灶往往小而模糊。两者在 imgsz、增强策略和置信度阈值上取向完全不同。另外从文件清单看压缩包里只有图片和标注文件没有现成的data.yaml说明训练配置需要自己写这是后面第5章的事。2.2 标签文件长什么样一行一个目标四个归一化坐标YOLO 格式的标注文件是纯文本和图片同名、后缀.txt放在labels/train和labels/val下。每行对应一个目标格式是class_id cx cy w h拿一条真实标注举例0 0.5123 0.4187 0.2431 0.3120class_id是类别索引这个数据集只有乳腺癌一类所以所有标注的class_id都是 0。后面的cx和cy是目标中心点坐标w和h是框的宽高四个值全部归一化到 [0,1]即除以原始图像的宽或高。比如cx0.5123表示目标中心在图像横向 51.23% 的位置。这套格式从 YOLOv5 一路沿用到 v8、v11、v12差异只体现在网络结构和训练策略上标注文件本身完全兼容。所以数据标注部分不存在“版本不匹配”的迁移成本唯一要留意的是如果你之前跑过 COCO 或 VOC 格式的数据转换后务必确认归一化坐标没有被二次缩放这是后面避坑章节要展开的素材。2.3 用统计脚本判断数据集是否健康我拿到标注数据的第一件事不是训练而是写一个统计脚本看标签分布是否合理。下面的脚本遍历labels目录汇总类别、坐标范围、框尺寸和面积占比。from pathlib import Path import numpy as np label_root Path(labels) rows [] for split in [train, val]: for txt in sorted((label_root / split).glob(*.txt)): lines [l.strip() for l in txt.read_text().splitlines() if l.strip()] for line in lines: parts list(map(float, line.split())) if len(parts) ! 5: print(f格式异常: {txt}: {line}) continue cls_id, cx, cy, w, h parts rows.append((split, txt.stem, int(cls_id), cx, cy, w, h)) arr np.array([(r[2], r[3], r[4], r[5], r[6]) for r in rows], dtypefloat) print(目标总数:, len(rows)) print(类别ID集合:, np.unique(arr[:, 0])) print(cx 范围: [%.4f, %.4f] % (arr[:, 1].min(), arr[:, 1].max())) print(cy 范围: [%.4f, %.4f] % (arr[:, 2].min(), arr[:, 2].max())) print(w 分位数(5/50/95): %.3f / %.3f / %.3f % tuple(np.percentile(arr[:, 3], [5, 50, 95]))) print(h 分位数(5/50/95): %.3f / %.3f / %.3f % tuple(np.percentile(arr[:, 4], [5, 50, 95]))) print(框面积占比中位数: %.4f % np.median(arr[:, 3] * arr[:, 4]))脚本的逻辑很直接读所有标注文件按行解析记录 split、文件名、类别和坐标。最后输出统计量。这里有几个判断标准类别ID集合应该只有[0.]如果混入其他数字说明标注类别索引有问题需要回到导出源头检查。cx/cy 范围应该在 [0,1] 内部坐标贴着 0 或 1 不算异常但出现负值或大于 1 就是越界必须清洗。框面积占比中位数对医学影像数据集很有参考价值如果中位数在 0.02~0.3 之间说明目标在图中占的比例不小属于中大目标训练时 imgsz 不用刻意开大如果中位数低于 0.01就偏向小目标检测得考虑切图训练或加大输入分辨率。3. 训练前的数据体检配对校验、坐标清洗与集合划分3.1 检查图像与标注文件的配对关系平台导出的数据集最常见的问题是文件被改名或漏传导致jpg和txt对不上。YOLO 训练时按同名前缀匹配图片和标签缺一个就直接跳过或报错。写个脚本做一次全量配对省得训练到一半才发现数据是残缺的。from pathlib import Path for split in [train, val]: img_dir Path(fimages/{split}) lb_dir Path(flabels/{split}) imgs {p.stem for p in img_dir.glob(*.jpg)} labs {p.stem for p in lb_dir.glob(*.txt)} missing_label imgs - labs # 有图没标签 missing_img labs - imgs # 有标签没图 print(f[{split}] 图片 {len(imgs)} 张, 标签 {len(labs)} 个) print(f 缺标签: {len(missing_label)}, 缺图片: {len(missing_img)}) for name in list(missing_label)[:5]: print( 缺标签示例:, name) for name in list(missing_img)[:5]: print( 缺图片示例:, name)注意脚本里用的是stem也就是去掉.jpg和.txt后的纯文件名。由于平台导出时会保留.rf.哈希只要图片和标签来自同一次导出两边stem必然一致配对失败通常发生在你手动改名或重新分类时。正常数据应该“缺标签 0、缺图片 0”。如果缺失率超过 0.5%我一般直接放弃这个源重新下载手动补齐的代价远大于重新下一份。3.2 坐标值域检查与最小修正配对没问题不代表坐标干净。医学影像数据集在标注导出时浮点精度偶尔会引入极小越界比如cx1.0000001或w-0.0000001。这种数据喂给 YOLO 训练轻则 loss 出现 NaN重则模型输出全部偏移。常见做法是先全量扫描报告再做一个保守的 clip 修正。from pathlib import Path bad_cases [] for split in [train, val]: for txt in (Path(labels) / split).glob(*.txt): lines txt.read_text().splitlines() cleaned [] for line in lines: parts list(map(float, line.split())) if len(parts) ! 5: bad_cases.append((str(txt), line, 字段数错误)) continue cls_id, cx, cy, w, h parts ok ( 0 cx 1 and 0 cy 1 and 0 w 1 and 0 h 1 ) if not ok: bad_cases.append((str(txt), line, 坐标越界)) cleaned.append(f{cls_id} {min(max(cx, 0), 1):.6f} {min(max(cy, 0), 1):.6f} f{min(max(w, 0), 1):.6f} {min(max(h, 0), 1):.6f}) txt.write_text(\n.join(cleaned) \n) print(发现异常标注:, len(bad_cases)) for case in bad_cases[:10]: print(case)这段脚本对每个标注文件逐行检查越界的坐标会被 clip 到 [0,1]宽度和高度小于等于 0 的行会被保留原值并记录到bad_cases。注意w或h小于等于 0 时不能盲目 clipclip 后还是 0等于制造了一条坏标注这种情况应该删掉整行或者回到标注软件里重新检查。提示脚本默认直接改写文件。稳妥的做法是先跑一遍只报告的版本确认没有系统性错误后再执行清洗。平台导出的标注通常只有浮点尾部误差clip 足够处理如果出现大量坐标整体偏移那是导出环节的问题清洗救不回来。3.3 划分泄漏比划分比例更重要数据集的划分比例是 1053/263接近 4:1这个比例对 1300 张图来说完全够用不需要自己重分。真正要警惕的是泄漏同一病例的相邻切片一部分进了训练集、一部分进了验证集。病理切片的相邻图之间高度相似模型在验证集上见过“变体”mAP 会虚高换一批真实数据立刻露馅。判断方法很简单回到 2.1 节的文件名。DC-14-2985-400-013这种结构里假如2985是切片编号那-013就是同一切片下的第 13 块视野图。验证一下 train 和 val 里的前缀是否有交集ls images/train | sed -E s/.*(DC-[0-9]-[0-9])-[0-9].*/\1/ | sort -u train_cases.txt ls images/val | sed -E s/.*(DC-[0-9]-[0-9])-[0-9].*/\1/ | sort -u val_cases.txt comm -12 train_cases.txt val_cases.txtcomm -12输出两个文件的公共行也就是同时出现在训练和验证里的病例编号。如果公共行很多说明划分时没有按病例隔离训练出来的模型存在泄漏风险。常见解法是放弃现成划分按病例编号分组同一编号的图像全部进训练集或验证集再做一次 90/10 的随机分组。这步在医学检测任务里不是可选优化而是基本操作。4. 避坑排查单类别医学检测训练最常见的五个翻车点4.1 类索引写错class id 不等于类别数现象训练正常跑完但验证时预测结果的类别标签不是 0而是 1、2、3甚至出现Class 2: Breast Cancer这种诡异输出。原因data.yaml 里nc写成了别的数或者类别名和索引错位。这个数据集所有标注的class_id都是 0所以不管数据里有多少个类别概念nc必须是 1names从索引 0 开始。如果你是从 COCO 预训练权重迁移过来COCO 有 80 类模型输出层是 80 维换成单类数据集必须重新设置nc1否则旧权重输出和标注索引对不上。解决严格按第 5 章的data.yaml来配置nc: 1names 0: Breast Cancer。训练前的标签统计脚本跑一遍确认类别 ID 只有 0。4.2 平台导出文件配对失败现象训练日志里大量出现WARNING: 无法找到图片对应的标签或者某个 epoch 的 loss 显示正常但验证集为空。原因Roboflow 类平台导出的文件名带.rf.hash有些人会手动去掉哈希以便阅读结果 jpg 改名了、txt 没改或者只改了一半。YOLO 依赖同前缀匹配任何不一致都会导致数据对丢失。解决永远不要手动改这批文件名。真要改名用 3.1 节的脚本做全量配对校验再动手。批量重命名也要保持 jpg 和 txt 同步写脚本对两个目录同时操作。4.3 边界框越界导致 loss 异常现象训练前几个 epoch loss 正常下降突然某一步变成 NaN或者模型预测框大量跑到图像外面。原因标注坐标存在微小的浮点越界比如cx1.0000001数据加载时边界框计算出现负宽度或超界值某些版本的损失函数对这类输入非常敏感。解决在进训练管线之前用 3.2 节的坐标清洗脚本全量 clip 一遍。注意试跑前不要动原始数据先备份labels目录把清洗脚本跑在副本上。4.4 拼图增强把病灶切成“合成怪”现象训练 loss 收敛挺快验证 mAP 也不错但把模型部署到真实医学影像上对小病灶的召回率惨不忍睹。原因YOLOv8 默认开启 Mosaic 增强把四张图拼一张。医学影像数据集里病灶通常是大块连续区域拼接会把一个完整病灶切成四份并配上完全不同背景模型学到的是“多个不同组织的拼贴感”而不是病灶本身的纹理特征。这在自然场景数据上是增强在医学影像上经常是负优化。解决显存允许的情况下先关 Mosaic 或把概率降到 0.2 以下试跑。Ultralytics 里可以直接在训练命令加mosaic0.2如果模型表现明显变好就保持低增强策略。小数据集、单类别、大目标场景拼图增强的收益通常不如想象中高。4.5 同一病例泄漏导致 mAP 虚高现象验证集 mAP50 高达 0.98P 曲线接近完美但你拿外部数据一测掉到 0.6 以下。原因训练集和验证集来自同一病例的相邻切片图像内容高度相似模型相当于开了“记忆模式”。这是医学检测项目里最隐蔽、后果最严重的问题因为它不报错、不明显只在落地时爆发。解决在训练前用 3.3 节的命令检查划分泄漏。如果确认泄漏按病例编号重新分组后再训练。判断模型真实水平最好留一批完全没见过的外部影像做最终验证。5. 跑通 YOLOv8/YOLOv12data.yaml、训练命令与指标读法5.1 手写 data.yaml路径与类别映射平台导出的数据集常常不带训练配置需要自己写。文件名叫breast_cancer.yaml内容如下path: /data/breast_cancer # 改成解压后的绝对路径 train: images/train val: images/val nc: 1 names: 0: Breast Cancerpath是数据集根目录的绝对路径train 和 val 是相对路径Ultralytics 会自动拼成path/train和path/val。如果你把数据集和训练脚本放同一层也可以用相对路径但我个人习惯写绝对路径避免 jupyter 或脚本工作目录不同导致路径失效。nc1只对应一个类别这也是 4.1 节里最容易翻车的点。names的类名带空格没有问题不过后续如果要用一些第三方可视化工具空格会带来转义麻烦。我通常习惯把类名写成Breast_Cancer或者干脆BC训练日志里短名字更容易扫读。需要展示时再映射回完整医学名称。5.2 模型选择与训练命令1316 张图属于中小规模医学数据集模型选择的原则是“先跑通再谈精度”。显存 8G 左右用yolov8n.pt或yolov8s.pt起步16G 及以上可以上yolov8m.pt。用官方预训练权重做迁移学习比从零训练收敛快得多。yolo detect train \ databreast_cancer.yaml \ modelyolov8n.pt \ epochs100 \ imgsz640 \ batch16 \ patience20 \ projectruns \ namebc_detect参数逐个说明epochs100结合patience20做早停。单类别医学检测任务收敛比多类别快patience 用默认的 100 会让模型在过拟合区域空转很久20 轮足够观察验证集是否还在提升。imgsz640是起点不是终点。如果 2.3 节的统计脚本显示框面积占比中小偏大640 够用如果想追求小病灶召回往上加到 960 或 1280 更有效但显存占用会成倍上升。batch16按 8G 显存给的保守值显存吃紧就降到 8别硬撑。project和name是输出目录Ultralytics 会自动生成runs/detect/bc_detect/权重文件best.pt和last.pt都在里面。YOLOv12 的命令几乎一样干活的标注格式、yaml 配置完全复用只是modelyolo12n.pt之类对应新权重。在没有明确精度收益之前先用 v8 跑通基线再换 v12 对比不要让框架选型拖住模型迭代。5.3 指标读法mAP50 比 mAP50-95 更值得看训练结束后验证集指标里有几个数字要分清主次。医学检测场景漏检的代价远高于误检所以我的关注顺序是mAP50和验证集Recall优先mAP50-95仅供参考。原因是mAP50-95对边界框的定位精度极其敏感而医学影像的标注本身就带有主观性两个医生框同一病灶边界差 5 个像素很正常。为了把 mAP50-95 从 0.6 提到 0.7 投入的调参成本在落地场景里往往换不来实际价值。相反mAP50 反映“框大概框对没有”更贴近辅助诊断的真实需求。单类别数据集不用纠结类别间混淆重点看P/Recall曲线和 F1 值。默认置信度阈值是 0.25如果验证集 Recall 偏低把阈值降到 0.15~0.2 再测一轮医学检测宁可多框几个可疑区域让医生复核也不要漏掉真实病灶。6. 把模型用在整张病理图上滑窗切片推理与召回率验证训练好的模型默认吃的是 640 分辨率的输入但真实病理图经常是几千乘几千的大图。直接整图缩放会丢失微小病灶纹理所以线上推理的常见做法是滑窗切片。下面这段代码把大图切成带 50% 重叠的 patch检测结果汇总回原图坐标import cv2 from ultralytics import YOLO model YOLO(runs/detect/bc_detect/weights/best.pt) img cv2.imread(whole_slide.png) H, W img.shape[:2] PATCH, STEP, CONF 640, 320, 0.15 detections [] for y in range(0, H, STEP): for x in range(0, W, STEP): crop img[y:y PATCH, x:x PATCH] res model.predict(crop, confCONF, imgsz640, verboseFalse)[0] for box in res.boxes.xyxy.cpu().numpy(): x1, y1, x2, y2 box detections.append([x1 x, y1 y, x2 x, y2 y])STEP320是PATCH的一半保证目标不会被切到两片之间而漏检。CONF降到 0.15 是因为切片后目标面积占比变小置信度天然下降先保召回后处理再滤噪。滑窗产出的重复框需要用 NMS 合并然后按面积过滤面积小于 patch 面积 2% 的框优先当作噪声丢弃。验证滑窗收益的简单做法是分别统计整图推理和滑窗推理在验证集上的召回率一般能把边界小病灶的召回拉回 10~20 个百分点。从那以后我每次拿到这类“开箱即用”的医学检测数据集都强制走一遍标签配对、坐标清洗、按病例检查泄漏这三步再进训练管线平台导出和自动标注的数据集尤其不能省。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

CS43198驱动开发实战:从硬件时序到寄存器配置与ALSA集成

CS43198驱动开发实战:从硬件时序到寄存器配置与ALSA集成

先说一个现象:这几年便携播放器、小尾巴、台式解码器里,出现频率最高的DAC芯片之一就有CS43198。它出自Cirrus Logic,定位是旗舰级低功耗DAC,带内置耳机放大器,114dB动态范围、-115dB THDN,原生支持DSD和MQ…

2026/10/10 9:52:14 阅读更多 →
Linux文件系统软链接与硬链接:inode、原理与实战避坑指南

Linux文件系统软链接与硬链接:inode、原理与实战避坑指南

每次给新同事讲 Linux 文件系统,聊到软连接和硬链接的时候,十个人里有九个一开始是懵的。这两个概念在命令上只差一个-s,但背后的数据模型完全不同。我第一次认真研究它们,是被一个实际场景逼的:某个应用的日志目录快满…

2026/10/10 9:52:14 阅读更多 →
web3入门指南:从区块链基础到钱包安全实操

web3入门指南:从区块链基础到钱包安全实操

如果你过去两年经常刷到web3这个词,又总觉得它离你很远,这篇文章就是为你准备的。作为在区块链领域持续实践多年的从业者,我想用最通俗的语言把web3讲清楚:它是什么、解决什么问题、普通用户怎么安全体验。全文不做投资建议&#…

2026/10/10 9:52:14 阅读更多 →

最新新闻

焊接缺陷检测数据集:YOLO+VOC双格式训练与避坑实践

焊接缺陷检测数据集:YOLO+VOC双格式训练与避坑实践

简介:面向目标检测与工业视觉算法开发者,提供一套焊接缺陷检测数据集,可用于焊接质量监控、工艺异常排查、钢结构与汽车零部件制造质检等场景,也适合目标检测学习者进行 YOLO、SSD 等模型的训练、验证与算法对比。压缩包约 153.88…

2026/10/10 22:38:23 阅读更多 →
心血管预测模型Python源码拆解:从数据到推理的完整方案

心血管预测模型Python源码拆解:从数据到推理的完整方案

简介:这份Python源码集锦聚焦心血管疾病预测模型的完整实现,面向具备一定Python基础、希望进入医疗数据分析或人工智能领域的学习者与参赛者。资源包共3个文件,包含1个ipynb交互式笔记本、1个py脚本和1个csv数据集,压缩包约83KB&a…

2026/10/10 22:38:23 阅读更多 →
爬楼梯与斐波那契:动态规划入门到机考实战全解析

爬楼梯与斐波那契:动态规划入门到机考实战全解析

机考刷题系列第一篇,我选了 LeetCode 70 爬楼梯。这题在 LeetCode 上难度是简单,但它在机考里出现的频率相当高,尤其适合刚接触算法刷题的人拿来建立动态规划的直觉。题目一句话就能说清:假设你正在爬楼梯,需要 n 阶才…

2026/10/10 22:38:22 阅读更多 →
MATLAB中CNN图像分类实战:无GPU环境下的训练与参数调优指南

MATLAB中CNN图像分类实战:无GPU环境下的训练与参数调优指南

简介:面向图像分类任务,这份压缩包提供一套基于卷积神经网络CNN的完整Matlab实现,适合入门学习者、课程设计者及需要在Matlab环境下快速搭建分类模型的开发者。包内共18个文件,以16个m脚本为主体,辅以2个mat数据文件&a…

2026/10/10 22:38:22 阅读更多 →
Jev-Mobile架构深拆:低频VLM高层规划+高频Jev执行器,79%任务成功率与32.7%端到端延迟下降是怎么做到的

Jev-Mobile架构深拆:低频VLM高层规划+高频Jev执行器,79%任务成功率与32.7%端到端延迟下降是怎么做到的

Jev-Mobile架构深拆:低频VLM高层规划高频Jev执行器,79%任务成功率与32.7%端到端延迟下降是怎么做到的 【免费下载链接】jev-chat-jarvis The chat decision assistant: before you reply, Jev reads the chat, judges intent and risk, and drafts repli…

2026/10/10 22:38:22 阅读更多 →
教务系统Android端对接实战:反爬、协议逆向与离线缓存

教务系统Android端对接实战:反爬、协议逆向与离线缓存

简介:本资源是一份面向高校计算机与软件工程专业本科生及Android开发初学者的毕业设计类技术文档,聚焦移动教务系统开发实践,解决传统Web端教务平台在移动端访问不便、离线不可用、交互体验弱等痛点。文档详细阐述了基于Android客户端的教务信…

2026/10/10 22:37:21 阅读更多 →

日新闻

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

1. 从“卫星轨道分类”这个标题说起:为什么值得花时间搞懂第一次接触“卫星轨道分类”这个概念,很多人会觉得它离自己很远——不就是天上的星星怎么转吗?但如果你正在做航天任务规划、遥感数据接收、星座设计,甚至只是准备一场航天…

2026/10/10 0:00:39 阅读更多 →
Spring AOP 核心原理与实战:从概念到日志切面落地

Spring AOP 核心原理与实战:从概念到日志切面落地

1. 从一个真实痛点说起:为什么你的代码里到处都是重复逻辑刚入行那会儿,我写过一个用户管理模块,注册、登录、改密码、注销四个接口。每个接口里都塞了几乎一样的日志打印、参数校验、事务开启和提交。当时觉得没什么,能跑就行。直…

2026/10/10 0:00:40 阅读更多 →
Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

简介:这是一套面向计算机相关专业学生与项目实战学习者的Python数据采集与分析可视化完整项目,以Boss直聘岗位数据为对象,适合用作毕业设计、课程设计或期末大作业。资源包共38个文件,约246KB,以13个py源码文件为核心&…

2026/10/10 0:00:40 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 11:14:25 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 1:36:08 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 11:14: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/10 5:23:50 阅读更多 →
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/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练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/10 10:38:42 阅读更多 →