FAIR开源框架detectron2代码解析


(大概率要tj的博客)

0. 简介

   detectron2是Facebook的下一代开源框架,基于pytorch,是fast rcnn benchmark的下一任继承者,FAIR基于此实现了大量的目标检测的SOTA算法,并且现在仍然在更新。官方给出的model zoo里同样包含了很多的算法,这是开箱即用的。此外也有大量的新的算法是基于detectron2实现的,例如CenterMask,Sparse RCNN等。
   框架已经开源,地址在这里: detectron2的地址
   具体的安装过程参考官方即可,依赖的东西很少,不再赘述。

1. 从demo开始管中窥豹

1.1 开始使用

   在安装好以后,官方提供了两种方式使用detectron2,第一种是API接口的方式,具体使用可以参考官方教程里colab上的步骤;第二种方法是在命令行内使用demo.py进行预测,本文主要从第二种方式入手,分析detectron2的调用过程,以此来简要解析代码框架。
  官方给出的调用demo.py的命令为

cd demo/

python demo.py --config-file ../configs/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml \
  --input input1.jpg input2.jpg \
  [--other-options]
  --opts MODEL.WEIGHTS detectron2://COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x/137849600/model_final_f10217.pkl

  参数--config后面跟着的是网络的配置文件,也就是存储网络结构的文件存放的位置,--input指定输入图片,[--other-options]是其他选项的意思,这里只是示意,实际的使用是参考后面的格式,--opts指定了选项,这里指定了权重的位置,实际上如果不指定的话,demo会在远处下载。
  在使用的时候,我遇到了线程问题,不知道是cuda的原因还是torch的问题(个人倾向于框架的代码原因)。

1.2 demo.py代码解析

1.2.1 结构解析

demo.py的大致结构如下:

# 有删减,还有一些其余包的导入
from detectron2.config import get_cfg
from detectron2.data.detection_utils import read_image
from detectron2.utils.logger import setup_logger

from predictor import VisualizationDemo

# constants
WINDOW_NAME = "COCO detections"

def setup_cfg(args):
    cfg = get_cfg()
    #有删减
    return cfg
 
 def get_parser():
    parser = argparse.ArgumentParser(description="Detectron2 demo for builtin configs")
    #有删减
    return parser

if __name__ == "__main__":
    #有删减
    args = get_parser().parse_args()
    #···
    cfg = setup_cfg(args)
    demo = VisualizationDemo(cfg)
    #···
    if args.input:
        #···
    elif args.webcam:
        #···
    elif args.video_input:
        #···

  首先我们从main函数入手,在这个模块被当作主函数调用的时候,它的简要步骤如下:

Created with Raphaël 2.2.0 开始 初始化相关配置 参数是否有--input 执行与--input相关的代码 结束 参数是否有--webcam 执行与--webcam相关的代码 参数是否有--video_input 执行与--video_input相关的代码 yes no
  • 9
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值