IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 多模态模型中关于雷达特征图与融合特征图的可视化(基于CRFNet) -> 正文阅读

[Python知识库]多模态模型中关于雷达特征图与融合特征图的可视化(基于CRFNet)

效果图

  • 数据根据我写的脚本,默认保存在主路径下的image_featuremap\radar_featuremap文件夹下:
    在这里插入图片描述
    请添加图片描述
融合特征图

请添加图片描述

雷达特征图

特征输出模型注册

  • 在主文件夹下新建data_visualization.py文件:
#!/usr/bin/env python3
import argparse
import os
import sys
import keras
import keras.preprocessing.image
import tensorflow.compat.v1 as tf 
tf.disable_v2_behavior()
from keras.models import Model
import keras.preprocessing.image
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.pyplot as plt
import cv2
import progressbar

def main():
    FILE_DIRECTORY = os.path.dirname(os.path.abspath(__file__))
    parser = argparse.ArgumentParser()
    parser.add_argument('--config', type=str, default=os.path.join(FILE_DIRECTORY, "configs/temp.cfg"))
    parser.add_argument('--model', type=str, default="./saved_models/convwith10epochs.h5")  # convwith10epochs.h5
    parser.add_argument('--st', type=float, default=0.3)
    parser.add_argument('--render', default=False, action='store_true')
    parser.add_argument('--eval_from_detection_pickle', default=False, action='store_true')
    parser.add_argument('--gpu', type=str, default='0')
    args = parser.parse_args()
    cfg = get_config(args.config)
    
    model_name = args.config.split('/')[-1]
    model_name = model_name.split('.')[0]
    cfg.model_name = model_name
	# 返回backbone,也就是默认的VGG网络
    backbone = architectures.backbone(cfg.network)
    # 加载训练好的模型参数
    model = keras.models.load_model(args.model, custom_objects=backbone.custom_objects)
    # 定义需要可视化的模型层
    radar_layers = [model.get_layer(name).output for name in ['rad_block1_pool', 'rad_block2_pool', 'rad_block3_pool','rad_block4_pool','rad_block5_pool','rad_block6_pool','rad_block7_pool']]
    vision_layers = [model.get_layer(name).output for name in ['block1_conv2', 'block2_conv2', 'block3_conv2', 'block4_conv2', 'block5_conv2']]
  • 定义特征输出模型:我定义了新的model,把原来的数据作为输入,将模型需要可视化的层作为输出,方便后面可视化
	# 定义雷达特征模型
    layer_model = Model(inputs=model.input, outputs=radar_layers)
    # 图像特征模型
    image_layer_model = Model(inputs = model.input, outputs = vision_layers)

提取数据

  • 这里根据generator这个数据加载器,遍历并提取所有的数据到inputs列表中,方便后面输入
    generators = create_generators(cfg, backbone)
    test_generator = generators[2]
    inputs = []
    # load radar data
    for i in progressbar.progressbar(range(test_generator.size())):
        input, _ = test_generator.compute_input_output([i])
        inputs.append(input)
    print(len(inputs), inputs[0].shape)

提取中间特征并批量可视化

  • 融合特征层的可视化函数
    for i in range(len(inputs)):
        img_idx = i
        data = inputs[img_idx]
        # r为模型返回的某张图片的中间特征图,r.shape = [bs,h,w,c]
        feature_map = image_layer_model.predict(data) 
        # 特征图的channel数
        source_img = np.mean(np.squeeze(data)[:,:,:3],axis=2)
        plt.subplot(3,3,1)
        plt.imshow(source_img)
        for i in progressbar.progressbar(range(len(feature_map))):
            layer_map = np.squeeze(feature_map[i])
            plt.subplot(3,3,i+2)
            plt.imshow(np.mean(layer_map, axis=2))
        plt.title('{}'.format(img_idx))
        if not os.path.exists(os.path.join(FILE_DIRECTORY, 'image_featuremap')):
            os.mkdir(os.path.join(FILE_DIRECTORY, 'image_featuremap'))
        plt.savefig(os.path.join(FILE_DIRECTORY, 'image_featuremap\\{}'.format(img_idx)))
  • 雷达特征层的可视化函数
    for i in range(len(inputs)):
        img_idx = i
        data = inputs[img_idx]
        # r为模型返回的某张图片的中间特征图,r.shape = [bs,h,w,c]
        feature_map = layer_model.predict(data) 
        # 特征图的channel数
        source_img = np.mean(np.squeeze(data)[:,:,:3],axis=2)
        plt.subplot(3,3,1)
        plt.imshow(source_img)
        for i in progressbar.progressbar(range(len(feature_map))):
            layer_map = np.squeeze(feature_map[i])
            plt.subplot(3,3,i+2)
            plt.imshow(np.mean(layer_map, axis=2))
        plt.title('{}'.format(img_idx))
        if not os.path.exists(os.path.join(FILE_DIRECTORY, 'radar_featuremap')):
            os.mkdir(os.path.join(FILE_DIRECTORY, 'radar_featuremap'))
        plt.savefig(os.path.join(FILE_DIRECTORY, 'radar_featuremap\\{}'.format(img_idx)))

池化与卷积对雷达滤波的影响

在这里插入图片描述

  • 可以看出,我将雷达的pooling对雷达处理的方式改编为卷积,在特征图可视化中,卷积(左边)能够对图中的杂点进行滤波,集中在车辆这种前景物体上。
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-05-09 12:36:21  更:2022-05-09 12:39:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 15:12:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码