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 16 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

Nội dung

Trang 1

TRƯỜNG ĐẠI HỌC HÀNG HẢI VIỆT NAMKHOA 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ẢIKHOA CÔNG NGHỆ THÔNG TINBỘ MÔN KHOA HỌC MÁY TÍ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,

- 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ạng tiền Việt Nam

Trang 4

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

NGƯỜI HƯỚNG DẪN

Trang 5

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

3.1 TẠODỮLIỆUCHOBÀITOÁN 13

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 qua nhiề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ất cần thiết và không thể thiếu trong cuộc sống của con người Ở các quốc gia phá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 giao dị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ân dạ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ại Việt Nam Tất cả máy bán nước tự động hay các cây ATM đều đang xử dụng công nghệ quét hình ảnh để nhận diện tiền Việc nhận diện tiền bằng công nghệ đã giúp cho việc kinh doanh hàng hóa hay giao dịch tiền mặt dễ dàng hơn Trước đây thay vì cửa hàng phải có nhân viên trực thì công nghệ đã giúp cho 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ền mặ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ệnh vẫ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ận diện tiền Việt Nam mong có thể đóng góp cho việc phát triển các việc thanh toá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ột bà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án học biểu tượng nổi tiếng nhất được sử dụng để tạo mạng nơ-ron và mô hình họ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 được thiết kế để xác định nhanh các mô hình học sâu Chà, Keras là một lựa chọn tố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ổi tiế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à deep learning đã 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ép TensorFlow xây dựng được nhiều neural network Nó còn cho phép bạn tính toán song song trên nhiều máy tính khác nhau, thậm chí trên nhiều CPU, GPU trong cùng 1 máy hay tạo ra các dataflow graph – đồ thị luồng dữ liệu để dựng nê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 cho cá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 modeling gồ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ên nhiề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 (Scientific Python) 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 trong hoạ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ởi Guido 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 cao cho các hoạt động số với cú pháp kiểu MATLAB Tất cả các cấu trúc mảng OpenCV được chuyển đổi sang và từ các mảng Numpy Điều này cũng giúp tí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 Deep Learning vô cùng tiên tiến CNN sẽ cho phép bạn xây dựng các hệ thống thô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ững convolutional layer sẽ có các parameter được học để điều chỉnh và lấy ra những thông tin chính xác nhất mà không cần phải chọn feature Convolution hay 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ước nhỏ.

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ới nhau thì CNN sẽ nhìn ra sự tương động khi tìm kiếm thô các Feature khớp với nhau 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ới cá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ố trong cá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ác thô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 tin trừ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ỗi neural đầ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) hay mạng toàn vẹn (affine layer) Còn trong mô hình CNNs thì ngược lại Các layer 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ết quả 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àng tră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ác thô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ân lớp ảnh, CNNs sẽ cố gắng tìm ra thông số tối ưu cho các filter tương ứng theo thứ tự raw pixel > edges > shapes > facial > high-level features Layer cuối cù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ất biế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ũng giố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 trong mạng CNN Trong mỗi convolution sẽ có các feature map khác nhau và mỗi feature lại có khả năng giúp detect một vài feature trong ả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ược bớ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ạng neural được ứng dụng rất nhiều trong deep learning trong computervision cho classifier 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ết nố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ước nhỏ (3x3).

Trang 15

VGG16 đã đạt được nhiều kết quả ấn tượng trên nhiều tập dữ liệu ảnh khác nhau và là một trong những kiến trúc mạng học sâu được sử dụng rộng rã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ượng mấ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 đặt trư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ệt chư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 cho mỗ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 model bằ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

Trang 18

File 00000 không có dữ liệu

Dữ liệu tiền 50 nghìn

Trang 19

Dữ liệu tiền 10 nghìn

Dữ liệu tiền 20 nghìn

Trang 20

3.2 Xử lý dữ liệu hình ảnh

Trong quá trình chúng ta train model, thử nghiệm model thì sẽ phải chạy chương trình rất nhiều lần để debug, sửa lỗi… Như vậy mà mỗi lần chạy lại phải mò hết đống file và thư mục trên thì sẽ khá lâu nên em sẽ đọc 1 lần và thực hiện:

 Convert nhãn (00000,10000,20000….) thành one-hot  Resize ảnh về 128×128

Sau khi lưu xong thì không cần quan tâm đến cái folder data kia nữa mà chỉ quan tâm đến file pix.data mới sinh ra

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