YOLOv12实战:太阳能电池板EL图像缺陷检测系统全解析

1. 为什么太阳能电池板缺陷检测非要“可视化+自动化”不可

光伏组件的出厂质量直接决定电站全生命周期的发电收益,这个账在行业里越算越清。一组隐裂组件用肉眼几乎看不见,但一旦装机后热斑效应持续放大,轻则发电效率打折扣,重则引发火灾隐患。我在帮某组件厂做产线改造时就遇到过这种情况:原来两位质检员轮班盯EL显示器,一块组件从上料到判级平均要十几秒,交接班之后标准很难统一,漏检率全靠个人经验兜底,根本兜不住。

于是就有了这个项目的雏形——基于YOLOv12的太阳能电池板缺陷识别检测系统。它做的事情不复杂:用相机拍下电池板的EL(电致发光)图像,模型自动框出缺陷位置并标注类别,前端配一个带登录注册的UI界面,产线工人导入图片或实时取流就能看到检测结果,不需要懂任何深度学习知识。这个项目的价值不是“替代人”,而是让产线24小时保持同一个检测标准,并且把判级依据沉淀成可追溯的数据。

1.1 太阳能电池板缺陷到底有哪些,为什么普通图像难以检测

要训练一个靠谱的检测模型,首先得知道你要找什么。太阳能电池板的缺陷种类很多,常见的有这几类:

  • 隐裂(Micro-crack):电池片内部晶硅结构的微小裂纹,EL图上表现为细长的黑色线条,这是最考验模型小目标能力的一类缺陷。
  • 断栅(Finger interruption):栅线断裂或缺失,在EL图上呈现为一段发暗的线状区域,对功率影响很大。
  • 黑斑/暗斑(Dark spot):局部电性能退化区域,形状不规则,灰度对比不高。
  • 碎片(Broken cell):电池片碎裂,严重时整片区域发暗,通常比较容易检出。
  • 划痕/脏污(Scratch/Contamination):生产工艺中的机械损伤或污染物附着,形态随机。

这些缺陷在普通可见光图像里几乎无处可寻,因为硅片表面反光强烈,裂纹和灰尘根本分不清。行业通行的做法是用EL电致发光设备:在暗室里给电池片施加偏压,让电池片自身发出近红外光,再用对近红外波段敏感的相机拍摄。缺陷区域的载流子复合速率不同,发光强度就会变暗,于是隐裂、断栅就显形了。

这里要提醒一点:不是所有缺陷在EL图上都表现为“发暗”。有些工艺不良会显示为整片亮度不均,而隐裂在特定角度和特定电压参数下才更明显。所以数据集不能只图数量多,更要图“多样性”——不同厂家、不同EL设备、不同电压参数、不同拍摄角度拍出来的图都要收,模型才不至于在换了一条产线后就失灵。

1.2 YOLOv12为什么更适合这个场景

我一开始也想图省事直接用YOLOv8,毕竟生态成熟、资料多。但实测下来,隐裂这类只有几个像素宽、对比度又低的细长特征,在YOLOv8下面经常被当成背景过滤掉。换到YOLOv12之后,小目标的召回率明显上来了。

原理上不用扯太玄。YOLOv12作为YOLO系列的最新版本,结构上强化了多尺度特征的融合能力,改进后的注意力机制让深浅层信息在传播过程中衰减更少。长条状的裂纹属于“低灰度对比+极端长宽比”的目标,恰恰需要这种跨层特征保持能力。另外,它在推理速度上没有明显妥协,我用同一块GPU测了下,单张EL图的推理耗时和YOLOv8基本处在同一量级,这对接产线节拍非常重要。

当然也别吹过头。如果你的缺陷形态主要是大面积色斑、尺寸足够大,YOLOv8和YOLOv12差距其实不大,没必要盲目追新。但凡是长条状、低对比度、小尺寸的目标——隐裂、划痕、断栅——直接从YOLOv12起步是更省事的选择,省得后面再换模型重训一遍。

注意:我这里的对比结论基于“在相同数据集、相同训练配置下的实测”。实际选型时,最好先把自己最头疼的缺陷类型列出来,再看有没有公开的对比数据,而不是跟着版本号走。

2. EL缺陷数据集的构建:这个环节决定了项目80%的成败

很多初学者拿到项目第一反应就是“跑通代码”,但我做这类工业视觉项目多了,越来越确信:模型结构只决定精度天花板,数据集才决定你脚下踩的地板。数据集质量不行,再好的YOLOv12也只能学到噪声。

