树莓派5低功耗跑通多模态AI流水线:CNN+VLM+SLM实战
先泼一盆冷水想在树莓派5上跑一个“会看、会想、会说话”的完整AI工作负载很多人第一反应是“这板子没NPU不可能的”。我过去也这么想直到把观察CNN、理解VLM、响应SLM三层模型拆开部署到一台8GB的Raspberry Pi 5上用整机5瓦左右的功耗跑通了全链路。这篇文章就记录我是怎么选型、怎么搭流水线、怎么调低功耗以及在实测中踩过的所有坑给同样想在边缘设备上跑多模态AI的同学一份可以照着抄的作业。1. 先想清楚为什么非要在树莓派5上跑这三类模型1.1 这块板子的算力底子到底够不够树莓派5用的是BCM2712芯片四核Cortex-A76主频最高2.4GHz内存方面升级到了LPDDR4X峰值带宽大概在30GB/s以上比前代翻了一倍还多。虽然板子上没有专门的NPU但CPU自带的Armv8.2指令和GPU的Vulkan支持让我可以把很多AI算子压到比较舒服的区间。更关键的是它用的是统一内存架构CPU和GPU共用同一块内存不存在“显存不够还要拷贝数据”的问题这对跑小型语言模型非常友好。很多人会拿它和带专用AI加速模块的小主机对比那类设备跑大模型的峰值性能确实更高但代价是功耗通常上到15瓦甚至更高体积和价格也完全不同。树莓派5的优势恰好是低功耗加通用性整机待机2瓦多跑满也就8瓦左右用充电宝即可供电。换句话说我做这套东西的目标不是“压榨极限算力”而是找到一个“7×24小时开着也不心疼电费”的常驻推理节点。1.2 观察、理解、响应为什么要拆成三层标题里这六个字不是随便排列的它反映的是一条合理的端侧智能流水线观察层用CNN做快速感知摄像头每一帧都过一遍完成目标检测或分类开销小、速度快适合常开。理解层用VLM做语义分析它只处理那些被CNN标记为“关键帧”的画面回答“画面里发生了什么”这一步比较贵所以不能次次都调。响应层用SLM做自然语言输出把VLM的语义描述组织成一句人话或者转换成可执行的动作指令比如开灯、发出提醒、送上一条日志。我最早也想直接让一个大模型“全包”后来实测发现一个多模态模型每处理一帧画面都要把视觉编码器和语言模型同时跑一遍功耗和内存都扛不住。分层的核心价值在于门控大部分时间系统只处于“观察层”的低功耗状态只有真正需要时才唤醒后面的重负载模块。这一设计思路直接决定了整套系统能否长时间稳定运行。2. 观察层用CNN做真正的“哨兵”2.1 目标不是模型越准越好而是够用加省电在树莓派5上CNN的选择空间其实挺大但每个选择都有取舍。实测下来我倾向于把任务拆成两类如果做场景分类就选MobileNetV3-Small的INT8量化版如果做目标检测就选轻量版YOLO模型并且把输入分辨率压到320×320。为什么强调INT8量化因为树莓派5没有专门的INT8推理引擎但CPU上的量化内核比FP32快太多尤其这类1到5MB的小模型量化后跑起来几乎没有内存压力。我用的是TFLite格式一张MobileNetV3-Small量化模型跑一帧224×224的图像CPU全核推理大概40到80毫秒同样的模型用FP32差不多要120毫秒以上功耗还高。树莓派5最怕的不是慢而是“CPU长时间占满不释放”所以选择小模型的意义不只是快更是省电。2.2 tflite-runtime部署实操别装完整TensorFlow我知道很多人一开始都会跳进“sudo pip install tensorflow”这个坑。在树莓派上完整版TensorFlow不仅体积巨大还容易和系统Python环境冲突装完就把系统搞乱。我的建议是用虚拟环境加轻量运行时步骤如下sudo apt update sudo apt install -y python3-venv python3-pip python3 -m venv ~/edge-ai source ~/edge-ai/bin/activate pip install tflite-runtimetflite-runtime的wheel在树莓派的arm64架构上有预编译包只包含推理执行器不包含训练部分安装后占用很小。装完后拉一个标准模型文件放到工作目录写一个推理脚本import time import numpy as np from tflite_runtime.interpreter import Interpreter interpreter Interpreter(model_pathmobilenet_v3_small_224_int8.tflite, num_threads4) interpreter.allocate_tensors() input_details interpreter.get_input_details() output_details interpreter.get_output_details() # 假设你已经用摄像头拿到一帧图像并且做了resize和归一化 # input_data的shape为(1, 224, 224, 3)dtype为uint8或float32 interpreter.set_tensor(input_details[0][index], input_data) start time.perf_counter() interpreter.invoke() latency_ms (time.perf_counter() - start) * 1000 print(finference latency: {latency_ms:.1f} ms)这里有个容易踩的坑就是num_threads不要盲目填满四核。如果后续VLM和SLM也需要在同一台设备上跑CNN占满所有核心会导致其他进程调度延迟所以我的做法是把CNN的线程数限制在3以内给系统留一个核处理I/O和调度。还有量化模型对输入数据的预处理要求很严格有的模型要求uint8直接输入有的要求先做标准化务必看清楚模型的输入描述否则推理结果会莫名其妙地偏差很大。2.3 观察层的实测功耗数据我用手头的USB功率计测了整机功耗不含显示器数据比较有代表性状态整机功耗CPU温度说明空闲待机2.5W左右45℃关闭WiFi只保留系统后台MobileNet循环推理4.8W左右53℃每帧约60msYOLO轻量检测6.2W左右62℃每帧约280ms分辨率320×320这个功耗表现说明CNN作为常开的观察层完全可行。4.8瓦的功耗换来每秒15帧左右的实时分类可以用“哨兵模式”一直守着摄像头完全不心疼电费。3. 理解层VLM让设备真正“看懂”画面3.1 为什么VLM难跑但树莓派5能扛住VLM视觉语言模型的难点在于它要把图像编码成视觉token再和文本token一起丢进语言模型做注意力计算。图像token的数量动辄几百个加上语言模型的参数规模内存占用和算力需求都比纯CNN高一个数量级。树莓派5能跑的核心原因有两个一是内存带宽够用二是量化后的模型足够小。我推荐用1.5B到3B量级的轻量级视觉语言模型这类模型经过4bit量化后权重占用通常只有1GB左右8GB版本的树莓派5完全塞得下。推理时模型一次前向计算需要把全部权重从内存里过一遍内存带宽越高的设备生成速度越快这也是为什么树莓派5比前代体验好很多。3.2 用Ollama快速整合VLM模型我选择用Ollama作为模型运行层原因是它对多模态模型的支持比较直接同时也支持后面响应层的文本模型一条命令就能管理两台“模型服务”。安装可以在树莓派5上用官方脚本一行搞定脚本是给64位Linux用的arm64也在支持范围内装完把用户加入ollama组并重启服务。把视觉语言模型拉下来后运行方式很简单ollama run moondream 描述这张图片: /path/to/image.jpg但实际工作流里我不会手动敲命令行而是用Python的requests库调用Ollama的本地APIimport base64 import requests with open(frame.jpg, rb) as f: img_b64 base64.b64encode(f.read()).decode() payload { model: moondream, prompt: 用一句话说明画面里发生了什么不要列举细节。, images: [img_b64], stream: False, options: { temperature: 0.1, num_predict: 64 } } resp requests.post(http://localhost:11434/api/generate, jsonpayload) result resp.json() print(result[response])这里的提示词设计很关键。VLM模型越小越不适合让它自由发挥把生成长度限制在64个token以内明确要求“一句话说明”既能减少计算量也能让结果更稳定。实测下来一个2B级别的视觉语言模型在树莓派5上处理单张图像的视觉编码部分大约需要几百毫秒首token延迟在3到8秒之间生成速度大概是每秒5到10个token。这个速度单独看很慢但在门控机制下它每天只需处理几十到几百个关键帧平均负载完全可控。3.3 理解层的内存占用与控制策略VLM最让人头疼的是内存。一个量化VLM加载后占1.5GB到2.5GB再加上系统、Python进程、摄像头流8GB版本压力已经不算小4GB版本则基本没有余量。我的建议是如果预算允许直接上8GB版本如果手里只有4GB那么必须把CNN和VLM错开调度或者选择更激进的量化方案。另外不要把VLM常驻内存。Ollama有内置的模型管理策略通过环境变量可以控制模型在内存中的保留数量。我的设置是这样的export OLLAMA_MAX_LOADED_MODELS1 export OLLAMA_NUM_PARALLEL1这两行设置的意思是同一时间只保留一个模型、只处理一个请求避免多个模型同时驻留导致内存溢出。代价是不同层切换时需要重新加载模型会慢十几秒但对于“哨兵”型工作负载来说重新加载时间远小于唤醒频率可以接受。4. 响应层SLM把语义变成可读、可执行的结果4.1 有了VLM为什么还需要单独的SLM有个问题我一开始也犯嘀咕VLM已经能输出文字了何必再让一个单独的文本模型跑一遍实测发现VLM每次生成都会伴随图像输入如果你已经得到了“描述”而后续要做的是翻译成控制指令或者生成一份文本通知再让VLM去处理等于重复付了视觉编码的代价。SLM小型语言模型只处理文本加载体积和推理开销都比VLM小。在树莓派5上我尝试过几类常见的小型开源模型从更轻量的0.5B级模型到2B到3B级别的模型量化后效果都不错。0.5B到1.5B级别的模型在四核CPU上能跑出每秒15到30个token2B级别大概每秒8到15个token。对于提醒类、指令类任务这个速度已经足够。4.2 用Ollama把SLM跑起来并接入流水线响应层的部署和VLM一样都是Ollama管理。额外需要注意的只有两个参数上下文长度和并发数。ollama run qwen2.5:1.5b 你好请用一句话说明门前有一只猫在等待。在代码里调用时我会把VLM的输出直接拼进SLM的prompt并加上明确的约束。比如prompt f 你是一个本地智能助手。根据以下画面描述生成不超过一句话的提示或动作建议。 不要解释不要列清单。 画面描述{vlm_description} 这里的经验是给SLM的指令越具体越好。不要让它“自由发挥”否则它会在树莓派上花几十秒生成一堆无用的客套话。生成长度限制在64到128个token以内温度调到0.2以下结果稳定性和速度都会好很多。实测同一个1.5B模型无约束生成128个token要十几秒限制到64个token后基本五六秒内完成用户体验完全不一样。4.3 从“输出文字”到“执行动作”如果流水线到“生成一句话”就停了那只是半成品。我更推荐把SLM的输出接一个简单的路由层判断结果里是否包含唤醒词或动作词然后映射到GPIO或屏幕操作。response result[response] if 开灯 in response or 打开灯光 in response: gpio_control(light, True) elif 关灯 in response: gpio_control(light, False) elif 提醒 in response: send_notification(response)这段逻辑很直白但它真正实现了标题里的“响应”。从摄像头画面到最终推动一个物理动作闭环拉通。至于更复杂的function calling我也在1.5B小模型上试过能跑但稳定性不如关键词路由毕竟小模型的指令跟随能力有上限。如果只是做家庭或实验室的固定场景关键词路由反而是最稳的。5. 三合一流水线工程实现与低功耗调优5.1 主循环怎么设计把三个模型串起来关键在于调度顺序。我画了一个很简单的逻辑不需要复杂框架一个Python进程就能搞定摄像头以低分辨率连续读帧默认只做CNN。CNN输出置信度超过阈值或者检测框数量发生变化就把当前帧标记为关键帧。关键帧被送入VLM得到一句话语义描述。语义描述送入SLM生成响应文本。路由层根据响应文本决定是否触发GPIO或通知。对应的主循环伪代码如下while True: frame camera.read() event cnn_observe(frame) if event.is_significant(): description vlm_understand(frame) response slm_respond(description) action_router(response) time.sleep(0.1)这个设计的好处是CNN层每秒跑10次VLM和SLM可能几分钟才跑一次整体功耗曲线呈现“大部分时间很平缓、偶尔尖峰”的形态非常符合低功耗设备的工作特性。5.2 内存管理才是真正的工程难题我把整个系统的内存占用列了一张表方便直观理解模块预估占用操作系统Python环境约1.2GB摄像头采集与缓冲约100MBCNN模型及运行约200MBVLM模型4bit量化约1.5GB到2.5GBSLM模型4bit量化约0.5GB到1.5GB如果所有模块常驻8GB版本勉强够4GB版本必爆。我的解决方案是分时切换默认情况下只常驻CNN和SLMVLM用oclient加载到独立进程按需启动。切换时丢弃旧模型的内存页必要时用gc.collect()和torch.cuda.empty_cache()的CPU等价操作但最有效的还是控制Ollama同时只加载一个模型。还有一个容易被忽略的点交换分区。我会给系统增加一个2GB的swapfile不是为了真正替代内存而是防止模型加载瞬间的内存尖峰直接触发OOM killer。实测加完swap后瞬时峰值内存可以平稳过渡。5.3 低功耗配置从硬件到软件一起“压榨”功耗的来源主要是CPU、内存、无线模块和USB外设。想把这个系统做到长时间运行我从四个方向做了优化。频率调节树莓派5在默认调度下主频会频繁飙到2.4GHz功耗和温度随之升高。我通过cpufreq工具把CPU频率锁在1.8GHz性能损失不到10%功耗能降25%左右。无线模块如果不需要远程访问直接关掉WiFi和蓝牙如果需要远程查看就只保留WiFi蓝牙一定要关。摄像头配置不要贪高分辨率。640×480分辨率对CNN分类和多数轻量级检测已经足够VLM的视觉编码器也会把图像缩到固定尺寸高分辨率只会增加采集和传输开销。线程数控制CNN只用3个核Ollama的num_threads设置为3到4、num_parallel保持1防止CPU满负荷运转导致主动散热风扇疯狂转。做好这些调整后我实测了一个完整的24小时运行场景系统大部分时间处于CNN哨兵状态功耗在4到5瓦附近每次唤醒VLM和SLM时短暂升到7到8瓦然后回落。图表的尖峰很密集但不持续平均下来一天的能耗在120Wh左右这个数字用一块普通充电宝都能撑大半天。6. 常见问题与排查技巧实录6.1 软件依赖装不上先说说tflite-runtime这个包。树莓派官方推荐的环境是64位Bookworm如果你的系统还是老旧的32位版本这个包可能装不上或者装上后无法识别模型。遇到类似问题第一件事检查系统架构uname -m如果不是aarch64建议直接重刷64位系统。另一个坑是Python版本官方wheel对3.11和3.12支持都正常但如果用系统自带的pip不带--break-system-packages在Bookworm上会报错。我的建议是永远用venv不要和系统Python混用。6.2 推理时内存溢出最典型的故障是模型加载时报错“Cannot allocate memory”。出现这个问题的位置通常是VLM加载瞬间。排查思路分三步先free -h看内存现状再用ps aux | grep ollama确认是否有残留模型进程最后检查swap设置。注意不要同时加载两个大模型。如果已经OOM最快的办法是重启Ollama服务不给进程慢慢释放的机会。6.3 温度过高导致推理速度骤降树莓派5的风扇策略很激进负载一高风扇就开始转。如果你发现VLM生成速度从每秒8个token突然掉到每秒3个多半是CPU降频了。用vcgencmd measure_temp看温度超过80℃就明显降频了。解决方案不只是散热更要从负载下手把num_threads调低一个或者把输入图像尺寸再降一档比换个更大的散热器更有效。6.4 摄像头帧率不稳我遇到过摄像头偶尔丢帧、推理进程堵塞的情况。后来发现是Python的采集线程和推理线程都在GIL里抢锁。解决方法是用multiprocessing把采集和推理分开或者直接改用libcamera的工具基于硬件缓冲区推流。如果你只是做原型验证最省事的做法是把摄像头帧率固定为10fps给推理留足时间。6.5 看门人与systemd如果这是台要长期无人值守的设备我强烈建议把三个模型服务分别写成systemd单元开启自动重启[Unit] DescriptionEdge AI Pipeline Afternetwork-online.target ollama.service [Service] ExecStart/home/user/edge-ai/bin/python /home/user/pipeline.py Restartalways RestartSec10 Useruser这样做的好处是就算某个模型进程因为内存尖峰崩溃整个服务会在10秒内自动拉起来不用半夜爬起来手动重启。7. 这套系统后续还能怎么折腾给想继续深入的同学几个明确的方向。一是把VLM的视觉编码器和SLM的生成阶段解耦做成流式输出模式实现“边看边想边答”这在树莓派5上也能勉强跑通。二是接入一个外接AI加速模块通过USB或者PCIe接口给板子提供额外的算力CNN层可以直接交给加速器CPU只负责VLM和SLM调度整体延迟会下降一个台阶。三是把SLM的输出升级成结构化JSON比如固定的“动作参数”协议这样触发功能就不需要关键词匹配了扩展性更好。我个人在实际操作中的体会是边缘AI项目最忌讳一上来就追求“大而全”。先让观察层稳定跑起来哪怕只有CNN在转整个系统已经比传统传感器“有脑子”了再逐步加理解层、响应层每一步都能单独验证。树莓派5这样的设备定位就是“轻量但不简单”别拿它和GPU服务器比把它放在“7×24小时低功耗值守”的赛道上它就是很能打的那一个。

