SSD训练单通道图像

SSD源码训练的是三通道彩色图像,原因是因为我们采用的特征提取网络都是ImageNet预训练模型,这需要三个通道的输入。

但这样只是掩耳盗铃,这样只会复制灰色通道三次以获得三通道图像,最终看起来与单通道灰色图像相同。具体可以在OpenCV的Gray2RGB中查看详细解释。

方法有两种,一种是修改图片和标签

1.修改图片的MATLAB代码

path = 'C:/Users/Administrator/Desktop/train300/';
save_path = 'C:/Users/Administrator/Desktop/train/';
img=dir([path,'*.jpg']);

for i=1:length(img)
    I=imread([path,img(i).name]);
    [rows,cols]=size(I);
    r=zeros(rows,cols);
    g=zeros(rows,cols);
    b=zeros(rows,cols);
    r=double(I);
    g=double(I);
    b=double(I);
    rgb=cat(3,r,g,b);
    imwrite(uint8(rgb),[save_path,img(i).name]);
end

然后修改标签,将标签文件...xml 的 depth 改为3。

2.将ssd_pascal.py文件或train.prototxt(test.prototxt)中的transform_param添加一行代码即可

transform_param {
  mean_value: 104.0
  mean_value: 117.0
  mean_value: 123.0
  force_color: True ###加入此行代码
  resize_param {
    prob: 1.0
    resize_mode: WARP
    height: 300
    width: 300
    interp_mode: LINEAR
  }
}

猜你喜欢

转载自blog.csdn.net/jh0lmes/article/details/80595875