当前位置:网站首页>Mmseg - Mutli view time series data inspection and visualization
Mmseg - Mutli view time series data inspection and visualization
2022-07-05 13:22:00 【Irving. Gao】
Visualization function
First, we need to construct a function that can be used for visualization , We write it in tools/visualize_helper.py
Next , Convenient to call in other functions :
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]) # Horizontal splicing
surr_img_btm = cv2.hconcat(img_list[3+idx*6:6+idx*6]) # Horizontal splicing
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]) # Horizontal splicing
cv2.imwrite(f"{
save_name}_bs{
idx}.jpg", all_img)
Visualize during training
stay forward_train
Functions can be realized by adding functions to functions :
def forward_train(self, img, img_metas, gt_semantic_seg):
#####################
# Data inspection and visualization during training
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
Visualization
- On the left is the previous moment 6 A look around image , On the right is the current moment 6 A look around image , On the far right is BEV Of GT.
边栏推荐
- How to protect user privacy without password authentication?
- 精彩速递|腾讯云数据库6月刊
- SAE international strategic investment geometry partner
- LB10S-ASEMI整流桥LB10S
- RHCSA10
- MSTP and eth trunk
- 碎片化知识管理工具Memos
- How to choose note taking software? Comparison and evaluation of notion, flowus and WOLAI
- 一文详解ASCII码,Unicode与utf-8
- How to realize batch sending when fishing
猜你喜欢
爱可生SQLe审核工具顺利完成信通院‘SQL质量管理平台分级能力’评测
Hiengine: comparable to the local cloud native memory database engine
How to realize batch sending when fishing
Shandong University Summer Training - 20220620
山东大学暑期实训一20220620
“百度杯”CTF比赛 九月场,Web:SQL
“百度杯”CTF比赛 九月场,Web:Upload
Flutter 3.0更新后如何应用到小程序开发中
【服务器数据恢复】某品牌服务器存储raid5数据恢复案例
[daily question] 1200 Minimum absolute difference
随机推荐
一文详解ASCII码,Unicode与utf-8
Can and can FD
Solve Unicode decodeerror: 'GBK' codec can't decode byte 0xa2 in position 107
UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xe6 in position 76131: invalid continuation byt
MMSeg——Mutli-view时序数据检查与可视化
爱可生SQLe审核工具顺利完成信通院‘SQL质量管理平台分级能力’评测
Run, open circuit
峰会回顾|保旺达-合规和安全双驱动的数据安全整体防护体系
Flutter 3.0更新后如何应用到小程序开发中
Reverse Polish notation
【Hot100】34. Find the first and last positions of elements in a sorted array
数据湖(七):Iceberg概念及回顾什么是数据湖
go 字符串操作
Go string operation
Flutter draws animation effects of wave movement, curves and line graphs
《2022年中國銀行業RPA供應商實力矩陣分析》研究報告正式啟動
Could not set property ‘id‘ of ‘class XX‘ with value ‘XX‘ argument type mismatch 解决办法
聊聊异步编程的 7 种实现方式
【Hot100】34. 在排序数组中查找元素的第一个和最后一个位置
mysql econnreset_Nodejs 套接字报错处理 Error: read ECONNRESET