相关新闻

门禁协议开放:MQTT与API如何重塑设备对接生态

门禁协议开放:MQTT与API如何重塑设备对接生态

/* 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 20:06:14 阅读更多 →
流水线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/14 20:06:14 阅读更多 →
U-Net论文笔记:编码-解码结构与跳跃连接在医学图像分割中的应用

U-Net论文笔记:编码-解码结构与跳跃连接在医学图像分割中的应用

/* 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 20:05:13 阅读更多 →

最新新闻

3天从85%降到20%!这3个降AIGC平台让我导师直夸原创

3天从85%降到20%!这3个降AIGC平台让我导师直夸原创

还记得上周三凌晨两点,当我第三次收到知网AIGC检测报告时,手心都在冒汗——85%的AI相似度,40%的查重率,这意味着我的毕业论文根本达不到盲审要求。导师直接在我的初稿上批注“学术合规性存疑,建议重写”,那…

2026/10/14 20:50:15 阅读更多 →
Simple Live跨平台播放实现:media_kit与mpv的清晰度、硬件解码策略

Simple Live跨平台播放实现:media_kit与mpv的清晰度、硬件解码策略

【免费下载链接】dart_simple_live 简简单单的看直播(SimpleLive续) 项目地址: https://gitcode.com/gh_mirrors/dart/dart_simple_live 点击查看 免费下载 Simple Live(simple_live_app)是一款"简简单单看直播&…

2026/10/14 20:50:15 阅读更多 →
自考论文降AI率工具实测:8款改写器对比与避坑指南

自考论文降AI率工具实测:8款改写器对比与避坑指南

我上个月帮一位考友改了篇自考本科毕业论文,过学校查重平台后跳出一行小字:“疑似AI生成内容占比偏高”,把人吓够呛,但那篇文章确实是他自己一个字一个字敲出来的。这绝不是个例。2026年自考季临近,找我咨询降AI率工具…

2026/10/14 20:50:15 阅读更多 →
AI配音如何处理多音字?文字转语音发音错误的解决方法

AI配音如何处理多音字?文字转语音发音错误的解决方法

使用AI配音制作视频时,有些句子看起来没有问题,生成语音后却会出现读音错误。尤其是多音字、人名、地名和专业术语,即使上下文明确,语音合成也不一定能准确判断。如果旁白中出现错误发音,不仅影响听感,还可…

2026/10/14 20:50:15 阅读更多 →
智慧校园供应商考察报告怎么写?关键要素与评估标准全解析

智慧校园供应商考察报告怎么写?关键要素与评估标准全解析

去年帮一所高校做智慧校园数据中台的选型,前后面谈了六家供应商,每家都拍着胸脯说自家平台架构先进、接口开放、实施经验丰富。可等到考察报告写完、提交评审会的时候,我心里清楚,六家里面至少有两家在“先进架构”四个字上掺了水…

2026/10/14 20:50:15 阅读更多 →
yolov8-face 核心算子全解析:NMS、边界框格式转换与掩码处理的源码级指南

yolov8-face 核心算子全解析:NMS、边界框格式转换与掩码处理的源码级指南

人工智能计算机视觉深度学习 【免费下载链接】yolov8-face yolov8 face detection with landmark 项目地址: https://gitcode.com/gh_mirrors/yo/yolov8-face 点击查看 免费下载 本文是 ops.md 参考文档的深度展开,以 ultralytics/yolo/utils/ops.py 为…

2026/10/14 20:49:14 阅读更多 →

日新闻

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/14 16:30:29 阅读更多 →
影刀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 阅读更多 →