mmsegmentation中可视化

这篇具有很好参考价值的文章主要介绍了mmsegmentation中可视化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1、tools/train.py

tools/dist_train.sh 

2、tools/test.py

指定输出到 pkl 文件:

3. 分析日志

绘制分类损失

日志分析:

 4、Flops、Params、fps的实现

fps的实现:

tools/benchmark.py

5、混淆矩阵

6、画 PR 曲线 plot_pr_curve.py

samples_per_gpu=1,  ## 单个 GPU 的批量大小
workers_per_gpu=4,  ## 为每个 GPU 预取数据的 Worker 

1、tools/train.py

CUDA_VISIBLE_DEVICES=7指定固定的GPU,--work-dir表示configs保存的目录

CUDA_VISIBLE_DEVICES=7 python tools/train.py configs/seaformer/seaformer_base_512x512_160k_2x8_ade20k.py --work-dir result/seaformer/base16 

tools/dist_train.sh 

该脚本是用于启动单机多卡/多机多卡分布式训练的,里面内容不多,无非是对 python -m torch.distributed.launch ... 的封装,留给用户的接口很简单,只需要指定想要用的 GPU 的个数即可,

bash tools/dist_train.sh configs/seaformer/seaformer_base_512x512_160k_2x8_ade20k.py --work-dir result/seaformer/base16  3

2、tools/test.py

输出可视化结果至目录文件夹

  • 可以选择评估方式 --eval ,对于 COCO 数据集,可选 bbox 、segmproposal ;对于 VOC 数据集,可选 maprecall
  • 也可以选择 --out ,指定测试结果的 pkl 输出文件
python tools/test.py ${CONFIG_FILE} ${CHECKPOINT_FILE} [--out ${RESULT_FILE}] [--eval ${EVAL_METRICS}] [--show]

  可视化具体实例如下:

#1、验证图像的可视化
python tools/test.py configs/fcn/fcn_r50-d8_512x512_20k_voc12.py work_dir/latest.pth --show-dir="output"
#或者
python tools/test.py configs/fcn/fcn_r50-d8_512x512_20k_voc12.py work_dir/latest.pth --show-dir output


#2、衡量指标显示
python tools/test.py configs/fcn/fcn_r50-d8_512x512_20k_voc12.py work_dir/latest.pth --eval mAp
  • RESULT_FILE:输出结果的文件名,采用pickle格式。如果未指定,结果将不会保存到文件中。

  • EVAL_METRICS:要根据结果评估的项目。允许的值是:COCO:proposal_fastproposalbboxsegm                            PASCAL VOC: mAPrecall

  • --show:如果指定,检测结果将绘制在图像上并显示在新窗口中。仅适用于单GPU测试,用于调试和可视化。请确保您的环境中可以使用GUI,否则您可能会遇到类似的错误。cannot connect to server

  • --show-dir:   如果指定,检测结果将绘制在图像上并保存到指定的目录中。仅适用于单GPU测试,用于调试和可视化。使用此选项时,您的环境中不需要可用的GUI。

  • --show-score-thr:  如果指定,则将删除分数低于此阈值的检测。

show-dir 参数来控制是否输出绘制的图像,表示输出图像的路径。

指定输出到 pkl 文件:

python tools/test.py configs/my_coco_config/my_coco_config.py checkpoints/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth  --out faster_rcnn_fpn_coco.pkl

3. 分析日志

pip install seaborn

