OASIS: 在线自适应视频压缩闭环控制系统——对IMS数据管道自适应压缩的启示
论文来源:arXiv:2609.15749 · 2026年9月14日 作者团队:OASIS研究组 核心方向:在线自适应压缩 · 闭环反馈控制 · 目标跟踪保持 · 压缩率动态调整
论文信息
项目
内容
论文标题
OASIS: Online Adaptive Video Compression via Closed-loop Feedback Control
arXiv
2609.15749
年份
2026
领域
eess.IV
核心贡献
首次将闭环反馈控制引入视频压缩,根据下游任务性能动态调整压缩率
核心创新 解决的问题 传统视频压缩使用开环策略 :设定固定码率/质量参数,不考虑压缩对下游任务的影响。
问题:
高压缩率 → 存储省,但目标跟踪精度下降
低压缩率 → 精度好,但存储/传输成本高
无法动态平衡
OASIS解决方案 将压缩视为闭环控制系统 :
压缩视频 → 发送给下游任务(跟踪/检测)
监控下游任务性能指标(跟踪精度、检测mAP)
性能下降 → 反馈 → 降低压缩率
性能充足 → 反馈 → 提高压缩率
graph LR
A[原始视频] --> B[压缩器<br/>可调参数]
B --> C[压缩视频]
C --> D[下游任务<br/>跟踪/检测]
D --> E[性能指标]
E --> F[反馈控制器]
F -->|调整参数| B
style F fill:#4a4,color:white
style B fill:#4a4,color:white
与Beamr ML-Safe的互补
特性
Beamr ML-Safe
OASIS
压缩方式
无损
有损+自适应
压缩率
固定47%
动态10-90%
ML影响
零损失
可控损失
反馈机制
无
闭环反馈
适用场景
测试数据存储
实时数据管道
互补性
高精度存储
高效率传输
方法详解 闭环反馈控制架构 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 import numpy as npclass OASISController : """ OASIS闭环反馈控制器 核心思想:PID控制器调整压缩参数 - 误差 = 目标性能 - 当前性能 - 比例项:误差大小 → 压缩率调整幅度 - 积分项:累积误差 → 消除稳态误差 - 微分项:误差变化率 → 预防超调 """ def __init__ (self, target_metric: float = 0.95 , kp: float = 0.5 , ki: float = 0.1 , kd: float = 0.05 ): self .target = target_metric self .kp = kp self .ki = ki self .kd = kd self .integral = 0 self .prev_error = 0 self .qp = 30 def update (self, current_metric: float ) -> int : """ 根据当前性能指标更新压缩参数 Args: current_metric: 当前下游任务性能(0-1) Returns: qp: 更新后的量化参数(1-51, 越大压缩越多) """ error = self .target - current_metric p_term = self .kp * error self .integral += error i_term = self .ki * self .integral d_term = self .kd * (error - self .prev_error) control = p_term + i_term + d_term self .qp = int (np.clip(self .qp - control * 10 , 1 , 51 )) self .prev_error = error return self .qpclass OASISCompressionPipeline : """ OASIS完整压缩管道 1. 压缩视频帧 2. 发送给下游任务 3. 收集性能指标 4. 闭环反馈调整压缩参数 """ def __init__ (self, target_metric: float = 0.95 ): self .controller = OASISController(target_metric) self .qp = 30 self .metrics_history = [] def compress_frame (self, frame: np.ndarray ) -> bytes : """用当前QP压缩帧""" quality = 51 - self .qp compressed_size = len (frame) * (0.1 + quality / 100 ) return b'\x00' * int (compressed_size) def run_pipeline (self, frames: list , downstream_task ): """ 运行完整管道 Args: frames: 视频帧列表 downstream_task: 下游任务函数 Returns: 压缩统计 """ total_original = 0 total_compressed = 0 for i, frame in enumerate (frames): compressed = self .compress_frame(frame) total_original += len (frame) total_compressed += len (compressed) metric = downstream_task(compressed) self .metrics_history.append(metric) if (i + 1 ) % 10 == 0 : avg_metric = np.mean(self .metrics_history[-10 :]) self .qp = self .controller.update(avg_metric) print (f"Frame {i+1 } : metric={avg_metric:.3 f} , " f"QP={self.qp} " ) compression_ratio = 1 - total_compressed / total_original return { 'compression_ratio' : compression_ratio, 'avg_metric' : np.mean(self .metrics_history), 'final_qp' : self .qp, }
实验结果 MOT20跟踪实验
方法
压缩率
跟踪MOTA
存储节省
适应时间
不压缩
0%
75.3%
0
-
固定QP=30
70%
72.1%
70%
-
固定QP=40
90%
65.5%
90%
-
OASIS
75%
74.8%
75%
~50帧
关键发现 :OASIS在75%压缩率下保持跟踪精度接近不压缩水平(74.8% vs 75.3%)。
IMS应用启示 1. DMS数据管道自适应压缩 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 class IMSAdaptiveCompression : """ 将OASIS应用于DMS数据管道 场景: 1. 日常驾驶:高压缩率(精度要求不高,省存储) 2. 危险事件:低压缩率(保留细节,供事后分析) 3. 测试验证:无损压缩(用Beamr ML-Safe) OASIS的闭环反馈: - PERCLOS计算精度 → 反馈 → 调整DMS视频压缩率 - 人脸检测成功率 → 反馈 → 调整压缩率 - 视线估计置信度 → 反馈 → 调整压缩率 """ def __init__ (self ): self .perclos_controller = OASISController(target_metric=0.95 ) self .face_controller = OASISController(target_metric=0.98 ) def process_dms_frame (self, frame, perclos_quality, face_quality ): """ 根据DMS算法性能动态调整压缩 Args: frame: DMS摄像头帧 perclos_quality: PERCLOS计算置信度 face_quality: 人脸检测置信度 Returns: compressed_frame + 新QP """ qp_perclos = self .perclos_controller.update(perclos_quality) qp_face = self .face_controller.update(face_quality) qp = min (qp_perclos, qp_face) compressed = self .compress_with_qp(frame, qp) return compressed, qp
2. 三级压缩策略
场景
压缩策略
压缩率
精度
用途
测试验证
Beamr ML-Safe无损
47%
100%
数据采集
日常驾驶
OASIS自适应
70-85%
95%
车端存储
事件触发
低压缩固定
30%
99%
事故分析
紧急上传
H.265高压缩
95%
80%
实时云传
3. 技术路线 graph LR
A[DMS Camera] --> B{场景判断}
B -->|日常| C[OASIS自适应压缩<br/>动态QP 30-40]
B -->|事件| D[低压缩<br/>固定QP 15]
B -->|测试| E[Beamr无损<br/>47%固定]
C --> F[车端存储]
D --> G[事件存储]
E --> H[云端存储]
测试代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 def test_oasis_controller (): """测试OASIS控制器""" controller = OASISController(target_metric=0.95 ) qp = controller.update(0.80 ) assert qp < 30 , "性能低时QP应降低" qp = controller.update(0.99 ) print (f"✓ 性能0.99时QP={qp} " )if __name__ == "__main__" : test_oasis_controller() print ("✓ OASIS测试通过" )
总结 OASIS的核心价值在于将控制论引入视频压缩 :
闭环反馈 :不是盲压缩,而是根据下游效果调整
动态平衡 :在存储和精度之间找到最优工作点
任务感知 :不同任务对压缩的敏感度不同
对IMS的启示 :
日常DMS数据用OASIS自适应压缩(省存储+保精度)
测试数据用Beamr ML-Safe无损压缩(保精度)
事件触发时降低压缩率(保细节)
三级策略最优平衡存储、精度和成本