ConerNet是一种利用关键点对(目标box的左上角点和右下角点)来实现目标检测的深度学习算法。
其无需anchor,但也是一种one stage的方法。
几个关键点:
1. 神经网络的主干用 hourglass 网络
- CornerNet 用两个hourglass级联起来
- hourglass 的结构渐渐成为目标检测网络的主流
2. 对hourglass 网络输出的最后一层 feature maps 用 corner pooling
- Top-Left Poolong 用来检测左上角的角点。其为Top Pooling和Left Pooling之和
- Bottom-Right Pooling 用来检测右下角的角点。其为Bottom Pooling和Right Pooling之
- 不像SSD用了多层不同的feature map检测目标,CornerNet只利用了最后一层feature map
3. 做corner pooling后预测三部分:
- heatmap --> 用来定位corner
- embedding --> 用来确定corner是否属于同一个bounding box
- offset --> 用来提高corner定位精度
4. 三部分对应的损失函数:
- heatmap -- 用focal loss
- embedding -- 用 “pull” loss来组合相同bounding box的corner,用“push” loss来区分不同bounding box的corner
- offset -- 用 smooth L1 loss
5. 训练相关
- 用 pytorch框架
- 数据扩增的方法:
- andom horizontal flipping, random scaling, random cropping and random color
jittering - 对输入图像做PCA
- andom horizontal flipping, random scaling, random cropping and random color
- 用Adam优化器