blendmask训练自己的数据集备忘录

更新时间:2023-06-06 13:28:12 阅读: 评论:0

blendmask训练⾃⼰的数据集备忘录blendmask训练⾃⼰的数据集:
1.基于detectron2使⽤coco数据集
2.数据集注册;(注释掉了源⽂件的tup函数增加了⼀下内容)
def main(args):
cfg = tup(args)
if args.eval_only:
model = Trainer.build_model(cfg)
AdetCheckpointer(model, save_dir=cfg.OUTPUT_DIR).resume_or_load(
cfg.MODEL.WEIGHTS, sume
)
res = st(cfg, model) # d2 defaults.py
if comm.is_main_process():
verify_results(cfg, res)
if cfg.TEST.AUG.ENABLED:
res.st_with_TTA(cfg, model))
return res
"""
If you'd like to do anything fancier than the standard training logic,
consider writing your own training loop or subclassing the trainer.
"""
trainer = Trainer(cfg)
if cfg.TEST.AUG.ENABLED:
[hooks.EvalHook(0, lambda: st_with_TTA(cfg, del))]
)
ain()
# 声明类别,尽量保持  #需修改成为⾃⼰的类别名称
CLASS_NAMES = ["_background_", "pointer", "pointer1", "pointer2", "pointer3", "pointer4"]
# 数据集路径此路径需修改为⾃⼰的路径
DATASET_ROOT = 'datats/coco'
ANN_ROOT = os.path.join(DATASET_ROOT, 'annotations')
TRAIN_PATH = os.path.join(DATASET_ROOT, 'images/train2017')
VAL_PATH = os.path.join(DATASET_ROOT, 'images/val2017')
TRAIN_JSON = os.path.join(ANN_ROOT, 'instances_train2017.json')
# VAL_JSON = os.path.join(ANN_ROOT, 'val.json')
VAL_JSON = os.path.join(ANN_ROOT, 'instances_val2017.json')
print(TRAIN_PATH)
# 声明数据集的⼦集 coco_my_train  修改为⾃⼰的数据集名字
PREDEFINED_SPLITS_DATASET = {
"coco_my_train": (TRAIN_PATH, TRAIN_JSON),
"coco_my_val": (VAL_PATH, VAL_JSON),
}
# 注册数据集
def register_datat():
"""
purpo: register all splits of datat with PREDEFINED_SPLITS_DATASET
"""
for key, (image_root, json_file) in PREDEFINED_SPLITS_DATASET.items():
register_datat_instances(name=key,
json_file=json_file,
image_root=image_root)
image_root=image_root)
# 注册数据集实例,加载数据集中的对象实例
def register_datat_instances(name, json_file, image_root):
"""
purpo: register datat to DatatCatalog,
trunk
register metadata to MetadataCatalog and t attribute
"""
<(name).t(json_file=json_file,
image_root=image_root,
evaluator_type="coco")
# 注册数据集和元数据
def plain_register_datat():
# 训练集
<("coco_my_train").t(thing_class=CLASS_NAMES,  # 可以选择开启,但是不能显⽰中⽂,这⾥需要注意,中⽂的话最好关闭                                            evaluator_type='coco',  # 指定评估⽅式
json_file=TRAIN_JSON,
image_root=TRAIN_PATH)
# ister("coco_my_val", lambda: load_coco_json(VAL_JSON, VAL_PATH, "coco_2017_val"))
# 验证/测试集
搞笑英文名字
<("coco_my_val").t(thing_class=CLASS_NAMES,  # 可以选择开启,但是不能显⽰中⽂,这⾥需要注意,中⽂的话最好关闭                                          evaluator_type='coco',  # 指定评估⽅式
json_file=VAL_JSON,
image_root=VAL_PATH)
# 查看数据集标注,可视化检查数据集标注是否正确,此处为借鉴别⼈博客,但忘记原博客的地址
# 这个也可以⾃⼰写脚本判断,其实就是判断标注框是否超越图像边界
# 可选择使⽤此⽅法
def checkout_datat_annotation(name="coco_my_val"):
# datat_dicts = load_coco_json(TRAIN_JSON, TRAIN_PATH, name)
datat_dicts = load_coco_json(TRAIN_JSON, TRAIN_PATH)
print(len(datat_dicts))
for i, d in enumerate(datat_dicts, 0):
# print(d)
img = cv2.imread(d["file_name"])
visualizer = Visualizer(img[:, :, ::-1], (name), scale=1.5)
wake islandvis = visualizer.draw_datat_dict(d)
# cv2.imshow('show', _image()[:, :, ::-1])
thatcher
cv2.imwrite('out/' + str(i) + '.jpg', _image()[:, :, ::-1])
# cv2.waitKey(0)
if i == 200:
break
def tup(args):
"""
Create configs and perform basic tups.
"""
cfg = get_cfg()
<_from_fig_file)  # 从config file 覆盖配置
kayaking<_from_list(args.opts)  # 从CLI参数覆盖配置
# 更改配置参数
cfg.DATASETS.TRAIN = ("coco_my_train",)  # 训练数据集名称
cfg.DATASETS.TEST = ("coco_my_val",)
cfg.DATALOADER.NUM_WORKERS = 4  # 单线程
cfg.INPUT.CROP.ENABLED = True
cfg.INPUT.MAX_SIZE_TRAIN = 640  # 训练图⽚输⼊的最⼤尺⼨
smoking是什么意思cfg.INPUT.MAX_SIZE_TEST = 640  # 测试数据输⼊的最⼤尺⼨
cfg.INPUT.MIN_SIZE_TRAIN = (100, 100)  # 训练图⽚输⼊的最⼩尺⼨,可以设定为多尺度训练
cfg.INPUT.MIN_SIZE_TEST = 100
# cfg.INPUT.MIN_SIZE_TRAIN_SAMPLING,其存在两种配置,分别为 choice 与 range :
# range 让图像的短边从 512-768随机选择英语手抄报内容大全
护胸# choice :把输⼊图像转化为指定的,有限的⼏种图⽚⼤⼩进⾏训练,即短边只能为 512或者768
cfg.INPUT.MIN_SIZE_TRAIN_SAMPLING = 'range'
#  本句⼀定要看下注释
cfg.MODEL.RETINANET.NUM_CLASSES = 6  # 类别数+1(因为有background,也就是你的 cate id 从 1 开始,如果您的数据集Json下标从 0 开始,这个改为您对应的类别就⾏,不⽤再加背景类)
# cfg.MODEL.WEIGHTS="/home/yourstorePath/.pth"
# cfg.MODEL.WEIGHTS = "../configs/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x/137849600/model_final_f10217.pkl"    # 预训练模型权重
cfg.MODEL.WEIGHTS = "R_101_dcni3_5x.pth"  # 预训练模型权重
cfg.SOLVER.IMS_PER_BATCH = 4  # batch_size=2; iters_in_one_epoch = datat_imgs/batch_size
# 根据训练数据总数⽬以及batch_size,计算出每个epoch需要的迭代次数
# 9000为你的训练数据的总数⽬,可⾃定义
ITERS_IN_ONE_EPOCH = int(3000 / cfg.SOLVER.IMS_PER_BATCH)
# 指定最⼤迭代次数
cfg.SOLVER.MAX_ITER = (ITERS_IN_ONE_EPOCH * 6) - 1  # 5 epochs,
# 初始学习率
cfg.SOLVER.BASE_LR = 0.01
# 优化器动能
averagecfg.SOLVER.MOMENTUM = 0.9
# 权重衰减
cfg.SOLVER.WEIGHT_DECAY = 0.01
cfg.SOLVER.WEIGHT_DECAY_NORM = 0.0
# 学习率衰减倍数
cfg.SOLVER.GAMMA = 0.1
# 迭代到指定次数,学习率进⾏衰减
cfg.SOLVER.STEPS = (7000,)
#此处内容为借鉴,不知道什么⽤处,
# 在训练之前,学习率慢慢增加初始学习率
cfg.SOLVER.WARMUP_FACTOR = 1.0 / 100
# 热⾝迭代次数
cfg.SOLVER.WARMUP_ITERS = 10
cfg.SOLVER.WARMUP_METHOD = "linear"
# 保存模型⽂件的命名数据减1
cfg.SOLVER.CHECKPOINT_PERIOD = ITERS_IN_ONE_EPOCH - 1
# 迭代到指定次数,进⾏⼀次评估
cfg.TEST.EVAL_PERIOD = ITERS_IN_ONE_EPOCH
# cfg.TEST.EVAL_PERIOD = 100
# _from_fig_file)八年级辅导英语
# _from_list(args.opts)
cfg.freeze()
default_tup(cfg, args)
return cfg
在launch函数运⾏前加
plain_register_datat()
3.bultin.py⽂件也可以进⾏注册;
4.datat_mapper.py 196替换成⾃⼰coco的thing_train的路径不然会报错;
5.如果是多gpu训练这条不⽤看:单gpu训练需要更改synbn 为bn(⼤写)

本文发布于:2023-06-06 13:28:12,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/135923.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   训练   学习   指定   标注   次数   类别
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图