Faster RCNN 运行自己的数据,刚开始正常,后来就报错: Index exceeds matrix dimensions. Error in ori_demo (line 114) boxes_cell{i} = [boxes(:, (1+(i-1)*4):(i*4)), scores(:, i)];
function script_faster_rcnn_demo()
close all; clc; clear mex; clear is_valid_handle; % to clear init_key
run(fullfile(fileparts(fileparts(mfilename('fullpath'))), 'startup'));
%% -------------------- CONFIG --------------------
opts.caffe_version = 'caffe_faster_rcnn';
opts.gpu_id = auto_select_gpu;
active_caffe_mex(opts.gpu_id, opts.caffe_version); opts.per_nms_topN = 6000;
opts.nms_overlap_thres = 0.7;
opts.after_nms_topN = 300;
opts.use_gpu = true; opts.test_scales = 600; %% -------------------- INIT_MODEL --------------------
% model_dir = fullfile(pwd, 'output', 'faster_rcnn_final', 'faster_rcnn_VOC0712_vgg_16layers'); %% VGG-16
model_dir = fullfile(pwd, 'output', 'faster_rcnn_final', 'faster_rcnn_VOC0712_ZF'); %% ZF
proposal_detection_model = load_proposal_detection_model(model_dir); proposal_detection_model.conf_proposal.test_scales = opts.test_scales;
proposal_detection_model.conf_detection.test_scales = opts.test_scales;
if opts.use_gpu
proposal_detection_model.conf_proposal.image_means = gpuArray(proposal_detection_model.conf_proposal.image_means);
proposal_detection_model.conf_detection.image_means = gpuArray(proposal_detection_model.conf_detection.image_means);
end % caffe.init_log(fullfile(pwd, 'caffe_log'));
% proposal net
rpn_net = caffe.Net(proposal_detection_model.proposal_net_def, 'test');
rpn_net.copy_from(proposal_detection_model.proposal_net);
% fast rcnn net
fast_rcnn_net = caffe.Net(proposal_detection_model.detection_net_def, 'test');
fast_rcnn_net.copy_from(proposal_detection_model.detection_net); % set gpu/cpu
if opts.use_gpu
caffe.set_mode_gpu();
else
caffe.set_mode_cpu();
end %% -------------------- WARM UP --------------------
% the first run will be slower; use an empty image to warm up for j = 1:2 % we warm up 2 times
im = uint8(ones(375, 500, 3)*128);
if opts.use_gpu
im = gpuArray(im);
end
[boxes, scores] = proposal_im_detect(proposal_detection_model.conf_proposal, rpn_net, im);
aboxes = boxes_filter([boxes, scores], opts.per_nms_topN, opts.nms_overlap_thres, opts.after_nms_topN, opts.use_gpu);
if proposal_detection_model.is_share_feature
[boxes, scores] = fast_rcnn_conv_feat_detect(proposal_detection_model.conf_detection, fast_rcnn_net, im, ...
rpn_net.blobs(proposal_detection_model.last_shared_output_blob_name), ...
aboxes(:, 1:4), opts.after_nms_topN);
else
[boxes, scores] = fast_rcnn_im_detect(proposal_detection_model.conf_detection, fast_rcnn_net, im, ...
aboxes(:, 1:4), opts.after_nms_topN);
end
end %% -------------------- TESTING --------------------
% im_names = {'001763.jpg', '004545.jpg', '000542.jpg', '000456.jpg', '001150.jpg'};
% these images can be downloaded with fetch_faster_rcnn_final_model.m
image_path = '/media/wangxiao/Elements/image_segment_backup/ImagesData223/Pedestrian/172.19.199.223/';
file1 = dir(image_path); for ii = 3:size(file1, 1)
new_path1 = [image_path, file1(ii).name, '/'];
file2 = dir(new_path1);
for jj = 3:size(file2, 1)
new_path2 = [new_path1, file2(jj).name, '/'];
file3 = dir(new_path2);
for kk = 3:size(file3, 1)
im = imread([new_path2, file3(kk).name]);
running_time = [];
% for j = 1:length(im_names)
% im = imread(fullfile(pwd, im_names{j})); if opts.use_gpu
im = gpuArray(im);
end % test proposal
th = tic();
[boxes, scores] = proposal_im_detect(proposal_detection_model.conf_proposal, rpn_net, im);
t_proposal = toc(th);
th = tic();
aboxes = boxes_filter([boxes, scores], opts.per_nms_topN, opts.nms_overlap_thres, opts.after_nms_topN, opts.use_gpu);
t_nms = toc(th); % test detection
th = tic();
if proposal_detection_model.is_share_feature
[boxes, scores] = fast_rcnn_conv_feat_detect(proposal_detection_model.conf_detection, fast_rcnn_net, im, ...
rpn_net.blobs(proposal_detection_model.last_shared_output_blob_name), ...
aboxes(:, 1:4), opts.after_nms_topN);
else
[boxes, scores] = fast_rcnn_im_detect(proposal_detection_model.conf_detection, fast_rcnn_net, im, ...
aboxes(:, 1:4), opts.after_nms_topN);
end
t_detection = toc(th); % fprintf('%s (%dx%d): time %.3fs (resize+conv+proposal: %.3fs, nms+regionwise: %.3fs)\n', im_names{j}, ...
% size(im, 2), size(im, 1), t_proposal + t_nms + t_detection, t_proposal, t_nms+t_detection);
% running_time(end+1) = t_proposal + t_nms + t_detection; % visualize
classes = proposal_detection_model.classes;
boxes_cell = cell(length(classes), 1);
thres = 0.6;
for i = 1:length(boxes_cell)
boxes_cell{i} = [boxes(:, (1+(i-1)*4):(i*4)), scores(:, i)];
boxes_cell{i} = boxes_cell{i}(nms(boxes_cell{i}, 0.3), :); I = boxes_cell{i}(:, 5) >= thres;
boxes_cell{i} = boxes_cell{i}(I, :);
end
figure(j); [location, label, score] = output(im, boxes_cell, classes, 'voc');
if (score==0)
continue;
else
disp(file3(kk).name);
save(['./mat results/' file3(kk).name '.mat' ], 'location', 'label', 'score', 'im');
end showboxes(im, boxes_cell, classes, 'voc');
pause(0.1);
end
end
end % fprintf('mean time: %.3fs\n', mean(running_time)); caffe.reset_all();
clear mex; end -------------------------------------------------------
--------------------------------------------------------- function proposal_detection_model = load_proposal_detection_model(model_dir)
ld = load(fullfile(model_dir, 'model'));
proposal_detection_model = ld.proposal_detection_model;
clear ld; proposal_detection_model.proposal_net_def ...
= fullfile(model_dir, proposal_detection_model.proposal_net_def);
proposal_detection_model.proposal_net ...
= fullfile(model_dir, proposal_detection_model.proposal_net);
proposal_detection_model.detection_net_def ...
= fullfile(model_dir, proposal_detection_model.detection_net_def);
proposal_detection_model.detection_net ...
= fullfile(model_dir, proposal_detection_model.detection_net); end function aboxes = boxes_filter(aboxes, per_nms_topN, nms_overlap_thres, after_nms_topN, use_gpu)
% to speed up nms
if per_nms_topN > 0
aboxes = aboxes(1:min(length(aboxes), per_nms_topN), :);
end
% do nms
if nms_overlap_thres > 0 && nms_overlap_thres < 1
aboxes = aboxes(nms(aboxes, nms_overlap_thres, use_gpu), :);
end
if after_nms_topN > 0
aboxes = aboxes(1:min(length(aboxes), after_nms_topN), :);
end
end
matlab命令窗口,显示: 刚开始都是正常的,如下:
fast_rcnn startup done
GPU 1: free memory 3824902144
Use GPU 1
Warning: Specified caffe folder (/home/wangxiao/Downloads/faster_rcnn-master/experiments/external/caffe/matlab/caffe_faster_rcnn)
is not exist, change to default one (/home/wangxiao/Downloads/faster_rcnn-master/experiments/external/caffe/matlab)
> In active_caffe_mex at 19
In ori_demo at 7
20150301095338.jpg
20150301095445.jpg
20150301095535.jpg
20150301095543.jpg
20150301095603.jpg
20150301095613.jpg
20150301095617.jpg
20150301095632.jpg
20150301095635.jpg
20150301095646.jpg
20150301095656.jpg
20150301095659.jpg
20150301095711.jpg
20150301095714.jpg
20150301095717.jpg
20150301095720.jpg
20150301095723.jpg
20150301095726.jpg
20150301095729.jpg
20150301095734.jpg
20150301095741.jpg
20150301095750.jpg
Index exceeds matrix dimensions.
Error in ori_demo (line 114)
boxes_cell{i} = [boxes(:, (1+(i-1)*4):(i*4)), scores(:, i)];
但是,跑着跑着就出问题了,索引超过矩阵维度是什么鬼??只好硬着头皮一句一句的调试了,fuck 。。。。
但是,搞不定啊。。只知道了一个:非极大值抑制(NMS)
为什么会出错呢??? 之前跑的好好地啊。。。提示超过矩阵范围的那一句是作者自己写的。。。怎么会错呢?怎么会错?怎么会?怎么?怎? ?
不搞了,先把原始的图像,整理成一个文件夹在做处理:
clc; close all; path = '/media/wangxiao/Elements/image_segment_backup/';
savePath = '/media/wangxiao/Elements/wang xiao/additional_data/';
camera = dir(path); txt_path = '/media/wangxiao/Elements/wang xiao/';
txt_file = fopen([txt_path, 'log_file.txt'], 'a'); for i = 3:length(camera)
disp(['camera ', num2str(i-2), '---']);
fprintf(txt_file, '%s \n ', num2str(i-2));
path2 = [path, camera(i).name, '/'];
file1 = dir(path2);
for ii = 5:size(file1, 1)
disp([' ', file1(ii).name, '---']);
fprintf(txt_file, '%s \n', file1(ii).name);
new_path = [path2, file1(ii).name, '/'];
file2 = dir(new_path);
for j = 3:size(file2, 1)
disp([' ', file2(j).name, '---']);
fprintf(txt_file, '%s \n', file2(j).name);
new_path2 = [new_path, file2(j).name, '/'];
file3 = dir(new_path2);
for k = 3:size(file3, 1)
disp([' ', file3(k).name, '---']);
fprintf(txt_file, '%s \n', file3(k).name);
new_path3 = [new_path2, file3(k).name , '/'];
file4 = dir(new_path3);
for r = 3:size(file4, 1)
disp([' ', file4(r).name, '---']);
fprintf(txt_file, '%s \n', file4(r).name);
new_path4 = [new_path3, file4(r).name, '/'];
file5 = dir(new_path4);
for w = 3:size(file5, 1)
if (imread([new_path4, file5(w).name]))
im = imread([new_path4, file5(w).name]);
imshow(im);
imwrite(im, [savePath, file5(w).name]);
else
continue; end
end
end
end
end
end
end fclose(txt_file);
找到原因了,妈的,原来是因为,输入图像的大小不一致导致的,奇怪了,只要加一句: im = imresize(im, [127 127]); 将输入的图像统一resize成 固定的大小,即可。。。简单 粗暴 但是,不解其惑 。。。。
...
Faster RCNN 运行自己的数据,刚开始正常,后来就报错: Index exceeds matrix dimensions. Error in ori_demo (line 114) boxes_cell{i} = [boxes(:, (1+(i-1)*4):(i*4)), scores(:, i)];的更多相关文章
- caffe学习三:使用Faster RCNN训练自己的数据
本文假设你已经完成了安装,并可以运行demo.py 不会安装且用PASCAL VOC数据集的请看另来两篇博客. caffe学习一:ubuntu16.04下跑Faster R-CNN demo (基于c ...
- 使用idea 在springboot添加本地jar包的方法本地运行有效,一旦需要打jar就会报错,这就需要在
https://blog.csdn.net/huxiaodong1994/article/details/80702278 1.首先在与src同级的目录下新建一个lib目录,然后将本地jar包放在li ...
- 选iphone5可以正常编译运行 , 但是5s和6和6s都会编译报错
选iphone5可以正常编译运行 但是5s和6和6s都会编译报错 iphone6编译报错iphone5s编译报错 解决办法是,Build settings里面把Architectures里面的$( ...
- 前端ajax用post方式提交json数据给后端时,网络报错 415
项目框架:spring+springmvc+mybatis 问题描述:前端ajax用post方式提交json数据给后端时,网络报错 415 前端异常信息:Failed to load resource ...
- faster rcnn 源码学习-------数据读入及RoIDataLayer相关模块解读
参考博客:::https://www.cnblogs.com/Dzhen/p/6845852.html 非常全面的解读参考:::https://blog.csdn.net/DaVinciL/artic ...
- python3 + Tensorflow + Faster R-CNN训练自己的数据
之前实现过faster rcnn, 但是因为各种原因,有需要实现一次,而且发现许多博客都不全面.现在发现了一个比较全面的博客.自己根据这篇博客实现的也比较顺利.在此记录一下(照搬). 原博客:http ...
- python运行报错:urllib2.URLError: <urlopen error [Errno 10061] >
Traceback (most recent call last): File "F:\adt-bundle-windows-x86_64-20140702\eclipse\workspac ...
- 连接数据后,当执行查询语句报错:ORA-01219: 数据库未打开: 仅允许在固定表/视图中查询
参考博客:http://blog.csdn.net/lanchengxiaoxiao/article/details/40982771 1.在cmd窗口通过sqlplus连接数据库 C:\Users\ ...
- react-native学习(RN)--之Window环境下搭建环境配置,以及初始化建立react-native项目,(真机和模拟器运行的相关错误解决办法,android打包报错)
react-native以后会更火的 一.安装java 二.安装Android Studio 三.安装react-native需要的Android studio额外部分 四.安装nodeJS 五.安 ...
随机推荐
- 转:Python时间戳和日期的相互转换
当前时间戳:time.time() 当前日期:time.ctime() 1.Python下日期到时间戳的转换 import datetime import time dateC=datetime.da ...
- iOS NSDictionary、NSData、JSON数据类型相互转换
iOS经常需要用到数据类型的转换,下面列举一下常用类型的转换. 1.NSDictionary类型转换为NSData类型: //NSDictionary -> NSData: NSDictiona ...
- HDU 3333 - Turing Tree (树状数组+离线处理+哈希+贪心)
题意:给一个数组,每次查询输出区间内不重复数字的和. 这是3xian教主的题. 用前缀和的思想可以轻易求得区间的和,但是对于重复数字这点很难处理.在线很难下手,考虑离线处理. 将所有查询区间从右端点由 ...
- JS 基于面向对象的 轮播图2
<script> // 函数不能重名, --> 子函数 // is defined function --> 函数名是否写错了 function AutoTab(id) { T ...
- android unique identifier
android get device mac address programmatically http://android-developers.blogspot.jp/2011/03/identi ...
- php大力力 [028节] 如何下载js文件,网上一个*.js无法下载啊??????
php大力力 [028节] 如何下载js文件,网上一个*.js无法下载啊?????? safari也无法下载 迅雷也无法下载 是不是对方网站服务器的不让下载那个js目录的文件??? 只能调用js函数啊 ...
- Windows下adb push 总是提示Failed to copy "XX.apk" to 'system/app':Read-only file system
一般情况看到这种提示我们会想到需要root权限,然后敲上adb remount,但是当我们执行过adb remount后,提示成功,但执行push命令依旧无法完成push. 那么此时我们的做法应该是重 ...
- 想调试,装了个Zend Server
本来apache+mysql+php+zend studio+ svn + ftp +ssh跑的挺好,总想跑个断点调个程序能爽些,白瞎这么强的GUI集成开发环境,只能System.out.printl ...
- 20145210 《Java程序设计》第07周学习总结
教材学习内容总结 第十二章 Lambda 12.1 认识Lambda语法 •Lambda 教材的引入循序渐近.深入浅出 •如果使用JDK8的话,可以使用Lambda特性去除重复的信息,例: Compa ...
- IO复用(Reactor模式和Preactor模式)——用epoll来提高服务器并发能力
上篇线程/进程并发服务器中提到,提高服务器性能在IO层需要关注两个地方,一个是文件描述符处理,一个是线程调度. IO复用是什么?IO即Input/Output,在网络编程中,文件描述符就是一种IO操作 ...