Tải bản đầy đủ (.docx) (13 trang)

(TIỂU LUẬN) báo cáo môn học PROJECT 1 đề tài NHẬN DIỆN CHỨNG MINH THƯ NHÂN dân

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.84 MB, 13 trang )

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
Viện Công Nghệ Thông Tin và Truyền Thơng

BÁO CÁO MƠN HỌC PROJECT 1
ĐỀ TÀI: NHẬN DIỆN CHỨNG MINH THƯ NHÂN DÂN

GVHD: Nguyễn Bình Minh
Mã Lớp: 699556
Họ và tên: Đỗ Hoàng Việt
MSSV: 20183665


NỘI DUNG
Chương I: Nhiệm vụ môn học, giới thiệu bài tốn.........................................................
Chương II: Cơng cụ sử dụng...........................................................................................
Ngơn ngữ lập trình
Python.....................................................................................
I.

Đơn giản và phù
hợp............................................................................................
1.

Có nhiều Frameworks và thư viện hỗ
trợ.............................................................
2.

Cộng đồng hỗ trợ
lớn...........................................................................................
3.


Pytorch..........................................................................................................

II.

..........
Khái
niệm.............................................................................................................
1.

Ưu
điểm................................................................................................................
2.

Nhược
điểm..........................................................................................................
3.

CHƯƠNG III: Cơ sở lý thuyết........................................................................................
1.

Cropper..........................................................................................................

......
Single Shot
Detection...........................................................................................
2.
3.

VGG16..........................................................................................................


.......
CHƯƠNG IV: Kết quả và đánh giá..............................................................................


1


CHƯƠNG I. Nhiệm vụ mơn học, giới thiệu bài tốn
Xử lý ảnh là một lĩnh vực mang tính khoa học và cơng nghệ. Nó là một
nghành khoa học mới mẻ so với nhiều nghành khoa học khác nhưng tốc độ phát
triển của nó rất nhanh, kích thích các trung tâm nghiên cứu, ứng dụng, đặc biệt
là máy tính chuyên dụng riêng cho nó. Xử lý ảnh được ứng dụng rộng rãi trong
nhiễu lĩnh vực khoa học và công nghệ, chẳng hạn như thị giác máy tính, rơ bốt,
tìm kiếm tài liệu ảnh, hỗ trợ chẩn đốn hình ảnh y học, giải trí, …
Nhiệm vụ của em trong mơn project 1 này là nhận diện và trích xuất thơng tin từ
ảnh chụp chứng minh nhân dân một cách dễ dàng theo các trường như tên, ngày tháng
năm sinh, quê quán, số CMT, giới tính, ngày cấp… giúp việc khai thác thơng tin
nhanh chóng, chính xác, tiết kiệm thời gian. Ở đây phần việc em thực hiện gồm:
cropper chứng minh thư nhân dân từ 1 bức ảnh.
Nhiệm vụ của cropper là từ input (image) sẽ xác định 4 góc của chứng minh nhân
dân rồi sau đó sẽ cắt chứng minh nhân dân ra khỏi image. Mục đích là làm cho việc
xác định các trường thông tin ở phần Detector trở nên dễ dàng hơn.Ở đây, phương
pháp em sử dụng là detection model SSD (Singel Shot Detection), với feature
extractor VGG-16.

2


CHƯƠNG II: Cơng cụ sử dụng
I.


Ngơn ngữ lập trình Python

Python là một ngơn ngữ lập trình bậc cao. Python hỗ trợ các module và
gói( packages), khuyến khích chương trình module hóa và tái sử dụng mã. Trình
thơng dịch Python và thư viện chuẩn mở rộng có sẵn dưới dạng mã nguồn mở
miễn phí cho tất cả các nền
tảng chính và có thể được phân phối tự do.

Một số ưu điểm của python:
1. Đơn giản và phù hợp
-

Python cung cấp mã ngắn gọn và dễ đọc: cú pháp đơn giản, rõ ràng sử dụng

khơng nhiều từ khóa, ý nghĩa câu lệnh dễ hiểu, có thể suy đốn được ý nghĩa kể cả khi
chưa biết gì về Python.
-

Python vừa có thể lập trình theo hướng thủ tục, vừa có thể lập trình hướng đối

tượng. Hỗ trợ module và hỗ trợ gói.
-

Python có tương thích cao: chương trình phần mềm viết bằng python có thể chạy

được trên nhiều nền tảng hệ điều hành khác nhau bao gồm Windows, MAC OS và
Linux.

