企业网站有哪些功能?,苏州建设局统计网站,什么网站做优化最好,wordpress最新功能看SparseInst论文发现论文里有些地方没讲清楚#xff1b;遂找SparseInst源码来看模型结构 我选择从推理代码来找模型结构#xff1a;
经探索#xff0c;在SparseInst代码里#xff0c;推理需要执行代码
python demo.py --config-file configs/sparse_inst_r50_base.yaml …看SparseInst论文发现论文里有些地方没讲清楚遂找SparseInst源码来看模型结构 我选择从推理代码来找模型结构
经探索在SparseInst代码里推理需要执行代码
python demo.py --config-file configs/sparse_inst_r50_base.yaml --input datasets/coco/val2017/* --output image_results --opt MODEL.WEIGHTS sparse_inst_r50_base_ff9809.pth INPUT.MIN_SIZE_TEST 512
查阅得知建立模型很可能在 找到VisualizationDemo的实现 发现关键代码在
self.predictor DefaultPredictor(cfg) 如此得到的self.predictor(image)可以直接接受图片所以self.predictor就是模型网络部分。 搜索文本DefaultPredictor得知DefaultPredictor在detectron2.engine.defaults包下 查询DefaultPredictor定义得知build_model(self.cfg)是实际用来创建模型的部分 而build_model的定义在detectron2.modeling包下 查找到build_model的定义如下 可知是用了detectron2.utils.registry的 Registry来建立网络结构的。查找得知detectron2.utils.registry的 Registry是直接import的别的包
from fvcore.common.registry import Registry # for backward compatibility. 查找fvcore.common.registry得知Registry定义在这篇文章中有详解
Detectron2和fvcore中的Registry机制详解_fvcore registry-CSDN博客
官方详解fvcore.common.registry — detectron2 0.6 documentation
发现官方源码里用了typing里的Dict包 查阅Python 中 typing 模块和类型注解的使用 | 静觅得知typing里的Dict是用来让python能像C一样强申明变量类型的。
names: list [Germey, Guido]
version: tuple (3, 7, 4)
operations: dict {show: False, sort: True}
以上代码只知道 names 是一个列表 list 类型但是不知道 names 里面的元素是str类型还是int类型也不知道 operations这个字典的key和value是什么类型的。只能知道operations是一个字典。 但如果用typing 模块它提供了非常 “强 “的明确类型申明比如 List[str]表示由 str 类型的元素组成的列表Tuple[int, int, int] 是由 int 类型的元素组成的长度为 3 的元组。所以用typing申明以上字典的代码如下
from typing import List, Tuple, Dictnames: List[str] [Germey, Guido]
version: Tuple[int, int, int] (3, 7, 4)
operations: Dict[str, bool] {show: False, sort: True} 好家伙貌似误入歧途了debug模式下先在下图一
点下一步就进入下图二这个分支。
而不是之前分析的进入detectron2.engine.defaults包下的DefaultPredictor类 仔细想了想不是误入歧途我安装了detectron2包所以猜想这些安装的包应该在debug模式下不能看到源码。
验证猜想
我试着把项目里的detectron2整个文件夹删去也不影响demo.py正常执行所以实际上执行以下代码时候用到的是我安装好的 detectron2包所以debug看不到源码
python demo.py --config-file configs/sparse_inst_r50_base.yaml --input datasets/coco/val2017/* --output image_results --opt MODEL.WEIGHTS sparse_inst_r50_base_ff9809.pth INPUT.MIN_SIZE_TEST 512
所以实际上在下图一的下一步就是会进入detectron2.engine.defaults包下的DefaultPredictor类 图一 图二