caffe+linux平台——SRCNN实现

大家好,来久违的写一篇操作博客记录一下SRCNN的实现过程,避免半年后忘记。

SRCNN本身结构就非常简单,实现起来也比SSD简单多了,下面描述具体操作。

1.下载作者上传的代码

点击下载代码

分为train和test两部分,都下载下来。然后解压复制到caffe-master\examples/SRCNN的文件夹里。

2.转换数据格式

分别运行generate_train.m和generate_test.m来转换train和test的数据。如果运行作者提供的图像就不用改地址,如果运行自己的图片注意改下地址。

3.开始训练

自己创建一个train.sh文件,在里面写

#!/usr/bin/env sh
/home/caffe-master/build/tools/caffe train --slover=/home/caffe-master/examples/SRCNN/train/SRCNN_solver.prototxt

点击运行(不要忘记确认一下SRCNN_solver.prototxt中的两处地址信息)

4.测试

在test文件夹下修改model的地址,根据up_scale的值选择mat,但有一点需要注意,根据作者给出的代码运行出来虽然效果挺好的但是是灰度图,我们想要彩图怎么办呢,下面贴上我使用的matlab代码。

SRCNN重建:

close all;clear all;

name='6b.jpg';
up_scale = 3;
im  = imread(name);
model = 'model\x3.mat';
im = double(im)/255;%single
 
im = imresize(im, up_scale, 'bicubic');
 
if size(im,3)>1
 im = rgb2ycbcr(im);
 im_b = im(:, :, 1);
end
 
im_h = SRCNN(model, im_b);
 
if size(im,3)>1
 [m,n]=size(im_h);
 im_h1=zeros(m,n,3);
 im_h1(:,:,1)=im_h;
 im_h1(:,:,2)=im2;
 im_h1(:,:,3)=im3;
 im_h1 = uint8(im_h1 * 255);
 im_h1 = ycbcr2rgb(im_h1);
else
 im_h1=uint8(im_h * 255);
end
 
%im_h1 = shave(im_h1, [up_scale, up_scale]);
 
figure, imshow(im_h1); title('SRCNN');
 
imwrite(im_h1, ['SRCNN' '.jpg']);

双三次网上就有很多,大家很方便能找到我就不贴了。

以上就是简易的跑通SRCNN流程,我们下期见!


猜你喜欢

转载自blog.csdn.net/miss_yuki/article/details/80874173