当前位置:网站首页>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.

边栏推荐
- 山东大学暑期实训一20220620
- 运筹说 第68期|2022年最新影响因子正式发布 快看管科领域期刊的变化
- It's too convenient. You can complete the code release and approval by nailing it!
- RHCSA8
- Get you started with Apache pseudo static configuration
- Hundred days to complete the open source task of the domestic database opengauss -- openguass minimalist version 3.0.0 installation tutorial
- go 指针
- 什么是网络端口
- MMSeg——Mutli-view时序数据检查与可视化
- “百度杯”CTF比赛 九月场,Web:SQL
猜你喜欢

Actual combat simulation │ JWT login authentication

The Research Report "2022 RPA supplier strength matrix analysis of China's banking industry" was officially launched

Talk about seven ways to realize asynchronous programming

STM32 and motor development (from architecture diagram to documentation)

How to realize batch sending when fishing

Simple page request and parsing cases

FPGA 学习笔记:Vivado 2019.1 添加 IP MicroBlaze

聊聊异步编程的 7 种实现方式

峰会回顾|保旺达-合规和安全双驱动的数据安全整体防护体系

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é.
随机推荐
Hiengine: comparable to the local cloud native memory database engine
量价虽降,商业银行结构性存款为何受上市公司所偏爱?
Pandora IOT development board learning (HAL Library) - Experiment 7 window watchdog experiment (learning notes)
一网打尽异步神器CompletableFuture
Shu tianmeng map × Weiyan technology - Dream map database circle of friends + 1
FPGA 学习笔记:Vivado 2019.1 添加 IP MicroBlaze
Write API documents first or code first?
【每日一题】1200. 最小绝对差
CloudCompare——点云切片
TortoiseSVN使用情形、安装与使用
C object storage
【MySQL 使用秘籍】一網打盡 MySQL 時間和日期類型與相關操作函數(三)
Natural language processing from Xiaobai to proficient (4): using machine learning to classify Chinese email content
#从源头解决# 自定义头文件在VS上出现“无法打开源文件“XX.h“的问题
The Research Report "2022 RPA supplier strength matrix analysis of China's banking industry" was officially launched
Apicloud studio3 API management and debugging tutorial
How to choose note taking software? Comparison and evaluation of notion, flowus and WOLAI
MATLAB论文图表标准格式输出(干货)
go 字符串操作
Fragmented knowledge management tool memos