当你的甲方设备过烂,要如何快速出效果?

副标题:整理资料时的灵机一动------HSV 能不能当 YOLO 的兜底?

摘要 :上篇 标准交付 走 YOLO 伪流;本篇讲我整理 Step 6 资料时突然想通的一件事:既然 HSV 本来就能做 mask、做染色,滤镜栈又已经拆好了,能不能整条链只换 mask 引擎、不训模型也上浏览器 demo? 2026-06-25 试完:本片肉眼与 YOLO 无差,略卡可优化,代码 + 少量手工取色 能扛很多事------YOLO 训练成本高,HSV 不必 universal 平替,作兜底策略够用了。


0. 灵机一动:视频流到底怎么加滤镜?

这篇不是先想「甲方盒子烂怎么办」,是整理资料时拐出来的

上篇把链路跑通之后,我开始啃 Step 6:视频流上到底怎么加滤镜? 理了一遍,心里模型其实不复杂:

text 复制代码
go2rtc 播原片(test)
    → Python 读帧
    → 每隔 N 帧算一次 mask(YOLO)
    → 中间帧复用上一张 mask
    → unified 调色
    → ffmpeg 推回 go2rtc(test_blue)
    → 浏览器里看「更蓝」的那路

默认 每 5 帧 才让 YOLO 做一次分割------不是偷懒,是真 GPU 扛不住每帧推理;海天在 25fps 里动得没那么快,复用 mask 肉眼能接受。

然后问题就来了:中篇花大力气调的 HSV 五道门 ,本来就能出 mask、出 overlay、做单帧染色------伪标注工厂 也是它。既然伪流这条链上,重的只是「mask 从哪来」,滤镜 sky_filter_core 两边共用......

那能不能做一个更便宜的方案?不训模型,六点 + JSON 直接上伪流?

2026-06-25 写了 run_sky_filter_stream_hsv.py,浏览器里并排 test_bluetest_blue_hsv。结论下文说------方向值得试,而且本片试成了。


1. 伪视频流怎么搭:换引擎,不换滤镜

整条链和 YOLO 版对称,只换 mask 函数:

text 复制代码
go2rtc test(原片 RTSP)
    → Python 读帧
    → mask:YOLO sky-seg.pt  OR  HSV A+B′
    → sky_filter_core · unified 调色
    → ffmpeg RTSP publish → test_blue / test_blue_hsv
换什么 不改什么
mask 脚本(run_sky_filter_stream.py vs _hsv.py sky_filter_core 调色参数
go2rtc 输出流名 读帧 / 推流 / 跳帧复用逻辑
--input 源地址 换真摄像头 RTSP 只改 source

test 是 go2rtc 自己循环播 mp4 的原片;test_blue / test_blue_hsv 是 Python 处理完 推回去 的滤镜流------不是 go2rtc 里跑模型。

接真视频也一样:把 --input 改成摄像头或平台的 RTSP,mask 和滤镜循环不变。上篇验的是「滤镜对不对」,这篇验的是「mask 引擎能不能换便宜的」。


2. 跑起来会踩什么坑

伪流第一次搭,卡的不在算法,在链路

怎么回事
go2rtc.yaml 加了 test_blue_hsv: [] 但推流被拒 go2rtc 要 docker compose restart,不然 ffmpeg 管道反复断
mp4 循环读 test 时 h264 / RTP 警告 YOLO 和 HSV 都有,不是算力崩了,demo 可忽略
浏览器只看到 test 没有蓝的那路 先确认 Python 脚本在跑、终端有 fps effective 输出

细节命令沉仓库:playbook/08-HSV平替伪流.mdscripts/hsv_sky_mask.py。正文记住一句:原片一路、滤镜一路,Python 夹在中间当滤镜工人。


3. 有点卡,但效果是有的

跑通之后第一观感:HSV 版比 YOLO 版略慢、略顿 ------不是滤镜没染上天,是出画速率跟不上。

原因不神秘:

YOLO test_blue HSV test_blue_hsv
mask 怎么算 5 帧 GPU 推理一次 默认每帧 CPU 跑完整五道门
重的环节 推理跳帧后甩给 GPU 解码 + inRange + morph + 海天 + B′ + 编码 全挤 CPU
本片实测 ~22 fps effective ~14--15 fpsmask-every=5 对齐后)

HSV 不是算法不行,是默认更拼 CPU 。海天动得慢,--mask-every 5 跳帧复用 mask 和 YOLO 公平------浏览器会顺一截。再往下还有编码参数、分辨率可以抠,demo 够用先交差,流畅度后面优化

左原右滤 · 离线验收截帧;伪流并排未录,肉眼结论:天变蓝了,HSV/YOLO 本片看不出差别


4. 本片:HSV 跟 YOLO 没有任何区别

这是实验里最重要的一句:同片、同 unified 滤镜、mask 引擎不同------我肉眼分不出来。

没录 test_blue vs test_blue_hsv 并排视频,图也不硬补;compare.jpg 左原右滤,效果验收够了。要抠数字,成本表在这:

维度 HSV(五道门) YOLOv8n-seg
训练 无(六点 + JSON) 32 帧伪标注训 1 次
推理硬件 纯 CPU GPU 强烈建议
本片伪流 fps ~14--15 ~22
换片 可能要重调六点 训好后相对省心

所以本片语境下说 「平替」 不过分------不是吹牛说 HSV 永远替代 YOLO,是这片海岸固定机位、六点已锁的前提下,交付画面可以一样蓝。


5. 实验结论:代码 + 少量手工标注,能扛很多事

三条我想留下来的判断:

  1. mask 不必一上来就神经网络。 六点取色 + 中篇那套海天规则 + 一点手抠 exclude,代码能跑出能用的 mask;HSV 先是学习工具、伪标注工厂,后验成运行时选项------Step 2 没白做两次。

  2. YOLO 训练成本高 (标数据、训 seg、部署权重、吃 GPU)。有算力、要泛化,上 YOLO;边缘盒子、现场只给 CPU、demo 赶时间------HSV fallback 滤镜栈不动,只换 mask 脚本,是实实在在的退路。

  3. 就算不叫平替,也叫兜底。 不必 over-promise「换片零成本」;换海天差很大的片,仍可能要重调六点或重训 seg。但在已调参场景 里,HSV 与 YOLO 肉眼无差、略卡可优化------够交差,够 demo,够面试讲一条对称架构。

text 复制代码
离线 mp4 验参数,伪流验链路:
go2rtc → mask(YOLO|HSV) → unified → WebRTC
有 GPU 上 YOLO;没 GPU 上 HSV + mask-every 跳帧。

6. 系列导航

内容
上篇 · 甲方吐槽天不够蓝 全流程速通
中篇 · 海天线前世今生 六点 + 海天线
本篇 HSV 伪流兜底
相关推荐
Warson_L1 小时前
LangGraph的MessageState and HumanMessage
python
韩师傅2 小时前
当你的甲方吐槽天空不够蓝,你应该如何应对
python·计算机视觉
Warson_L2 小时前
python的类&继承
python
Warson_L2 小时前
类型标注/type annotation
python
ThreeS5 小时前
手搓MiniVLA全实战教程-一步一步用pytorch解释原理与思路
人工智能·python
金銀銅鐵6 小时前
[Python] 模 n 乘法的逆元计算器
python·数学·游戏
aqi007 小时前
15天学会AI应用开发(十)把文本嵌入模型换成国产模型
人工智能·python·ai编程
金銀銅鐵1 天前
[Python] 扩展欧几里得算法
python·数学·算法