python tools/analyze_logs.py plot_curve [--keys ${KEYS}] [--title ${TITLE}] [--legend ${LEGEND}] [--backend ${BACKEND}] [--style ${STYLE}] [--out ${OUT_FILE}]
  • 绘制分类损失

  • python tools/analyze_logs.py plot_curve log.json --keys loss_cls --legend loss_cls
  • 日志分析:

  • 用于分析我们训练过程中得到的日志文件,注意这里传入的日志文件必须是 json 文件,而第一个参数 plot_curve 有两个可选项:plot_curve 和 cal_train_time ,同样可以通过 --out 指定输出图片文件。
  • 具体实例如下:
  • python tools/analysis_tools/analyze_logs.py plot_curve work_dirs/my_coco_config/20220503_165551.log.json --out log_curve.png
    
  • mmsegmentation中可视化 

  • 绘制训练时的分类和回归损失,并将该图保存为pdf。

  • python tools/analyze_logs.py plot_curve log.json --keys loss_cls loss_bbox --out losses.pdf
  • 在同一个图中绘制两次训练的bbox mAP

  • python tools/analyze_logs.py plot_curve log1.json log2.json --keys bbox_mAP --legend run1 run2

     4、Flops、Params、fps的实现

  • 本工具用于统计模型的参数量,可以通过 --shape 参数指定输入图片的尺寸
  • python tools/get_flops.py ${CONFIG_FILE} [--shape ${INPUT_SHAPE}]

    例如:

    python tools/get_flops.py configs/danet/danet_r101-d8_512x512_20k_voc12aug.py
    
    #如果想在指定GPU上运行则执行以下代码
     CUDA_VISIBLE_DEVICES=2 python tools/get_flops.py configs/danet/danet_r101-d8_512x512_20k_voc12aug.py				
    
    python tools/analysis_tools/get_flops.py configs/my_coco_config/my_coco_config.py --shape 640 480
    

    输出结果为 

    mmsegmentation中可视化

    fps的实现:

  • tools/benchmark.py

    此工具是用来测试模型在当前环境下的推理速度的,模型会跑一遍配置文件中指定的测试集,计算单图推理时间(FPS)。
  •  CUDA_VISIBLE_DEVICES=4 python tools/benchmark.py configs/seaformer/seaformer_large_512x512_160k_2x8_ade20k.py result/seaformer/large16/iter_150000.pth

    5、混淆矩阵

  • 计算混淆矩阵,需要输入的三个参数是:config文件,pkl结果文件,输出目录
  • mkdir coco_confusion_matrix
    python tools/analysis_tools/confusion_matrix.py configs/my_coco_config/my_coco_config.py faster_rcnn_fpn_coco.pkl coco_confusion_matrixmmsegmentation中可视化
  • 6、画 PR 曲线 plot_pr_curve.py

  • import os
    import sys
    import mmcv
    import numpy as np
    import argparse
    import matplotlib.pyplot as plt
    
    from pycocotools.coco import COCO
    from pycocotools.cocoeval import COCOeval
    
    from mmcv import Config
    from mmdet.datasets import build_dataset
    
    
    def plot_pr_curve(config_file, result_file, out_pic, metric="bbox"):
        """plot precison-recall curve based on testing results of pkl file.
    
            Args:
                config_file (list[list | tuple]): config file path.
                result_file (str): pkl file of testing results path.
                metric (str): Metrics to be evaluated. Options are
                    'bbox', 'segm'.
        """
        
        cfg = Config.fromfile(config_file)
        # turn on test mode of dataset
        if isinstance(cfg.data.test, dict):
            cfg.data.test.test_mode = True
        elif isinstance(cfg.data.test, list):
            for ds_cfg in cfg.data.test:
                ds_cfg.test_mode = True
    
        # build dataset
        dataset = build_dataset(cfg.data.test)
        # load result file in pkl format
        pkl_results = mmcv.load(result_file)
        # convert pkl file (list[list | tuple | ndarray]) to json
        json_results, _ = dataset.format_results(pkl_results)
        # initialize COCO instance
        coco = COCO(annotation_file=cfg.data.test.ann_file)
        coco_gt = coco
        coco_dt = coco_gt.loadRes(json_results[metric]) 
        # initialize COCOeval instance
        coco_eval = COCOeval(coco_gt, coco_dt, metric)
        coco_eval.evaluate()
        coco_eval.accumulate()
        coco_eval.summarize()
        # extract eval data
        precisions = coco_eval.eval["precision"]
        '''
        precisions[T, R, K, A, M]
        T: iou thresholds [0.5 : 0.05 : 0.95], idx from 0 to 9
        R: recall thresholds [0 : 0.01 : 1], idx from 0 to 100
        K: category, idx from 0 to ...
        A: area range, (all, small, medium, large), idx from 0 to 3
        M: max dets, (1, 10, 100), idx from 0 to 2
        '''
        pr_array1 = precisions[0, :, 0, 0, 2] 
        pr_array2 = precisions[1, :, 0, 0, 2] 
        pr_array3 = precisions[2, :, 0, 0, 2] 
        pr_array4 = precisions[3, :, 0, 0, 2] 
        pr_array5 = precisions[4, :, 0, 0, 2] 
        pr_array6 = precisions[5, :, 0, 0, 2] 
        pr_array7 = precisions[6, :, 0, 0, 2] 
        pr_array8 = precisions[7, :, 0, 0, 2] 
        pr_array9 = precisions[8, :, 0, 0, 2] 
        pr_array10 = precisions[9, :, 0, 0, 2] 
    
        x = np.arange(0.0, 1.01, 0.01)
        # plot PR curve
        plt.plot(x, pr_array1, label="iou=0.5")
        plt.plot(x, pr_array2, label="iou=0.55")
        plt.plot(x, pr_array3, label="iou=0.6")
        plt.plot(x, pr_array4, label="iou=0.65")
        plt.plot(x, pr_array5, label="iou=0.7")
        plt.plot(x, pr_array6, label="iou=0.75")
        plt.plot(x, pr_array7, label="iou=0.8")
        plt.plot(x, pr_array8, label="iou=0.85")
        plt.plot(x, pr_array9, label="iou=0.9")
        plt.plot(x, pr_array10, label="iou=0.95")
    
        plt.xlabel("recall")
        plt.ylabel("precison")
        plt.xlim(0, 1.0)
        plt.ylim(0, 1.01)
        plt.grid(True)
        plt.legend(loc="lower left")
        plt.savefig(out_pic)
    
    if __name__ == "__main__":
        parser = argparse.ArgumentParser()
        parser.add_argument('config', help='config file path')
        parser.add_argument('pkl_result_file', help='pkl result file path')
        parser.add_argument('--out', default='pr_curve.png')
        parser.add_argument('--eval', default='bbox')
        cfg = parser.parse_args()
    
        plot_pr_curve(config_file=cfg.config, result_file=cfg.pkl_result_file, out_pic=cfg.out, metric=cfg.eval)
    
    
    python plot_pr_curve.py configs/my_coco_config/my_coco_config.py faster_rcnn_fpn_coco.pkl
    

    这里用到的 pkl 结果文件,即是上面运行 tools/test.py 指定 --out 的输出文件。文章来源地址https://www.toymoban.com/news/detail-478682.html

