针对Faster-RCNN等卷积网络图片输入通道数的问题,给出一种解决方法:
一般的卷积网络都是rgb三个通道,但这限制了单通道灰度图的检测,这里先给出一种比较笨拙但能解决问题的办法:强行给图片赋予三个通道出来:
clear;
clc;
close all;
imagePath = '图片所在文件夹路径\';
imageFiles = dir(imagePath); %%读取目录文件下的所有图片文件
numFiles = length(imageFiles);%%获取图片的数量
for i=3:numFiles %%matlab 并行 其实和for一个用法
j = i-2;
disp(j); %%disp() 函数直接将内容输出在Matlab命令窗口中
imageFile = strcat(imagePath,imageFiles(i).name); %%strcat()函数经常出现在批量处理的时候,这个时候我们需要用到for循环,然后这个函数能够让变量和路径产生一些关系,这个时候我们就可以对其进行批量处理。
A = imread(imageFile); %%读入图片
A3(:,:,1)=A; %%修改图片尺寸
A3(:,:,2)=A;
A3(:,:,3)=A;
imwrite(A3,imageFile); %%保存图片 。
end
这样会发现修改后:
图片从256*256 uint8变成256*256*3 uint8
虽然三个通道都是一样的,没有颜色上的区别,送入网络中也只是提供了冗余信息。但是实际测试后发现并不会影响检测精度。姑且作为一种方法,虽略显笨拙,但是这种方法通用性好,无论你用MATLAB还是TensorFlow或者是caffe模型,都不用想着如何找到模型,打开模型,找到对应的语句来修改模型等一系列复杂问题。