输出可视化图像的方法
一、添加工具在tools文件夹下添加 inference.py 工具脚本输出纯黑白掩码和原图叠加可视化图。importosimportargparseimportnumpyasnpfromPILimportImagefrommmseg.apisimportinit_model,inference_modeldefparse_args():parserargparse.ArgumentParser(description批量推理并生成分割可视化结果)parser.add_argument(config,help模型配置文件路径)parser.add_argument(checkpoint,help训练好的权重文件路径)parser.add_argument(--input,requiredTrue,help输入图片路径支持单张图片或文件夹)parser.add_argument(--output-dir,requiredTrue,help结果输出目录)parser.add_argument(--out-type,defaultboth,choices[mask,show,both],help输出类型mask纯黑白掩码show原图叠加图both两种都输出默认both)parser.add_argument(--mask-color,nargs3,typeint,default[0,255,0],help叠加掩码颜色默认绿色 R G B)parser.add_argument(--alpha,typefloat,default0.5,help叠加透明度默认0.5)parser.add_argument(--device,defaultcuda:0,help推理设备默认cuda:0)argsparser.parse_args()returnargsdefget_image_list(input_path):获取所有待推理图片路径img_list[]ifos.path.isfile(input_path):img_list.append(input_path)else:fornameinsorted(os.listdir(input_path)):ifname.lower().endswith((.png,.jpg,.jpeg,.tif,.bmp)):img_list.append(os.path.join(input_path,name))returnimg_listdefmain():argsparse_args()os.makedirs(args.output_dir,exist_okTrue)# 初始化模型modelinit_model(args.config,args.checkpoint,deviceargs.device)# 获取所有图片img_listget_image_list(args.input)print(f共找到{len(img_list)}张待推理图片)forimg_pathinimg_list:img_nameos.path.basename(img_path)print(f正在处理:{img_name})# 读取原图original_imgImage.open(img_path).convert(RGB)original_npnp.array(original_img)# 模型推理resultinference_model(model,img_path)pred_maskresult.pred_sem_seg.data[0].cpu().numpy().astype(np.uint8)# 1. 保存纯黑白掩码ifargs.out_typein[mask,both]:mask_save_pathos.path.join(args.output_dir,fmask_{img_name})Image.fromarray(pred_mask*255).save(mask_save_path)# 2. 保存原图叠加可视化图ifargs.out_typein[show,both]:mask_layernp.zeros_like(original_np)mask_layer[pred_mask1]args.mask_color overlay_nporiginal_np.copy()overlay_np[pred_mask1](original_np[pred_mask1]*(1-args.alpha)mask_layer[pred_mask1]*args.alpha).astype(np.uint8)show_save_pathos.path.join(args.output_dir,fshow_{img_name})Image.fromarray(overlay_np).save(show_save_path)print(f处理完成结果已保存至:{args.output_dir})if__name____main__:main()输入图片在data文件夹下新建一个paper_vis_dataset用来存放需要需要处理的图片data/└── paper_vis_dataset/✅ 新建专门放你挑的8张图 ├── image/放8张测试原图4物候期×2张 └── mask_show/放对应的8张真值标签图文件名和image里一一对应image放原图mask_show放标签可视化图片模型预测时只输入原图mask_show真值叠加图只是方便输出结果后对比命令python tools/inference.py configs/my_projects/stage3_finetune_mlpgate.py work_dirs/stage3_finetune_mlpgate/best_mIoU_iter_40000.pth--inputdata/paper_vis_dataset/image --output-dir paper_vis_show --out-type show我使用的模型是MLPGateFusion的stage 3的最好的40000次权重做的python tools/inference.py\configs/my_projects/stage3_finetune_mlpgate.py\work_dirs/stage3_finetune_mlpgate/best_mIoU_iter_40000.pth\--inputdata/paper_vis_dataset/image\--output-dir paper_vis_show最后输出结果在项目根目录下会出现一个paper_vis_show文件夹里面会有两部分掩码图像和叠加效果图原本是只需要掩码图像但是AI给出的inference脚本会同时输出叠加效果图就是绿色的图片后续有时间可对inference脚本进行简化。