第5名解决方案(部分)
第5名解决方案(部分)
作者:4ui_iurz1 | 比赛排名:第5名
恭喜所有的参赛者!
感谢整个团队 @erniechiew 和 @css919 的通力合作!
关于解决方案的另一部分,请参阅 此处讨论。
代码地址:
https://github.com/4uiiurz1/kaggle-pku-autonomous-driving
我的方法基于 CenterNet。
检测头
- 热力图 [1]
- xy 偏移量 [2]
- z (深度) [1]
- 姿态 [6]: cos(yaw), sin(yaw), cos(pitch), sin(pitch), cos(roll), sin(roll)
- 宽高 [2]: 这不用于预测,但作为辅助任务学习它提高了 PublicLB 的分数。
热力图的损失函数是 Focal Loss,其他的是 L1Loss。wh loss 的权重是 0.05。在计算损失时,掩膜图像的掩膜区域被忽略。
网络架构
增加输入尺寸非常有效,mAP 显著提高。
我尝试了更深的网络 (ResNet34, 50),但没有效果。
数据增强
- HFlip (p=0.5): 水平翻转图像,且
yaw *= -1, roll *= -1。
- RandomShift (p=0.5, limit=0.1): 平移图像和位置。
- RandomScale (p=0.5, limit=0.1): 缩放图像和位置。
- RandomHueSaturationValue (p=0.5, hue_limit=20)
- RandomBrightness (p=0.5, limit=0.2)
- RandomContrast (p=0.5, limit=0.2)
训练
- 优化器: RAdam
- 学习率调度器: CosineAnnealingLR (lr=1e-3 -> 1e-5)
- 50个 Epochs
- 5折交叉验证
- Batch size: 4
后处理
- 通过将热力图乘以掩膜,从预测中移除掩膜区域。
- NMS (距离阈值: 0.1): 我不确定这有多有效...
- 使用 imagehash 查找重复图像并进行集成。PublicLB 略有提高。
- 分数阈值: 0.3 (用于验证集 mAP: 0.1)
模型集成
通过平均原始输出图,集成每一折的模型和两个模型 (ResNet18, DLA34)。
分数总结
| 模型 |
验证集 mAP (tito's script) |
PublicLB |
PrivateLB |
| ResNet18 + FPN |
0.257224305900695 |
0.118 |
0.109 |
| DLA34 + FPN |