参考资料:
YOLO之外的另一选择,手机端97FPS的Anchor-Free目标检测模型NanoDet现已开源~
1、什么是 Nanodet
Nanodet 是一个速度超快和轻量级的移动端 Anchor-free 目标检测模型,是基于 FCOS 模型进行轻量化改进而来的
2、Nanodet 跟其他模型的性能对比
华为 P30 上用 NCNN 移植跑 benchmark,一张图片仅需 10.23 毫秒,比 YoloV4-Tiny 快 3 倍,参数量小 6 倍,COCO mAP(05:0.95) 能够达到 20.6。而且模型权重文件仅有 1.8m
由此可见,Nanodet 能够在有较低参数量和较小的模型权重文件情况下,能够拥有跟 YoloV4-Tiny 一样的 mAP
3、Nanodet 的网络结构图
backbone 是 ShuffNetV2 1.0x,去掉最后一层的卷积层,并且抽取 8/16/32倍下采样率的特征输入到 PAN 中做多尺度的特征融合
4、Nanodet 相对于 FCOS 的改进
① 检测头
FCOS:共享检测头权重
Nanodet:不共享检测头,因为在移动端是使用 CPU 来进行计算的,共享检测头权重并不会对推理过程加速;共享检测头会使得其检测能力进一步下降
② 归一化方式
FCOS:使用 Group Normalization
Nanodet:使用 Batch Normalization 来取代 Group Normalization,因为后者虽然比前者有很多优点,但却有一个缺点:Batch Normalization 可以在推理时将其参数融入到卷积核中,节省这一步计算可以节省时间
③ 检测头大小
FCOS:检测头大小为 4 个 256 通道数的卷积核组为一个分支,因此边框回归和分类两个分支,则总共需要 8 个 256 通道数的卷积
Nanodet:将 4 个卷积核组减少为 2 个卷积核组。在通道数上将 256 维降低为 96 维。将边框回归和分类共享检测头,然后再切割成两份,分别去预测边框回归和分类。
④ FPN 层
FCOS:没有该模块
Nanodet:基于 FPN 改进为 PAN,原版的 FPN 在对高层特征图使用线性插值后,再使用 3*3 卷积。但是 Nanodet 去掉了 FPN 中线性插值后再使用的 3*3 卷积,只保留从骨干网络特征提取后的 1*1 卷积来进行特征通道维度的对齐。同时 FPN 只是在多层特征融合端使用了自上而下的特征融合,而 PAN 则不仅使用了自上而下的特征融合,而且还使用了自底向上的特征融合,使用的方法也是线性插值。
5、Nanodet 的算法步骤
6、Nanodet 的损失函数
7、Nanodet 的优点
① 速度快
② 模型参数权重文件小
8、Nanodet 的缺点
① mAP 不高