2.1 数据从哪来:采集策略比“下载公开集”更关键

太阳能电池板EL图像说实话,公开数据集很少,而且大多来自实验室环境,和产线的真实工况差距很大。我的做法是两条腿走路:

  • 自有采集:用EL检测设备配合工业相机,在暗室条件下拍摄不同厂家、不同批次、不同偏压参数的电池板图像。每个批次至少拍200张,确保涵盖正常板和缺陷板。
  • 产线历史图库:很多工厂其实积累了海量EL检测历史图片,只是没有整理成标注数据。我跟产线质量负责人沟通后,把过去几个月的判级图片按缺陷类别筛了一遍,从里面挑出有代表性的图补充进数据集。

如果你是个人学习者,没有产线条件,也可以去公开平台找一些光伏EL缺陷数据集,或者自己用照明条件模拟缺陷形态。但要注意:用公开数据集训练出来的模型,直接扔到产线上大概率会“水土不服”,因为光照、相机型号、EL设备参数都变了。正确的做法是把公开数据集当作预训练素材,再用少量真实产线图做微调。

2.2 标注规范:一张图一个标准,否则模型会“精神分裂”

我踩过最深的坑就是标注不一致。前期让几个同学帮忙标注,有人把整条隐裂框成一个长框,有人把隐裂断成好几段分别框,还有人把断栅和隐裂混标成同一类。结果模型训练了两轮,loss降不下去,可视化特征图一看,目标位置全模糊了。

后来我定了一套标注规范,这里直接分享:

  • 隐身裂等线性缺陷,沿着缺陷主轴画最小外接矩形,允许稍微超出缺陷边缘,但不要截断中间断裂处。
  • 同一个缺陷只用一个框,不要拆成多个框;多个缺陷相距小于几个像素时,分开标注。
  • 类别定义必须互斥:隐裂就是隐裂,断栅就是断栅,如果图像里两个缺陷重叠,按更严重的那一类标。
  • 不要漏标小缺陷——漏标一个隐裂,模型就会学到“这也算正常”,这是最致命的。

标注工具我用的是LabelImg,格式直接保存为YOLO的txt,每行一个目标:class x_center y_center width height,坐标都是归一化到0到1之间。个人项目数据量不大,几百张图两三天就能标完。没必要上复杂的标注平台,反而拖慢节奏。

数据整理好之后,目录结构按YOLO的习惯来组织,后面训练时直接套用:

dataset/ ├── images/ │ ├── train/ │ ├── val/ │ └── test/ ├── labels/ │ ├── train/ │ ├── val/ │ └── test/ └── data.yaml

2.3 数据增强:别把EL图当成自然光图来搞

很多教程上来就是马赛克增强、随机翻转、HSV抖动一套全开。但EL图像有自己的特点:它是单通道近红外灰度图、背景是暗场、目标是亮区里的暗缺陷,对比度和自然图像完全不是一个逻辑。我把增强策略调成了这样:

  • 轻微高斯噪声:模拟不同EL设备底噪,增强模型的抗噪能力。
  • 随机亮度和对比度扰动:不要太大,±10%以内即可,防止模型把“亮度”当特征。
  • 随机旋转和镜像:电池片方向在产线上是固定的,但为了保证模型对旋转不敏感,我保留了小幅旋转。
  • 关掉HSV色彩抖动:因为EL图灰度变化才是关键,色彩抖动只会引入噪声。

最后按大概8:1:1划分训练集、验证集和测试集,并且确保同一个电池片的多个视角图片不混进两个集合里。否则验证集指标会虚高,到了线上就现原形。

3. 训练YOLOv12的完整过程与调参记录

数据准备好之后,就该进入训练环节了。这个阶段最大的误解是“参数越多越高级”,实际上对工业检测项目来说,稳定、可复现、能快速迭代比刷高精度更重要。

3.1 环境配置:先把坑填平再开始

我用的环境是Python 3.10 + PyTorch 2.x + CUDA,显卡是单张NVIDIA显卡(显存12GB)。YOLOv12的代码直接拉官方仓库,安装依赖时注意一点:不要把ultralytics和YOLOv12的依赖混装在同一环境里,两者有些库版本冲突,我一开始就踩了这个坑,训练到一半报错,排查了半小时才发现是numpy版本被降级了。

建议用conda单独建环境:

conda create -n yolov12 python=3.10 conda activate yolov12 pip install -r requirements.txt pip install torch torchvision --index-url https://download.pytorch.org/whl/cu118

装完之后跑一下官方自带的检测脚本,确认环境没问题再开始训练。这一步虽然麻烦,但能省掉后面一长串调试时间。

