Aptiv AOC:全球首个摄像头-only 乘员分类系统

Aptiv AOC:全球首个摄像头-only 乘员分类系统

发布时间: 2026-06-15
标签: 乘员分类, OOP, OMS, Aptiv, 摄像头检测, 安全气囊
来源: Aptiv 官方新闻, InCabin USA 2026


核心突破

2026年6月8日,Aptiv 发布 Advanced Occupancy Classification (AOC) 系统,这是全球首个仅依靠摄像头实现乘员检测的方案,替代传统座椅压力传感器,系统成本降低高达 40%


技术原理

1. 系统架构

graph LR
    A[车内摄像头] --> B[AI 模型推理]
    B --> C[乘员分类]
    B --> D[姿态识别]
    B --> E[位置检测]
    C --> F[安全气囊控制]
    D --> F
    E --> F
    F --> G[抑制/调整部署]

2. 核心检测能力

检测项 精度 应用场景
成人/儿童区分 100% (FMVSS 208) 安全气囊抑制
婴儿座椅检测 100% 前排气囊抑制
姿态识别 高精度 OOP 保护
座椅位置 高精度 气囊力度调整
朝向检测 高精度 分级部署

3. 算法实现

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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
"""
Aptiv AOC 乘员分类算法推导
基于公开信息的技术实现
"""

import numpy as np
import torch
import torch.nn as nn
from typing import Dict, Tuple, List

class OccupantClassifier(nn.Module):
"""
乘员分类网络

输入: 车内图像
输出: 乘员类别、姿态、位置
"""

def __init__(self, backbone: str = 'resnet50'):
super().__init__()

# 骨干网络(预训练)
self.backbone = self._build_backbone(backbone)

# 多任务头
self.classifier_head = nn.Sequential(
nn.Linear(2048, 512),
nn.ReLU(),
nn.Dropout(0.3),
nn.Linear(512, 5) # 5类: 成人/儿童/婴儿座椅/物体/空座
)

self.pose_head = nn.Sequential(
nn.Linear(2048, 256),
nn.ReLU(),
nn.Linear(256, 17) # 17个关键点 (x, y, visibility)
)

self.position_head = nn.Sequential(
nn.Linear(2048, 128),
nn.ReLU(),
nn.Linear(128, 3) # 座椅前后位置、高度、倾斜角度
)

self.orientation_head = nn.Sequential(
nn.Linear(2048, 64),
nn.ReLU(),
nn.Linear(64, 4) # 四个朝向类别
)

def _build_backbone(self, name: str) -> nn.Module:
"""构建骨干网络"""
if name == 'resnet50':
import torchvision.models as models
model = models.resnet50(pretrained=True)
return nn.Sequential(*list(model.children())[:-1])
else:
raise ValueError(f"Unsupported backbone: {name}")

def forward(self, x: torch.Tensor) -> Dict[str, torch.Tensor]:
"""
前向传播

Args:
x: 输入图像 (B, 3, H, W)

Returns:
outputs: 多任务输出字典
"""
# 特征提取
features = self.backbone(x)
features = features.view(features.size(0), -1)

# 多任务输出
outputs = {
'occupant_class': self.classifier_head(features),
'keypoints': self.pose_head(features),
'seat_position': self.position_head(features),
'orientation': self.orientation_head(features)
}

return outputs


class OOPDetector:
"""
Out-of-Position 检测器

判断乘员是否处于安全气囊危险区域
"""

def __init__(self, config: Dict):
# 安全气囊部署区域定义(车辆坐标系)
self.airbag_zones = {
'driver_frontal': {
'x_range': (-0.3, 0.3), # 左右
'y_range': (0.2, 0.6), # 前后
'z_range': (0.0, 0.4) # 高度
},
'passenger_frontal': {
'x_range': (-0.3, 0.3),
'y_range': (0.2, 0.6),
'z_range': (0.0, 0.4)
}
}

# 危险阈值
self.danger_threshold = config.get('danger_threshold', 0.3)

def check_oop(self,
keypoints: np.ndarray,
seat_position: np.ndarray,
occupant_class: int) -> Tuple[bool, str]:
"""
检查 Out-of-Position 状态

Args:
keypoints: 人体关键点 (17, 3) [x, y, conf]
seat_position: 座椅位置 [前后, 高度, 倾斜]
occupant_class: 乘员类别 (0=成人, 1=儿童, 2=婴儿座椅, 3=物体, 4=空座)

Returns:
is_oop: 是否处于 OOP 状态
oop_type: OOP 类型描述
"""
if occupant_class == 4: # 空座
return False, "empty"

if occupant_class == 3: # 物体
return False, "object"

# 提取头部位置(关键点索引 0: 鼻子)
head_pos = keypoints[0, :2]
head_conf = keypoints[0, 2]

