用已训练模型提取特征
用已训练模型抽取特征
在抽取特征之前,有必要稍微先来了解一下imagenet-vgg-f这个模型。这里稍微啰嗦一下上面的那个测试脚本,im_ = imresize(im_, net.normalization.imageSize(1:2))将图像缩放到统一尺寸,即224*224的大小,这点你可以看看net中normalization.imageSize,而且还必须为彩色图像。res有22个struct,从第17到20的struct分别是4096位,最后第21到22个struct是1000维的,是4096维经过softmax后的结果,这里我们要用的是第20个struct的数据(自己测过第19个struct,检索效果比采用第20个struct的特征差)。这个网络有8层构成,从第6层到第8层都是全连接层。关于这个网络的结构,暂时到这里。
大致了解了这个网络结构后,我们便可以使用该网络抽取图像的特征了,抽取特征的代码(完整的图像检索代码见文末最后给出的链接)如下:
% Author: Yong Yuan
% Homepage: yongyuan.name
clear all;close all;clc;
% version: matconvnet-1.0-beta17
%run ./matconvnet-1.0-beta17/matlab/vl_compilenn
run ./matconvnet-1.0-beta17/matlab/vl_setupnn
%% Step 1 lOADING PATHS
path_imgDB = ‘./database/’;
addpath(path_imgDB);
addpath tools;
% viesion: matconvnet-1.0-beta17
net = load(‘imagenet-vgg-f.mat’) ;
%% Step 2 LOADING IMAGE AND EXTRACTING FEATURE
imgFiles = dir(path_imgDB);
imgNamList = {imgFiles(~[imgFiles.isdir]).name};
clear imgFiles;
imgNamList = imgNamList’;
numImg = length(imgNamList);
feat = [];
rgbImgList = {};
%parpool;
%parfor i = 1:numImg
for i = 1:numImg
oriImg = imread(imgNamList{i, 1});
if size(oriImg, 3) == 3
im_ = single(oriImg) ; % note: 255 range
im_ = imresize(im_, net.meta.normalization.imageSize(1:2)) ;
im_ = im_ - net.meta.normalization.averageImage ;
res = vl_simplenn(net, im_) ;
% viesion: matconvnet-1.0-beta17featVec = res(20).x;featVec = featVec(:);feat = [feat; featVec'];fprintf('extract %d image\n\n', i);
else
im_ = single(repmat(oriImg,[1 1 3])) ; % note: 255 range
im_ = imresize(im_, net.meta.normalization.imageSize(1:2)) ;
im_ = im_ - net.meta.normalization.averageImage ;
res = vl_simplenn(net, im_) ;
% viesion: matconvnet-1.0-beta17featVec = res(20).x;featVec = featVec(:);feat = [feat; featVec'];fprintf('extract %d image\n\n', i);
end
end
feat_norm = normalize1(feat);
save(‘feat4096Norml.mat’,‘feat_norm’, ‘imgNamList’, ‘-v7.3’);
在倒数第二行,对特征进行了L2归一化,方便后面用余弦距离度量,L2归一化方法如下:
function [X] = normalize1(X)
% X:n*d
for i=1:size(X,1)
if(norm(X(i,:))==0)
elseX(i,:) = X(i,:)./norm(X(i,:));
end
end
用已训练模型提取特征相关推荐
- caffe 提取特征并可视化(已测试可执行)及在线可视化
网络结构在线可视化工具 http://ethereon.github.io/netscope/#/editor 参考主页: caffe 可视化的资料可在百度云盘下载 链接: http://pan.ba ...
- keras系列︱Application中五款已训练模型、VGG16框架(Sequential式、Model式)解读(二)...
引自:http://blog.csdn.net/sinat_26917383/article/details/72859145 中文文档:http://keras-cn.readthedocs.io/ ...
- keras系列︱Application中五款已训练模型、VGG16框架(Sequential式、Model式)解读(二)
不得不说,这深度学习框架更新太快了尤其到了Keras2.0版本,快到Keras中文版好多都是错的,快到官方文档也有旧的没更新,前路坑太多. 到发文为止,已经有theano/tensorflow/CNT ...
- keras: 用预训练的模型提取特征
keras提供了VGG19在ImageNet上的预训练权重模型文件,其他可用的模型还有VGG16.Xception.ResNet50.InceptionV3 4个. VGG19在keras中的定义: ...
- 影像组学学员成果分享:BraTS2017数据集的迁移学习+深度学习提取特征+机器学习
感谢[呼呼]同学分享的"BraTS2017数据集的迁移学习+深度学习提取特征+机器学习" 迁移学习 一.迁移学习(把之前对Medicalnet的迁移学习内容跑了一遍,用的BraTS ...
- 机器视觉:Caffe Python接口多进程提取特征
想象这样一个场景:服务器上配备了很多GPU显卡,而你又使用的是Caffe,不幸的是,你还选用了Python来写代码,不幸中的不幸是你还要在短时间内处理百万千万规模的图片.那么,问题来了,Caffe本身 ...
- halcon边缘提取颜色相近_初学者福利!三种用Python从图像数据中提取特征的技术...
全文共4073字,预计学习时长8分钟 你之前是否使用过图像数据?也许你想建立自己的物体检测模型,或者仅仅是想统计走进某栋建筑物的人数,使用计算机视觉技术处理图像拥有无穷无尽的可能性. 但数据科学家最近 ...
- 使用word2vec预训练模型提取DNA/RNA序列特征向量
数据集:https://github.com/alivelxj/m5c-DFRESG/tree/main/m5c/data 代码: 处理数据集 import pandas as pd import n ...
- 阿里天池大数据竞赛(一)用ODPS提取特征
//2015年4月30日 提取特征之所以难,是因为我们写出的sql语句往往只能提取一个特征. 而在ODPS上却不一样,一条语句可以提取很多特征. 如提取最近1.2.3.4天四种行为的数量 重点是dec ...
最新文章
- Linu 修改maven的setting保护文件
- 升技主板RAID磁盘阵列图解
- 计算机小键盘顺序,为什么电脑、电话数字键盘排列顺序不同?
- 成立阿里大农业兄弟连-万祥军:农民丰收节交易会乡村脱贫
- Winforn中使用代码动态生成控件
- MQ消息队列产品测试
- 高等数学下-赵立军-北京大学出版社-题解-练习11.3
- [Silverlight入门系列]使用MVVM模式(7):ViewModel的INotifyPropertyChanged接口实现
- php中source,PHP中source #N问题的解决方法
- 华为鸿蒙系统正式拜拜,从“哄蒙”到“鸿蒙”,现在,正式对华为鸿蒙OS说你好!...
- 操作系统简介-计算机历史、进程(一)
- 基于深度卷积神经网络的苹果叶片植物病理学疾病检测
- kdtree java_KdTree理解与实现(Java)
- 医疗大数据为何发展如此缓慢
- flask gunicorn gevent部署
- js代码混淆 webpack-obfuscator
- 手机扫描电脑二维码登录原理
- 数据结构基础之迭代法归并排序
- afrog 进阶篇(实战)
- python39使用pip安装easyocr实现文字识别