![](/img/trans.png)
[英]How can I show validation loss and validation accuracy evaluation for the detectron2 model?
[英]How can I get testing accuracy using tensorboard for Detectron2?
我正在学习使用 Detecron2。 我已按照此链接创建自定义对象检测器。 我的训练代码 -
# training Detectron2
from detectron2.engine import DefaultTrainer
from detectron2.config import get_cfg
import os
cfg = get_cfg()
cfg.merge_from_file("./detectron2_repo/configs/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml")
cfg.DATASETS.TRAIN = ("pedestrian",)
cfg.DATASETS.TEST = () # no metrics implemented for this dataset
cfg.DATALOADER.NUM_WORKERS = 2
cfg.MODEL.WEIGHTS = "detectron2://COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x/137849600/model_final_f10217.pkl" # initialize from model zoo
cfg.SOLVER.IMS_PER_BATCH = 2
cfg.SOLVER.BASE_LR = 0.02
cfg.SOLVER.MAX_ITER = 300 # 300 iterations seems good enough, but you can certainly train longer
cfg.MODEL.ROI_HEADS.BATCH_SIZE_PER_IMAGE = 128 # faster, and good enough for this dataset
cfg.MODEL.ROI_HEADS.NUM_CLASSES = 1
os.makedirs(cfg.OUTPUT_DIR, exist_ok=True)
trainer = DefaultTrainer(cfg)
trainer.resume_or_load(resume=False)
trainer.train()
它将日志文件保存在输出目录中,因此我可以使用 tensorboard 来显示训练精度 -
%load_ext tensorboard
%tensorboard --logdir output
它工作正常,我可以看到我的模型的训练准确性。 但是在测试/验证模型时 -
cfg.MODEL.WEIGHTS = os.path.join(cfg.OUTPUT_DIR, "model_final.pth")
cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.7 # set the testing threshold for this model
cfg.DATASETS.TEST = ("pedestrian_day", )
predictor = DefaultPredictor(cfg)
虽然从 Detectron2 教程中我得到了 -
from detectron2.evaluation import COCOEvaluator, inference_on_dataset
from detectron2.data import build_detection_test_loader
evaluator = COCOEvaluator("pedestrian_day", cfg, False, output_dir="./output/")
val_loader = build_detection_test_loader(cfg, "pedestrian_day", mapper=None)
inference_on_dataset(trainer.model, val_loader, evaluator)
但这为训练和测试提供了 AP、AP50、AP75、APm、APl 和 AP。 我的问题是我怎样才能像训练一样在 tensorboard 中看到测试精度?
默认情况下,训练期间的评估是禁用的
如果您想启用它,您必须设置以下参数
# set eval step intervals
cfg.TEST.EVAL_PERIOD =
但是为了评估工作,你必须修改detectron2/engine/defaults.py中的build_evaluator函数
https://github.com/facebookresearch/detectron2 repo 的 tools/train_net.py 脚本中提供了build_evaluator函数的示例
detectron2 中的这个问题讨论了创建自定义 LossEvalHook 来监控 eval 损失,听起来是一个很好的尝试方法
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.