if head_conf < 0.5:
return False, "low_confidence"

# 检查头部是否在气囊危险区域
# 这里简化为基于关键点位置判断
# 实际系统需要精确的 3D 坐标转换

# 检查前倾(OOP 典型姿态)
shoulder_left = keypoints[5, :2] # 左肩
shoulder_right = keypoints[6, :2] # 右肩
hip_left = keypoints[11, :2] # 左髋
hip_right = keypoints[12, :2] # 右髋

# 计算躯干倾斜角
shoulder_center = (shoulder_left + shoulder_right) / 2
hip_center = (hip_left + hip_right) / 2

trunk_vector = shoulder_center - hip_center
trunk_angle = np.arctan2(trunk_vector[0], trunk_vector[1])

# 前倾超过阈值
if abs(trunk_angle) > 0.5: # 约 28 度
return True, "forward_lean"

# 检查头部高度(对于儿童)
if occupant_class == 1: # 儿童
# 儿童头部位置相对于座椅
if head_pos[1] < 0.3: # 低于仪表板
return True, "child_low_position"

# 检查侧倾
if abs(shoulder_left[1] - shoulder_right[1]) > 0.2:
return True, "side_lean"

return False, "normal"

def get_airbag_action(self,
is_oop: bool,
occupant_class: int,
oop_type: str) -> Dict:
"""
获取安全气囊动作建议

Returns:
action: 动作字典
"""
action = {
'deploy': True,
'power_level': 1.0, # 0-1, 气囊展开力度
'reason': ''
}

if occupant_class == 2: # 婴儿座椅
action['deploy'] = False
action['reason'] = 'infant_seat_detected'
return action

if is_oop:
if oop_type == 'child_low_position':
action['deploy'] = False
action['reason'] = 'child_oop_risk'
elif oop_type == 'forward_lean':
action['power_level'] = 0.5 # 低功率部署
action['reason'] = 'forward_lean_oop'
elif oop_type == 'side_lean':
action['power_level'] = 0.3
action['reason'] = 'side_lean_oop'

return action


# 完整系统集成示例
class AOCSystem:
"""Aptiv AOC 完整系统"""

def __init__(self, config: Dict):
self.classifier = OccupantClassifier()
self.oop_detector = OOPDetector(config)

def process_frame(self, frame: np.ndarray) -> Dict:
"""
处理单帧图像

Args:
frame: 输入图像 (H, W, 3)

Returns:
result: 处理结果
"""
# 预处理
tensor = self._preprocess(frame)

# 模型推理
with torch.no_grad():
outputs = self.classifier(tensor)

# 解析结果
occupant_class = outputs['occupant_class'].argmax().item()
keypoints = outputs['keypoints'].cpu().numpy()[0].reshape(17, 3)
seat_position = outputs['seat_position'].cpu().numpy()[0]

# OOP 检测
is_oop, oop_type = self.oop_detector.check_oop(
keypoints, seat_position, occupant_class
)

# 气囊动作
airbag_action = self.oop_detector.get_airbag_action(
is_oop, occupant_class, oop_type
)

return {
'occupant_class': occupant_class,
'is_oop': is_oop,
'oop_type': oop_type,
'airbag_action': airbag_action,
'keypoints': keypoints,
'seat_position': seat_position
}

def _preprocess(self, frame: np.ndarray) -> torch.Tensor:
"""图像预处理"""
# Resize to 224x224
import cv2
resized = cv2.resize(frame, (224, 224))

# Normalize
normalized = resized.astype(np.float32) / 255.0
normalized = (normalized - [0.485, 0.456, 0.406]) / [0.229, 0.224, 0.225]

# To tensor
tensor = torch.from_numpy(normalized).permute(2, 0, 1).unsqueeze(0)

return tensor


# 测试示例
if __name__ == "__main__":
config = {'danger_threshold': 0.3}
system = AOCSystem(config)

# 模拟输入
dummy_frame = np.random.randint(0, 255, (480, 640, 3), dtype=np.uint8)
result = system.process_frame(dummy_frame)

print("=== AOC 系统输出 ===")
print(f"乘员类别: {result['occupant_class']}")
print(f"OOP 状态: {result['is_oop']}")
print(f"OOP 类型: {result['oop_type']}")
print(f"气囊动作: {result['airbag_action']}")

与传统方案对比

硬件架构对比

特性 传统压力传感器 Aptiv AOC
传感器数量 多个压力传感器 + 线束 单个车内摄像头
BOM 成本 基准 降低 40%
安装复杂度 需集成到座椅 无需座椅改装
座椅设计限制 需预留传感器空间 无限制
可扩展性 需新增硬件 OTA 升级

功能对比

