mmdetection3d从零搭建:点云检测环境配置与数据管线实战指南

如果要在开源3D检测框架里挑一个“安装最磨人”的,我第一个提名mmdetection3d。倒不是它本身代码有多复杂,而是它背后那条依赖链长到让人崩溃:PyTorch要配CUDA,稀疏卷积库要现场编译,数据集工具还要求目录结构严格按预期写死。这篇记录的是我最近一次从零安装、跑通公开数据集训练验证、再换上自定义点云数据的完整过程。如果你是做点云检测的新人,或者正在为一个“差一个库就报错”的晚上头疼,这篇应该能帮你直接跳过我踩过的坑。

网上关于mmdetection3d的教程其实不少,但版本混乱得可怕。有人装0.17.x,有人装1.x,有人还在教mmcv-full的旧式安装法,照着看只会越看越乱。所以这篇我索性把整个思路理顺:先说清楚不同版本怎么选,再讲环境规划里的关键点,接着给三条安装路线,然后花大篇幅讲数据接入和配置文件改造,最后附上我最常用的启动检查清单和报错排查表。整个过程偏工程实操,不求面面俱到,但每一步都保证能落地。

1. 为什么选 mmdetection3d:从“能用”到“改得动”的定位差异

1.1 这一套开源工具链解决的是哪类问题

点云目标检测和图像检测最大的区别在于数据形态。图像是稠密网格的规则矩阵,卷积算子拿来就能用;点云天生稀疏、无序,同一个物体的采样密度会随距离变化。要处理这种数据,底层需要做一堆适配:点云数据的读取与预处理、体素化或柱状化、稀疏卷积、3D锚框与损失计算、NMS策略,再到BEV视角的可视化。每一步单独做都不算难,但连成一条完整管线,工程量就很可观。

mmdetection3d的价值正是把这套链路统一收拢到一起。它不只提供PointPillars、SECOND、CenterPoint、PV-RCNN这些常见模型结构的PyTorch实现,还内置了数据转换脚本、训练/测试入口,以及对多模态融合的支持,激光雷达和相机联合检测也能跑。对我来说,它最重要的不是“开箱即用”,而是“在一个完整管线的前提下保留改代码的自由”。你可以只改几行配置文件就开新实验,也可以深入每个模块内部换算子、改采样逻辑,这比那些封装过度的黑盒方案要顺手得多。

1.2 版本分水岭:为什么我劝你先看一眼依赖再动手

这是最容易让人栽进去的地方。mmdetection3d的旧版本(0.x时代)和新版本(1.x时代)在依赖体系上差异很大。旧版常见搭配是mmcv-full加mmdet 2.x;新版则切到了mmcv 2.x与mmengine架构,训练入口、配置写法、API命名都变了。如果你按老教程装新版,大概率会撞上一堆兼容性包裹。

对比项0.x老系列1.x新系列
核心依赖mmcv-full / mmdet2.x / mmseg0.xmmcv2.x / mmengine / mmdet3.x / mmseg1.x
训练入口旧式train.py风格同样叫train.py但内部走Engine流水线
配置写法旧式Config dict风格ConfigDict与嵌套dict,字段更规范
稀疏卷积库常规MinkowskiEngine继续沿用,但安装方式更新
社区资料老教程多,极易误导新教程在补全,模型更新集中在这一线

我给的建议是:新项目一律上1.x新线,不要贪图“老教程多”去装0.17.x。原因很现实,官方的新模型、新数据支持只会集中在新线维护,你按老版本学到一半,发现有些接口没有、有些Bug没修,再迁移成本反而更高。

1.3 动手安装前要想清楚的使用边界

还要提一句,mmdetection3d不是“导入即跑”的纯推理库。它对数据格式有比较严格的要求,尤其是坐标系的定义——激光雷达坐标系、相机坐标系、标注坐标系之间必须靠校准信息互相转换。安装只是第一步,后面能否用好,取决于你是否理解数据管线。这也是我下面要花一整章讲数据准备的原因。

