CenterNet极简的网络结构,CenterNet只通过FCN(全卷积)的方法实现了对于目标的检测与分类,无需anchor与nms等复杂的操作高效的同时精度也不差。同时也可以很将此结构简单的修改就可以应用到人体姿态估计与三维目标检测之中。
后面一些针对CenterNet结构应用于其他任务,也取得不错的效果,比如人脸检测CenterFace以及目标追踪CenterTrack与FairMot。
YoloV3网络的特点是速度快,精度不是很高,常用于实际的检测项目中,实现实时检测识别。相较于二阶段(two stage)的Faster Rcnn具备速度优势,相较于单阶段(one stage)的SSD(Single Shot Detection)与RetinaNet有速度与精度的优势。
针对上述情况,笔者打算做一下对比实验,测试在相同的硬件与环境的条件下,来测试CenterNet与YoloV3的精度与速度的测试,其实为了简化实验,这里只测试在相同尺寸下CenterNet与YoloV3的速度对比,精度以文章的内容为准。
1.实验条件
为了读者能认可与方便复现笔者的结果,这里列出实验的硬件与环境:
系统:Ubuntu 18.04.4 LTS
CPU:Intel® Core™ i5-9400F CPU @ 2.90GHz × 6
GPU:GeForce RTX 2060 SUPER/PCIe/SSE2
Cuda:10.1
Pytorch:1.5.0
实验参考开源:
CenterNet:https://github.com/xingyizhou/CenterNet
YoloV3:https://github.com/ultralytics/yolov3
4.实验总结
CenterNet vs YoloV3速度 模型推理耗时
模型\尺寸 | 320 | 512 | 800 | 1024 |
YoloV3-spp-ultralytics | 12ms | 20ms | 40ms | 50ms |
CenterNet-DLA-34 | 16ms | 20ms | 41ms | 53ms |
CenterNet vs YoloV3速度 模型推理/整体耗时
模型\尺寸 | 640模型 | 640整体 | 1280模型 | 1280整体 |
YoloV3-spp-ultralytics | 26ms | 64ms | 77ms | 124ms |
CenterNet-DLA-34 | 27ms | 50ms | 78ms | 115ms |
CenterNet vs YoloV3速度 模型大小/内存消耗
模型\资源 | 模型体积 | 1280尺寸内存占用 |
YoloV3-spp-ultralytics | 252.3 MB (252,297,867 字节) | 1.7G |
CenterNet-DLA-34 | 80.9 MB (80,911,783 字节) | 1.2G |
速度与资源依据,笔者亲测结果,欢迎复现质疑
模型\尺寸 | 512 |
YoloV3 | 32.7 map |
YoloV3-spp | 35.6 map |
YoloV3-spp-ultralytics | 42.6 map |
CenterNet-DLA-34 | 37.4 map |
结论如下:
单纯看模型推理速度方面,CenterNet-DLA-34 在不同尺度下均比YoloV3-spp版本耗时增加一些(1%-3%)
如果将处理时间也考虑进去,CenterNet-DLA-34 在不同尺度下均比YoloV3-spp版本耗时减少还是很明显的,约有5%-10%的提速。
在模型大小与内存占用方面,CenterNet-DLA-34 效果较与YoloV3-spp版本提升还是比较明显,体积下降为YoloV3-spp版本的25%左右,推理GPU内存占用也下降为70%左右,考虑这是Anchor Free方法带来的优势。
从表格 CenterNet vs YoloV3x coco精度 中可以看出在相同尺度下,CenterNet相较于YoloV3原版提升比较明显5个百分点,相较于YoloV3-spp也有2个百分点提升 ,但是相较于YoloV3-spp-ultralytics(U版YoloV3-spp),还是有5个百分点的不足。
总结一下:CenterNet相较于YoloV3原版提升比较明显,但是针对改进YoloV3-spp 提升不明显,也低于U版 YoloV3-spp。
总结如下,CenterNet不失为开创性的工作,统一了关键点与目标检测的流程,结构简单,使用便捷,笔者非常喜爱这个网络,把它应用到实际场景之中,速度精度较YoloV3乃至YoloV3-spp均有提升,除了部署难度会稍微大些(主要是DCN目前推理框架支持不友好,但是也是有解决方法的)。
CenterNet凭借结构简单,使用便捷,速度快精度高,占用内存少等优点,是可以替换YoloV3,具备一定优势。