- 前言:介紹Deteron2
tags: 六角學院
主題:雜亂大全27-Deteron2簡介(上)
本篇重點:
- 學習Deteron2
簡介
由facebook團隊開發
全名:Facebook 人工智慧研究實驗室(FAIR)
死對頭
由Google釋出的TF Object Detection API
兩者的比較: https://www.zhihu.com/question/357186421
第一代簡介-(官方說請用第二代)
:::success
第一代基於caffe2
已經不推薦使用
:::
GitHub:
第一代標檢測算法的實現
1 | Mask R-CNN — 在ICCV 2017獲得Marr大獎 |
第一代骨幹網絡架構:
1 | ResNeXt{50,101,152} |
參考網址:https://kknews.cc/science/ezryjkq.html
==第二代簡介==
1 | 使用包括 |
GitHub:
教學網址(使用colab)
https://colab.research.google.com/drive/16jcaJoc6bCFAQ96jDe2HwtXj7BMD_-m5#scrollTo=vM54r6jlKTII
解析官方提供程式碼:
==CfgNode==
參數設定的靈魂中心
1
2
3trainer = DefaultTrainer(cfg)
trainer.resume_or_load() # load last checkpoint or MODEL.WEIGHTS
trainer.train()==模型結構 Model Structure==
- Detectron2需利用build_model方法來建立和DetectionCheckpointer類別載入權重
1
2
3
4
5
6self.checkpointer = DetectionCheckpointer(
model,
cfg.OUTPUT_DIR,
optimizer=optimizer,
scheduler=self.scheduler,
)
- Detectron2需利用build_model方法來建立和DetectionCheckpointer類別載入權重
- 可以直接調用model Zoo庫,只須改config file(.yaml檔案)
1
2
3
4
5以調用Mask R-CNN為例
from detectron2.config import get_cfg
cfg = get_cfg()
cfg.merge_from_file(model_zoo.get_config_file("COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml"))
cfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url("COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml") # Let training initialize from model zoo
- 可以直接調用model Zoo庫,只須改config file(.yaml檔案)
- 客製化模型 Customized Model
- 1.註冊CfgNode
1
2
3
4
@META_ARCH_REGISTRY.register()
class NewModel(nn.Module):
...
- 1.註冊CfgNode
- 2.修改detectron2.modeling.build.py中的build_model
1
2
3
4
5
6
7
8
9def build_model(cfg):
"""
Build the whole model architecture, defined by ``cfg.MODEL.META_ARCHITECTURE``.
Note that it does not load any weights from ``cfg``.
"""
meta_arch = cfg.MODEL.META_ARCHITECTURE
model = META_ARCH_REGISTRY.get(meta_arch)(cfg)
model.to(torch.device(cfg.MODEL.DEVICE))
return model
- 2.修改detectron2.modeling.build.py中的build_model
- 3.若只修改其中某部分(如骨幹)
1
2
3
4
5# refers to TridenNet
@BACKBONE_REGISTRY.register()
def build_trident_resnet_backbone(cfg, input_shape: ShapeSpec):
...
return ResNet(stem, stages, out_features=out_features)
- 3.若只修改其中某部分(如骨幹)
- 4.設定好 cfg.MODEL.BACKBONE.NAME
1 | (以Base-TridentNet-Fast-C4.yaml為例) |
補充
- 剩下的部分將於下一篇說明
參考資料
利用detectron2快速使用faster RCNN
https://medium.com/mess-up/%E5%88%A9%E7%94%A8detectron2%E5%BF%AB%E9%80%9F%E4%BD%BF%E7%94%A8faster-rcnn-a68e58c2ca21取Detectron2導覽: FAIR推出能快速建置Object
https://shunhsiang.medium.com/detectron2%E5%B0%8E%E8%A6%BD-fair%E6%8E%A8%E5%87%BA%E8%83%BD%E5%BF%AB%E9%80%9F%E5%BB%BA%E7%BD%AEobject-detection-segmentation%E7%9A%84%E8%A8%93%E7%B7%B4%E5%B9%B3%E5%8F%B0-%E4%B8%8A-4eedd6babe78
- 若有任何問題↓
- 請聯繫我:
liao86221@gmail.com
- 或填表: https://forms.gle/4FB5Tmtd9A7XcXjF8