深度学习入门;图像的heatMap

作者:liyaohhh
原文:https://blog.csdn.net/liyaohhh/article/details/50990927

图像的heatMap是什么,一副图片的heatmap可以帮助我们在上面检测到想要的object,如下左图所示:


              
       可以直接的看到,人脸的的区域有红色区域,哈哈,这个时候呢用sliding window在图片上进行检测,对于每一个窗口里面的object进行识别,就是检测这个window里面的object是不是红色的区域,是的话就是检测的到的人脸啦。这里我们首先看一下我们程序的结果:右上方的图片最后的那个区域就是哦我们想要的,那个红色的区域就是我们想要的。

             具体的做法就是先在classification net上进行pre-train,之后去掉softmax层,改全部的fc层改成卷积层,如何该呢,参考这个链接,代码如下:
 

def convert_full_conv(model_net,model_params,model_net_fc,model_params_fc):
    //原有的全连接层
     params = ['fc6', 'fc7']
     params_fc =  ['fc6-conv', 'fc7-conv']
    //加载原有的classification net
    net = caffe.Net(model_net, model_params, caffe.TEST)
	//提取fc层中的最后的两个fc层作为一个字典{layerName:(c*w*h,b)}
    fc_params = {pr: (net.params[pr][0].data, net.params[pr][1].data) for pr in params}
	//加载fc-conv net
    net_fc = caffe.Net(model_define_fc, model_weight, caffe.TEST)
	//fc-conv参数
    conv_params = {pr: (net_fc.params[pr][0].data, net_fc.params[pr][1].data) for pr in params_fc}
	//把fc层的后面的三个参数flat,也就是相乘
    for pr, pr_conv in zip(params, params_fc):
       conv_params[pr_conv][0].flat = fc_params[pr][0].flat
       conv_params[pr_conv][1][...] = fc_params[pr][1]
    net_fc.save(model_weight_fc)
    print 'convert done!'
    return net_fc


     之后把原来的那张图片输入网络,就会得到最终的heatmap,之所以有那么多的heatmap是因为对图片进行了不同程度的放缩。

import numpy as np
import cv2

kernel=cv2.getGaussianKernel(256,50)
kernel=kernel*kernel.T
#scales all the values and make the center vaule of kernel to be 1.0
kernel=kernel/np.max(kernel)
heatmap=kernel*255
heatmap=heatmap.astype(np.uint8)
heatmap=cv2.applyColorMap(heatmap, cv2.COLORMAP_HOT)
cv2.imshow('heatmap',heatmap)
cv2.waitKey(0)

 

  • 7
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值