模式识别hw2-------基于matconvnet,用CNN实现人脸图片性别识别

主要来源模式识别课程大作业,本文首先感谢当初的助教和一起完成作业的队友


matconvnet在matlab下封装了CNN常见算法,网址http://www.vlfeat.org/matconvnet/,本文采用matconvnet-1.0-beta16.tar.gz


第一题: 运用matconvet提供的mnist网络结构,

通过train文件夹中人脸图片训练网络(训练集),通过val文件夹调整网络结构(验证集),最后通过test文件夹测试网络性能(测试集)


第一题: 设计一个神经网络,并与第一题比较


第一题

1.利用train和val文件夹进行训练和调参:

    利用matconvnet工具包中对mnist手写数字体设计的cnn结构,识别人脸性别。主程序为“cnn_mnist.m”,而cnn结构初始化在“cnn_mnist_init.m”中完成,网络结构不需要重新设计,只需要在cnn_mnist.m中更改数据的输入,在cnn_mnist_init.m更改网络的输出。

    对于本题数据集,“train”中图片为训练集,“val”中为验证集,“test”中为测试集。首先利用“train”和“val”中人脸图片训练cnn网络权重,最后对训练好的网络用“test”中数据进行测试。

    本题主程序所在M文件为“cnn_mnist_new.m”;网络结构文件为“cnn_mnist_init_new.m”;“test_p1.m”为对训练好的网络进行测试的主程序。

   网络激活函数,在缺省情况下,默认为“sigmoid”。

   首先在“cnn_mnist_init_new.m”中先拷贝“cnn_mnist.m”中代码,然后主要更改其中“getMnistImdb”函数。由于mnist数据集中的图像数据28*28 ,而本次实验中,所用图片大小为100*100 ,因此,需要把这些数字图像压缩为28*28 。

   函数“getMnistImdb”中变量“x1”存储训练集中的图片,男性和女性的人脸图片给300张,其前300维存储男性,后300维存储女性;而变量“y1”存储训练集对应的标签,也是其前300维存储男性,后300维存储女性,这里需要注意的是,matconvnet不能把类别标签设置为“0”,否则对其他一些类别不能再识别;而本次作业为二分类问题,这里,男性对应于标签“1”,女性对应于标签“2”。同理,“x2”和“y2”对应于验证集中的数据,其中男性和女性图片各80张。

   作为说明,这里只给出读取训练集数据中女性的示例代码:

%x1(:,:,1:300) stores female images in the train set
%x1(:,:,301:600) stores male images in the train set
x1=zeros(28,28,600);
%y1(1:300) stores female labels(1) in the train set
%y1(301:600) stores male labels(2) in the train set
y1=cat(2,ones(1,300),ones(1,300)+1);
%读取训练集图片-female
img_file_path=fullfile(vl_rootnn,'examples\mnist\image\image\new\train\female');
img_dir=dir(img_file_path);
for i=1:length(img_dir)-2    filename=sprintf('%s\\%s\\fy.bmp',img_file_path,img_dir(i+2).name);
    I=imread(filename);
    I=imresize(I,[28,28]); %将图片压缩为28*28大小
    x1(:,:,i)=I;
end

另外,为了防止过拟合,“cnn_mnist_init_new.m”中加入dropout,所谓“dropout”就是在训练过程中,随机让一些节点不参与计算,加入方式为:

net.layers{end+1} = struct('type', 'dropout', 'rate', 0.5);

并且迭代次数设置为300,最重要的是&#

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值