NHẬN DIỆN CHỮ SỐ SỬ DỤNG THUẬT TOÁN SVM (có code)

38 1.9K 33
NHẬN DIỆN CHỮ SỐ SỬ DỤNG THUẬT TOÁN SVM (có code)

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

NHẬN DIỆN CHỮ SỐ SỬ DỤNG THUẬT TOÁN SVM (có code)................... NHẬN DIỆN CHỮ SỐ SỬ DỤNG THUẬT TOÁN SVM (có code)................... NHẬN DIỆN CHỮ SỐ SỬ DỤNG THUẬT TOÁN SVM (có code)................... NHẬN DIỆN CHỮ SỐ SỬ DỤNG THUẬT TOÁN SVM (có code)................... NHẬN DIỆN CHỮ SỐ SỬ DỤNG THUẬT TOÁN SVM (có code)................... NHẬN DIỆN CHỮ SỐ SỬ DỤNG THUẬT TOÁN SVM (có code)...................

ĐỒ ÁN TỐT NGHIỆP NHẬN DIỆN CHỮ SỐ SỬ DỤNG THUẬT TỐN SVM MỤC LỤC DANH MỤC CÁC HÌNH VẼ DANH MỤC CÁC BẢNG BIỂU DANH MỤC CÁC TỪ VIẾT TẮT HOG Histogram of Oriented Gradients OCR Optical Character Recognition SVM Support vector machine ĐỒ ÁN TỐT NGHIỆP Trang 6/33 CHƯƠNG GIỚI THIỆU 1.1 Giới thiệu chữ viết tay • Nhận dạng chữ vấn đề quan tâm đến lĩnh vực gặt hái nhiều thành tựu to lớn lý thuyết ứng dụng thực tế Nhận dạng chữ chia làm hai loại: nhận dạng chữ in nhận dạng chữ viết tay • Đến nhận dạng chữ in gần giải trọn vẹn Nhận dạng chữ viết tay vấn đề khó khăn để giải Nhận dạng chữ viết tay chia làm loại: Nhận dạng chữ viết tay trực tuyến (online) nhận dạng chữ viết tay ngoại tuyến (offline) • Nhận dạng chữ viết tay trực tuyến thực sở lưu lại thông tin nét chữ thứ tự nét vẽ, hướng tốc độ nét viết trình viết Vì nên máy tính nhận dạng theo loại đơn giản Ngược lại nhận dạng chữ viết tay ngoại tuyến đầu vào văn quét nên việc nhận dạng khó nhiều so với nhận dạng trực tuyến Do ảnh đầu vào ảnh văn nên nhận dạng chữ viết ngoại tuyến hay nhận dạng chữ in gọi chung nhận dạng chữ quang học (OCR) • Khó khăn lớn nghiên cứu nhận dạng chữ viết tay biến đổi đa dạng chữ viết người Cùng chữ viết lại biến đổi theo thói quen, ngữ cảnh đặc biệt kiểu viết người Điều gây trở ngại lớn cho việc nhận dạng 1.1.1 Phương pháp nhận dạng SVM • Trong năm gần đây, phương pháp nhận dạng SVM có nhiều thành tựu to lớn nhận dạng chữ viết ngoại tuyến đạt kết ngang hàng so với phương pháp truyền thống mạng Neural Networks • Phương pháp SVM Vapnik đề xuất vào năm 1995 Đây phương pháp dựa lý thuyết học thống kê nên có tảng tốn học chặt chẽ nên cho kết cách tối ưu Ý tưởng phương pháp Nhận diện chữ số sử dụng thuật toán SVM ĐỒ ÁN TỐT NGHIỆP Trang 7/33 chuyển tập mẫu từ không gian biểu diễn Rn chúng sang sang khơng gian Rd có số chiều lớn Trong khơng gian Rd tìm siêu phẳng tối ưu để phân hoạch tập mẫu dự phân lớp chúng, có nghĩa tìm miền phân bố lớp không gian biểu diễn Rn từ xác định phân lớp mẫu cần nhận dạng Hình 1-1 Siêu phẳng phân hoạch tập mẫu [1] • Ý tưởng Kernel SVM phương pháp Kernel nói chung tìm phép biến đổi cho liệu ban đầu khơng phân biệt tuyến tính biến sang không gian Và không gian phân biệt tuyến tính Cụ thể hơn, Kernel SVM tìm hàm biến đổi liệu từ feature ban đầu thành liệu khơng gian Hàm cần thỏa mãn mục đích chúng ta: không gian mới, phân biệt tuyến tính gần phải phân biệt tuyến tính Khi đó, ta dung phân lớp tuyến tính thong thường như: PLA, Logictis Regression, hay Hard/Soft Margin SVM • So sánh với thuật tốn Neural Networks Đối với Neural Networks dung activation functions dùng để phá vỡ tính tuyến tính mơ hình hàm dùng SVM biến liệu khơng phân biệt tuyến tính thành phân biệt Nhận diện chữ số sử dụng thuật tốn SVM ĐỒ ÁN TỐT NGHIỆP Trang 8/33 tuyến tính Nói chung giống kết ta có cách nhìn khác hướng giải • Với hàm kết tạo có số chiều cao so với số chiều ban đầu, chí đến vơ hạn số chiều Nếu tính tốn trực tiếp gặp số vấn đề nhớ hiệu tính tốn Có cách để tiếp cận trực tiếp với sử dụng Kernel functions mô tả quan hệ hai điểm liệu không gian thay phải tính tốn điểm liệu khơng gian • Trong kỹ thuật SVM khơng gian liệu nhập ban đầu ánh xạ vào không gian đặc trưng không gian đặc trưng mặt siêu phẳng phân chia tối ưu xác định • Ta có tập S gồm e mẫu học: với vector đầu vào n chiều x i thuộc Rn thuộc lớp I lớp II (tương ứng nhãn yi = lớp I yi = -1 lớp II) Một tập mẫu gọi tầm thường tất nhãn • Đối với liệu phân chia tuyến tính, xác định siêu phẳng f(x) mà chia tập liệu Khi với siêu phẳng nhận ta có: f(x) >= đầu vào x thuộc lớp dương, f(x) < đầu vào x thuộc lớp âm w vector pháp tuyến n chiều b giá trị ngưỡng Vector pháp tuyến w xác định chiều siêu phẳng f(x), giá trị ngưỡng b xác định khoảng cách siêu phẳng gốc • Tại lại sử dụng thuật toán SVM phân lớp liệu: Nhận diện chữ số sử dụng thuật toán SVM ĐỒ ÁN TỐT NGHIỆP Trang 9/33 o SVM hiệu để giải toán liệu có số chiều lớn (ảnh liệu biểu diễn gene, protein, tế bào, ) o SVM giải vấn đề overfitting tốt (dữ liệu có nhiễu tách dời nhóm liệu huấn luyện q ít) o Là phương pháp phân lớp nhanh o Có hiệu suất tổng hợp tốt hiệu suất tính tốn cao • 1.1.2 Tính HOG HOG feature descriptor sử dụng để xử lý hình ảnh dùng để phát đối tượng Các khái niệm đưa đến năm 2005 HOG sử dụng rộng rãi kể từ sau Navneet Bill Triggs có bổ sung HOG • HOG giống biểu đồ Edge Orientation, Scale-invariant feature transform descriptors, shape contexts HOG tính tốn mạng lưới cell dày đặc chuẩn hóa độ tương phản khối để nâng cao độ xác HOG chủ yếu dùng để mô tả xuất hình dạng chủ đề ảnh • HOG chuyển đổi kích thước cố định vector đặc trưng có kích thước cố định HOG tính tốn cho hình ảnh có kích thước 64 x 128 Kích thước ban đầu hình ảnh 64 x 128 x = 24576 sau qua tính HOG giảm xuống 3780 • HOG thực dựa ý tưởng phân bố gradient theo định hướng cách hợp lý Nhận diện chữ số sử dụng thuật toán SVM ĐỒ ÁN TỐT NGHIỆP Trang 10/33 CHƯƠNG NỘI DUNG CỦA ĐỀ TÀI 2.1 Sơ đồ khối Đưa ảnh vào Tiền xử lý Sử dụng tính HOG Sử dụng thuật toán SVM để nhận dạng Xuất kết Hình 1-2 Sơ đồ khối • 2.1.1 Đưa ảnh vào Sử dụng ảnh văn số viết tay để đưa vào chương trình GUI matlab • 2.1.2 Tiền xử lý Ở bước hình ảnh sau đưa vào qua bước tiền xử lý ảnh tăng giảm độ tương phản hình thái học ảnh để có ảnh có chất lượng tốt để đưa vào bước • 2.1.3 Sử dụng tính HOG Vì hình ảnh đưa vào có nhiều thơng tin khơng quan trọng cần thiết cho nên cần phải loại bỏ chúng HOG làm nhiệm vụ giảm kích thước hình ảnh từ 24576 xuống 3780 Dưới bước HOG thực hình ảnh có kích thước 64 x 128: Nhận diện chữ số sử dụng thuật toán SVM ĐỒ ÁN TỐT NGHIỆP Trang 24/33 Hình 3-4 Giao diện Guide Hình 3-5 Kết nhận dạng số Nhận diện chữ số sử dụng thuật toán SVM ĐỒ ÁN TỐT NGHIỆP Trang 25/33 Hình 3-6 Kết nhận dạng số Hình 3-7 Kết nhận dạng số Nhận diện chữ số sử dụng thuật toán SVM ĐỒ ÁN TỐT NGHIỆP Trang 26/33 Hình 3-8 Kết nhận dạng số Hình 3-9 Kết nhận dạng số Nhận diện chữ số sử dụng thuật toán SVM ĐỒ ÁN TỐT NGHIỆP Trang 27/33 Hình 3-10 Kết nhận dạng số Hình 3-11 Kết nhận dạng số Nhận diện chữ số sử dụng thuật toán SVM ĐỒ ÁN TỐT NGHIỆP Trang 28/33 Hình 3-12 Kết nhận dạng số Hình 3-13 Kết nhận dạng số Nhận diện chữ số sử dụng thuật toán SVM ĐỒ ÁN TỐT NGHIỆP Trang 29/33 Hình 3-14 Kết nhận dạng số Nhận diện chữ số sử dụng thuật toán SVM ĐỒ ÁN TỐT NGHIỆP Trang 30/33 CHƯƠNG NHẬN XÉT 1.3 Nhận xét Bảng 4-1 Bảng tổng hợp kết nhận dạng số Số True Precision 0.45 0.75 0.67 0.58 0.75 0.49 0.67 0.25 0.67 0.48 False Precision 0.05 0.02 0.04 0.05 0.03 0.06 0.04 0.08 0.04 0.06 1.4 Nhận xét • Xác suất nhận số số cao cấu tạo chữ số cách viết theo nhiều kiểu khác cấu tạo số dễ nhận dạng khó để nhầm lẫn với số lại • Số xác suất sai lớn cấu tạo số viết dễ gây nhầm lẫn với số hay • Ở kết sau thực nghiệm ta nhận thấy số hay có cấu tạo từ đường cong giống số nên nhầm lẫn xảy nên nhận dạng số gây sai sót • Chương trình chưa hồn hảo mặt kết cấu tạo chữ số gồm đường cong hình thành nên dễ gây nhầm lẫn với số lại Điều cần khắc phục cách tăng xác suất chữ số có xác suất thấp bảng Confusion Matrix sau training Muốn làm điều cần phải nghiên cứu kỹ với tập hình ảnh file Test chữ số thêm vào gây nhầm lẫn với số lại gây giảm xác suất lúc ban đầu chưa thêm vào Nhận diện chữ số sử dụng thuật toán SVM ĐỒ ÁN TỐT NGHIỆP Trang 31/33 Nhận diện chữ số sử dụng thuật toán SVM ĐỒ ÁN TỐT NGHIỆP Trang 32/33 CHƯƠNG KẾT LUẬN 1.5 Kết luận • Chương trình 80% nhận dạng chữ số khiếm khuyết chưa thể nhận diện hoàn toàn kết hoàn hảo Cần nghiên cứu thêm để khắc phục lỗi 1.1.1 Kết luận • Cần phát triển chương trình để nhận diện chữ viết 1.1.2 Kết luận • Dựa vào thuật tốn HOG, SVM ta xây nhiều chương trình nhận dạng cần thiết Nhận diện chữ số sử dụng thuật toán SVM ĐỒ ÁN TỐT NGHIỆP Trang 33/33 TÀI LIỆU THAM KHẢO Tiếng Việt: [1] https://viblo.asia/p/tim-hieu-ve-hoghistogram-of-oriented-gradientsm68Z0wL6KkG [2] https://ongxuanhong.wordpress.com/2015/09/19/support-vector-machinesvm-hoi-gi-dap-nay/ Tiếng Anh: [3] https://uk.mathworks.com/help/vision/examples/digit-classificationusing-hog-features.html [4] https://www.learnopencv.com/histogram-of-oriented-gradients/ [5] https://uk.mathworks.com/help/stats/classificationecoc-class.html? searchHighlight=ClassificationECOC%20class&s_tid=doc_srchtitle Nhận diện chữ số sử dụng thuật toán SVM ĐỒ ÁN TỐT NGHIỆP Trang 34/33 PHỤ LỤC A function varargout = VoChiCuong(varargin) % VOCHICUONG MATLAB code for VoChiCuong.fig % VOCHICUONG, by itself, creates a new VOCHICUONG or raises the existing % singleton* % % H = VOCHICUONG returns the handle to a new VOCHICUONG or the handle to % the existing singleton* % % VOCHICUONG('CALLBACK',hObject,eventData,handles, ) calls the local % function named CALLBACK in VOCHICUONG.M with the given input arguments % % VOCHICUONG('Property','Value', ) creates a new VOCHICUONG or raises the % existing singleton* Starting from the left, property value pairs are % applied to the GUI before VoChiCuong_OpeningFcn gets called An % unrecognized property name or invalid value makes property application % stop All inputs are passed to VoChiCuong_OpeningFcn via varargin % % *See GUI Options on GUIDE's Tools menu Choose "GUI allows only one % instance to run (singleton)" % % See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help VoChiCuong % Last Modified by GUIDE v2.5 30-Dec-2017 00:02:07 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, 'gui_Singleton', gui_Singleton, 'gui_OpeningFcn', @VoChiCuong_OpeningFcn, 'gui_OutputFcn', @VoChiCuong_OutputFcn, 'gui_LayoutFcn', [] , 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT Nhận diện chữ số sử dụng thuật toán SVM ĐỒ ÁN TỐT NGHIỆP Trang 35/33 % - Executes just before VoChiCuong is made visible function VoChiCuong_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to VoChiCuong (see VARARGIN) % Choose default command line output for VoChiCuong handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes VoChiCuong wait for user response (see UIRESUME) % uiwait(handles.figure1); % - Outputs from this function are returned to the command line function varargout = VoChiCuong_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; % - Executes on button press in chon function chon_Callback(hObject, eventdata, handles) % hObject handle to chon (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) syntheticDir = fullfile(toolboxdir('vision'), 'visiondemos','digits','synthetic'); handwrittenDir = fullfile(toolboxdir('vision'), 'visiondemos','digits','handwritten'); trainingSet = imageSet(syntheticDir, 'recursive'); testSet = imageSet(handwrittenDir, 'recursive'); cellSize = [4 4]; img = read(trainingSet(3),4); [filename, pathname] = uigetfile('*','LOAD AN IMAGE'); img2 = imread(fullfile(pathname, filename)); axes(handles.axes1); imshow(img2); img2 = imresize(img2,[16 16]); %imshow(img2); lvl = graythresh(img2); img2 = im2bw(img2,lvl); [hog_4x4, vis4x4] = extractHOGFeatures(img,'CellSize',[4 4]); hogFeatureSize = length(hog_4x4); Nhận diện chữ số sử dụng thuật toán SVM ĐỒ ÁN TỐT NGHIỆP Trang 36/33 trainingFeatures = []; trainingLabels = []; for digit = 1:numel(trainingSet) numImages = trainingSet(digit).Count; features = zeros(numImages, hogFeatureSize, 'single'); for i = 1:numImages img = read(trainingSet(digit), i); end % Apply pre-processing steps lvl = graythresh(img); img = im2bw(img, lvl); features(i, :) = extractHOGFeatures(img, 'CellSize', cellSize); % Use the imageSet Description as the training labels The labels are % the digits themselves, e.g '0', '1', '2', etc labels = repmat(trainingSet(digit).Description, numImages, 1); trainingFeatures = [trainingFeatures; features]; trainingLabels = [trainingLabels; labels ]; %#ok %#ok end classifier = fitcecoc(trainingFeatures, trainingLabels); % Extract HOG features from the test set The procedure is similar to what % was shown earlier and is encapsulated as a helper function for brevity testFeatures = []; testLabels = []; [testFeatures, testLabels] = helperExtractHOGFeaturesFromImageSet(testSet, hogFeatureSize, cellSize); for idx = 1:numel(testSet) numImages2 = testSet(idx).Count; featurestest = zeros(numImages2, hogFeatureSize, 'single'); % Process each image and extract features for j = 1:numImages2 % Apply pre-processing steps featurestest(j, :) = extractHOGFeatures(img2,'CellSize',cellSize); end % Use the Description from the imgSet as the labels labelstest = repmat(testSet(idx).Description, numImages2, 1); testFeatures = [testFeatures; featurestest]; testLabels = [testLabels; labelstest]; end % Make class predictions using the test features predictedLabels = predict(classifier, testFeatures); % Tabulate the results using a confusion matrix confMat = confusionmat(testLabels, predictedLabels); Nhận diện chữ số sử dụng thuật toán SVM ĐỒ ÁN TỐT NGHIỆP Trang 37/33 helperDisplayConfusionMatrix(confMat); for k = 1:10 c = sum(confMat(k,:)); for l = 1:10 b(k,l) = confMat(k,l)./c; end end [m,n] = max(max(b)); n = n-1; set(handles.text6,'String',m); set(handles.text7,'String',n); function edit1_Callback(hObject, eventdata, handles) % hObject handle to edit1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit1 as text % str2double(get(hObject,'String')) returns contents of edit1 as a double % - Executes during object creation, after setting all properties function edit1_CreateFcn(hObject, eventdata, handles) % hObject handle to edit1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows % See ISPC and COMPUTER if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit2_Callback(hObject, eventdata, handles) % hObject handle to edit2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit2 as text % str2double(get(hObject,'String')) returns contents of edit2 as a double % - Executes during object creation, after setting all properties function edit2_CreateFcn(hObject, eventdata, handles) % hObject handle to edit2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows % See ISPC and COMPUTER Nhận diện chữ số sử dụng thuật toán SVM ĐỒ ÁN TỐT NGHIỆP Trang 38/33 if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end Nhận diện chữ số sử dụng thuật toán SVM ... Giao diện Guide Hình 3-5 Kết nhận dạng số Nhận diện chữ số sử dụng thuật toán SVM ĐỒ ÁN TỐT NGHIỆP Trang 25/33 Hình 3-6 Kết nhận dạng số Hình 3-7 Kết nhận dạng số Nhận diện chữ số sử dụng thuật toán. .. 3-11 Kết nhận dạng số Nhận diện chữ số sử dụng thuật toán SVM ĐỒ ÁN TỐT NGHIỆP Trang 28/33 Hình 3-12 Kết nhận dạng số Hình 3-13 Kết nhận dạng số Nhận diện chữ số sử dụng thuật toán SVM ĐỒ ÁN... qua train thuật toán SVM Nhận diện chữ số sử dụng thuật toán SVM ĐỒ ÁN TỐT NGHIỆP Trang 15/33 Hình 2-7 Hàm để train HOG Hình 2-8 Giá trị fitcecoc trả Nhận diện chữ số sử dụng thuật toán SVM ĐỒ ÁN