2. 装环境前先算三笔账:CUDA、PyTorch、稀疏卷积库

2.1 先看清机器上的CUDA到底有几个版本

安装前,先不要急着创建虚拟环境。先在终端里执行两条命令:

nvidia-smi nvcc -V

这两条命令显示的“CUDA版本”含义不一样。nvidia-smi显示的通常是驱动所支持的最高CUDA版本,它决定你最多能装多新的PyTorch;而nvcc -V显示的才是当前PATH里编译工具链用的CUDA版本,决定你在本地编译扩展时用哪套头文件库。两者不一致很常见,也不用刻意强求一致,只要PyTorch版本要求的CUDA不高于驱动支持的版本就行。

实操里最省心的组合是CUDA 11.3或11.7的驱动,配上PyTorch 1.13.1或2.1.x对应的cu113/cu117版本。显存方面,如果只是想跑通PointPillars这类模型,一张12GB以上的卡会比较舒服;8GB也能跑,但batch size要调小。注意,不要以为显存小就先用CPU跑,mmdetection3d很多扩展是CUDA算子,没有GPU等于没法进入训练环节。

2.2 Python和PyTorch怎么搭配最不容易翻车

我建议直接创建独立conda环境,不污染系统Python:

conda create -n mm3d python=3.8 -y conda activate mm3d

选择Python 3.8或3.9是经过权衡的。太低的Python版本会影响新依赖的兼容性,太高的Python 3.11/3.12则可能让部分需要编译的扩展源码直接报错。安装PyTorch时,先确认版本号再下手。例如装PyTorch 1.13.1的CUDA 11.7版本,大致命令是:

pip install torch==1.13.1 torchvision==0.14.1 --index-url https://download.pytorch.org/whl/cu117

装完先验证一下torch能否正确调用GPU:

python -c "import torch; print(torch.cuda.is_available())"

这里输出True再继续,否则后面所有编译和训练都会在奇怪的地方报错。

2.3 稀疏卷积库:安装链条里最容易被忽略的“施工队”

mmdetection3d里凡是涉及体素化稀疏卷积的模型,基本都要依赖MinkowskiEngine这个扩展库。它的安装几乎是整个环境里最折磨人的一环,原因在于它通常需要现场编译C++和CUDA源码,而不是直接拉一个现成的wheel。如果没有提前装好系统级的编译器,编译就会中断在一些很底层的位置。

我自己的建议顺序是先把系统依赖补齐:

sudo apt install build-essential ninja-build libopenblas-dev -y export MAX_JOBS=4 pip install MinkowskiEngine -U

MAX_JOBS是编译并行度,限制到4可以避免把内存占爆。如果你的机器内存只有16GB,并行编译十分容易OOM,这是很多人在这一步挂掉的真正原因。

如果编译还是失败,另一种思路是直接拉取官方源码手动编译。但说实话,大部分失败案例都能回溯到“系统gcc版本不干净”或“PyTorch与CUDA组合过于冷门”。稳定组合远比最新组合重要,谨慎尝试那些“看起来很酷”的热门版本。

3. 三条安装路线对比:源码编译、预编译包和Docker

3.1 源码安装的完整流程与每一步的目的

最推荐、也是我最终采用的路线是源码安装。原因不是它快,而是后面改模型、加自己的数据处理逻辑非常方便。核心思路是先装好mmcv、mmengine、mmdet、mmseg这几个配套库,再安装mmdetection3d本体。

第一步,安装openmim这个命令行工具:

pip install -U openmim

openmim的作用是帮你自动选择与当前torch/cuda匹配的mmcv版本。mmcv这个库很特别,直接pip install拿到的多半是不带CUDA扩展的纯Python版本,模型根本跑不起来。用mim安装时它会自动扫描环境中现有PyTorch,再拉取对应的预编译包:

