1. 项目概述:密度图上的最优传输最小化
在人群计数领域,密度图估计一直是核心方法之一。传统全监督方法依赖大量标注数据,而半监督学习通过利用未标注数据来降低标注成本。我们提出的"Optimal Transport Minimization: Crowd Localization on Density Maps for Semi-Supervised Counting"方法,创新性地将最优传输理论引入密度图回归框架,解决了三个关键问题:
- 如何准确定位人群分布(Crowd Localization)
- 如何构建标注与预测密度图之间的关联(Optimal Transport)
- 如何有效利用未标注数据(Semi-Supervised Counting)
核心突破点:将人群定位问题转化为密度图上的质量传输问题,通过最小化传输代价实现精确定位
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术原理深度解析
2.1 密度图回归基础框架
典型的人群计数流程包含:
- 输入图像 → 2. CNN特征提取 → 3. 密度图回归 → 4. 积分求和得到人数
传统监督学习的损失函数通常采用像素级MSE:
code复制L_sup = Σ(pred_ij - gt_ij)²
这种方法存在两个固有缺陷:
- 对标注误差敏感(标注点位置的微小偏移会导致密度图差异)
- 无法捕捉人群分布的全局结构特征
2.2 最优传输理论适配
我们将预测密度图(P)和真实密度图(Q)视为两个概率分布,定义传输代价矩阵C∈R^(m×n),其中c_ij表示从位置i到j的传输成本。最优传输问题表述为:
min_π Σc_ij π_ij
s.t. π1 = P, π^T1 = Q
其中π是传输计划矩阵。采用Sinkhorn迭代求解时,加入熵正则项:
code复制π = diag(u) K diag(v), K = exp(-C/ε)
2.3 半监督学习架构
整体网络架构包含三个关键组件:
python复制class OTCountingModel(nn.Module):
def __init__(self):
self.feature_extractor = VGG16_Backbone()
self.density_head = nn.Conv2d(512, 1, kernel_size=1)
self.ot_layer = SinkhornDistance(eps=0.1, max_iter=50)
def forward(self, x):
features = self.feature_extractor(x)
density = self.density_head(features)
return density
损失函数组合:
code复制L_total = λ1*L_ot + λ2*L_sup + λ3*L_consistency
3. 实现细节与优化技巧
3.1 代价矩阵设计
经过实验验证,采用混合代价矩阵效果最佳:
code复制C_ij = α*||x_i - x_j||^2 + β*|I(x_i) - I(x_j)|
其中:
- 前项控制空间距离成本
- 后项考虑像素强度差异
- 超参数推荐值:α=0.7, β=0.3
3.2 多尺度特征融合
为解决尺度变化问题,我们在特征提取阶段实现:
- 原始图像 → 多尺度金字塔(0.5x, 1x, 2x)
- 各尺度独立通过Backbone
- 特征对齐后concat融合
- 最后接1x1卷积输出密度图
3.3 半监督训练策略
采用渐进式伪标签策略:
- 初始阶段仅使用标注数据训练
- 每K个epoch后对未标注数据生成伪标签
- 设置置信度阈值τ=0.9过滤不可靠预测
- 动态调整λ3权重(线性增长)
4. 实验对比与性能分析
4.1 数据集配置
我们在三个主流基准测试:
- ShanghaiTech (PartA/B)
- UCF-QNRF
- NWPU-Crowd
采用标准划分:60%训练(其中30%作为标注集),20%验证,20%测试
4.2 评价指标
除常规的MAE、MSE外,新增:
- Localization Precision (LP@K): 前K个预测点的命中率
- OT Distance: 预测与真值的最优传输距离
4.3 结果对比
| 方法 | ShanghaiTechA-MAE | UCF-QNRF-MAE | LP@100 |
|---|---|---|---|
| MCNN | 110.2 | 277.0 | 0.62 |
| CSRNet | 68.2 | 119.2 | 0.71 |
| BL | 62.8 | 88.7 | 0.75 |
| Ours | 58.3 | 79.4 | 0.83 |
5. 实际应用中的关键问题
5.1 极端密集场景处理
当密度>10人/平方像素时,建议:
- 采用更高分辨率的输入(2048×2048)
- 增加Sinkhorn迭代次数至100
- 在代价矩阵中加入密度感知项
5.2 跨场景泛化
为提高模型泛化能力:
- 使用Style Transfer数据增强
- 在OT损失中加入域适应项
- 采用test-time adaptation策略
5.3 计算效率优化
实测在1080Ti上的优化方案:
- 将Sinkhorn计算移至GPU
- 采用近似最近邻搜索加速代价矩阵计算
- 使用混合精度训练
6. 扩展应用方向
本方法可迁移到:
- 车辆计数(调整代价矩阵中的尺度参数)
- 细胞显微镜图像分析(修改密度核函数)
- 零售客流量统计(加入时序信息)
重要发现:最优传输框架在密度估计任务中展现出比传统方法更强的几何保持能力,特别是在物体分布不均匀的场景下优势明显
