文档章节

PixelNet

二胡艺
 二胡艺
发布于 2017/03/03 19:01
字数 362
阅读 15
收藏 0
点赞 0
评论 0

(一)基于googlenet的model

%matplotlib inline
import numpy as np
import cv2
import caffe
import matplotlib.pyplot as plt

model='deploy.prototxt'
weight = 'bvlc_googlenet.caffemodel'
filename='../images/2007_002619.jpg'
caffe.set_mode_gpu()
net = caffe.Net(model,weight,caffe.TEST)
transformer = caffe.io.Transformer({'data':(10,3,224,224)})
transformer.set_transpose('data',(2,0,1))
#transformer.set_mean('data',np.load(meanfile).mean(1).mean(1))
transformer.set_raw_scale('data',255)
transformer.set_channel_swap('data',(2,1,0))

img = caffe.io.load_image(filename)
net.blobs['data'].data[...] = transformer.preprocess('data',img)
net.forward()
blob = net.blobs['prob'].data[0]
idx = blob.argmax()
plt.imshow(img)
print idx,blob[idx]

#for layer_key,layer_blob in net.blobs.iteritems():
#    print layer_key,layer_blob.data.shape
584 0.257885

输入图片说明

(二)可视化feature

def vis(data):
    _,C,H,W = data.shape
    d = data[0]
    n = int(np.sqrt(C))
    k = 1
    plt.figure(figsize=(64,64))
    for c in range(C):
        plt.subplot(n,n+1,k)
        k += 1
        img = d[c,:,:]
        plt.imshow(img,cmap='jet');plt.axis('off')
    plt.show()

def vis_k(data):
    print data.shape
    N,C,H,W = data.shape
    d = data[0]
    nc = 16
    k = 1
    if(N > 64):
        N = 10
    nr = int(N * C / nc)
    plt.figure(figsize=(64,64))
    for n in range(N):
        for c in range(C):
            img = data[n,c,:,:]
            plt.subplot(nr+1,nc,k)
            k += 1
            plt.imshow(img,cmap='jet');plt.axis('off')
    plt.show()
    
data = net.blobs['conv1/7x7_s2'].data
vis(data)
kernel = net.params['conv2/3x3'][0].data
#print kernel.shape
#vis_k(kernel)

输入图片说明

(三)提取feature map 的hyperColumn,然后用kmean进行聚类

from sklearn.cluster import KMeans

def upsample(data,size=(224,224)):    
    C,H,W = data.shape
    data_ = np.zeros((C,size[0],size[1]))
    for c in range(C):
        im = data[c,:,:]
        im = cv2.resize(im,size)
        data_[c,:,:] = im
    return data_
def hyperColumn(data):
    C,H,W = data.shape
    data_ = np.zeros((H * W,C))
    for h in range(H):
        for w in range(W):
            d = data[:,h,w]
            data_[h*W+w,:]=d
    return data_

conv1 = net.blobs['conv1/7x7_s2'].data[0]
conv2 = net.blobs['conv2/3x3'].data[0]
conv3 = net.blobs['inception_3a/1x1'].data[0]
conv1_ = upsample(conv1,size=(224,224))
conv2_ = upsample(conv2,size=(224,224))
conv3_ = upsample(conv3,size=(224,224))
data = np.concatenate((conv1_,conv2_,conv3_),axis=0)
trainData = hyperColumn(data)
clf = KMeans(n_clusters=5,max_iter=5000,n_init=5,n_jobs=-1)
clf.fit(trainData)
label = clf.labels_
result = label.reshape(224,224)
plt.imshow(result)

输入图片说明

© 著作权归作者所有

共有 人打赏支持
二胡艺
粉丝 3
博文 42
码字总数 12555
作品 0
镇江
程序员

暂无相关文章

10个免费的服务器监控工具

监控你的WEB服务器或者WEB主机运行是否正常与健康是非常重要的。你要确保用户始终可以打开你的网站并且网速不慢。服务器监控工具允许你收集和分析有关你的Web服务器的数据。 有许多非常好的服...

李朝强 ⋅ 23分钟前 ⋅ 0

压缩工具之zip-tar

zip 支持目录压缩。使用yum安装zip包,使用yum安装unzip包 zip 1.txt.zip 1.txt #将1.txt文件压缩,新生成的压缩文件为1.txt.zip,原文件保留 zip -r 123.zip 123/ #-r对目录操作。将123/目录...

ZHENG-JY ⋅ 23分钟前 ⋅ 0

Dubbo @Activate注解使用和实现解析

Activate注解标识一个扩展是否被激活和使用,可以放在定义的类上和方法上,dubbo用它在SPI扩张类定义上,标识这个扩展实现激活的条件和时机,先看下定义: /** * Activate * <p/> * ...

哲别0 ⋅ 30分钟前 ⋅ 0

6.5 zip压缩工具 tar打包 打包并压缩

1.tar tar命令格式 [-zjxcvfpP] filename tar -z:表示同时用gzip压缩。 -j:表示同时用bzip2压缩。 -J:表示同时用xz压缩。 -x:表示解包或者解压缩。 -t:表示查看tar包里的文件。 -c:表示建...

oschina130111 ⋅ 32分钟前 ⋅ 0

Linux系统工程狮养成记

如今的社会,随着时代的发展,出现了很多职业,像电子类,计算机类的专业,出现了各种各样的工程师,有算法工程师,java工程师,前端工程师,后台工程师,Linux工程师,运维工程师等等,不同...

六库科技 ⋅ 39分钟前 ⋅ 0

Linux 机器的渗透测试命令备忘表

如下是一份 Linux 机器的渗透测试备忘录,是在后期开发期间或者执行命令注入等操作时的一些典型命令,设计为测试人员进行本地枚举检查之用。 此外,你还可以从这儿(https://gbhackers.com/c...

寰宇01 ⋅ 40分钟前 ⋅ 0

windows 安装java开发环境,配置jdk

下载jdk安装文件 链接:https://pan.baidu.com/s/1UEKPjnAdMqNj612B39Pfsg 密码:ipqx 如果javac无法使用 1,检查环境变量名称中是否有空格。。。,去除后即可 2,将JAVA_HOME替换为原始路径...

阿豪boy ⋅ 42分钟前 ⋅ 0

简析log4j的实现方式

刚加入新公司,对日志的要求比较严格,对此特意花了几天时间看了一下log4j的源码,大概了解了一下log4j的实现方式,总结如下: log4j的实现分为两个步骤:log4j.xml的加载,logger的使用 这里...

zdatbit ⋅ 今天 ⋅ 0

win环境下jdk7与jdk8共存配置

1.jdk安装包 jdk安装包 安装步骤略 2.jdk等配置文件修改 在安装JDK1.8时(本机先安装jdk1.7再安装的jdk1.8),会将java.exe、javaw.exe、javaws.exe三个文件copy到了C:\Windows\System32,这...

泉天下 ⋅ 今天 ⋅ 0

windows profesional 2017 build problem

.net framework .... https://stackoverflow.com/questions/43330915/could-not-load-file-or-assembly-microsoft-build-frameworkvs-2017...

机油战士 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部