MMRotate旋转目标检测实战:从环境配置到模型训练全流程详解
1. 从零上手MMRotate一个旋转目标检测框架的实战入门如果你正在处理遥感影像、文本检测或者任何需要精确框出倾斜物体的任务那么“水平框”的局限性你一定深有体会。一个水平矩形框住一个倾斜的飞机或船只会引入大量无关的背景噪声严重影响后续的分类、识别精度。这就是旋转目标检测Rotated Object Detection要解决的问题。而MMRotate作为OpenMMLab生态中专门为此诞生的框架正逐渐成为这个领域研究和应用的首选工具。今天我就以一个实际使用者的角度带你从环境搭建到跑通第一个训练完整地走一遍MMRotate的基本使用流程重点分享那些官方文档可能一笔带过但实际操作中却至关重要的细节和“坑点”。MMRotate并非一个孤立的框架它深度构建在MMDetection和MMCV之上。这意味着你得到的不仅是一个旋转框的实现更是一整套成熟的检测框架生态丰富的数据集支持、灵活的模型架构、高效的训练策略以及可视化的调试工具。对于刚接触的开发者或研究者最大的价值在于其统一、模块化的设计让你能快速复现SOTA论文或者将自己的创新点无缝集成到流水线中。接下来我们将从最根本的环境准备开始一步步揭开它的面纱。2. 环境部署避开版本依赖的“深水区”环境配置是万里长征第一步也是最容易让人崩溃的一步。MMRotate的依赖链相对较长版本兼容性要求严格一步错可能导致后续所有步骤报出令人费解的错误。2.1 基础环境与PyTorch安装首先强烈建议使用Anaconda或Miniconda创建一个独立的Python环境这是管理复杂深度学习项目依赖的最佳实践。假设我们创建一个名为mmrotate的环境conda create -n mmrotate python3.8 -y conda activate mmrotate接下来安装PyTorch。这里有一个关键点你需要根据自己是否有GPU以及CUDA版本来选择命令。前往 PyTorch官网 获取最准确的安装命令。例如对于CUDA 11.3的用户pip install torch1.12.1cu113 torchvision0.13.1cu113 torchaudio0.12.1 --extra-index-url https://download.pytorch.org/whl/cu113对于仅使用CPU的用户则安装CPU版本。务必在安装后验证PyTorch能否正确识别你的硬件import torch print(torch.__version__) print(torch.cuda.is_available()) # GPU用户检查此项 print(torch.cuda.get_device_name(0)) # 如果可用打印GPU型号2.2 MMCV与MMDetection的精准安装这是整个流程中最容易出错的环节。MMRotate依赖于特定版本的MMCV和MMDetection。官方推荐使用mimOpenMMLab的包管理工具来安装这能最大程度保证兼容性。pip install openmim mim install mmcv-full1.7.1 # 安装完整版的MMCV包含所有CUDA算子安装MMCV-full通常耗时较长因为它需要从源码编译CUDA扩展。确保你的系统已安装与PyTorch对应的CUDA工具链和nvcc编译器。接下来安装MMDetectionmim install mmdet2.28.2重要提示请务必核对MMRotate当前官方文档或requirements.txt中指定的MMCV和MMDet版本。上述版本号在撰写本文时是兼容的但框架迭代很快直接使用mim install mmdet安装最新版可能导致接口不匹配。安装后可以简单测试MMDet是否正常from mmdet.apis import init_detector print(‘MMDetection导入成功‘)2.3 MMRotate本体的安装与验证完成前置依赖后安装MMRotate本身。推荐从GitHub克隆最新代码进行安装这样便于后续查阅源码和可能的修改。git clone https://github.com/open-mmlab/mmrotate.git cd mmrotate pip install -v -e . # “-e”代表以可编辑模式安装对源码的修改会直接生效“-v”参数会输出详细的安装信息方便排查问题。安装完成后进行一个简单的功能验证python demo/image_demo.py demo/demo.jpg \ configs/rotated_faster_rcnn/rotated_faster_rcnn_r50_fpn_1x_dota_le90.py \ checkpoints/rotated_faster_rcnn_r50_fpn_1x_dota_le90-0393aa5c.pth \ --out-file result.jpg如果找不到checkpoints可以先从Model Zoo下载预训练权重。这个命令会使用一个示例配置和模型对示例图片进行推理并保存结果。如果运行成功并生成了result.jpg那么恭喜你最艰难的环境配置已经通过了。注意在整个安装过程中如果遇到任何“No module named ‘xxx‘”的错误请首先检查是否在正确的conda环境下操作然后根据错误信息使用pip install安装对应的缺失包。网络问题可能导致下载失败请考虑配置pip国内镜像源。3. 理解核心概念旋转框的表示法与数据集格式在写第一行训练代码之前必须理解MMRotate处理旋转框的核心逻辑这直接关系到你如何准备数据以及理解模型输出。3.1 旋转框的两种主流表示法旋转矩形框通常用一个五元组 (x, y, w, h, θ) 表示其中 (x, y) 是中心点坐标w和h是宽和高θ是旋转角度。但“角度”的定义和“宽高”的对应关系存在不同约定MMRotate主要支持两种OpenCV定义 (oc)角度θ表示矩形框顺时针旋转的角度。这是DOTA数据集采用的格式。在这种定义下旋转0度的矩形框其“宽”边是水平的。长边定义 (le90/le135)角度θ表示长边w与x轴正方向的夹角取值范围通常是[-90°, 0°)或[-45°, 135°)等。这种定义下宽w始终代表长边高h代表短边避免了因旋转90度导致宽高互换的歧义。为什么这很重要因为你在配置文件中必须指定angle_version参数例如‘oc‘或‘le90‘模型训练和评估时所有的角度计算逻辑都会据此调整。用错了版本模型永远学不对。DOTA数据集通常使用‘le90‘。3.2 DOTA数据集格式解析与准备DOTA是一个大规模遥感图像旋转目标检测数据集是检验旋转检测模型的“基准考场”。其官方格式如下图像巨大的原始图像如4000x4000像素。标注一个与图像同名的.txt文件。每行代表一个实例格式为x1 y1 x2 y2 x3 y3 x4 y4 category_name difficult其中(x1, y1) ... (x4, y4)是四边形四个顶点的坐标顺时针或逆时针category_name是类别名difficult表示是否为难例1或0。MMRotate无法直接处理这种大图和四边形标注。因此必须经过一个预处理步骤将其转换为MMRotate支持的格式。这个过程通常包括图像切分 (Image Splitting)将大图切割成重叠的小图块如1024x1024以便GPU能够处理。标注转换 (Annotation Transformation)将每个四边形标注根据切分位置分配到各个小图块中并将四边形转换为旋转矩形框五参数。生成COCO风格JSON最终MMRotate需要的是类似COCO数据集的.json标注文件里面以字典形式组织图像信息、标注信息包含旋转框参数和类别信息。MMRotate在tools/data/dota目录下提供了预处理脚本。典型的使用流程是# 假设DOTA数据集原始目录结构为DOTA/ {images, labelTxt} # 在mmrotate目录下执行 python tools/data/dota/split/img_split.py --base-json tools/data/dota/split/split_configs/ss_train.json python tools/data/dota/split/img_split.py --base-json tools/data/dota/split/split_configs/ss_val.json这些脚本会读取配置文件其中定义了切分尺寸、重叠率等参数自动完成切分和标注转换并在data目录下生成处理后的train和val文件夹以及对应的annfiles。务必仔细阅读和修改split_configs里的json文件确保路径正确。这是数据准备中最关键的一步出错会导致后续训练找不到标签或标签错误。4. 配置文件模型训练的灵魂MMRotate采用基于Python的配置文件系统所有组件模型、数据、训练策略等都在一个.py文件中定义。理解并正确修改配置文件是核心技能。4.1 配置文件的结构解剖我们以configs/rotated_faster_rcnn/rotated_faster_rcnn_r50_fpn_1x_dota_le90.py为例。它通常通过_base_继承多个基础配置文件形成一种层次结构_base_ [ ‘../_base_/datasets/dota.py‘, # 数据加载和增强配置 ‘../_base_/schedules/schedule_1x.py‘, # 学习率调度器、优化器配置 ‘../_base_/default_runtime.py‘ # 日志、钩子、评估器等运行时配置 ]然后它会在本地覆盖或新增特定设置# 模型定义 model dict( type‘RotatedFasterRCNN‘, backbone..., neck..., rpn_head..., roi_head..., train_cfg..., test_cfg... ) # 数据管道在继承的基础上进行修改 data dict( samples_per_gpu2, # 批大小根据GPU内存调整 workers_per_gpu2, # 数据加载线程数 traindict(...), valdict(...), testdict(...) ) # 优化器配置 optimizer dict(type‘SGD‘, lr0.005, momentum0.9, weight_decay0.0001) # 学习率是关键参数4.2 关键参数调优与实践建议对于初学者以下几个参数的调整最为常见且重要学习率 (lr)optimizer字典中的lr。这是最重要的超参数之一。官方配置通常针对8卡GPU设置如lr0.01。当你使用单卡或双卡训练时必须按线性规则缩放学习率。例如8卡lr0.01则单卡应改为lr0.01 / 8 0.00125。这是一个非常经典的“坑”学习率过大会导致训练发散loss变成NaN过小则收敛缓慢。批大小 (samples_per_gpu)data字典中的samples_per_gpu。它受限于你的GPU显存。如果出现“CUDA out of memory”错误首先尝试减小这个值。注意一些与批大小相关的技术如BatchNorm可能会受此影响但对于检测任务通常较小的批大小如2或4也能工作。数据增强在train_pipeline中定义。默认配置可能包含随机翻转、旋转、亮度对比度变化等。对于遥感数据随机旋转Rotate增强尤其有效因为它本身就与旋转不变性的目标一致。你可以调整prob概率或level强度来增加或减少增强的力度。锚点框 (Anchor)在rpn_head和anchor_generator中设置。旋转检测的锚点框也是旋转的。你需要关注scales尺度、ratios宽高比和rotations旋转角度集合。对于DOTA数据集物体尺度变化大长宽比多样默认配置通常已经过优化。但如果你的自定义数据集中物体角度分布有特定规律如大部分是0度和90度可以调整rotations参数例如rotations[0, 30, 60, 90]以提升召回率。实操心得修改配置时建议先复制一份官方配置文件到你的工作目录例如my_config.py然后进行修改。不要直接修改configs目录下的原文件便于版本管理和对比。使用python tools/train.py my_config.py来启动训练确保加载的是你的自定义配置。5. 启动训练与监控让模型“跑”起来配置妥当后就可以开始训练了。MMRotate提供了强大的命令行工具。5.1 单卡与多卡训练命令假设你的自定义配置文件为my_rotated_rcnn.py。单GPU训练python tools/train.py my_rotated_rcnn.py --work-dir ./work_dirs/my_exp--work-dir指定了实验目录所有输出日志、模型权重、配置文件备份都会保存在这里。务必指定一个清晰的目录名方便后续管理和比较不同实验。多GPU分布式训练例如4卡./tools/dist_train.sh my_rotated_rcnn.py 4 --work-dir ./work_dirs/my_exp_dist使用分布式训练可以显著缩短训练时间并且通常更稳定。脚本会自动处理进程间的通信。5.2 训练过程监控与日志解读启动训练后控制台会输出大量信息。你需要关注以下几个关键点初始信息程序会首先打印出完整的配置信息cfg请仔细核对确保所有参数特别是数据路径、类别数num_classes、角度版本angle_version都符合你的预期。数据加载会显示数据集加载情况如“loading annotations into memory... Done”。如果这里卡住或报错大概率是数据预处理第3步或配置文件中的路径有问题。训练循环日志每若干次迭代iter会打印一行日志例如[epoch 1][iter 20/1000] lr: 1.250e-03, eta: 1 day, 2:30:15, time: 0.512, data_time: 0.102, memory: 3245, loss_rpn_cls: 0.6931, loss_rpn_bbox: 0.1452, loss_cls: 0.5234, loss_bbox: 0.0891, loss: 1.4508lr当前学习率检查其变化是否符合调度策略。loss总损失以及各个子损失loss_rpn_clsRPN分类损失、loss_bbox边界框回归损失等。在训练初期这些损失应该呈现明显的下降趋势。如果loss长时间不降或变为NaN需要立即中断训练检查学习率是否过大、数据是否有错误标注如坐标越界。验证与评估按照配置在每个epoch结束后会对验证集进行评估。输出包括各个类别的平均精度AP和平均召回率AR以及它们的平均值mAP,mAR。mAP是衡量模型性能的核心指标。对于DOTA由于类别不平衡关注mAP比单个类别AP更有意义。5.3 使用TensorBoard进行可视化监控MMRotate默认集成了TensorBoard日志记录。在训练命令后加上--tensorboard参数或者在配置文件的log_config钩子中启用即可在work-dir下生成tf_logs目录。启动TensorBoard服务tensorboard --logdir ./work_dirs/my_exp然后在浏览器中打开localhost:6006你可以看到Scalars所有损失、学习率、评估指标mAP随迭代/epoch的变化曲线。这是观察训练趋势、判断是否过拟合/欠拟合的最直观工具。Images训练或验证过程中模型预测结果的可视化。你可以看到模型在当前阶段检测的效果有助于定性分析。Graph模型的计算图对于理解模型结构有帮助。一个实用的技巧同时打开多个实验的TensorBoard日志进行对比可以非常直观地比较不同超参数如学习率、数据增强策略对训练过程的影响。6. 模型测试与推理验证成果并实际应用训练完成后你需要用训练好的模型在测试集上评估最终性能并学会如何用它进行单张图片或视频的推理。6.1 对测试集进行标准评估假设你的最佳模型权重保存在./work_dirs/my_exp/epoch_12.pth。使用以下命令在测试集上进行评估# 单卡测试 python tools/test.py my_rotated_rcnn.py \ ./work_dirs/my_exp/epoch_12.pth \ --eval mAP # 多卡测试 ./tools/dist_test.sh my_rotated_rcnn.py \ ./work_dirs/my_exp/epoch_12.pth \ 4 \ --eval mAP--eval参数指定评估指标mAP是旋转目标检测最常用的指标。程序会加载测试集运行模型计算所有类别的AP并取平均最终给出一个mAP分数。这个分数应与验证集上的最终分数接近。如果差距过大可能意味着模型在验证集上过拟合了。6.2 单张图片/视频推理与结果可视化除了定量评估定性观察模型的检测效果同样重要。MMRotate提供了便捷的演示脚本。单张图片推理python demo/image_demo.py \ ${测试图片路径} \ my_rotated_rcnn.py \ ./work_dirs/my_exp/epoch_12.pth \ --out-file ${结果保存路径} \ --device cuda:0 # 指定GPU或‘cpu‘运行后会生成一张带有预测旋转框的图片。框的颜色通常代表不同类别分数会标注在框上。仔细检查框的角度是否准确、是否包含了错误检测或漏检这能帮你发现模型在哪些场景下表现不佳。视频流或摄像头推理python demo/webcam_demo.py \ my_rotated_rcnn.py \ ./work_dirs/my_exp/epoch_12.pth \ --camera-id 0 # 摄像头ID默认为0这个功能对于实时演示或某些动态场景的测试非常有用。它会打开一个窗口实时显示检测结果。6.3 常见问题分析与排查思路即使按照流程操作你也可能会遇到一些问题。这里分享几个常见问题的排查思路训练Loss为NaN或突然爆炸首要怀疑对象学习率过大。立即检查并调低学习率lr尤其是单卡训练时是否按规则进行了缩放。数据问题检查标注数据中是否存在非法值如无限大的坐标、负的宽高。数据增强如极端的旋转是否产生了无效的框。梯度爆炸可以尝试在配置文件中加入梯度裁剪optimizer_config dict(grad_clipdict(max_norm35, norm_type2))。mAP始终很低或为0数据标注格式错误这是最常见的原因。再次确认数据预处理步骤是否正确生成的JSON标注文件中的bbox字段是否是五个数字[cx, cy, w, h, angle]并且角度单位是弧度制还是角度制MMRotate通常使用弧度。类别不匹配配置文件中的num_classes是否等于你的实际类别数包括背景类MMDetection/MMRotate中num_classes通常指前景类别数Faster R-CNN等模型中会自动1背景类但一些自定义头部可能需要明确指定总数。最直接的检查方法是打印出数据加载后的第一个batch查看gt_labels的值是否在有效范围内。锚点框设置不合理默认锚点框的尺度scales和角度rotations与你的数据分布严重不符。可以统计一下你数据集中所有目标的宽高和角度分布然后调整锚点生成器的参数。内存溢出CUDA out of memory降低data中的samples_per_gpu。尝试使用更小的输入图像尺寸在train_pipeline和test_pipeline的Resize变换中修改。使用更轻量级的骨干网络如将r50换成r18或mobileNet。在配置文件中启用fp16混合精度训练可以显著减少显存占用并可能加快训练速度。评估速度非常慢测试时数据增强test_pipeline可能过于复杂特别是多尺度测试MultiScaleFlipAug。对于追求速度的部署场景可以简化为单尺度Resize和简单的翻转增强。模型本身较大。可以考虑在训练后对模型进行剪枝、量化等优化。掌握这些基本使用流程和排查方法你就已经具备了利用MMRotate框架开展旋转目标检测项目的基础能力。从环境搭建到模型产出每一步的稳健都建立在对其设计理念和细节的充分理解之上。记住深度学习工程实践很多时候“魔鬼藏在细节里”耐心地配置、仔细地观察日志、大胆地假设并小心地验证是解决问题的唯一途径。