3.2 训练参数怎么定:从预训练权重出发,别从零硬训

我的建议是:加载COCO预训练权重做迁移学习,不要从头开始训练。原因很简单,太阳能电池板EL图虽然和自然图像风格差很远,但模型的底层特征提取能力——边缘、纹理、局部对比度——是通用的。从头训不仅慢,而且小样本下容易过拟合。

具体训练命令大致如下(不同仓库参数名略有差异,以你下载的仓库为准):

python train.py --data data.yaml --weights pretrained.pt --epochs 300 --batch-size 8 --imgsz 640 --device 0

几个关键参数的取舍:

  • imgsz(输入尺寸):我选了640。EL原始图分辨率往往很高,直接缩到640会导致隐裂这种细小特征丢失。但分辨率设太高(比如1280)训练速度会明显下降。折中方案是先以640训练一版,再在最终模型上用1280做推理测试,看召回是否有提升。
  • batch-size:受显存限制,12GB显卡用8比较稳。大batch不一定更好,小batch配合低学习率在工业小数据集上反而更稳。
  • epochs:我设了300,但实际在第120轮左右就基本收敛了。原因是我用了早停机制,连续30轮验证集mAP不涨就自动停。对工业项目,大量轮次不只是浪费算力,还会增加过拟合风险。

训练过程中我最关注的指标不是loss曲线,而是验证集上各类别的mAP50和mAP50-95,尤其会分开看每个缺陷类别,而不是只看一个综合均值。如果某类别的召回率明显偏低,就要回去查数据——通常是该类标注不够或形态太杂。

3.3 欠拟合、过拟合和“假收敛”的识别

我在训练中发现的一个典型现象是:隐裂这一类别的loss降得很慢,但最后突然掉下来。这是因为隐裂样本在数据集中占比少,前期模型把它们当成背景,直到训练后期才开始真正学习。遇到这种情况不要急着加训练轮次,而是先检查测试集里隐裂的标注框是否一致、增强参数是否把细线特征破坏掉了。

另一个常见问题是“假收敛”——训练集loss很低但验证集mAP一直不动。这说明模型在记忆训练集而不是学习泛化特征。我当时的处理是把数据增强强度回调,去掉高斯噪声,换用更轻的平移和旋转增强,同时降低学习率再跑一轮。

训练完记得保存最佳权重路径,通常仓库会自动生成best.pt和last.pt,前者是验证集最优的权重,后者是最后一轮的权重。部署时一定用best.pt,别用last.pt,否则精度会掉一截。

4. 登录注册与UI界面:把模型包装成人人能用的工具

训练好模型只是完成了一半,另一半是把模型从命令行里解放出来。产线工人不可能去敲python detect.py,他们要的是打开软件、登录账号、拖入图片、看到结果。这也是这个项目的亮点之一:带登录注册界面的可视化UI。

4.1 为什么UI选择PyQt5而不是Web方案

桌面端和Web端都可以,但我选了PyQt5。核心原因有两条:一是产线环境往往在内网,Web端部署要多维护一套服务,桌面端即拷即用;二是PyQt5做图像显示、文件选择和实时取流非常方便,不依赖浏览器性能。如果你要做多用户远程访问,那另当别论,Web方案更合适。

UI整体结构分两层:

  • 登录注册界面:输入账号密码登录,新用户先注册,密码加密存储。
  • 主检测界面:左侧是操作区,可以选择图片检测、文件夹批量检测或者摄像头实时检测;右侧是结果显示区,显示原图、标注框、类别和置信度,底部还有统计信息栏。

4.2 登录注册模块的实现细节

注册登录看似简单,但有几个细节不做好的话,后面会很难受:

  • 密码不能明文存:我用的是SQLite数据库存用户信息,密码字段存的是哈希值而不是明文。怎么说呢,工业软件虽然不出门,但该有的底线还是要有。
  • 注册时要查重:用户名重复直接提醒,不要等登录时才报错。
  • 登录状态要保持:检查到已登录用户后,下次打开软件自动跳转主界面,省得工人每天登录烦了。

核心逻辑并不复杂,典型的注册检查代码大概是这样的思路:

import sqlite3 import hashlib def register(username, password): conn = sqlite3.connect('users.db') cursor = conn.cursor() if cursor.execute("SELECT * FROM users WHERE username=?", (username,)).fetchone(): return False hashed = hashlib.sha256(password.encode()).hexdigest() cursor.execute("INSERT INTO users (username, password) VALUES (?, ?)", (username, hashed)) conn.commit() conn.close() return True

