尝试过从Matconvnet官网上下载的已经训练好的神经网络之后,最近自己训练了能够识别果树上红苹果的神经网络。先上图。源代码放在https://github.com/YunpengZhai/MATCONVNET
10/21/2016 更新:把滑动窗的代码放到了github上(结尾为**slide)
下面分享一下经验。
以下内容看之前,希望已经阅读过Matconvnet的官方文档matconvnet-manual,或者对机器学习的一些概念、卷积神经网络的原理具备基本的了解。
现在进入正题。
构建自己的神经网络,需要完成以下三个部分:
1.准备数据。
2.设计神经网络的结构。
3.设置参数,用数据训练网络。
一、准备数据。
数据在磁盘中的存放如下图:
之后,将文件中的图片导入、格式化、划分训练集测试集交叉验证集、求均值,然后以.mat格式存储在磁盘上。
%cnn_setup_data.m
<span style="font-size:14px;">function imdb =cnn_setup_data(datadir)
inputSize =[64,64];
subdir=dir(datadir);
imdb.images.data=[];
imdb.images.labels=[];
imdb.images.set = [] ;
imdb.meta.sets = {'train', 'val', 'test'} ;
image_counter=0;
trainratio=0.8;
for i=3:length(subdir)
imdb.meta.classes(i-2) = {subdir(i).name};
imgfiles=dir(fullfile(datadir,subdir(i).name));
imgpercategory_count=length(imgfiles)-2;
disp([i-2 imgpercategory_count]);
image_counter=image_counter+imgpercategory_count;
for j=3:length(imgfiles)
img=imread(fullfile(datadir,subdir(i).name,imgfiles(j).name));
img=imresize(img, inputSize(1:2));
img=single(img);