到了这里,关于mmsegmentation中可视化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 可视化uniapp 2.0实现可视化微信小程序+可视化h5+可视化uniapp

    体验地址:https://we7.diyhey.com/admin/login 设计你的界面,轻松实现可视化布局! 🎨 1. 可视化拖拽容器组件,包含基础组件和表单组件,自动生成布局,一键生成uniapp、h5和小程序代码,让开发更高效! 包括字体、背景、边框、内外边距圆角等,打造独一无二的界面。 💾 3. 保

    2024年02月04日
    浏览(31)
  • 【数据可视化】(一)数据可视化概述

    目录 0.本章节概述 一、数据可视化 1、什么是数据可视化? 2、数据可视化的好处 3、数据可视化的用途 二、数据探索 1、数据相关工具的使用情景: 2、探索性查询 三、数据挑战 1、什么是数据挑战?

    2024年02月14日
    浏览(56)
  • 【数据可视化】数据可视化Canvas

    ◼什么是Canvas ---- Canvas 最初由Apple于2004 年引入,用于Mac OS X WebKit组件,为仪表板小部件和Safari浏览器等应用程序提供支持。后来,它被Gecko内核的浏览器(尤其是Mozilla Firefox),Opera和Chrome实现,并被网页超文本应用技术工作小组提议为下一代的网络技术的标准元素(HTM

    2024年02月08日
    浏览(43)
  • 可视化 | 数据可视化降维算法梳理

    本篇博客整理资源来源及代码来源,本篇主要是基于该资源,针对各种数据可视化降维算法流程梳理及可视化实践感知。 鸢尾花数据集收集了3种不同品种的鸢尾花(山鸢尾、变色鸢尾和维吉尼亚鸢尾)的特征数据。 每个样本包含了四个特征:萼片长度(sepal length)、萼片宽

    2024年02月06日
    浏览(41)
  • Python 数据可视化-文本可视化(词云图)

    这篇文章主要是教大家如何制作一个自定义个性化词云图,具体要求如下: 1.    文本内容使用文件content.txt的内容。如下图所示: 2.    字体任意选取。这里我选择的是极影毁片辉宋字体   3.    指定词云形状为文件222.png。如下图所示:   4.    设置文字颜色以背景图片

    2024年02月13日
    浏览(41)
  • 83 | Python可视化篇 —— Bokeh数据可视化

    Bokeh 是一种交互式数据可视化库,它可以在 Python 中使用。它的设计目标是提供一个简单、灵活和强大的方式来创建现代数据可视化,同时保持良好的性能。Bokeh 支持多种图表类型,包括线图、散点图、柱状图、饼图、区域图、热力图等。此外,它还支持将这些图表组合在一

    2024年02月13日
    浏览(30)
  • 81 | Python可视化篇 —— Seaborn数据可视化

    Seaborn是Python中一个基于Matplotlib的高级数据可视化库,它提供了更简单的API和更美观的图形样式,适用于数据探索和展示。在本教程中,我们将介绍Seaborn的基本概念和用法,并通过一些示例演示如何使用Seaborn来创建各种图表和图形。

    2024年02月14日
    浏览(28)
  • 可视化 | (一)数据基础及基本数据可视化方法

    ​ Parameter refinement:参数优化 Nominal(标称) Ordinal(序数) Quantitative(数量) 显示在原始数据中不明显的方面,使您能够清楚地 思考 可能隐藏在数据中的模式和关系。 显示 数据中的重要特征和模式。您还可能看到一些您没有想到的东西:异常的(可能是错误的)数据值或

    2024年02月07日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包