这个只做演示用,生产环境建议加盐(salt)再哈希,安全性才够。

4.3 检测流程的线程处理:别让UI卡成“假死”

这是UI开发里最容易翻车的地方。如果你把模型推理直接塞进主线程,当用户点“检测”按钮时,界面会卡住不动,看起来像死机了。正确的做法是把推理放到子线程里跑,UI主线程只负责刷新显示。

我用的是QThread+信号槽机制:新建一个DetectThread类,接收图片路径列表,循环推理,每完成一张就发一个信号给主界面,主界面收到信号后更新缩略图和结果列表。这样用户可以在检测过程中随时取消操作。实测下来,一张640x640图像的推理大约是几十毫秒,加上前处理和后处理,UI侧基本感觉不到卡顿。

检测完成后,界面上还会显示当前批次的总数、缺陷数量和各类别的分布,方便产线工人做初步判级。结果图默认保存在项目下的runs/detect目录,文件名带时间戳,便于追溯。

5. 系统整体测试与生产环境部署的注意事项

项目代码功能跑通之后,大规模测试阶段才是真正发现问题的时间点。我把测试分成了几个维度:场景维度、缺陷维度、性能维度,每个维度都有不同的踩坑经历。

5.1 测试集上的“虚高”与产线上的“真实”

刚才提过,验证集和测试集要严格分开,但即使这样,测试集表现好也不代表产线上能打。我遇到过的情况是:测试集里80%的图片来自同一台EL设备,模型对这些图的检测精度很高;但换成另一台不同型号的设备拍摄的图之后,mAP掉了将近15%。原因很简单——EL设备的增益、分辨率、噪声特征都变了,模型在训练时就学进了这些“设备偏差”,而不是纯粹的缺陷特征。

所以部署前的联调阶段,一定要拿另一条线上、另一台设备上的新鲜图片去做盲测,不要只用自己手头这批数据。如果偏差过大,就把新设备拍摄的图片加入训练集做增量训练,一般迭代两轮就能改善。

5.2 误检漏检的定位方法:特征可视化

在实测中,漏检比误检更麻烦。漏检的隐裂意味着问题组件会流到下一道工序,性质严重得多。遇到漏检,我会把YOLOv12中间层的特征图导出来,看模型到底关注了图像哪些区域。如果发现模型注意力完全没落在裂纹区域,说明小目标特征在前处理阶段就被丢掉了,这时候要检查:图像缩放时是否用了过强的下采样、归一化时是否把灰度范围压得太狠。

如果是误检,比如把电池片边缘的亮线当成隐裂,通常说明标注里缺了“正常边缘”的负样本。加大正常图像的数量,模型自然会把边缘线和裂纹区分开。工业检测里,正常样本往往比缺陷样本更有价值,这一条我认为是通用规律。

5.3 推理速度优化与产线节拍匹配

产线检测最看重的是节拍。如果一条产线要求每块组件检测时间不超过2秒,你的系统就得在2秒内完成取图、推理和结果输出。YOLOv12的推理速度通常在毫秒级,瓶颈反而在上层接口和图像加载。我做过几个优化:

  • 把模型转为ONNX格式并开启半精度推理,速度比PyTorch原生快不少,部署时不再依赖torch环境。
  • 提前分配图像内存缓冲区,不要每处理一张图就重新imread一遍大图,减少IO开销。
  • 摄像头取流用一个独立线程维护最新帧,避免阻塞UI。

这些优化做完,整套系统在常规硬件下能达到每张图1秒以内的处理速度,满足产线的实时性要求。

最后几点体会

这个项目从启动到落地,前后改了不少版本。我最大的体会是:工业检测系统很难一蹴而就,性能和稳定性都是“喂”出来的,数据要持续补充,模型要周期性增量训练。与其追求单次训练跑出一个完美权重,不如把“数据回流-标注-重训-发布”这条链路建起来,让系统越用越准。

另外,如果你打算在此基础上扩展,我建议关注两个方向:一是把判级结果和产线MES系统对接,实现自动拦截不合格品;二是针对热斑等非EL可检缺陷,融合红外图像做多模态检测。这两个方向都是目前光伏智能制造里比较急需的能力,感兴趣的话可以往深了挖。

相关新闻

细节决定性能:loklak_jlib_api的UTF8编码优化与Android JSON兼容层设计解析

细节决定性能:loklak_jlib_api的UTF8编码优化与Android JSON兼容层设计解析