2. Có nhiều Frameworks và thư viện hỗ trợ

Nhắc đến xử lý ảnh là không thể không nhắc đến thư viện opencv với rất nhiều
hàm hỗ trợ. Và thật may mắn, opencv có hỗ trợ Python với những cú pháp

3


rất ngắn gọn và dễ hiểu mà vẫn chứa đầy đủ tính năng sẵn có. Ngồi ra Python
cịn hỗ trợ một số thư viện có ích như sau:
NumPy: một thư viện tính tốn hiệu năng cao, đặc biệt là tính toán trên
các ma trận 2D hay các tensor nhiều chiều.
Matplotlib: một thư viện hỗ trợ trực quan hóa dữ liệu mạnh mẽ.
Math: thư viện cung cấp đầy đủ các công thức toán học như hàm mũ,
hàm logarit, …
3. Cộng đồng hỗ trợ lớn
Trong khảo sát dành cho nhà phát triển 2018 của Stack Overflow, Python
nằm trong top 10 ngôn ngữ lập trình phổ biến nhất, điều đó có nghĩa là bạn có
thể dễ dàng tìm kiếm được sự trợ giúp từ cộng đồng khi gặp vấn đề trong việc
lập trình. Thực tế cộng đồng Python đang phát triển rất nhanh trên tồn cầu. Có
các diễn đàn Python và trao đổi tích cực kinh nghiệm lập trình.
II.

Pytorch
1. Khái niệm

PyTorch là một framework được xây dựng dựa trên python cung cấp nền tảng
tính tốn khoa học phục vụ lĩnh vực Deep learning. Pytorch tập trung vào 2 khả
năng chính:
Một sự thay thế cho bộ thư viện numpy để tận dụng sức mạnh tính tốn
của GPU.
Một platform Deep learning phục vụ trong nghiên cứu, mang lại sự linh

hoạt và tốc độ.
2. Ưu điểm:
Mang lại khả năng debug dễ dàng hơn theo hướng interactively, rất
nhiều nhà nghiên cứu và engineer đã dùng cả pytorch và tensorflow
đều đánh giá cáo pytorch hơn trong vấn đề debug và visualize.
Hỗ trợ tốt dynamic graphs.
Được phát triển bởi đội ngũ Facebook.
4


Kết hợp cả các API cấp cao và cấp thấp.
3. Nhược điểm:
Vẫn chưa được hoàn thiện trong việc deploy, áp dụng cho các hệ
thống lớn,... được như framework ra đời trước nó như tensorflow.
Ngồi document chính từ pytorch thì vẫn cịn khá hạn chế các nguồn
tài liệu bên ngồi như các tutorials hay các câu hỏi trên stackoverflow.

5


CHƯƠNG III: Cơ sở lý thuyết
Cấu trúc của một bài tốn nhận diện và trích xuất thơng tin từ ảnh chụp
chứng minh nhân dân gồm 3 components:
- Cropper
- Detector
- Reader

2.

Cropper


Nhiệm vụ của cropper là từ input (image) sẽ xác định 4 góc của chứng minh
nhân dân rồi sau đó sẽ cắt chứng minh nhân dân ra khỏi image. Mục đích là làm
cho việc xác định các trường thông tin ở phần Detector trở nên dễ dàng hơn.Ở
đây, phương pháp em sử dụng là detection model SSD (Single Shot Detection),
với feature extractor VGG-16
2.

Single Shot Detection:

-

Là 1 kiến trúc thuộc bài toán Object Detection.

-

Kiến trúc mơ hình:

- SSD nhận đầu vào là 1 bức ảnh và các ground truth boxes ( là offsets và label
của các bounding boxes) trong suốt quá trình huấn luyện.
6


- SSD dựa trên một tiến trình lan truyền thuận của 1 kiến trúc chuẩn (VGG16 :
pre-trained model) để tạo ra một khối feature map output 3 chiều ở giai đoạn
sớm.
- Sau đó, chúng ta sẽ thêm vào các lớp để tiến hành nhận diện vật thể như phần
Extra Feature Layer.
-


Các layer của mơ hình SSD:
+

+

Input layer: là bức ảnh có kích thước 300*300*3

Conv5_3 layer: sử dụng kiến trúc VGG16 cho ra output là conv4_3