mim install mmengine mim install mmcv>=2.0.0 mim install mmdet>=3.0.0 mim install mmsegmentation>=1.0.0

等这几个库装好,接着拉取mmdetection3d源码并安装:

git clone <mmdetection3d官方仓库地址> cd mmdetection3d pip install -v -e .

这里用-e是开发模式,会生成指向源码目录的链接,之后你改了仓库内的Python代码,不需要重新安装就能生效。安装结束建议马上做一个冒烟检查:

python -c "import mmdet3d; print(mmdet3d.__version__)"

能正常输出版本号,说明依赖链基本通了。

3.2 预编译包和Docker分别适合什么人

预编译包的路子听起来省事,但实际限制很大。PyPI上发布的wheel版本往往滞后,而且它与mmcv、mmengine之间的组合需要完全对得上,稍有偏差就直接抛ImportError。我的经验是:如果你只是想在正式动手前快速看一眼官方Demo,可以用预编译包;但一旦进入“要改数据管线”的阶段,还是回头切源码安装更靠谱。

Docker是另一个“看起来快、实际上有隐藏成本”的方案。官方Docker镜像提前装好了大部分依赖,拉下来就能进交互式环境。但容器里和宿主机的GPU驱动、CUDA版本必须匹配,数据卷和端口也要自己映射好;而且研究代码需要频繁改动,每次都要重新进容器、重新挂数据,并不比源码安装轻松多少。我现在的做法是:给演示和团队分享时用Docker镜像,自己开发调试一律源码安装。

3.3 安装完成后的环境快照与备份习惯

还有一个很多人不注意的细节:装完一套能跑的环境后,记得把环境信息记录下来。

conda list --explicit > mm3d_env_snapshot.txt nvidia-smi > gpu_driver_snapshot.txt

这个习惯救过我很多次。因为这类库的版本组合一旦被无意升级就会全盘崩溃,比如某天你不小心更新了mmcv,它可能就与当前mmdet3d的编译产物不匹配,所有训练代码开始在“找不到符号”的报错里来回横跳。有了快照,恢复环境只需要一条conda install --file命令,不用重新踩一遍所有坑。

4. 数据接入与配置文件改造:公开数据集起步,自定义数据靠拢

4.1 公开数据集的目录结构与转换脚本

mmdetection3d在设计上要求数据先被组织成固定的目录结构,再用脚本转换成统一的pickle索引文件。以最常见的自动驾驶路测数据为例,首先要按照官方准备数据指南把原始文件放到data/目录下,目录里通常需要训练集、验证集、测试集三部分的点云和标注文件。

目录就位后,运行一个数据转换脚本:

python tools/create_data.py <数据集名> --root-path ./data/<数据集名> --out-dir ./data/<数据集名> --extra-tag <数据集名>

脚本会读取原始标注和标定参数,生成xx_infos_train.pkl、xx_infos_val.pkl等索引文件。这些pkl不是点云本体,而是一个“地图”,记录每个样本的点云文件路径、标注框坐标、类别、尺寸、朝向、标定参数等。后续训练加载数据时,先读pkl拿到样本清单,再根据清单按需读取实际点云,所以pkl生成后,数据处理管线就完成了“半成品”到“成品”的关键一步。

4.2 配置文件里真正要改的字段

mmdetection3d的训练配置遵循“基础配置+继承”的组织方式,一个模型配置会层层继承很多子配置。新手常常不知道到底要改哪一层。我的做法是先从模型配置入手,找到数据部分,逐项确认以下字段:

  • data_root:指向存放数据集的根目录。
  • ann_file:指向刚才生成的pkl索引文件。
  • metainfo/class_names:类别名称列表,必须与你数据里的标注类别一字不差。
  • point_cloud_range:点云有效范围,直接决定模型只关注哪个空间区域。
  • voxel_size:体素大小,影响体素化分辨率和显存占用。

