一、简介
matlab基于CNN卷积神经网络人脸民族识别,民族识别是计算机视觉领域中的一个重要应用,其目标是自动识别图像中的民族种类。近年来,随着深度学习和图像处理技术的发展,民族识别技术在自动化生产等领域得到了广泛应用。
二、部分源码
clear;clc;
%% 加载数据
allImages = imageDatastore('jaffe', ...
'IncludeSubfolders' ,true, ...
'LabelSource' , 'foldernames' );% 图像加载为图像数据存储
% imageDatastore函数会根据文件夹名称自动标记图像
% 划分训练集(80%)和测试集(20%)
[imgsTrain,imgsTest] = splitEachLabel(allImages,0.8,'randomized');% 显示训练集和测试集的数量
disp(['Number of training images: ',num2str(numel(imgsTrain.Files))]);
disp(['Number of validation images: ',num2str(numel(imgsTest.Files))]);% 构建CNN
layers = [ ...
imageInputLayer([256 256 3]) % 图像输入层,输入维度为256*256*3
maxPooling2dLayer([3 3],'Stride',2) % 池化核大小、步长
convolution2dLayer([5 5],16)
batchNormalizationLayer
reluLayer
maxPooling2dLayer([3 3],'Stride',2)
convolution2dLayer([5 5],16)
batchNormalizationLayer
reluLayer
maxPooling2dLayer([3 3],'Stride',2)
convolution2dLayer([3 3],32)
batchNormalizationLayer
reluLayer
softmaxLayer
classificationLayer]; % 分类层
options = trainingOptions('sgdm', ...% 使用sgdm优化器
'ExecutionEnvironment','auto', ...% 自动选择运行环境,无GPU自动选CPU,有GPU自动选GPU
'MaxEpochs',25,...% 批量
'MiniBatchSize',20, ... % 每批的数据量
'GradientThreshold',1, ...% 梯度阈值
%% 开始训练
CNNnet = trainNetwork(imgsTrain,layers,options);
save CNNnet CNNnet;
%% 测试集
y_pred = classify(CNNnet,imgsTest); % 使用训练好的网络测试
三、运行结果
四、matlab版本
MATLAB R2019a
五、学习与交流
文中不足之处请大家多多指教,学习与交流可以联系企鹅:3752243968
文中部分源码仅供参考,若需要全部代码可以私信