目标检测四大开源神器:Detectron2、mmDetectron、darknet、SimpleDet
本文介绍目标检测(Object Detection)四个最为知名、关注度最高的开源神器,其实也可以称为工具箱(Toolkit),再俗气一点,就是”造轮子”神器。不仅会介绍这些神器的特点,还会增加新的内容:基于神器开发的新开源项目(这部分也可以说明该神器的认可度)。
用上好的神器,不仅可以快速实现你的idea,还可以帮助你提升coding能力。精读优质的代码(风格),长远看是非常有意义的。如下排名不分先后:
Detectron2
- 维护团队:Facebook
- 所属框架:PyTorch
- https://github.com/facebookresearch/detectron2
Detectron2 前身就是鼎鼎大名的 Detectron,其实Detectron可以说是Facebook第一代检测工具箱,目前在github上获得 23.5k star!
https://github.com/facebookresearch/Detectron
但由于PyTorch版本升级等问题,Detectron目前已停止维护(弃用)。
在 Detectron向 Detectron2过渡期间,Facebook Research 还开源了一个知名的项目:maskrcnn-benchmark,目前已获得 7.7 k star!
https://github.com/facebookresearch/maskrcnn-benchmark
听名字应该就知道maskrcnn-benchmark主要是做实例分割和目标检测的,该项目也主要提供了Faster R-CNN和Mask R-CNN算法。
但同样由于PyTorch版本升级等问题,maskrcnn-benchmark目前已停止维护(弃用)。于是 maskrcnn-benchmark 这 7.7 k 的项目就此”搁浅”了。
话题说回主人公:Detectron2(新一代目标检测和分割框架)
Detectron2 不仅支持 Detectron已有的目标检测、实例分割、姿态估计等任务,还支持语义分割和全景分割。新增了Cascade R-CNN,Panoptic FPN和TensorMask新模型。
基于Detectron2二次开发的开源项目
AdelaiDet:实例级识别任务开源工具箱
https://github.com/aim-uofa/AdelaiDet
AdelaiDet 主要是阿德莱德大学沈春华团队维护的项目,涉及目标检测、实例分割、文本检测等方向。比如包含了SOLOv1-v2、FCOS、BlendMask、CondInst等工作。
像最近 CVPR 2020、ECCV 2020上有不少好的工作也都是基于 Detectron2开发的,比如DETR、CenterMask:
https://github.com/facebookresearch/detr
https://github.com/youngwanLEE/centermask2
https://github.com/youngwanLEE/vovnet-detectron2
https://github.com/shenyunhang/NA-fWebSOD/
mmDetection
- 维护团队:香港中文大学-商汤联合实验室
- 所属框架:PyTorch
- https://github.com/open-mmlab/mmdetection
mmDetection 是个非常强大的目标检测工具箱,也是基于PyTorch实现。
mmDetection包含模型非常非常多,部分内容如下(不要被吓到):
支持的backbones:
- ResNet
- ResNeXt
- VGG
- HRNet
- RegNet
- Res2Net
支持的模型:
- RPN
- Fast R-CNN
- Faster R-CNN
- Mask R-CNN
- Cascade R-CNN
- Cascade Mask R-CNN
- SSD
- RetinaNet
- GHM
- Mask Scoring R-CNN
- Double-Head R-CNN
- Hybrid Task Cascade
- Libra R-CNN
- Guided Anchoring
- FCOS
- RepPoints
- Foveabox
- FreeAnchor
- NAS-FPN
- ATSS
- FSAF
- PAFPN
- Dynamic R-CNN
- PointRend
- CARAFE
- DCNv2
- Group Normalization
- Weight Standardization
- OHEM
- Soft-NMS
- Generalized Attention
- GCNet
- Mixed Precision (FP16) Training
- InstaBoost
- GRoIE
- DetectoRS
- Generalized Focal Loss
基于mmdetection二次开发的开源项目
基于mmdetection 开发的开源项目特别特别多,比如最近CVPR 2020上很多检测工作就是基于此开发的。这里就不一一介绍,简单列几个较为知名的:
https://github.com/Gus-Guo/AugFPN
https://github.com/FishYuLi/BalancedGroupSoftmax
https://github.com/JialeCao001/D2Det
https://github.com/caiqi/sample-weighting-network
https://github.com/jshilong/SEPC
https://github.com/Sense-X/TSD
https://github.com/ggjy/HitDet.pytorch
SimpleDet
- 维护团队:图森未来(TuSimple)
- 所属框架:MXNet
- https://github.com/TuSimple/simpledet
SimpleDet 是一套简单且多功能的目标检测与实例分割的框架。就这么说吧,如果你是用MXNet来开发检测项目,那么直接用SimpleDet就行。
SimpleDet 包含的库也相当丰富,如:Faster R-CNN,Mask R-CNN,Cascade R-CNN,RetinaNet,DCNv1/v2,TridentNet,NASFPN , EfficientNet, FOCS,FreeAnchor,RepPoints,和SEPC等
SimpleDet 更新频率也相当快
darknet
- 维护团队:AlexeyAB(个人开发者)
- 所属框架:darknet(基于C语言编写)
- https://github.com/AlexeyAB/darknet
说起 darknet 可能有些人并不熟悉,但直接说出它的目标检测真身:YOLO,很多人就知道了。darknet 本身是 YOLO系列中著名的backbone,然后YOLO项目一直放在darknet中。
本文介绍的darknet并非YOLOv1-v3作者(Joseph Redmon)的darknet,而是YOLOv4作者(AlexeyAB)的darknet,因为Joseph Redmon不再继续维护darknet。
darknet中包含的目标检测模型相对上面三大神器要少很多,但个个都是扛把子的,比如YOLO、YOLOv2、YOLOv3和YOLOv4。
如果你想用C/C++来开发目标检测模型,那么darknet是最适合你的神器。
总结
如果你想用PyTorch开发检测项目,则推荐Detectron2、mmDetection;
如果你想用MXNet开发检测项目,则推荐SimpleDet;
如果你想用C/C++开发检测项目,则推荐darknet;
如果你想用YOLO,则可以用darknet,也可以上github搜一下其他框架复现的版本。