detectron2保存模型由pth转pt
checkpoint源代码:
https://detectron2.readthedocs.io/en/latest/_modules/fvcore/common/checkpoint.html#Checkpointer
重写
from fvcore.common.checkpoint import Checkpointer
中的Checkpointer类中的save方法
class MYCheckpointer(Checkpointer):
def save(self, name, **kwargs):
if not self.save_dir or not self.save_to_disk:
return
data = {}
data["model"] = self.model.state_dict()
for key, obj in self.checkpointables.items():
data[key] = obj.state_dict()
data.update(kwargs)
basename = "{}.pt".format(name)
save_file = os.path.join(self.save_dir, basename)
assert os.path.basename(save_file) == basename, basename
self.logger.info("Saving checkpoint to {}".format(save_file))
with self.path_manager.open(save_file, "wb") as f:
torch.save(data, f)
self.tag_last_checkpoint(basename)
detectron2保存模型由pth转ptcheckpoint源代码:https://detectron2.readthedocs.io/en/latest/_modules/fvcore/common/checkpoint.html#Checkpointer重写from fvcore.common.checkpoint import Checkpointer中的Checkpointer类中的save方法class MYCheckpointer(Checkpointer): def save(se
欢迎使用Markdown编辑器
你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。
我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:
全新的界面设计 ,将会带来全新的写作体验;
在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
增加了 图片
目标:走马观花,两天时间浏览Detectron2源码,稍微记录一下。
与 TensorFlow Object Detection API、mmdetection 一样,Detectron2 也是通过配置文件来设置各种参数,所有的相关内容都像搭积木一样一点一点拼凑起来。
我自己感觉,一般所有代码都可以分为三个部分,所以看Detectron2的源码也分为以下三个部分。
数据处理...
写在前面的话
该问题在 GitHub的 detectron2 的 issues 上被提出,有人解决了(如下图所示)
提示一下,去 GitHub 上的 issues 搜索问题,尽量找【closed】标签的,这些基本都是有解决方法的问题。
这里只做个记录,仅供学习使用
参考GitHub链接:
Feature: a hook to automatically save the best model during training
from detectron2.engine import HookBas
from detectron2.modeling import build_model
model = build_model(cfg) # returns a torch.nn.Module
build_model仅建立模型结构并用随机参数填充它。有关如何将现有检查点加载到模型以及如何使用model对象的信息,请参见下文。
1.1、加载/
数据转coco格式
我使用的是wider person数据集,给出的是images和txt标注文件,其中,txt文件的每一行是一张图片,第一个字段是图片名称,后面每4个字段是[x,y,w,h],跟我们大部分自有数据集的格式相同。
转为coco2017的样式,网上代码很多,暂时就不贴代码了,后面会把代码放github上,知识说一个注意点,也是我踩过的坑:
categories = {'person'...