1. Trang chủ
  2. » Giáo Dục - Đào Tạo

BÁO CÁO BÀI TẬP LỚN HỌC PHẦN NHẬN DẠNG VÀ XỬ LÝ ẢNH N03 Đề tài Nhận Dạng Tiền Việt Nam

29 18 0

Đ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

Thông tin cơ bản

Tiêu đề Nhận Dạng Tiền Việt Nam
Tác giả Nguyễn Trọng Đạt
Trường học Trường Đại Học Hàng Hải Việt Nam
Chuyên ngành Công Nghệ Thông Tin
Thể loại báo cáo
Năm xuất bản 2023
Thành phố Hải Phòng
Định dạng
Số trang 29
Dung lượng 4,57 MB

Nội dung

Transfer Learning: Đây là một kỹ thuật sử dụng lại một mô hình học máy đã được huấn luyện trên một tập dữ liệu lớn và sử dụng để giải quyết mộtbài toán mới.. Với transfer learning, ta c

Trang 1

TRƯỜNG ĐẠI HỌC HÀNG HẢI VIỆT NAM

KHOA CÔNG NGHỆ THÔNG TIN

Trang 2

Hải Phòng, tháng 4 năm 2023

2

Trang 3

TRƯỜNG ĐẠI HỌC HÀNG HẢI KHOA CÔNG NGHỆ THÔNG TIN

BỘ MÔN KHOA HỌC MÁY TÍNH

-*** -BÀI TẬP LỚN HỌC PHẦN: XỬ LÝ ẢNH

- Giúp nhận dạng số tiền bằng camera thông qua VGG16 CNN classsìy

hệ thống phải nhận diện mệnh giá của từng tờ tiền

3 Công việc thực hiện

- Tìm hiểu tổng quát về OpenCv, Keras, tensorflow, sklearn,matplotlib

- Xây dựng chương trình nhận diện đơn giản và chính xác với tỉ lệ caonhất

- Khi chúng ta đưa tiền vào camera, hệ thống phải nhận diện mệnh giácủa từng tờ tiền

- Làm báo cáo bài tập lớn

4 Yêu cầu

- Kết quả làm bài tập lớn: Báo cáo bài tập lớn, Chương trình nhận dạngtiền Việt Nam

Trang 4

Hải Phòng, tháng 4 năm 2023

NGƯỜI HƯỚNG DẪN

Trang 5

Mục Lục

PHẦN 1 : GIỚI THIỆU 4

PHẦN 2: CƠ SỞ LÝ THUYẾT 5

2.1 T ÌM HIỂU VỀ O PEN CV 5

2.1.1 OpenCV 5

2.1.2 Một số thư viện khác 6

2.2 M ẠNG CNN C LASSIFY 8

2.2.1 Mạng CNN là gì 8

2.2.2 Convolutional 8

2.2.3 Feature 8

2.3 C ẤU TRÚC MẠNG CNN 8

2.4 M ẠNG VGG 16 11

CHƯƠNG 3: CÀI ĐẶT CHẠY THỬ 13

3.1 T ẠO DỮ LIỆU CHO BÀI TOÁN 13

3.2 X Ử LÝ DỮ LIỆU HÌNH ẢNH 17

3.3 T RAIN MODEL CNN C LASSIFY 18

3.4 C HẠY CHƯƠNG TRÌNH 20

PHẦN 4: KẾT LUẬN 23

THAM KHẢO 24

Trang 6

PHẦN 1 : GIỚI THIỆU

Ngày nay, với sự phát triển không ngừng của xã hội, tin học đã trở nên vôcùng phổ biến và đã có những bước phát triển vượt bậc được thể hiện quanhiều lĩnh vực của đời sống xã hội Tin học đã dần dần trở thành nhu cầu rấtcần thiết và không thể thiếu trong cuộc sống của con người Ở các quốc giaphát triển hiệu quả do tin học hóa đem lại đã góp phần thiết yếu và chiếm giữmột vị trí quan trọng trong các lĩnh vực kinh tế, chính trị, văn hóa, giáo dục…Việt Nam là một trong những nước đang phát triển nên vẫn có lượng giaodịch thanh toán chủ yếu là tiền mặt Cho nên các công nghệ sử dụng việc nhândạng tiền mặt thông qua hình ảnh đang được nghiên cứu và phát triển rộng tạiViệt Nam Tất cả máy bán nước tự động hay các cây ATM đều đang xử dụngcông nghệ quét hình ảnh để nhận diện tiền Việc nhận diện tiền bằng côngnghệ đã giúp cho việc kinh doanh hàng hóa hay giao dịch tiền mặt dễ dànghơn Trước đây thay vì cửa hàng phải có nhân viên trực thì công nghệ đã giúpcho việc cửa hàng không cần phải có nhân viên thu ngân trực tại quầy mà đã

