大数据最新MMSegmentation文档学习记录(一)(5),最详细的解释小白也能听懂

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取


**mmseg.apis.inference\_model**使用分割器推理图像。



from mmseg.apis import init_model, inference_model

config_path = ‘configs/pspnet/pspnet_r50-d8_4xb2-40k_cityscapes-512x1024.py’
checkpoint_path = ‘checkpoints/pspnet_r50-d8_512x1024_40k_cityscapes_20200605_003338-2966598c.pth’
img_path = ‘demo/demo.png’

model = init_model(config_path, checkpoint_path)
result = inference_model(model, img_path)
‘’’
参数:

model(nn.Module)- 加载的分割器

imgs(str,np.ndarray 或 list[str/np.ndarray])- 图像文件或加载的图像

返回值:

SegDataSample 或 list[SegDataSample]:
!如果 imgs 是列表或元组,则返回相同长度的列表类型结果,否则直接返回分割结果。

SegDataSample 中的参数分为几个部分:

gt_sem_seg(PixelData)- 语义分割的标注。

pred_sem_seg(PixelData)- 语义分割的预测。

seg_logits(PixelData)- 模型最后一层的输出结果。

‘’’


**mmseg.apis.show\_result\_pyplot**在图像上可视化分割结果。



from mmseg.apis import init_model, inference_model, show_result_pyplot

config_path = ‘configs/pspnet/pspnet_r50-d8_4xb2-40k_cityscapes-512x1024.py’
checkpoint_path = ‘checkpoints/pspnet_r50-d8_512x1024_40k_cityscapes_20200605_003338-2966598c.pth’
img_path = ‘demo/demo.png’

从配置文件和权重文件构建模型

model = init_model(config_path, checkpoint_path, device=‘cuda:0’)

推理给定图像

result = inference_model(model, img_path)

展示分割结果

vis_image = show_result_pyplot(model, img_path, result)

保存可视化结果,输出图像将在 workdirs/result.png 路径下找到

vis_iamge = show_result_pyplot(model, img_path, result, out_file=‘work_dirs/result.png’)

修改展示图像的时间,注意 0 是表示“无限”的特殊值

vis_image = show_result_pyplot(model, img_path, result, wait_time=5)

‘’’
参数:

model(nn.Module)- 加载的分割器。

img(str 或 np.ndarray)- 图像文件名或加载的图像。

result(SegDataSample)- SegDataSample 预测结果。

opacity(float)- 绘制分割图的不透明度。默认值为 0.5,必须在 (0,1] 范围内。

title(str)- pyplot 图的标题。默认值为 ‘’。

draw_gt(bool)- 是否绘制 GT SegDataSample。默认为 True。

draw_pred(draws_pred)- 是否绘制预测 SegDataSample。默认为 True。

wait_time(float)- 显示的间隔,0 是表示“无限”的特殊值。默认为 0。

show(bool)- 是否展示绘制的图像。默认为 True。

save_dir(str,可选)- 为所有存储后端保存的文件路径。如果为 None,则后端存储将不会保存任何数据。

out_file(str,可选)- 输出文件的路径。默认为 None。

返回值:

np.ndarray:通道为 RGB 的绘制图像。

注意: 如果当前设备没有图形用户界面,建议将 show 设置为 False,并指定 out_file 或 save_dir 来保存结果。如果您想在窗口上显示结果,则不需要特殊设置。
‘’’


### (三)使用现有模型进行训练和测试


#### 1.在单GPU上训练和测试


**1.tools/train.py** 文件提供了在单GPU上部署训练任务的方法



python tools/train.py ${配置文件} [可选参数]
‘’’
–work-dir ${工作路径}: 重新指定工作路径

–amp: 使用自动混合精度计算

–resume: 从工作路径中保存的最新检查点文件(checkpoint)恢复训练

–cfg-options ${需更覆盖的配置}: 覆盖已载入的配置中的部分设置,并且 以 xxx=yyy 格式的键值对 将被合并到配置文件中。 比如: ‘–cfg-option model.encoder.in_channels=6’, 更多细节请看指导。
‘’’

!命令行参数 --resume 和在配置文件中的参数 load_from 的不同之处:

–resume 只决定是否继续使用工作路径中最新的检查点,它常常用于恢复被意外打断的训练。

load_from 会明确指定被载入的检查点文件,且训练迭代器将从0开始,通常用于微调模型。

如果您希望从指定的检查点上恢复训练您可以使用:

python tools/train.py 配置文件 − − r e s u m e − − c f g − o p t i o n s l o a d f r o m = {配置文件} --resume --cfg-options load_from= 配置文件resumecfgoptionsloadfrom={检查点}


**2.tools/test.py** 文件提供了在单 GPU 上启动测试任务的方法。



python tools/test.py ${配置文件} ${模型权重文件} [可选参数]
‘’’
–work-dir: 如果指定了路径,结果会保存在该路径下。如果没有指定则会保存在 work_dirs/{配置文件名} 路径下.

–show: 当 --show-dir 没有指定时,可以使用该参数,在程序运行过程中显示预测结果。

–show-dir: 绘制了分割掩膜图片的存储文件夹。如果指定了该参数,则可视化的分割掩膜将被保存到 work_dir/timestamp/{指定路径}.

–wait-time: 多次可视化结果的时间间隔。当 --show 为激活状态时发挥作用。默认为2。

–cfg-options: 如果被具体指定,以 xxx=yyy 形式的键值对将被合并入配置文件中。

‘’’


#### 2.测试并保存分割结果


当需要保存测试输出的分割结果,用 --out 指定分割结果输出路径



python tools/test.py ${CONFIG_FILE} ${CHECKPOINT_FILE} --out ${OUTPUT_DIR}


以保存模型 fcn\_r50-d8\_4xb4-80k\_ade20k-512x512 在 ADE20K 验证数据集上的结果为例:



python tools/test.py configs/fcn/fcn_r50-d8_4xb4-80k_ade20k-512x512.py ckpt/fcn_r50-d8_512x512_80k_ade20k_20200614_144016-f8ac5082.pth --out work_dirs/format_results
‘’’
或者通过配置文件定义 output_dir。例如在 configs/fcn/fcn_r50-d8_4xb4-80k_ade20k-512x512.py 添加 test_evaluator 定义:

test_evaluator = dict(type=‘IoUMetric’, iou_metrics=[‘mIoU’], output_dir=‘work_dirs/format_results’)

然后执行相同功能的命令不需要再使用 --out:

python tools/test.py configs/fcn/fcn_r50-d8_4xb4-80k_ade20k-512x512.py ckpt/fcn_r50-d8_512x512_80k_ade20k_20200614_144016-f8ac5082.pth

‘’’


当测试的数据集没有提供标注,评测时没有真值可以参与计算,因此需要设置 **format\_only=True**, 同时需要修改 **test\_dataloader**,由于没有标注,我们需要在数据增强变换中**删掉 dict(type=‘LoadAnnotations’)**,以下是一个配置示例:



test_evaluator = dict(
type=‘IoUMetric’,
iou_metrics=[‘mIoU’],
format_only=True,
output_dir=‘work_dirs/format_results’)
test_dataloader = dict(
batch_size=1,
num_workers=4,
persistent_workers=True,
sampler=dict(type=‘DefaultSampler’, shuffle=False),
dataset=dict(
type = ‘ADE20KDataset’
data_root=‘data/ade/release_test’,
data_prefix=dict(img_path=‘testing’),
# 测试数据变换中没有加载标注
pipeline=[
dict(type=‘LoadImageFromFile’),
dict(type=‘Resize’, scale=(2048, 512), keep_ratio=True),
dict(type=‘PackSegInputs’)
]))


然后执行测试命令:



python tools/test.py configs/fcn/fcn_r50-d8_4xb4-80k_ade20k-512x512.py ckpt/fcn_r50-d8_512x512_80k_ade20k_20200614_144016-f8ac5082.pth


**举例**:测试 Cityscapes 数据集并保存输出分割结果  
 使用 CityscapesMetric 来保存模型在 Cityscapes 数据集上的测试结果,以下是一个配置示例:



test_evaluator = dict(
type=‘CityscapesMetric’,
format_only=True,
keep_results=True,
output_dir=‘work_dirs/format_results’)
test_dataloader = dict(
batch_size=1,
num_workers=4,
persistent_workers=True,
sampler=dict(type=‘DefaultSampler’, shuffle=False),
dataset=dict(
type=‘CityscapesDataset’,
data_root=‘data/cityscapes/’,
data_prefix=dict(img_path=‘leftImg8bit/test’),
pipeline=[
dict(type=‘LoadImageFromFile’),
dict(type=‘Resize’, scale=(2048, 1024), keep_ratio=True),

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

9465236)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 27
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值