相关新闻

OBS绿幕抠像全攻略:从硬件布光到软件调参实现专业直播

OBS绿幕抠像全攻略:从硬件布光到软件调参实现专业直播

1. 从零开始理解绿幕直播的核心原理 如果你手头有一块绿色或蓝色的背景布,想在直播中实现酷炫的抠像效果,把背景替换成游戏画面、PPT或者任何你想要的虚拟场景,那么OBS的“色度键”功能就是你必须要掌握的核心技能。这听起来可能有点专业&…

2026/10/17 1:45:51 阅读更多 →
GitHub仓库创建全指南:从零到一掌握代码管理与协作

GitHub仓库创建全指南:从零到一掌握代码管理与协作

1. 从零到一:为什么需要一个GitHub仓库?如果你刚开始接触编程,或者正准备启动一个新项目,那么“创建一个GitHub仓库”很可能是你迈出的第一步。这听起来像是一个简单的点击操作,但背后却连接着现代软件开发的核心工作流…

2026/10/16 11:14:49 阅读更多 →
Ubuntu生产环境Docker安装与阿里云镜像加速配置指南

Ubuntu生产环境Docker安装与阿里云镜像加速配置指南

1. 项目概述 最近在阿里云上部署生产环境时,需要为Ubuntu 22.04.5 LTS服务器安装Docker 29.1.5版本。这个看似简单的任务在实际操作中却遇到了不少坑,特别是国内网络环境下从官方源安装速度极慢的问题。经过多次实践,我总结出了一套使用阿里云…