có thể áp dụng công nghệ cho việc bán hàng tự động bằng cách nhận diện tiềnmặt thông qua camera nhận diện hình ảnh tiền mặt Sẽ giúp cho các cửa hàng

có thể thuận tiện hơn khi tránh được việc tiếp xúc gần trong thời kì dịch bệnhvẫn còn đang hoành hành hiện nay

Là sinh viên ngành CNTT em cũng đang thực hiện dự án nhỏ của việc nhậndiện tiền Việt Nam mong có thể đóng góp cho việc phát triển các việc thanhtoán qua việc nhận diện tiền mặt tại Việt Nam được phát triển hơn nữa

Trang 7

PHẦN 2: CƠ SỞ LÝ THUYẾT

2.1 Cơ sở lý thuyết

1 Convolutional Neural Networks (CNNs): Đây là một loại mạng nơ-ron

sử dụng trong thị giác máy tính để phân tích hình ảnh CNNs sử dụng các lớp convolution để trích xuất đặc trưng của ảnh, sau đó sử dụng các lớp pooling đểgiảm kích thước của ảnh và cuối cùng là các lớp fully connected để phân loại ảnh

2 Transfer Learning: Đây là một kỹ thuật sử dụng lại một mô hình học máy đã được huấn luyện trên một tập dữ liệu lớn và sử dụng để giải quyết mộtbài toán mới Với transfer learning, ta có thể sử dụng mô hình đã được huấn luyện để trích xuất các đặc trưng của ảnh và áp dụng chúng vào bài toán nhận dạng tiền

3 Data Augmentation: Đây là một kỹ thuật cho phép tăng cường tập dữ liệu bằng cách thêm nhiễu vào ảnh, xoay ảnh, tạo ảnh mới từ ảnh gốc, v.v

Kỹ thuật này giúp cho mô hình học tốt hơn trên các dữ liệu mới mà nó chưa từng thấy

4 Fine-tuning: Đây là một kỹ thuật cho phép tinh chỉnh mô hình đã được huấn luyện trên tập dữ liệu lớn để phù hợp với bài toán mới Kỹ thuật này cho phép ta đóng băng các lớp trước và chỉ huấn luyện các lớp cuối cùng

để phù hợp với bài toán mới

2.2 Một số thư viện

A Keras

Keras chạy trên các thư viện máy mã nguồn mở như TensorFlow,Theano hoặc Bộ công cụ nhận thức (CNTK) Theano là một thư viện python

Trang 8

được sử dụng cho các tác vụ tính toán số nhanh TensorFlow là thư viện toánhọc biểu tượng nổi tiếng nhất được sử dụng để tạo mạng nơ-ron và mô hìnhhọc sâu TensorFlow rất linh hoạt và lợi ích chính là tính toán phân tán CNTK

là khung học sâu được phát triển bởi Microsoft Nó sử dụng các thư viện nhưPython, C #, C ++ hoặc các bộ công cụ học máy độc lập Theano vàTensorFlow là những thư viện rất mạnh nhưng khó hiểu để tạo mạng nơ-ron

Keras dựa trên cấu trúc tối thiểu, cung cấp một cách dễ dàng và dễ dàng

để tạo các mô hình học sâu dựa trên TensorFlow hoặc Theano Keras đượcthiết kế để xác định nhanh các mô hình học sâu Chà, Keras là một lựa chọntối ưu cho các ứng dụng học sâu

B Tensorflow

TensorFlow chính là thư viện mã nguồn mở cho machine learning nổitiếng nhất thế giới, được phát triển bởi các nhà nghiên cứu từ Google Việc hỗtrợ mạnh mẽ các phép toán học để tính toán trong machine learning và deeplearning đã giúp việc tiếp cận các bài toán trở nên đơn giản, nhanh chóng vàtiện lợi hơn nhiều