【免费下载链接】loklak_jlib_api One Library to find them, One Library to bring them all 项目地址: https://gitcode.com/gh_mirrors/lo/loklak_jlib_api 点击查看 免费下载 loklak_jlib_api 是一款零依赖的 Java 客户端库,让你无需 API Key 就能匿…

2026/10/20 3:45:12 阅读更多 →
副业内容创业成本优化指南:小说漫画漫剧低成本制作与变现

副业内容创业成本优化指南:小说漫画漫剧低成本制作与变现

1. 副业内容创业的成本困局与破局思路这两年身边不少朋友都在琢磨副业,其中问得最多的一个方向就是小说、漫画、漫剧这类内容型项目。原因不难理解:门槛看起来不高,一台电脑甚至一部手机就能开工,变现路径也相对清晰——平台分成、…

2026/10/20 3:44:12 阅读更多 →
NSGA-Ⅲ多目标优化MATLAB代码逐行解析:参考点机制与高维帕累托前沿

NSGA-Ⅲ多目标优化MATLAB代码逐行解析:参考点机制与高维帕累托前沿

简介:这份资源是NSGA-III多目标优化算法的MATLAB实现代码及详细注释,面向需要求解高维、多目标优化问题的研究生、算法工程师与科研人员。NSGA-III由Deb等人提出,通过非支配排序、参考点关联与分层精英保留策略,在保持种群多样性的…

2026/10/20 3:44:12 阅读更多 →

最新新闻

智能驾驶感知算法岗面试:核心考点、避坑经验与备考方法论

智能驾驶感知算法岗面试:核心考点、避坑经验与备考方法论

智能驾驶感知算法这个岗位,面试难度这几年肉眼可见地在涨。很多准备者把精力全花在刷LeetCode和堆模型名词上,结果一到项目深挖和原理推导环节就露馅。这篇文章我想从面试官视角、核心考点、实战复盘、避坑经验到行业走向,完整拆一遍“智能驾…

2026/10/20 4:33:43 阅读更多 →
IEEE 754浮点数精度揭秘:0.1+0.2为何不等于0.3

IEEE 754浮点数精度揭秘:0.1+0.2为何不等于0.3

1. 从一个让无数人怀疑人生的等式说起0.1 0.2 0.3这行代码,如果你在浏览器控制台或者 Python 交互环境里敲下去,返回的结果大概率是一个干脆利落的false。第一次撞见这个现象的人,反应基本分三档:第一档觉得电脑坏了&#xff0c…

2026/10/20 4:33:43 阅读更多 →
AI智能体循环工程-第14章第6节-商业变现地图-产品化一把内部循环工具做成SaaS的路径

AI智能体循环工程-第14章第6节-商业变现地图-产品化一把内部循环工具做成SaaS的路径

第6节 产品化一:把内部循环工具做成SaaS的路径 一句话总结:从自用到SaaS五步——抽象垂直场景→多租户改造→计费(座位/用量)→合规安全→冷启动;借鉴Cursor($2B ARR)与Devin的产品形态选择&…

2026/10/20 4:33:43 阅读更多 →
MySQL主从复制从原理到实战:binlog、GTID与高可用配置全解析

MySQL主从复制从原理到实战:binlog、GTID与高可用配置全解析

MySQL用了这么多年,真正让我意识到主从配置不是"加分项"而是"必选项"的,是一次线上事故——某天凌晨一个同事连错环境,一条UPDATE没带WHERE条件直接把用户表全量更新了。当时数据库只有一个实例,备份恢复花了…

2026/10/20 4:33:43 阅读更多 →
知识工作插件系统:模块化认知增强工具设计与实践

知识工作插件系统:模块化认知增强工具设计与实践

1. 项目概述:这不是插件,而是一套知识工作者的“思维外挂”系统“knowledge-work-plugins”这个标题乍看像某个开源仓库的命名,但拆开来看——knowledge work(知识工作)是现代职场最核心的生产力形态,plugi…

2026/10/20 4:33:43 阅读更多 →
Kafka分区机制详解:从高并发原理到生产实践

Kafka分区机制详解:从高并发原理到生产实践

1. 从“一个队列”到“一堆队列”:Kafka分区到底是什么先聊聊我入坑分布式消息队列时的一个困惑。最开始用Kafka,我就把它当成一个高性能的消息管道:业务端把订单数据往Topic里一扔,下游服务启动消费者哗啦啦拉走。这个模型简单好…

2026/10/20 4:32:43 阅读更多 →

日新闻

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实现详解

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

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

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

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

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

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

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在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/19 2:54: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/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练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/18 12:16:16 阅读更多 →