用已训练模型抽取特征
在抽取特征之前,有必要稍微先来了解一下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

用已训练模型提取特征相关推荐

  1. caffe 提取特征并可视化(已测试可执行)及在线可视化

    网络结构在线可视化工具 http://ethereon.github.io/netscope/#/editor 参考主页: caffe 可视化的资料可在百度云盘下载 链接: http://pan.ba ...

  2. keras系列︱Application中五款已训练模型、VGG16框架(Sequential式、Model式)解读(二)...

    引自:http://blog.csdn.net/sinat_26917383/article/details/72859145 中文文档:http://keras-cn.readthedocs.io/ ...

  3. keras系列︱Application中五款已训练模型、VGG16框架(Sequential式、Model式)解读(二)

    不得不说,这深度学习框架更新太快了尤其到了Keras2.0版本,快到Keras中文版好多都是错的,快到官方文档也有旧的没更新,前路坑太多. 到发文为止,已经有theano/tensorflow/CNT ...

  4. keras: 用预训练的模型提取特征

    keras提供了VGG19在ImageNet上的预训练权重模型文件,其他可用的模型还有VGG16.Xception.ResNet50.InceptionV3 4个. VGG19在keras中的定义: ...

  5. 影像组学学员成果分享:BraTS2017数据集的迁移学习+深度学习提取特征+机器学习

    感谢[呼呼]同学分享的"BraTS2017数据集的迁移学习+深度学习提取特征+机器学习" 迁移学习 一.迁移学习(把之前对Medicalnet的迁移学习内容跑了一遍,用的BraTS ...

  6. 机器视觉:Caffe Python接口多进程提取特征

    想象这样一个场景:服务器上配备了很多GPU显卡,而你又使用的是Caffe,不幸的是,你还选用了Python来写代码,不幸中的不幸是你还要在短时间内处理百万千万规模的图片.那么,问题来了,Caffe本身 ...

  7. halcon边缘提取颜色相近_初学者福利!三种用Python从图像数据中提取特征的技术...

    全文共4073字,预计学习时长8分钟 你之前是否使用过图像数据?也许你想建立自己的物体检测模型,或者仅仅是想统计走进某栋建筑物的人数,使用计算机视觉技术处理图像拥有无穷无尽的可能性. 但数据科学家最近 ...

  8. 使用word2vec预训练模型提取DNA/RNA序列特征向量

    数据集:https://github.com/alivelxj/m5c-DFRESG/tree/main/m5c/data 代码: 处理数据集 import pandas as pd import n ...

  9. 阿里天池大数据竞赛(一)用ODPS提取特征

    //2015年4月30日 提取特征之所以难,是因为我们写出的sql语句往往只能提取一个特征. 而在ODPS上却不一样,一条语句可以提取很多特征. 如提取最近1.2.3.4天四种行为的数量 重点是dec ...

最新文章

  1. Linu 修改maven的setting保护文件
  2. 升技主板RAID磁盘阵列图解
  3. 计算机小键盘顺序,为什么电脑、电话数字键盘排列顺序不同?
  4. 成立阿里大农业兄弟连-万祥军:农民丰收节交易会乡村脱贫
  5. Winforn中使用代码动态生成控件
  6. MQ消息队列产品测试
  7. 高等数学下-赵立军-北京大学出版社-题解-练习11.3
  8. [Silverlight入门系列]使用MVVM模式(7):ViewModel的INotifyPropertyChanged接口实现
  9. php中source,PHP中source #N问题的解决方法
  10. 华为鸿蒙系统正式拜拜,从“哄蒙”到“鸿蒙”,现在,正式对华为鸿蒙OS说你好!...
  11. 操作系统简介-计算机历史、进程(一)
  12. 基于深度卷积神经网络的苹果叶片植物病理学疾病检测
  13. kdtree java_KdTree理解与实现(Java)
  14. 医疗大数据为何发展如此缓慢
  15. flask gunicorn gevent部署
  16. js代码混淆 webpack-obfuscator
  17. 手机扫描电脑二维码登录原理
  18. 数据结构基础之迭代法归并排序
  19. afrog 进阶篇(实战)
  20. python39使用pip安装easyocr实现文字识别

热门文章

  1. 有关软件测试的问答(转)
  2. 关于锂离子电池负极配料消泡剂的争议,我想澄清一下
  3. 无人机航拍图像匹配——ORB算法实践(含代码)
  4. 上帝之光(God Ray)
  5. 高并发解决方案(缓存、降级、限流)之限流笔记
  6. mysql-connector-java 插入 utf8mb4 字符失败问题处理分析
  7. 2022-06-18青少年软件编程(C语言)等级考试试卷(五级)解析
  8. Culture Name: zh-ZH-CN is not a supported culture
  9. 第五次网页前端培训笔记(JS)
  10. R语言 min-max规范化