layer là 1 feature map có kích thước 38*38*512.
- Ở mỗi feature map, ta sẽ áp dụng 2 phép biến đổi:
Áp dụng một convolutional layer để thu được output layer tiếp theo. đầu
ra thu được Conv6 có kích thước là 19*19*1024.
Áp dụng một classifier để nhận diện vật thể trên feature map.
Mỗi feature map cell sẽ được gắn với một tập các bounding box mặc định
với số chiều và tỉ lệ khác nhau. Các Priors này được lựa chọn bằng tay.
Phương pháp này cho phép SSD tạo được bounding box cho bất kì kiểu đầu
vào nào mà không yêu cầu một phase pre-trained nào cho việc tạo ra priors.
Với mỗi tập b bounding box mặc định cho mỗi feature map cell và c classes
cho việc phan loại. Với một feature map có kích thước f = m x n, SSD sẽ tính
ra f x b x (4+c) giá trị cho feature map này.
-

Quá trình áp dụng classifier lên feature map cũng tương tự với các layer

Conv7, Conv8_2, Conv_9, Conv10_2, Conv11_2.
-

SSD cần dự đoán 8732 bounding box ở output nên phần hậu xử lí, chúng ta


cần sử dụng thêm thuật toán Non-Maximum Maxpression để loại bỏ các
bounding box dư thừa.
-

Loss function là sự kết hợp của 2 thành phần tương ứng với 2 chức năng của

SSD:
7


Confidence Loss: thành phần này tính tốn tỉ lệ rơi vào class mà bounding
box được tính tốn. Độ đo cross-entropy được sử dụng để đo thành phần này.
Location Loss: Thành phần này ước lượng sự sai lêch thực tế của bounding
box so với tập dữ liệu mẫu. L2-Norm được sử dụng ở đây.
- Multibox Prior và IoU:
Trong MultiBox, một khái niệm được sử dụng là priors , là những bounding
box được tính tốn trước với kích thước cố định tn theo phân phối gần với
phân phối của bounding box mẫu. Trong thực tế, những priors này được lựa
chọn khi tỉ lệ Intersection/Union (IoU) lớn hơn ngưỡng 0.5. Giá trị IoU tại 0.5
vẫn chưa đủ tốt nhưng nó sẽ là một điểm bắt đầu tương đối ổn cho thuật cho
giải thuật bounding box regression (chính là việc học tham số của mạng) - điểu
này thực sự sẽ tiết kiệm thời gian và đem lại kết quả tốt hơn rất nhiều so với
việc bắt đầu tại một vị trí ngẫu nhiên.
Do đó MultiBox bắt đầu với priors như một prediction khởi tạo với mục đích
hồi quy gần hơn với bounding box thực sự.

8


3.


VGG-16

9


- VGG16 là một model CNN do K. Simonyan và A. Zisserman đề xuất. Mơ hình này
đạt độ chính xác là 92,7% trong ImageNet, là tập dữ liệu của hơn 14 triệu hình ảnh
thuộc 1000 lớp. Đây là một trong những mơ hình nổi tiếng được nộp cho ILSVRC2014. Nó cải tiến hơn AlexNet bằng cách thay thế các kernel-sized filters lớn (11 và 5
trong lớp chập đầu tiên và thứ hai, tương ứng) bằng nhiều kernel-sized filters 3 × 3.
-

Kiến trúc của VGG16:

Đầu vào cho lớp cov1 là ảnh màu có kích thước 224 x 224 x 3. Hình ảnh
được chuyển qua một chồng các lớp convolutional, trong đó các bộ lọc được sử
dụng với trường tiếp nhận rất nhỏ: 3 × 3 (là kích thước nhỏ nhất để nắm bắt
khái niệm trái / phải, lên / xuống, trung tâm ). Trong một trong các cấu hình, nó
cũng sử dụng 1 × 1 convolution filters.. Có 5 lớp max pooling được sử dụng
theo sau một số lớp conv. Max pooling được thực hiện có kích thước 2 × 2
pixel, với stride 2.
Ba lớp Fully-connected được dùng sau các lớp conv (có độ sâu khác nhau
trong các kiến trúc khác nhau): hai lớp đầu tiên có 4096 kênh mỗi lớp, lớp thứ
ba thực hiện phân loại ILSVRC 1000 chiều và do đó chứa 1000 kênh (một cho
10


mỗi lớp học). Lớp cuối cùng là lớp soft-max.Các lớp conv và FC sử dụng thêm
ReLU activation.


CHƯƠNG IV: Kết quả và đánh giá

*Nhận xét: do số lượng data quá ít nên model chưa học được nhiều, do đó việc
detect ra 4 label chưa thực sự tốt.

11



×