Các hàm được dựng sẵn trong thư viện cho từng bài toán cho phépTensorFlow xây dựng được nhiều neural network Nó còn cho phép bạn tínhtoán song song trên nhiều máy tính khác nhau, thậm chí trên nhiều CPU, GPUtrong cùng 1 máy hay tạo ra các dataflow graph – đồ thị luồng dữ liệu để dựngnên các model Nếu bạn muốn chọn con đường sự nghiệp trong lĩnh vực A.I.này, nắm rõ những điều cơ bản của TensorFlow thực sự rất quan trọn

C Sklearn

Sklearn Scikit – learn (sklearn) là một thư viện mạnh mẽ nhất dành chocác thuật toán học máy và được viết trên ngôn ngữ Python Thư viện cung cấp

Trang 9

một số tập công cụ xử lý các bài toán machine learning và statistical modelinggồm : classification, regression, clustering, và dimensionality reduction.

Thư viện được cấp phép bản quyền chuẩn FreeBSD và chạy được trênnhiều nền tảng Linux Scikit-learn được sử dụng như một tài liệu để học tập

Để cài đặt scikit-learn trước tiên phải cài thư viện SciPy (ScientificPython) Những thành phần gồm:

Numpy: Gói thư viện xử lý dãy số và ma trận nhiều chiều

SciPy: Gói các hàm tính toán logic khoa học

Matplotlib: Biểu diễn dữ liệu dưới dạng đồ thị 2 chiều, 3 chiều

IPython: Notebook dùng để tương tác trực quan với Python

SymPy: Gói thư viện các kí tự toán học

Pandas: Xử lý, phân tích dữ liệu dưới dạng bảng

D OpenCV

OpenCV là một thư viện mã nguồn mở hàng đầu cho thị giác máy tính (computer vision), xử lý ảnh và máy học, và các tính năng tăng tốc GPU tronghoạt động thời gian thực

OpenCV được phát hành theo giấy phép BSD, do đó nó hoàn toàn miễn phí cho cả học thuật và thương mại Nó có các interface C++, C, Python, Java

và hỗ trợ Windows, Linux, Mac OS, iOS và Android OpenCV được thiết kế

để tính toán hiệu quả và với sự tập trung nhiều vào các ứng dụng thời gian thực Được viết bằng tối ưu hóa C/C++, thư viện có thể tận dụng lợi thế của

xử lý đa lõi Được sử dụng trên khắp thế giới, OpenCV có cộng đồng hơn 47 nghìn người dùng và số lượng download vượt quá 6 triệu lần Phạm vi sử dụng từ nghệ thuật tương tác, cho đến lĩnh vực khai thác mỏ, bản đồ trên web hoặc công nghệ robot

Trang 10

OpenCV - Python là một thư viện các ràng buộc Python được thiết kế

để giải quyết các vấn đề về thị giác máy tính

Python là ngôn ngữ lập trình có mục đích chung được bắt đầu bởiGuido van Rossum, nó trở nên rất phổ biến rất nhanh, chủ yếu vì tính đơn giản

và khả năng đọc mã của nó Nó cho phép lập trình viên thể hiện ý tưởng trong

ít dòng mã hơn mà không làm giảm khả năng đọc

So với các ngôn ngữ như C/C++, Python chậm hơn Điều đó nói rằng,Python có thể dễ dàng được mở rộng với C/C++, cho phép chúng ta viết mãchuyên sâu tính toán trong C/C++ và tạo các trình bao bọc Python có thể được

sử dụng làm mô-đun Python Điều này mang lại cho chúng ta hai lợi thế: thứnhất, mã nhanh như mã C/C++ gốc (vì đây là mã C++ thực tế hoạt động ở chế

độ nền) và thứ hai, mã dễ dàng hơn trong Python so với C/C++ OpenCV Python là một trình bao bọc Python để thực hiện OpenCV C++ ban đầu

-OpenCV - Python sử dụng Numpy, một thư viện được tối ưu hóa caocho các hoạt động số với cú pháp kiểu MATLAB Tất cả các cấu trúc mảngOpenCV được chuyển đổi sang và từ các mảng Numpy Điều này cũng giúptích hợp dễ dàng hơn với các thư viện khác sử dụng Numpy như SciPy vàMatplotlib

2.3 Mạng CNN Classify

2.3.1 Mạng CNN là gì