Ngày đăng: 23/02/2018, 19:45

Từ khóa liên quan

Mục lục

  • DANH MỤC CÁC HÌNH VẼ

  • DANH MỤC CÁC BẢNG BIỂU

  • DANH MỤC CÁC TỪ VIẾT TẮT

  • CHƯƠNG 1. GIỚI THIỆU

    • 1.1 Giới thiệu về chữ viết tay

      • 1.1.1 Phương pháp nhận dạng SVM

      • 1.1.2 Tính năng HOG

      • CHƯƠNG 2. NỘI DUNG CỦA ĐỀ TÀI

        • 2.1 Sơ đồ khối

          • 2.1.1 Đưa ảnh vào

          • 2.1.2 Tiền xử lý

          • 2.1.3 Sử dụng tính năng HOG

          • 2.1.4 Sử dụng thuật toán SVM để nhận dạng

          • 2.1.5 Xuất ra kết quả

          • 2.2 Training

            • 2.2.1 Data set

            • 2.2.2 Sử dụng tính năng HOG

            • 2.2.3 Train HOG

            • 2.2.4 Train SVM

            • 2.2.5 Confusion Matrix

            • CHƯƠNG 1. KẾT QUẢ MÔ PHỎNG

              • 1.1 Xây dựng thuật toán

              • 1.2 Xây dựng Guide

              • CHƯƠNG 2. NHẬN XÉT

                • 1.3 Nhận xét 1

                • 1.4 Nhận xét 2

                • CHƯƠNG 3. KẾT LUẬN

                  • 1.5 Kết luận

                    • 1.1.1 Kết luận 1

Tài liệu cùng người dùng

Tài liệu liên quan