如果你只是想验证流程,可以把训练轮数max_epochs调小、val_interval调大,先跑一两个epoch看看loss会不会下降,再回来调真正的精度参数。千万别一上来就用完整配置跑几百轮,那既是时间黑洞,也增加排查难度。

4.3 自定义点云数据的“最小可用pkl”长什么样

这个可能是最有复用价值的一段。要把自己的雷达数据接进来,本质上就是生成一个符合mmdetection3d预期的pkl文件。它至少要包含两部分:顶层metainfo和具体的data_list。

{ "metainfo": { "dataset": "my_radar", "num_classes": 3 }, "data_list": [ { "sample_idx": 0, "lidar_points": { "lidar_path": "data/my_radar/train/points/000000.bin", "num_pts_feats": 4, "load_dim": 4, "use_dim": 4 }, "instances": [ { "bbox_3d": [x, y, z, w, l, h, yaw], "bbox_label_3d": 0 } ], "calib_info": { "lidar2cam": [...], "cam2lidar": [...] } } ] }

这里最容易被忽略的是坐标系。标注的x、y、z是相对激光雷达本体的坐标,yaw是物体朝向角,框的whl分别是宽长高,顺序不能随便填。calib_info虽然很多单激光雷达模型不直接用,但官方数据结构的统一要求里往往还是要保留占位,否则后面的多模态模块拿到数据会直接崩。

4.4 点云预处理:很多精度问题不是模型的问题

数据接入正常后,先别急着怀疑模型。我见过太多人把检测效果差归咎于网络结构,结果翻开预处理才发现地面点没过滤、方向角统一转错、点云裁剪范围又和标注范围对不上。常见的有效预处理包括:限定点云范围、去除车体外壳自反射点、必要时做去地面。这些都可以在数据加载阶段的loading逻辑里实现,不需要改动模型主干。

实操建议是先在配置里把point_cloud_range限定到雷达的典型有效区,比如前后40米内,这是收益最高的一步。范围越大,计算量越大,密集区域的小目标反而容易被体素化“淹没”。

5. 启动前必须过的检查清单:Demo前向、断点评估和真正常踩的报错

5.1 先跑通一次Demo前向,再谈训练

环境装完、数据生成完,第一件事不是训练,而是让模型做一次前向推理。官方仓库自带demo脚本,大致用法是:

python demo/pcd_demo.py <配置文件路径> <模型权重路径> <单帧点云文件路径> --pred-score-thr 0.3

这一步看似简单,但蕴含的信息量很大。如果它正常输出检测框,说明数据读取、模型初始化、解码器、后处理、可视化这一整条链路是通的。如果这一步都跑不过,就不要急着训练,先把报错解决掉。尤其要注意的是,demo里的点云文件路径必须真实存在,很多人在这一步只改了权重路径,忘记改点云路径,然后对着一个“找不到文件”的报错犯迷糊。

5.2 评估流程与指标:不要只盯着loss曲线

训练起来的标准动作是:

python tools/train.py <配置文件路径> --work-dir work_dirs/my_first_run

想在中断后恢复,只需要加一个--resume参数。训练结束后,评估命令是:

python tools/test.py <配置文件路径> <训练产出的pth权重> --eval bbox

这里的bbox表示计算3D检测的各类AP指标。很多初学者只看训练loss,其实loss降到某个平台不代表检测效果就好。通用做法是观察验证集的mAP,按easy/moderate/hard三个难度分别看指标。如果你手里的数据类别不平衡,还要额外关注每个类别的AP,而不是只看平均。

5.3 高频报错排查:这些消息你迟早会遇到

我把常见报错和解决办法整理成一张清单,每个都是真实踩过的:

报错信息根因解决办法
ImportError: libGL.so.1缺OpenGL系统库apt install libgl1 libglib2.0-0
ModuleNotFoundError: mmcv._ext装成了纯Python版mmcv或版本错配用mim重装匹配当前torch的mmcv
fatal error: THC/THC.h老代码用新编译链升mmcv版本或降低torch版本
MinkowskiEngine编译OOM并行编译内存不足export MAX_JOBS=4
FileNotFoundError: xxx.pkl数据未转换或路径配错重新跑create_data.py,检查ann_file
CUDA out of memory显存不够调小batch_size、缩point_cloud_range、降体素分辨率
训练loss为nan学习率过大或数据含异常框降低初始lr,检查标注尺寸和角度

这些报错本身都不难修,难在它们通常是连环出现的:修好A又冒出B,B修好C又冒出来。在这种情况下,不要一份份地乱试,先用溯源法定位第一个报错发生的位置,然后从依赖链的最底层向上排查。

排查时还有一个技巧:把环境变量PYTHONFAULTHANDLER=1开启,它能让程序崩溃时打印更完整的调用栈。很多“无声退出”的C++底层错误,靠这一行就能直接看到是哪段代码在调用时崩溃。

5.4 我自己的经验:先把全流程的“最小闭环”跑通

最后讲一点实操体会。我每次在新机器上搭这套环境,不会一上来就追求完整数据和最优配置。先把公开数据拿几帧出来,跑通一个最小闭环:安装—数据转换—单epoch训练—单进程评估—Demo可视化。这个过程一旦走通,后续做自定义数据、换模型、多卡训练只是替换模块的问题,而不再是“工程能不能跑”的问题。

如果你正卡在安装或者数据阶段的某个报错上,我的建议是:不要死磕当前这一步,把流程里的其他环节整体检查一遍,有时候问题出在环境变量没有刷新,或者路径少写了一个目录层级。这类问题不存在高深原理,却最消耗耐心。希望这篇能把你在mmdetection3d上节省的几天时间,多留一点给真正值得关心的模型本身。

相关新闻

crunch密码字典生成实战:5个定向口令爆破技巧详解

crunch密码字典生成实战:5个定向口令爆破技巧详解

做渗透测试或者内网口令评估的人应该都有这种体会&#xff1a;手头的字典攒了一堆&#xff0c;真正对上目标账号的没几条。尤其是碰到那种“有安全意识但不多”的目标——密码不是123456&#xff0c;也不是Tr0ub4dor&3&#xff0c;而是姓名首字母加生日再拼个符号。通用字典…

2026/10/20 15:44:38 阅读更多 →
用LangChain4j实现条件工作流,构建Java Agent分支流程

用LangChain4j实现条件工作流,构建Java Agent分支流程

做 Agent 最怕的不是模型不给力&#xff0c;而是流程一旦复杂起来&#xff0c;判断和行动纠缠在一起&#xff0c;改一处就牵动全局。我最近在做一个客服工单自动分派项目&#xff0c;第一版就是典型的“一把梭”&#xff1a;把所有指令塞进一个提示词&#xff0c;让大模型一次性…

2026/10/20 15:44:38 阅读更多 →
远程串流玩3A大作:从原理到实战的完整指南

远程串流玩3A大作:从原理到实战的完整指南

1. 从一则发售传言说起&#xff1a;为什么玩家开始琢磨“远程玩” 最近游戏圈最热闹的消息&#xff0c;莫过于《生化危机9》的传闻再度发酵。虽然官方一直没有正式确认&#xff0c;但几轮爆料已经把“恐怖生存”“开放村庄”“新主角团”这些关键词炒得沸沸扬扬。身边好几个朋友…

2026/10/20 15:43:37 阅读更多 →

最新新闻

AI任务闭环设计:用流程化工作流让Codex从散装自动化走向稳定产出

AI任务闭环设计:用流程化工作流让Codex从散装自动化走向稳定产出