CNN là tên viết tắt của từ Convolutional Neural Network (hay còn gọi làCNNs_mạng nơ ron tích chập) Đây là một trong những mô hình DeepLearning vô cùng tiên tiến CNN sẽ cho phép bạn xây dựng các hệ thốngthông minh với độ chính xác vô cùng cao Hiện nay, CNN được ứng dụng

Trang 11

nhiều trong những bài toán nhận dạng object của ảnh CNN được chia cụ thểnhư sau:

2.3.2 Convolutional

Đây là một loại cửa sổ dạng trượt nằm trên một ma trận Nhữngconvolutional layer sẽ có các parameter được học để điều chỉnh và lấy ranhững thông tin chính xác nhất mà không cần phải chọn feature Convolutionhay tích chập chính là nhân các phần tử trong ma trận Sliding Window cònđược gọi là kernel, filter hoặc feature detect và là loại ma trận có kích thướcnhỏ

2.3.3 Feature

Feature là đặc điểm, các CNN sẽ so sánh hình ảnh dựa theo từng mảnh

và những mảnh này được gọi là Feature Thay vì phải khớp các bức ảnh lại vớinhau thì CNN sẽ nhìn ra sự tương động khi tìm kiếm thô các Feature khớp vớinhau bằng 2 hình ảnh tốt hơn Mỗi Feature được xem là một hình ảnh mini cónghĩa chúng là những mảng 2 chiều nhỏ Các Feature này đều tương ứng vớicác khía cạnh nào đó của hình ảnh và chúng có thể khớp lại với nhau

2.4 Cấu trúc mạng CNN

Mạng CNN là một tập hợp các lớp Convolution chồng lên nhau và sửdụng các hàm nonlinear activation như ReLU để kích hoạt các trọng số trongcác node Mỗi một lớp sau khi thông qua các hàm kích hoạt sẽ tạo ra cácthông tin trừu tượng hơn cho các lớp tiếp theo

Mỗi một lớp sau khi thông qua các hàm kích hoạt sẽ tạo ra các thông tintrừu tượng hơn cho các lớp tiếp theo Trong mô hình mạng truyền ngược

Trang 12

(feedforward neural network) thì mỗi neural đầu vào (input node) cho mỗineural đầu ra trong các lớp tiếp theo.

Mô hình này gọi là mạng kết nối đầy đủ (fully connected layer) haymạng toàn vẹn (affine layer) Còn trong mô hình CNNs thì ngược lại Cáclayer liên kết được với nhau thông qua cơ chế convolution

Layer tiếp theo là kết quả convolution từ layer trước đó, nhờ vậy mà ta

có được các kết nối cục bộ Như vậy mỗi neuron ở lớp kế tiếp sinh ra từ kếtquả của filter áp đặt lên một vùng ảnh cục bộ của neuron trước đó

Mỗi một lớp được sử dụng các filter khác nhau thông thường có hàngtrăm hàng nghìn filter như vậy và kết hợp kết quả của chúng lại Ngoài ra cómột số layer khác như pooling/subsampling layer dùng để chắt lọc lại cácthông tin hữu ích hơn (loại bỏ các thông tin nhiễu)

Trong quá trình huấn luyện mạng (traning) CNN tự động học các giá trịqua các lớp filter dựa vào cách thức mà bạn thực hiện Ví dụ trong tác vụ phânlớp ảnh, CNNs sẽ cố gắng tìm ra thông số tối ưu cho các filter tương ứng theothứ tự raw pixel > edges > shapes > facial > high-level features Layer cuốicùng được dùng để phân lớp ảnh

Trong mô hình CNN có 2 khía cạnh cần quan tâm là tính bấtbiến (Location Invariance) và tính kết hợp (Compositionality) Với cùng mộtđối tượng, nếu đối tượng này được chiếu theo các gốc độ khác nhau

Trang 13

(translation, rotation, scaling) thì độ chính xác của thuật toán sẽ bị ảnh hưởngđáng kể.

Pooling layer sẽ cho bạn tính bất biến đối với phép dịch chuyển(translation), phép quay (rotation) và phép co giãn (scaling) Tính kết hợp cục

bộ cho ta các cấp độ biểu diễn thông tin từ mức độ thấp đến mức độ cao vàtrừu tượng hơn thông qua convolution từ các filter

Đó là lý do tại sao CNNs cho ra mô hình với độ chính xác rất cao Cũnggiống như cách con người nhận biết các vật thể trong tự nhiên

Mạng CNN sử dụng 3 ý tưởng cơ bản:

Local receptive field (trường cục bộ): Lớp này có nhiệm vụ tách

lọc dữ liệu, thông tin ảnh và lựa chọn các vùng ảnh có giá trị sửdụng cao nhất

Shared weights and bias (trọng số chia sẻ): Lớp này giúp làm

giảm tối đa lượng tham số có tác dụng chính của yếu tố này trongmạng CNN Trong mỗi convolution sẽ có các feature map khácnhau và mỗi feature lại có khả năng giúp detect một vài featuretrong ảnh

Pooling layer (lớp tổng hợp): Pooling layer là lớp cuối cùng và có

tác dụng làm đơn giản các thông tin đầu ra Có nghĩa là, sau khi đãhoàn tất tính toán và quét qua các lớp thì đến pooling layer để lượcbớt các thông tin không cần thiết Từ đó, cho ra kết quả theo như ý

mà người dùng mong muốn

2.5 Mạng VGG 16

VGG16 có nền tảng là CNN(Convolutional neural network) là một mạngneural được ứng dụng rất nhiều trong deep learning trong computervision choclassifier và localizer Từ mạng CNN cơ bản người ta có thể tạo ra rất nhiều

Trang 14

architect khác nhau, từ những mạng neural cơ bản 1 đến 2 layer đến 100 layer.

Mạng VGG16 (VGG-16) là một trong những kiến trúc mạng học sâuđược phát triển bởi nhóm nghiên cứu Visual Geometry Group (VGG) thuộcĐại học Oxford vào năm 2014

Nó được đặt tên là VGG16 vì nó có 16 lớp (13 lớp tích chập và 3 lớp kếtnối đầy đủ) và sử dụng kiến trúc tích chập rất sâu với các kernel kích thướcnhỏ (3x3)

Trang 15

VGG16 đã đạt được nhiều kết quả ấn tượng trên nhiều tập dữ liệu ảnhkhác nhau và là một trong những kiến trúc mạng học sâu được sử dụng rộngrãi trong các bài toán nhận diện ảnh và phân loại.

Các đặc điểm của VGG16 bao gồm:

 Sử dụng các kernel kích thước nhỏ (3x3) liên tiếp nhau để giảm sốlượng tham số cần tối ưu và tăng tính toán tái sử dụng

 Sử dụng các lớp tích chập và kết nối đầy đủ (fully connected) với sốlượng filter và nơ-ron lớn để học các đặc trưng phức tạp của ảnh

 Sử dụng kỹ thuật Dropout để giảm overfitting

 Sử dụng hàm kích hoạt ReLU để tăng tốc độ hội tụ và tránh hiện tượngmất gradient

Tuy nhiên, kiến trúc VGG16 có số lượng tham số khá lớn, gây tốn kém

về tính toán và không thực tế cho các ứng dụng có giới hạn về tài nguyên

Nhìn vào cấu trúc VGG16 sẽ gồm 2 phần, phần màu cam là trích đặttrưng của ảnh còn phần màu xanh sẽ là các lớp FC để classify

Trang 16

CHƯƠNG 3: CÀI ĐẶT CHẠY THỬ

3.1 Tạo dữ liệu cho bài toán

Có bài toán thì có dữ liệu cho trước rất nhiều trên mạng, ví dụ face, ví dụảnh đồ vật, ảnh phong cảnh Tuy nhiên các dữ liệu về tiền, đặc biệt tiền Việtchưa có nên phải tự tạo cho mình

Cách tạo dữ liệu đơn giản là viết một đoạn python đọc liên tục từ camera

và save lại vào các thư mục tương ứng ảnh các tờ tiền

Thực hiện chụp liên tục ảnh từ camera, khoảng 1000 tấm cho mỗi loại.Sau đó, lọc data thủ công, chỉ chọn những hình không bị mờ, rõ hình ảnh đượ

in trên tiền

Vì data tự tạo nên sẽ không được chính xác cao (khoảng 1000 tấm chomỗi loại) Nên tiến hành augmentation data Thực hiện augment dữ liệu để

Trang 17

làm phong phú hơn dữ liệu, tăng data variance , tăng tính tổng quát cho modelbằng ImageDataGenerator của Keras.

Sau khi tạo file data tiếp tục chuyền vào các ảnh chi tiết của các mệnh giátiền vào các file để máy save data

Ngày đăng: 15/04/2024, 06:06

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w