【常用】特征可视化(方案二)---来自大连理工zxq

1  大连理工 zxq

visualize_feature_map(outS, name, STR)

outS 特征
name 图片名
STR 字符

visualize_feature_map(outS, name, STR)
def visualize_feature_map(feature_map, name, STR):  # [out1, out2, out3, out4, out5], img_name, i
    # =>1 只留下C,H,W
    feature_map = feature_map[0]  # [1,64,88,88] -> [64,88,88]
    # =>2 计算通道数C
    feature_map_combination = []
    num_pic = feature_map.shape[0]  # [64,88,88] -> 64
    # =>3 重新设计一个列表,里面放64张特征图[f1,..,f64]
    for i in range(0, num_pic):
        print('==feature_map.shape', feature_map.shape)
        feature_map_split = feature_map[i, :, :]
        feature_map_combination.append(feature_map_split)
    # =>4 HW维度求和
    feature_map_sum = sum(ele for ele in feature_map_combination)
    feature_map_sum = feature_map_sum.cuda().data.cpu()
    # =>5 保存
    plt.imshow(feature_map_sum)
    plt.gca().xaxis.set_major_locator(plt.NullLocator())
    plt.gca().yaxis.set_major_locator(plt.NullLocator())

    plt.savefig('/home/nk/xx/see/' + "No-PR-" + STR + "-"+ name[0]+".png", bbox_inches='tight', dpi=320,
                pad_inches=0.0)

全部代码

import torch
from PIL import Image
from torch.autograd import Variable
from torchvision import transforms
from config import test_data
from misc import check_mkdir
from model_fpn_certain_uncertain_vgg16_sideoutfuse import RGB_sal
from pylab import *

torch.manual_seed(2018)
torch.cuda.set_device(0)


ckpt_path = './model'
exp_name = 'model_rgb_certainuncertain_vgg16_sideoutfuse'

args = {
    'snapshot': '132000',
    'crf_refine':False,
    'save_results': True
}

img_transform = transforms.Compose([
    transforms.ToTensor(),
    transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
])
target_transform = transforms.ToTensor()
to_pil = transforms.ToPILImage()

to_test = {'test':test_data}

def main():
    t0 = time.time()
    net = RGB_sal().cuda()
    print ('load snapshot \'%s\' for testing' % args['snapshot'])
    net.load_state_dict(torch.load(os.path.join(ckpt_path, exp_name, args['snapshot'] + '.pth'),map_location={'cuda:1': 'cuda:1'}))
    net.eval()

    with torch.no_grad():

        for name, root in to_test.items():

            check_mkdir(os.path.join(ckpt_path, exp_name, '(%s) %s_%s' % (exp_name, name, args['snapshot'])))
            root1 = os.path.join(root,'images')
            img_list = [os.path.splitext(f)[0] for f in os.listdir(root1) if f.endswith('.jpg')]
            for idx, img_name in enumerate(img_list):
                print ('predicting for %s: %d / %d' % (name, idx + 1, len(img_list)))
                img1 = Image.open(os.path.join(root,'images',img_name + '.jpg')).convert('RGB')
                img1 = img1.resize([384,384])
                img_var = Variable(img_transform(img1).unsqueeze(0), volatile=True).cuda()
                output1,output2,output3,output4 = net(img_var)
                a = [output1,output2,output3,output4]
                for i in range(len(a)):
                    visualize_feature_map(a[i],img_name,i)

def get_row_col(num_pic):
    squr = num_pic ** 0.5
    row = round(squr)
    col = row + 1 if squr - row > 0 else row
    return row, col


def visualize_feature_map(img_batch,img_name,num):
    print(img_batch.size()[0:])

    feature_map = torch.squeeze(img_batch, 0)
    print(feature_map.shape)
    if(len(feature_map.size())==2):
        feature_map = torch.unsqueeze(feature_map,0)


    feature_map_combination = []
    num_pic = feature_map.shape[0]
    row, col = get_row_col(num_pic)

    for i in range(0, num_pic):
        feature_map_split = feature_map[i, :, :]
        feature_map_combination.append(feature_map_split)

    feature_map_sum = sum(ele for ele in feature_map_combination)
    feature_map_sum = feature_map_sum.cuda().data.cpu()
    plt.imshow(feature_map_sum)
    plt.gca().xaxis.set_major_locator(plt.NullLocator())
    plt.gca().yaxis.set_major_locator(plt.NullLocator())
    plt.savefig('/home/zxq/桌面/certain_uncertain-RGBD/visual/decoder_uncertain/'+img_name+'_'+str(num)+".png", bbox_inches='tight', dpi=18, pad_inches=0.0)

if __name__ == '__main__':
    main()

2 其他可视化方法
BK-SDM NetsPresso · GitHub
Faster SD https://github.com/hutaiHang/Faster-Diffusion

BK-SDM

Faster SD

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

计算机视觉-Archer

图像分割没有团队的同学可加群

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值