功能 传统方案 AOC 方案
乘员检测 ✅ 压力阈值 ✅ 视觉识别
分类精度 ⚠️ 基于重量 ✅ AI 多特征
OOP 检测
姿态识别
座椅位置 ⚠️ 需额外传感器
额外功能 ✅ 15+ 功能

Euro NCAP OOP 合规性

2026 协议要求

Euro NCAP Safe Driving Occupant Monitoring Protocol v1.0 (2025年3月) 明确要求:

“Initially, the OoP cases are only assessed on the outboard front passenger’s seating position.”

OOP 检测场景

OOP 类型 描述 检测要求
前倾 头部靠近仪表板 检测头部位置
侧倾 身体偏向一侧 姿态估计
脚踏仪表板 腿部抬高 全身姿态
后向儿童座椅 前排安装婴儿座椅 婴儿座椅检测

AOC 合规策略

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
# Euro NCAP OOP 检测合规实现
class EuroNCAP_OOPCompliance:
"""Euro NCAP OOP 检测合规"""

def __init__(self):
# OOP 场景定义
self.oop_scenarios = {
'SCENARIO_1': {
'description': '乘员前倾,头部进入气囊区域',
'detection_criteria': 'head_position_y < threshold',
'action': 'suppress_airbag'
},
'SCENARIO_2': {
'description': '儿童在前排座椅',
'detection_criteria': 'occupant_class == CHILD',
'action': 'suppress_airbag'
},
'SCENARIO_3': {
'description': '后向儿童座椅在前排',
'detection_criteria': 'occupant_class == INFANT_SEAT',
'action': 'suppress_airbag'
}
}

def evaluate_compliance(self, detection_result: Dict) -> Dict:
"""
评估 Euro NCAP 合规性

Args:
detection_result: AOC 系统输出

Returns:
compliance: 合规性评估
"""
compliance = {
'is_compliant': True,
'scenarios_passed': [],
'scenarios_failed': []
}

# 检查各场景
for scenario_id, scenario in self.oop_scenarios.items():
passed = self._check_scenario(scenario, detection_result)
if passed:
compliance['scenarios_passed'].append(scenario_id)
else:
compliance['scenarios_failed'].append(scenario_id)
compliance['is_compliant'] = False

return compliance

def _check_scenario(self, scenario: Dict, result: Dict) -> bool:
"""检查单个场景"""
criteria = scenario['detection_criteria']

if 'head_position_y' in criteria:
return result['is_oop'] and 'forward_lean' in result['oop_type']
elif 'occupant_class == CHILD' in criteria:
return result['occupant_class'] == 1
elif 'occupant_class == INFANT_SEAT' in criteria:
return result['occupant_class'] == 2

return True

15+ 附加功能

Aptiv 声称单个摄像头可支持 15+ 附加功能

功能分类 功能列表
安全功能 安全带状态监控、驾驶员注意力追踪、离手检测、乘员姿态分析
舒适性 手势识别、情绪识别、温度偏好检测
交互功能 视线交互、面部识别解锁、个性化配置
车队管理 使用统计、行为分析、远程监控

IMS 开发启示

1. 技术路线规划

graph TD
    A[IMS 2.0 架构] --> B[感知层]
    A --> C[决策层]
    A --> D[执行层]
    
    B --> B1[摄像头选型]
    B --> B2[AI 模型优化]
    B --> B3[多传感器融合]
    
    B1 --> B1a[RGB-IR 双目]
    B1 --> B1b[全局快门]
    B1 --> B1c[宽动态范围]
    
    B2 --> B2a[轻量化骨干]
    B2 --> B2b[多任务学习]
    B2 --> B2c[边缘部署优化]

2. 传感器选型建议

参数 推荐值 原因
分辨率 ≥ 2MP 精细姿态检测
帧率 ≥ 30fps 实时响应
快门类型 全局快门 避免运动模糊
光谱 RGB + IR 夜间/墨镜场景
视场角 90-120° 覆盖前排乘员

3. 算法优化方向

优化方向 方法 预期收益
模型压缩 知识蒸馏 + 量化 推理速度 2x
多任务学习 共享骨干 + 专有头 内存节省 30%
在线学习 OTA 更新 + 用户反馈 持续提升精度

总结

Aptiv AOC 标志着乘员检测从传感器堆叠进入视觉智能时代。对于 IMS 开发:

  1. 架构简化:单摄像头替代多传感器
  2. 功能扩展:15+ 功能同传感器实现
  3. 成本优势:BOM 成本降低 40%
  4. 合规前瞻:原生支持 Euro NCAP OOP 要求

参考来源:


Aptiv AOC:全球首个摄像头-only 乘员分类系统
https://dapalm.com/2026/06/15/2026-06-15-Aptiv-AOC-Camera-Only-Occupant-Classification/
作者
Mars
发布于
2026年6月15日
许可协议