检测将对象识别为图像中轴对齐的框。大多数成功的物体检测器都枚举了几乎详尽的潜在物体位置列表,并对每个位置进行分类。这是浪费、低效的,并且需要额外的后处理。在本文中,我们采用了不同的方法。我们将一个对象建模为一个点,即其边界框的中心点。我们的检测器使用关键点估计来查找中心点,并回归到所有其他对象属性,例如大小、3D 位置、方向甚至姿势。我们基于中心点的方法 CenterNet 是端到端可微分的,比相应的基于边界框的检测器更简单、更快、更准确。CenterNet 在 MS COCO 数据集上实现了最佳的速度-精度权衡,在 142 FPS 时 AP 为 28.1%,在 52 FPS 时为 37.4% AP,在 1.4 FPS 的多尺度测试中为 45.1% AP。我们使用相同的方法来估计 KITTI 基准中的 3D 边界框和 COCO 关键点数据集上的人体姿势。我们的方法与复杂的多阶段方法具有竞争力,并实时运行.
-
简单:一句话方法总结:使用关键点检测技术检测边界框中心点,并回归到所有其他对象属性,如边界框大小、3D 信息和姿势。
-
多才多艺:相同的框架适用于对象检测、3D 边界框估计和多人姿态估计,只需稍作修改。
-
快:整个过程在单个网络前馈中。无需 NMS 后处理。我们的 DLA-34 型号以 52 FPS 的速度运行,具有 37.4 COCO AP。
-
强:我们最好的单一模型在 COCO 测试开发中达到了 45.1AP。
-
易于使用:我们提供用户友好的测试 API 和网络摄像头演示。
主要结果
使用 CenterNet 我们支持图像/图像文件夹、视频和网络摄像头的演示。 首先,下载模型(默认情况下,ctdet_coco_dla_2x用于检测,multi_pose_dla_3x用于人体姿态估计) 从模型动物园并将它们放入.CenterNet_ROOT/models/ 要对图像/视频进行对象检测,请运行:
python demo.py ctdet --demo /path/to/image/or/folder/or/video --load_model ../models/ctdet_coco_dla_2x.pth
提供了示例图像。如果设置正确,输出应如下所示CenterNet_ROOT/images/
对于网络摄像头演示,请运行:
python demo.py ctdet --demo webcam --load_model ../models/ctdet_coco_dla_2x.pth
同样,对于人体姿态估计,请运行:
python demo.py multi_pose --demo /path/to/image/or/folder/or/video/or/webcam --load_model ../models/multi_pose_dla_3x.pth
示例图像的结果应如下所示:
您可以添加以可视化热图输出。 您可以添加翻转测试。--debug 2
--flip_test
要在您自己的项目中使用此 CenterNet,您可以
import sys
CENTERNET_PATH = /path/to/CenterNet/src/lib/
sys.path.insert(0, CENTERNET_PATH)
from detectors.detector_factory import detector_factory
from opts import opts
MODEL_PATH = /path/to/model
TASK = 'ctdet' # or 'multi_pose' for human pose estimation
opt = opts().init('{} --load_model {}'.format(TASK, MODEL_PATH).split(' '))
detector = detector_factory[opt.task](opt)
img = image/or/path/to/your/image/
ret = detector.run(img)['results']