Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 81 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
81
Dung lượng
5,55 MB
Nội dung
TRẦN DUY THANH ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA TRẦN HỮU LỘC TRẦN DUY THANH LUẬN VĂN THẠC SĨ KỸ THUẬT ĐIỆN TỬ C C NGHIÊN CỨU PHƯƠNG PHÁP NHẬN DẠNG SỐ NHÀ TỪ ẢNH CHỤP ĐƯỜNG PHỐ R L T U D LUẬN VĂN THẠC SĨ KỸ THUẬT ĐIỆN TỬ NĂM 2019 Đà Nẵng – Năm 2019 ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA TRẦN DUY THANH C C NGHIÊN CỨU PHƯƠNG PHÁP NHẬN DẠNG SỐ NHÀ TỪ ẢNH CHỤP ĐƯỜNG PHỐ R L T U D Chuyển nghành: KỸ THUẬT ĐIỆN TỬ Mã số: 8520203 LUẬN VĂN THẠC SĨ KỸ THUẬT ĐIỆN TỬ Người hướng dẫn khoa hoc: TS HỒ PHƯỚC TIẾN Đà Nẵng – Năm 2019 CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh phúc LỜI CAM ĐOAN Kính gửi: Hội đồng bảo vệ luận văn tốt nghiệp Khoa Điện Tử - Viễn Thông, Trường Đại Học Bách Khoa – Đại Học Đà Nẵng Tôi tên là: Trần Duy Thanh Hiện học viên lớp Cao học Kỹ thuật điện tử - Khoá 36 - Khoa Điện Tử - Viễn Thông, Trường Đại học Bách khoa – Đại học Đà Nẵng Tôi xin cam đoan nội dung luận văn chép luận văn công trình có từ trước Nếu vi phạm tơi xin chịu hoàn toàn trách nhiệm C C DU R L T Học Họcviên viên Trần Duy Thanh Trần Duy Thanh MỤC LỤC LỜI CAM ĐOAN MỤC LỤC TÓM TẮT LUẬN VĂN DANH MỤC TỪ VIẾT TẮT DANH MỤC HÌNH VẼ DANH MỤC BẢNG CHƯƠNG GIỚI THIỆU BÀI TOÁN NHẬN DẠNG SỐ NHÀ VÀ DEEP LEARNING 13 C C 1.1 Giới thiệu chương 13 1.2 Tổng quan toán nhận dạng số nhà 13 1.3 Phương pháp học sâu (Deep Learning) Ứng dụng 17 1.4 Kết luận chương 19 DU R L T CHƯƠNG MẠNG NEURON NHÂN TẠO VÀ MẠNG NEURON TÍCH CHẬP 20 2.1 Giới thiệu chương 20 2.2 Mạng Neuron nhân tạo 20 2.2.1 Cấu trúc Neuron sinh học 20 2.2.2 Cấu trúc Perceptron 21 2.3 Sigmoid Neuron 22 2.4 Mơ hình mạng Multi-layers Perceptron (MLP) 24 2.5 Mạng Neuron tích chập (Convolutional Neural Network – CNN) 26 2.5.1 Vùng tiếp nhận cục (Local receptive field) 26 2.5.2 Trọng số chia sẻ 29 2.5.3 Pooling 32 2.6 Kết luận chương 33 CHƯƠNG XÂY DỰNG PHƯƠNG PHÁP NHẬN DẠNG SỐ NHÀ 34 3.1 Giới thiệu chương 34 3.2 Bài toán nhận dạng số nhà 34 3.3 Phương pháp mạng Neuron truyền thống 35 3.4 Phương pháp dùng mạng neuron tích chập 37 3.5 Mơ hình Resnet 43 3.6 Kết luận chương 44 CHƯƠNG THỰC NGHIỆM VÀ ĐÁNH GIÁ 45 4.1 Giới thiệu chương 45 4.2 Cơ sở liệu SVHN 45 4.3 Kết với mạng truyền thống (MLP) 46 4.4 Kết với mạng CNN 47 C C 4.4.1 Ảnh hưởng số lớp tích chập đến kết nhận dạng 48 4.4.2 Tác động tham số 52 R L T 4.5 Kết với Resnet 55 4.6 Kết luận chương 58 DU KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 59 DANH MỤC TÀI LIỆU THAM KHẢO 61 QUYẾT ĐỊNH GIAO ĐỀ TÀI 63 PHỤ LỤC 64 TÓM TẮT LUẬN VĂN NGHIÊN CỨU PHƯƠNG PHÁP NHẬN DẠNG SỐ NHÀ TỪ ẢNH CHỤP ĐƯỜNG PHỐ Học viên: Trần Duy Thanh Mã số: 8520203 Khóa: 36 Chuyên ngành: Kỹ thuật điện tử Trường Đại học Bách khoa – Đại học Đà Nẵng Tóm tắt - Trong năm gần đây, mạng Neuron tích chập (Convolutional Neural Network-CNN) đặc biệt mạng Neuron tích chập sâu với nhiều lớp tích chập tạo bước tiến đáng kể việc giải tốn thị giác máy tính Tuy nhiên, việc nhận dạng hình ảnh mơi trường tự nhiên vấn đề khó khăn thị giác máy tính Luận văn tập trung nghiên cứu khảo sát thực nghiệm kiến trúc mạng Neuron nhân tạo bao gồm mạng MLP, CNN mạng CNN sâu với nhiều lớp tích chập việc nhận dạng hình ảnh số nhà chụp từ đường phố Vai trò khối chức mạng phân tích đánh giá thơng qua tỉ lệ nhận dạng Việc đánh giá thực thông qua liệu ảnh số nhà SVHN, liệu sử dụng rộng rãi lĩnh vực nhận dạng ảnh Quá trình thực nghiệm cho thấy kết tốt tỷ lệ nhận dạng, thể ưu điểm kiến trúc CNN, mạng CNN nhiều lớp, đặc biệt mạng ResNet C C R L T Từ khóa - Deep Learning; Neuron network; MLP; CNN; Resnet; nhận dạng hình ảnh; SVHN DU METHODS TO RECOGNIZE STREET VIEW HOUSE NUMBERS Abstract - In the recent years, Convolutional Neural Network (CNN) and especially the Deep Neural Network with multiple layers have made significant advances in solving computer vision problems However, image recognition in the natural environment is still a difficult problem for computer vision The thesis focuses on the research and empirical survey of artificial neural network architectures including MLP network, CNN and deep CNN network with multiple convolution layers, in order to recognize house numbers in images taken in the street The role of the functional blocks in the network will be analyzed and evaluated through the recognition rate The assessment is done with the popular dataset SVHN The experimental process has shown good results in the recognition rate, as well as demonstrated the advantages of CNN architecture and CNN deep network compared to traditional MLP network Key words - Deep Learning; Neural Network; MLP; CNN; Resnet; image classification; SVHN DANH MỤC TỪ VIẾT TẮT Từ viết tắt Diễn giải Dịch nghĩa AI Artificial Intelligence Trí tuệ nhân tạo ANN Artificial Neural Network Mạng Neuron nhân tạo CNN Convolutional Neural Network Mạng Neuron tích chập FC Fully-Connected Kết nối đầy đủ MLP Multi-Layers Perceptron Perceptron nhiều lớp ReLU Rectified Linear Units ResNet Residual Network SVHN Street View House Number DU Khối kích hoạt tuyến tính phần dương R L T C C Mạng Residual Số nhà từ ảnh chụp đường phố DANH MỤC HÌNH VẼ Hình 1.1 Biểu diễn liệu hình ảnh 13 Hình 1.2 Số nhà có font chữ số khác (lấy từ tập liệu SVHN [15]) 15 Hình 1.3 Đối tượng nhận dạng có thay đổi theo khoảng cách [15] 15 Hình 1.4 Hình dạng bố cục khác chữ số [15] 15 Hình 1.5 Chữ số nhà bị che khuất, chi tiết số [15] 16 Hình 1.6 Tác động ánh sáng đến việc nhận dạng chữ số [15] 16 Hình 1.7 Khả gây nhầm lẫn đối tượng bối cảnh có tương đồng [15] 16 Hình 1.8 Kiến trúc mạng Neuron nhân tạo 17 Hình 1.9 Kiến trúc mạng Neuron nhân tạo với hai lớp ẩn 17 C C Hình 1.10 Kiến trúc mạng Deep Learning đơn giản 18 R L T Hình 2.1 Tế bào Neuron thần kinh người [6] 20 Hình 2.2 Cấu trúc Perceptron đơn giản 21 DU Hình 2.3 Sự thay đổi nhỏ giá trị trọng số dẫn đến thay đổi nhỏ tương ứng ngõ [11] 23 Hình 2.4 Hàm kích hoạt Perceptron [11] 23 Hình 2.5 Mơ hình Perceptron đơn giản [11] 23 Hình 2.6 Minh họa hàm Sigmoid [11] 24 Hình 2.7 Một mơ hình mạng MLP gồm lớp Full Connection [11] 25 Hình 2.8 Cấu trúc mạng MLP nhiều lớp [11] 25 Hình 2.9 Ảnh ngõ vào với kích thước 28 × 28 [11] 27 Hình 2.10 Vùng cục - vùng chấm đen đậm [11] 27 Hình 2.11 Quá trình dịch cửa sổ lọc [11] 28 Hình 2.12 Minh họa việc áp dụng filter lấy tích chập lên ảnh ngõ vào 30 Hình 2.13 Các đồ đặc tính tạo thành tương ứng với lọc 30 Hình 2.14 Kích thước bị thu nhỏ sau q trình lấy tích chập 31 Hình 2.15 Chèn padding thực trước lấy tích chập 32 Hình 2.16 Lấy mẫu xuống giúp giảm kích thước liệu 33 Hình 3.1 Mơ hình tổng qt toán nhận dạng số nhà 34 Hình 3.2 Mạng MLP nhận dạng biển số nhà từ ảnh chụp đường phố 35 Hình 3.3 Mạng MLP với lớp ẩn 36 Hình 3.4 Mạng MLP với lớp ẩn 36 Hình 3.5 Mạng MLP lớp ẩn 36 Hình 3.6 Mạng MLP lớp ẩn 37 Hình 3.7 Cấu trúc mạng LeNet [8] 37 Hình 3.8 Kiến trúc mạng CNN nhận dạng số nhà 38 Hình 3.9 Hàm kích hoạt ReLU, chuyển giá trị âm 38 Hình 3.10 Mơ hình CNN sử dụng luận văn 41 Hình 3.11 Mơ hình mạng CNN khơng sử dụng lớp batchNormalization 42 C C Hình 3.12 So sánh kết nhận dạng tăng số lớp [4] 43 Hình 3.13 Mơ hình Residual block [4] 44 R L T Hình 3.14 Mơ hình mạng Resnet 18 [5] 44 Hình 4.1 Kết nhận dạng mạng MLP với lớp ẩn 46 DU Hình 4.2 Kết nhận dạng mạng MLP với lớp ẩn 46 Hình 4.3 Kết nhận dạng mạng MLP với lớp ẩn 46 Hình 4.4 Kết nhận dạng mạng MLP với lớp ẩn 46 Hình 4.5 Mạng CNN lớp tích chập 48 Hình 4.6 Mơ hình mạng CNN lớp tích chập 48 Hình 4.7 Kết nhận dạng mạng CNN lớp tích chập 49 Hình 4.8 Mạng CNN lớp tích chập 49 Hình 4.9 Kết nhận dạng mạng CNN lớp tích chập 50 Hình 4.10 Mạng CNN lớp tích chập 50 Hình 4.11 Kết nhận dạng mạng CNN lớp tích chập 51 Hình 4.12 Kết nhận dạng mạng CNN lớp tích chập 51 Hình 4.13 Vai trò Learning rate mạng CNN 53 Hình 4.14 Vai trị Dropout mạng CNN 54 Hình 4.15 Vai trị batchNormalization mạng CNN 55 Hình 4.16 Kết nhận dạng với mạng Resnet (23 epoch) 56 Hình 4.17 Kết nhận dạng với mạng Resnet 18 56 Hình 4.18 Kết nhận dạng với mạng Resnet 18 (có Extra data) 57 C C DU R L T 65 trainData = trainData - meanData*ones(1,size(trainData,2)); % Correct target values trainLabel = zeros(10, length(y)); for n = : length(y) trainLabel(y(n), n) = 1; end; % training disp('Training ') net = patternnet([ 500 ]); % mạng MLP với 500 Neuron net = train(net,trainData,trainLabel); % test data disp('Load testing data ') load test_32x32 % X,y testData = zeros(1024, size(X,4)); for i = : size(X,4) img = X(:,:,:,i); img = rgb2gray(img); img = double(img)/255; testData(:,i) = img(:); end testData = testData - meanData*ones(1,size(testData,2)); testLabel = y; C C R L T %testing disp('Testing ') y = net(testData); classes = vec2ind(y); % classes : double DU res = testLabel(:) - classes(:); disp(['Correct recognition rate : ' num2str(sum(res==0)/length(res)*100) ' %']) SVHN_classification.m % mạng CNN nhận dạng số nhà với lớp tích chập function SVHN_classification digitDatasetPath = 'Train'; imds = imageDatastore(digitDatasetPath, 'IncludeSubfolders',true,'LabelSource','foldernames'); numTrainFiles = 4000; [imdsTrain,imdsValidation] = splitEachLabel(imds,numTrainFiles,'randomize'); layers = [ imageInputLayer([32 32 3]) convolution2dLayer(3,32,'Padding',1) batchNormalizationLayer reluLayer maxPooling2dLayer(2,'Stride',2) convolution2dLayer(3,64,'Padding',1) batchNormalizationLayer reluLayer maxPooling2dLayer(2,'Stride',2) 66 convolution2dLayer(3,128,'Padding',1) batchNormalizationLayer reluLayer maxPooling2dLayer(2,'Stride',2) convolution2dLayer(3,256,'Padding',1) batchNormalizationLayer reluLayer dropoutLayer(0.5) fullyConnectedLayer(10) softmaxLayer classificationLayer]; options = trainingOptions('sgdm', 'MaxEpochs',4, 'ValidationData',imdsValidation, 'ValidationFrequency',30, 'Verbose',false, 'Plots','training-progress'); C C net = trainNetwork(imdsTrain,layers,options); R L T YPred = classify(net,imdsValidation); YValidation = imdsValidation.Labels; accuracy = sum(YPred == YValidation)/numel(YValidation) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% test digitDatasetPath = 'Test'; imdsTest = imageDatastore(digitDatasetPath, 'IncludeSubfolders',true,'LabelSource','foldernames'); YPred = classify(net,imdsTest); YTest = imdsTest.Labels; DU accuracyTest = sum(YPred == YTest)/numel(YTest) SVHN_classification_Resnet_8.m function SVHN_classification_Resnet_8 digitDatasetPath = 'Train'; imds = imageDatastore(digitDatasetPath, 'IncludeSubfolders',true,'LabelSource','foldernames'); numTrainFiles = 4000; [imdsTrain,imdsValidation] = splitEachLabel(imds,numTrainFiles,'randomize'); netWidth = 16; layers = [ imageInputLayer([32 32 3],'Name','input') convolution2dLayer(3,netWidth,'Padding','same','Name','convInp') batchNormalizationLayer('Name','BNInp') reluLayer('Name','reluInp') convolutionalUnit(netWidth,1,'S1U1') additionLayer(2,'Name','add11') reluLayer('Name','relu11') convolutionalUnit(netWidth,1,'S1U2') 67 additionLayer(2,'Name','add12') reluLayer('Name','relu12') convolutionalUnit(2*netWidth,2,'S2U1') additionLayer(2,'Name','add21') reluLayer('Name','relu21') convolutionalUnit(2*netWidth,1,'S2U2') additionLayer(2,'Name','add22') reluLayer('Name','relu22') convolutionalUnit(4*netWidth,2,'S3U1') additionLayer(2,'Name','add31') reluLayer('Name','relu31') convolutionalUnit(4*netWidth,1,'S3U2') additionLayer(2,'Name','add32') reluLayer('Name','relu32') averagePooling2dLayer(8,'Name','globalPool') fullyConnectedLayer(10,'Name','fcFinal') softmaxLayer('Name','softmax') classificationLayer('Name','classoutput') ]; lgraph = layerGraph(layers); lgraph = connectLayers(lgraph,'reluInp','add11/in2'); lgraph = connectLayers(lgraph,'relu11','add12/in2'); C C DU R L T skip1 = [ convolution2dLayer(1,2*netWidth,'Stride',2,'Name','skipConv1') batchNormalizationLayer('Name','skipBN1')]; lgraph = addLayers(lgraph,skip1); lgraph = connectLayers(lgraph,'relu12','skipConv1'); lgraph = connectLayers(lgraph,'skipBN1','add21/in2'); lgraph = connectLayers(lgraph,'relu21','add22/in2'); skip2 = [ convolution2dLayer(1,4*netWidth,'Stride',2,'Name','skipConv2') batchNormalizationLayer('Name','skipBN2')]; lgraph = addLayers(lgraph,skip2); lgraph = connectLayers(lgraph,'relu22','skipConv2'); lgraph = connectLayers(lgraph,'skipBN2','add31/in2'); lgraph = connectLayers(lgraph,'relu31','add32/in2'); miniBatchSize = 128; learnRate = 0.1*miniBatchSize/128; options = trainingOptions('sgdm', 'InitialLearnRate',learnRate, 'MaxEpochs',200, 'MiniBatchSize',miniBatchSize, 'VerboseFrequency',300, 'Shuffle','every-epoch', 'Plots','training-progress', 'Verbose',false, 'ValidationData',imdsValidation, 'ValidationFrequency',300, 'LearnRateSchedule','piecewise', 'LearnRateDropFactor',0.1, 68 'LearnRateDropPeriod',60); net = trainNetwork(imdsTrain,lgraph,options); YPred = classify(net,imdsValidation); YValidation = imdsValidation.Labels; accuracy = sum(YPred == YValidation)/numel(YValidation); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% test digitDatasetPath = 'Test'; imdsTest = imageDatastore(digitDatasetPath, 'IncludeSubfolders',true,'LabelSource','foldernames'); YPred = classify(net,imdsTest); YTest = imdsTest.Labels; accuracyTest = sum(YPred == YTest)/numel(YTest) convolutionalUnit.m C C function layers = convolutionalUnit(numF,stride,tag) layers = [ R L T convolution2dLayer(3,numF,'Padding','same','Stride',stride,'Name',[tag,'con v1']) batchNormalizationLayer('Name',[tag,'BN1']) reluLayer('Name',[tag,'relu1']) convolution2dLayer(3,numF,'Padding','same','Name',[tag,'conv2']) batchNormalizationLayer('Name',[tag,'BN2'])]; end DU SVHN_classification_Residual_18Layer.m function SVHN_classification_Resnet18 digitDatasetPath = 'Train'; imds = imageDatastore(digitDatasetPath, 'IncludeSubfolders',true,'LabelSource','foldernames'); numTrainFiles = 4000; [imdsTrain,imdsValidation] = splitEachLabel(imds,numTrainFiles,'randomize'); netWidth = 64; layers = [ imageInputLayer([32 32 3],'Name','input') convolution2dLayer(3,netWidth,'Padding','same','Name','convInp') batchNormalizationLayer('Name','BNInp') reluLayer('Name','reluInp') convolutionalUnit(netWidth,1,'S1U1') additionLayer(2,'Name','add11') reluLayer('Name','relu11') convolutionalUnit(netWidth,1,'S1U2') additionLayer(2,'Name','add12') reluLayer('Name','relu12') 69 convolutionalUnit(netWidth,1,'S1U3') additionLayer(2,'Name','add13') reluLayer('Name','relu13') convolutionalUnit(netWidth,1,'S1U4') additionLayer(2,'Name','add14') reluLayer('Name','relu14') convolutionalUnit(2*netWidth,2,'S2U1') additionLayer(2,'Name','add21') reluLayer('Name','relu21') convolutionalUnit(2*netWidth,1,'S2U2') additionLayer(2,'Name','add22') reluLayer('Name','relu22') convolutionalUnit(2*netWidth,1,'S2U3') additionLayer(2,'Name','add23') reluLayer('Name','relu23') convolutionalUnit(2*netWidth,1,'S2U4') additionLayer(2,'Name','add24') reluLayer('Name','relu24') convolutionalUnit(4*netWidth,2,'S3U1') additionLayer(2,'Name','add31') reluLayer('Name','relu31') convolutionalUnit(4*netWidth,1,'S3U2') additionLayer(2,'Name','add32') reluLayer('Name','relu32') convolutionalUnit(4*netWidth,1,'S3U3') additionLayer(2,'Name','add33') reluLayer('Name','relu33') convolutionalUnit(4*netWidth,1,'S3U4') additionLayer(2,'Name','add34') reluLayer('Name','relu34') DU C C R L T convolutionalUnit(8*netWidth,2,'S4U1') additionLayer(2,'Name','add41') reluLayer('Name','relu41') convolutionalUnit(8*netWidth,1,'S4U2') additionLayer(2,'Name','add42') reluLayer('Name','relu42') convolutionalUnit(8*netWidth,1,'S4U3') additionLayer(2,'Name','add43') reluLayer('Name','relu43') convolutionalUnit(8*netWidth,1,'S4U4') additionLayer(2,'Name','add44') reluLayer('Name','relu44') averagePooling2dLayer(4,'Name','globalPool') fullyConnectedLayer(10,'Name','fcFinal') softmaxLayer('Name','softmax') classificationLayer('Name','classoutput') ]; lgraph = layerGraph(layers); lgraph = connectLayers(lgraph,'reluInp','add11/in2'); lgraph = connectLayers(lgraph,'relu11','add12/in2'); lgraph = connectLayers(lgraph,'relu12','add13/in2'); lgraph = connectLayers(lgraph,'relu13','add14/in2'); 70 skip1 = [ convolution2dLayer(1,2*netWidth,'Stride',2,'Name','skipConv1') batchNormalizationLayer('Name','skipBN1')]; lgraph = addLayers(lgraph,skip1); lgraph = connectLayers(lgraph,'relu14','skipConv1'); lgraph = connectLayers(lgraph,'skipBN1','add21/in2'); lgraph = connectLayers(lgraph,'skipBN1','add22/in2'); lgraph = connectLayers(lgraph,'relu22','add23/in2'); lgraph = connectLayers(lgraph,'relu23','add24/in2'); skip2 = [ convolution2dLayer(1,4*netWidth,'Stride',2,'Name','skipConv2') batchNormalizationLayer('Name','skipBN2')]; lgraph = addLayers(lgraph,skip2); lgraph = connectLayers(lgraph,'relu24','skipConv2'); lgraph = connectLayers(lgraph,'skipBN2','add31/in2'); lgraph = connectLayers(lgraph,'skipBN2','add32/in2'); lgraph = connectLayers(lgraph,'relu32','add33/in2'); lgraph = connectLayers(lgraph,'relu33','add34/in2'); skip3 = [ convolution2dLayer(1,8*netWidth,'Stride',2,'Name','skipConv3') batchNormalizationLayer('Name','skipBN3')]; lgraph = addLayers(lgraph,skip3); lgraph = connectLayers(lgraph,'relu32','skipConv3'); lgraph = connectLayers(lgraph,'skipBN3','add41/in2'); lgraph = connectLayers(lgraph,'skipBN3','add42/in2'); lgraph = connectLayers(lgraph,'relu42','add43/in2'); lgraph = connectLayers(lgraph,'relu43','add44/in2'); C C DU R L T miniBatchSize = 128; learnRate = 0.1*miniBatchSize/128; options = trainingOptions('sgdm', 'InitialLearnRate',learnRate, 'MaxEpochs',20, 'MiniBatchSize',miniBatchSize, 'VerboseFrequency',300, 'Shuffle','every-epoch', 'Plots','training-progress', 'Verbose',false, 'ValidationData',imdsValidation, 'ValidationFrequency',300, 'InitialLearnRate',0.1); net = trainNetwork(imdsTrain,lgraph,options); YPred = classify(net,imdsValidation); YValidation = imdsValidation.Labels; accuracy = sum(YPred == YValidation)/numel(YValidation); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% test digitDatasetPath = 'Test'; imdsTest = imageDatastore(digitDatasetPath, 'IncludeSubfolders',true,'LabelSource','foldernames'); YPred = classify(net,imdsTest); YTest = imdsTest.Labels; accuracyTest = sum(YPred == YTest)/numel(YTest) C C DU R L T C C DU R L T C C DU R L T C C DU R L T C C DU R L T C C DU R L T C C DU R L T C C DU R L T C C DU R L T ... phương pháp nhận dạng số nhà từ ảnh chụp đường phố. ” Mục tiêu nghiên cứu - Nghiên cứu áp dụng mạng neuron tích chập (CNN) mạng Neuron tích chập sâu (CNNs) giải toán nhận dạng số nhà từ ảnh chụp đường. .. tỷ lệ nhận dạng giải toán nhận dạng số nhà từ ảnh chụp đường phố mơi trường tự nhiên 3.2 Bài tốn nhận dạng số nhà C C R L T Trong toán nhận dạng này, đầu vào ảnh có chứa chữ số (thể số nhà) mơ... loại ảnh số nhà dựa tỉ lệ nhận dạng DU Ý nghĩa khoa học thực tiễn đề tài Việc nhận dạng chữ số nhà từ ảnh chụp đường phố vấn đề quan trọng quan tâm nay, ảnh chụp đường phố thường có bối cảnh phức