把一堆零散的AI辅助任务收成一套闭环&#xff0c;是我这段时间做得最值的一次。起因很简单&#xff0c;我手里攒了十几个“只跑一次”的脚本&#xff0c;有抓数据的、有改代码的、有生成文档的。单看每一个都用得挺好&#xff0c;但它们之间毫无关系&#xff0c;每次新任务过来…

2026/10/20 18:07:26 阅读更多 →
C#装箱拆箱性能优化:原理、场景与实战

C#装箱拆箱性能优化:原理、场景与实战

1. 从一个诡异的性能抖动说起 前阵子帮一个朋友排查一段C#代码的性能问题&#xff0c;场景很典型&#xff1a;一个数据处理模块&#xff0c;逻辑上就是往一个 ArrayList 里塞各种混合类型的数据&#xff0c;然后遍历读取。代码本身不到五十行&#xff0c;跑起来功能完全正常&…

2026/10/20 18:07:26 阅读更多 →
Locust压测实战:命令行参数详解与分布式压测高阶指南

Locust压测实战:命令行参数详解与分布式压测高阶指南

上周给一个内部服务做上线前的容量评估&#xff0c;我直接在命令行敲了几条 locust 命令&#xff0c;几分钟后拿到了 P95、RPS 和失败率数据。同事问我为什么不用现成的压测平台&#xff0c;我说&#xff1a;因为整个压测链路就藏在 Python 脚本里&#xff0c;环境有 Python 就…

2026/10/20 18:07:26 阅读更多 →
本地部署Qlib量化投研框架:从环境搭建到策略回测的完整指南

本地部署Qlib量化投研框架:从环境搭建到策略回测的完整指南

1. 为什么要在本地跑一套量化投研框架 第一次接触Qlib是在一个做量化研究的朋友那里。他当时吐槽说&#xff0c;云端环境跑回测&#xff0c;数据上传下载来回折腾&#xff0c;一个因子验证要等半天&#xff0c;网络一断前功尽弃。后来他把整套框架搬到了本地工作站&#xff0c;…

2026/10/20 18:07:26 阅读更多 →
WorkBuddy搭建小红书图文自动化SOP:从选题到数据回流完整指南

WorkBuddy搭建小红书图文自动化SOP:从选题到数据回流完整指南

我正式开始用WorkBuddy做小红书图文自动化的时候&#xff0c;心里其实没底。当时我已经被"日更"压得喘不过气&#xff1a;每天想选题、写文案、做图、排版、回复评论&#xff0c;几乎占掉所有空余时间&#xff0c;可产出还不稳定。后来我把整套流程拆开&#xff0c;用…

2026/10/20 18:07:26 阅读更多 →
腾讯云语音识别实战:半小时会议实时字幕与纪要自动生成

腾讯云语音识别实战:半小时会议实时字幕与纪要自动生成

会开完&#xff0c;一屋子人盯着白板&#xff0c;但会议纪要却要等到明天行政同事整理好再群发出去。这期间我们大概率忘了讨论到第三个人时他到底承诺了什么。我尝试过用手机录音&#xff0c;回头逐句听一遍再整理&#xff0c;半小时的会来回折腾两个小时&#xff0c;效率惨不…

2026/10/20 18:06:19 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

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

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

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

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

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

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型&#xff08;GMM&#xff09;的语音识别系统&#xff0c;很多人第一反应就是一堆数学公式&#xff0c;觉得门槛很高。但如果你真的在MATLAB里把它落地跑通&#xff0c;会发现核心其实就是三件事&#xff1a;把声音变成特征向量&#xff0c;用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人&#xff0c;但落到具体操作上&#xff0c;无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程&#xff1a;对图像做反白、改调色板、彩色转灰度&#xff0c;最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词&#xff0c;你会发现一个很有意思的现象&#xff1a;每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型&#xff0c;有人指的是运动控制系统&#xff0c;还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 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/20 10:02:08 阅读更多 →
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/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练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/20 9:50:45 阅读更多 →