当前位置:网站首页>MMSeg——Mutli-view时序数据检查与可视化
MMSeg——Mutli-view时序数据检查与可视化
2022-07-05 13:17:00 【Irving.Gao】
可视化功能函数
首先我们需要构造一个能够用于可视化的功能函数,我们将其写在tools/visualize_helper.py
下,方便在其他函数中调用:
visualize_helper.py
import os
import cv2
import torch
import numpy as np
# visualize
label_colors = np.array([
[255, 255, 255],
[0, 0, 255],
[0, 255, 0],
[255, 0, 0],
[0, 255, 255],
])
def decode_segmap(mask):
rgb_mask_list = [mask.copy() for i in range(3)]
rgb = np.ones((mask.shape[0], mask.shape[1], 3)) # create an empty rgb image to save clorized masks
for idx, single_mask in enumerate(rgb_mask_list):
for idx_c, color in enumerate(label_colors):
rgb_mask_list[idx][single_mask == idx_c] = color[idx] # colorize pixels if the value is equal to the class num
rgb[:, :, idx] = rgb_mask_list[idx] # rgb = [r, g, b]
return rgb.astype(np.int)
def post_process(mask):
''' mask: [W, H] gt_mask: [W, H, 3] '''
gt_mask = decode_segmap(mask)
return gt_mask
def get_multi_view_imgs(multi_view_file_list, dataset_dir):
''' multi_view_imgs (Tensor): input images, shape is [B,6,3,H,W] '''
img_list = []
for i, img_path in enumerate(multi_view_file_list):
img = cv2.imread(os.path.join(dataset_dir, img_path))
img_list.append(img.astype('float32'))
num_temporal = int(len(img_list)/6)
surr_img_list = []
for idx in range(num_temporal):
surr_img_top = cv2.hconcat(img_list[0+idx*6:3+idx*6]) # 水平拼接
surr_img_btm = cv2.hconcat(img_list[3+idx*6:6+idx*6]) # 水平拼接
surr_img = cv2.vconcat([surr_img_top, surr_img_btm])
surr_img_list.append(surr_img)
surr_imgs = cv2.hconcat(surr_img_list)
return surr_imgs, num_temporal
def get_gt_imgs(gt):
''' gt (Tensor): input gt, shape is [B,H,W] '''
gt = gt.squeeze(0).squeeze(0)
gt = gt.cpu().numpy()
gt_img = post_process(gt)
return gt_img.astype('float32')
def save_train_imgs(img_metas, gt, save_name="multi_view_imgs"):
''' img_metas (list[dict]): List of image info dict gt (Tensor): input gt, shape is [B,H,W] '''
for idx, img_meta in enumerate(img_metas):
dataset_dir = "/".join(img_meta['filename'].split("/")[:-3])
file_list = img_meta['ori_filename']
surr_img, num_temporal = get_multi_view_imgs(file_list, dataset_dir)
gt_img = get_gt_imgs(gt)
surr_img = cv2.resize(surr_img ,(1600*num_temporal, 600))
gt_img = cv2.resize(gt_img, (300, 600))
print(surr_img.shape)
print(gt_img.shape)
all_img = cv2.hconcat([surr_img, gt_img]) # 水平拼接
cv2.imwrite(f"{
save_name}_bs{
idx}.jpg", all_img)
在训练过程中进行可视化
在forward_train
函数中加入函数即可实现功能:
def forward_train(self, img, img_metas, gt_semantic_seg):
#####################
# 训练过程中数据检查与可视化
from tools.visualize_helper import save_train_imgs
save_train_imgs(img_metas, gt_semantic_seg)
###################
x = self.extract_feat(img)
losses = dict()
loss_decode = self._decode_head_forward_train(x, img_metas,
gt_semantic_seg)
losses.update(loss_decode)
if self.with_auxiliary_head:
loss_aux = self._auxiliary_head_forward_train(
x, img_metas, gt_semantic_seg)
losses.update(loss_aux)
return losses
可视化效果
- 左边为前一时刻的6张环视图像,右边为当前时刻的6张环视图像,最右边为BEV的GT。
边栏推荐
- The solution of outputting 64 bits from printf format%lld of cross platform (32bit and 64bit)
- 国际自动机工程师学会(SAE International)战略投资几何伙伴
- Introduction aux contrôles de la page dynamique SAP ui5
- 程序员成长第八篇:做好测试工作
- C# 对象存储
- leetcode:221. Maximum square [essence of DP state transition]
- 将函数放在模块中
- 数据泄露怎么办?'华生·K'7招消灭安全威胁
- 946. Verify stack sequence
- Association modeling method in SAP segw transaction code
猜你喜欢
山东大学暑期实训一20220620
Pandora IOT development board learning (HAL Library) - Experiment 7 window watchdog experiment (learning notes)
RHCSA9
Sorry, we can't open xxxxx Docx, because there is a problem with the content (repackaging problem)
Jenkins installation
MySQL - database query - sort query, paging query
初次使用腾讯云,解决只能使用webshell连接,不能使用ssh连接。
DataPipeline双料入选中国信通院2022数智化图谱、数据库发展报告
简单上手的页面请求和解析案例
OpenHarmony应用开发之Navigation组件详解
随机推荐
MATLAB论文图表标准格式输出(干货)
解决uni-app配置页面、tabBar无效问题
Principle and performance analysis of lepton lossless compression
数据湖(七):Iceberg概念及回顾什么是数据湖
精彩速递|腾讯云数据库6月刊
程序员成长第八篇:做好测试工作
时钟周期
"Baidu Cup" CTF competition in September, web:sql
go map
ASEMI整流桥HD06参数,HD06图片,HD06应用
[深度学习论文笔记]使用多模态MR成像分割脑肿瘤的HNF-Netv2
JS to determine whether an element exists in the array (four methods)
山东大学暑期实训一20220620
LB10S-ASEMI整流桥LB10S
JPA规范总结和整理
函数传递参数小案例
MSTP and eth trunk
Le rapport de recherche sur l'analyse matricielle de la Force des fournisseurs de RPA dans le secteur bancaire chinois en 2022 a été officiellement lancé.
先写API文档还是先写代码?
Shu tianmeng map × Weiyan technology - Dream map database circle of friends + 1