2026/10/17 2:19:41 阅读更多 →

最新新闻

路由交换实验进阶:从配通到可控的转发决策系统

路由交换实验进阶:从配通到可控的转发决策系统

1. 这不是“配通就行”的实验课:路由交换实验的真实战场在哪里 很多人第一次接触“(Router)路由交换实验”这个标题时,下意识会把它归类为高校网络工程课程里的一节常规实验课——无非是打开Packet Tracer或eNSP,拖几个…

2026/10/17 11:22:24 阅读更多 →
IEEE 802.11速率自适应算法详解:从原理到高密度场景实战

IEEE 802.11速率自适应算法详解:从原理到高密度场景实战

1. 从"信号满格却卡成幻灯片"说起:速率自适应到底在解决什么问题 很多人调无线网络时都遇到过这种怪事:设备明明显示信号强度不错,但实际传文件、看视频就是一顿一顿的,换个位置或者过一会儿又好了。更诡异的是&#xf…

2026/10/17 11:22:24 阅读更多 →
自主代理AI时代的提示工程:七大革命性策略与实战

自主代理AI时代的提示工程:七大革命性策略与实战

1. 提示工程架构师:一个正在形成的核心角色1.1 从提示词写手到提示架构师我最早接触提示工程是2023年初,那时候大家还在研究"怎么让ChatGPT别瞎编",一句话里加不加"请"都能影响输出质量,整个行业像在跟一个话…

2026/10/17 11:22:24 阅读更多 →
AI重塑问卷调研:从源头设计到数据质控的完整链路

AI重塑问卷调研:从源头设计到数据质控的完整链路

做问卷调研这些年,我见过太多“数据很漂亮、结论没法用”的项目。问题从来不出在分析上,而是出在源头——问错了人、问错了话、问错了结构。一个研究团队花了三周设计问卷,投放后回收了400多份,打开数据才发现核心变量根本没测准&…

2026/10/17 11:22:24 阅读更多 →
半导体Fab数据质量治理:给FAB数据打分的方法

半导体Fab数据质量治理:给FAB数据打分的方法

一、背景故事:真实场景切入在半导体 Fab的生产一线,工程师每天面对的不是教科书里的理想模型,而是充满噪声的实际工况。设备报警、良率波动、数据不一致、系统响应慢——这些问题轮番登场,考验着每一个从业者的判断力和执行力。今…

2026/10/17 11:22:24 阅读更多 →
Insightface模型从MxNet到TNN:转换、量化与端侧部署全攻略

Insightface模型从MxNet到TNN:转换、量化与端侧部署全攻略

做端侧人脸识别落地的同学,迟早都会撞上模型转换这堵墙。手里拿着跑得挺好的 Insightface 人脸识别模型,训练和评估都在 MxNet 环境下完成,一到移动端部署就发现 MxNet 的运行时压根不是给手机准备的。这时候把 MxNet 模型转成 TNN 模型就成了…

2026/10/17 11:21:24 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 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/16 21:54:38 阅读更多 →
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/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练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/16 14:23:36 阅读更多 →