Tải bản đầy đủ (.pdf) (46 trang)

Số hóa dữ liệu đường huyết

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.29 MB, 46 trang )

TRƯỜNG ĐẠI HỌC CƠNG NGHIỆP TP.HCM
KHOA CƠNG NGHỆ THƠNG TIN

KHĨA LUẬN TỐT NGHIỆP

SỐ HÓA DỮ LIỆU ĐƯỜNG HUYẾT

Giảng viên hướng dẫn

: PGS.TS HUỲNH TRUNG HIẾU

Sinh viên thực hiện 1

: VÕ ĐÌNH NGHĨA

Mã số sinh viên

: 17094021

Sinh viên thực hiện 2

: HUỲNH NGỌC NHÂN

Mã số sinh viên

: 17094521

Lớp

: DHKHMT13A


Khóa

: 2017 – 2021

Tp. Hồ Chí Minh, tháng 6 năm 2021


Khóa tốt nghiệp chun ngành Khoa Học Máy Tính
TRƯỜNG ĐH CƠNG NGHIỆP TP. HCM

CỘNG HỒ XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập – Tự do - Hạnh phúc

KHOA CÔNG NGHỆ THƠNG TIN
----- // -----

----- // -----

NHIỆM VỤ KHĨA LUẬN TỐT NGHIỆP
Họ và tên sinh viên 1: Võ Đình Nghĩa
MSSV: 17094021
Chuyên ngành: Khoa học máy tính
Lớp: DHKHMT13A
Họ và tên sinh viên 2: Huỳnh Ngọc Nhân
MSSV: 17094521
Chuyên ngành: Khoa học máy tính
Lớp: DHKHMT13A
1. Tên đề tài khóa luận/đồ án: số hóa dữ liệu đường huyết
2. Nhiệm vụ:
Nhận dạng phiếu ghi số liệu đường huyết

Nhận dạng các chỉ số đường huyết và lưu vào cơ sở dữ liệu.
3. Ngày giao khóa luận tốt nghiệp: 01/02/2021
4. Ngày hồn thành khóa luận tốt nghiệp: 31/05/2021
5. Họ và tên giảng viên hướng dẫn: PGS.TS Huỳnh Trung Hiếu

Tp. Hồ Chí Minh, ngày 16 tháng 06 năm 2021
Chủ nhiệm bộ mơn

Võ Đình Nghĩa – Huỳnh Ngọc Nhân

Giảng viên hướng dẫn

1

Lớp DHKHMT13A


Khóa tốt nghiệp chun ngành Khoa Học Máy Tính

LỜI CÁM ƠN
Trước hết em xin xin bày tỏ lòng biết ơn sâu sắc nhất tới giảng viên hướng
dẫn PGS.TS Huỳnh Trung Hiếu đã tận tình giúp đỡ, hướng dẫn em rất nhiều
trong suốt q trình tìm hiểu nghiên cứu và hồn thành báo cáo tốt nghiệp.
Em xin chân thành cảm ơn các thầy cô trong khoa Công nghệ thông tin
trường Đại học Cơng nghiệp thành phố Hồ Chí Minh đã trang bị cho em những
kiến thức cơ bản cần thiết để em có thể hồn thành báo cáo.
Xin gửi lời cảm ơn đến bạn bè những người luôn bên em đã động viên và
tạo điều kiện thuận lợi cho em, tận tình giúp đỡ chỉ bảo em, những gì em cịn
thiếu sót trong q trình làm báo cáo tốt nghiệp.
Cuối cùng em xin bày tỏ lòng biết ơn sâu sắc tới những người thân trong

gia đình đã dành cho em sự quan tâm đặc biệt và ln động viên em.
Vì thời gian có hạn, trình độ hiểu biết của bản thân cịn nhiều hạn chế. Cho
nên trong đồ án khơng tránh khỏi những thiếu sót, em rất mong nhận được sự
đóng góp ý kiến của tất cả các thầy cơ cũng như các bạn bè để đồ án của em
được hoàn thiện hơn.
Em xin chân thành cảm ơn!

Tp. Hồ Chí Minh, ngày 16 tháng 06 năm 2021

Sinh viên thực hiện
(Ghi rõ họ và tên)

Võ Đình Nghĩa – Huỳnh Ngọc Nhân

2

Lớp DHKHMT13A


Khóa tốt nghiệp chun ngành Khoa Học Máy Tính

NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................

..................................................................................................................................
..................................................................................................................................
..................................................................................................................................

Phần đánh giá: (thang điểm 10)
Thái độ thực hiện:
Nội dung thực hiện:
Kỹ năng trình bày:
Tổng hợp kết quả:
Điểm bằng số: ........... Điểm bằng chữ: ...........

Tp. Hồ Chí Minh, ngày 16 tháng 06 năm 2021
Trưởng bộ mơn

Giảng viên hướng dẫn

Chuyên ngành

(Ký ghi rõ họ tên)

Võ Đình Nghĩa – Huỳnh Ngọc Nhân

3

Lớp DHKHMT13A


Khóa tốt nghiệp chun ngành Khoa Học Máy Tính

MỤC LỤC

DANH MỤC CÁC HÌNH VẼ................................................................................ 6
DANH MỤC CÁC BẢNG BIỂU .......................................................................... 7
DANH MỤC CÁC TỪ VIẾT TẮT ....................................................................... 8
VÀ TỪ KHÓA CHUYÊN NGÀNH ...................................................................... 8
LỜI MỞ ĐẦU ...................................................................................................... 10
1. Tổng quan tình hình nghiên cứu thuộc lĩnh vực của đề tài .......................... 10
2. Ý nghĩa khoa học và thực tiễn của đề tài ...................................................... 10
CHƯƠNG I. GIỚI THIỆU ................................................................................... 11
1.1. Tổng quan .................................................................................................. 11
1.2. Mục tiêu đề tài ........................................................................................... 12
1.3. Mô tả yêu cầu chức năng ........................................................................... 12
CHƯƠNG II. CƠ SỞ LÝ THUYẾT .................................................................... 13
2.1. Kiến trúc mơ hình ...................................................................................... 13
2.1.1. Optical Character Recognition - OCR ................................................ 13
2.1.2. Convolutional Neural Network - CNNs .............................................. 14
2.1.3. Xử lý ảnh với opencv .......................................................................... 15
2.2. Kiến trúc phần mềm................................................................................... 16
2.2.1. Microservices ...................................................................................... 16
2.2.2. Docker ................................................................................................. 17
2.2.3. Angular ................................................................................................ 18
2.2.4. Flask API Server ................................................................................. 19
CHƯƠNG III. MƠ HÌNH .................................................................................... 20
3.1. Một số nghiên cứu liên quan ..................................................................... 20
3.2. Phương pháp .............................................................................................. 21
3.2.1. Các bước tiền xử lý ............................................................................. 21
3.2.2. Mơ hình máy học ................................................................................. 24
3.2.3. Các giai đoạn xử lý .............................................................................. 27
CHƯƠNG IV. TRIỂN KHAI .............................................................................. 34
4.1. Xây dựng tập dữ liệu huấn luyện mô hình ................................................ 34
4.2. Thao tác sử dụng tính năng ........................................................................ 36

4.2. Thực nghiệm và đánh giá........................................................................... 38
Võ Đình Nghĩa – Huỳnh Ngọc Nhân

4

Lớp DHKHMT13A


Khóa tốt nghiệp chun ngành Khoa Học Máy Tính

4.2.1. Kiểm tra trên phiếu biểu mẫu .............................................................. 38
4.2.2. Nhận diện số liệu đường huyết từ biểu mẫu........................................ 41
CHƯƠNG V. KẾT LUẬN VÀ KIẾN NGHỊ ...................................................... 42
5.1. Kết quả đạt được ........................................................................................ 42
5.2. Hạn chế của đồ án ...................................................................................... 43
5.3. Cải tiến và hướng phát triển ...................................................................... 43
TÀI LIỆU THAM KHẢO .................................................................................... 44
PHỤ LỤC ............................................................................................................. 45

Võ Đình Nghĩa – Huỳnh Ngọc Nhân

5

Lớp DHKHMT13A


Khóa tốt nghiệp chun ngành Khoa Học Máy Tính

DANH MỤC CÁC HÌNH VẼ
Hình 2.1. Kiến trúc OCR với các phương pháp sử dụng trong bài toán nhận dạng

số viết tay qua biểu mẫu ....................................................................................... 13
Hình 2.2. Cơng thức hàm ReLU .......................................................................... 14
Hình 2.3. Kiến trúc Microservice ......................................................................... 16
Hình 2.4. Kiến trúc Docker .................................................................................. 17
Hình 2.5. Kiến trúc Angular ................................................................................. 18
Hình 2.6. Kiến trúc 1 Flask API đơn giản............................................................ 19
Hình 3.1. Ảnh sau khi được xử lý làm nổi bật các dịng kẻ ................................. 22
Hình 3.2. Hình biểu diễn đường thẳng trong hệ tọa độ cực ................................. 22
Hình 3.3. Đồ thị biểu diễn một điểm trong hệ (r,θ) ............................................. 23
Hình 3.4. Đồ thị biểu diễn nhiều 3 điểm trong hệ tọa độ (r, θ) ............................ 24
Hình 3.5. Cấu trúc mơ hình huấn luyện deep learning sử dụng CNN ................. 25
Hình 3.6. Mơ tả luồng xử lý OCR ........................................................................ 27
Hình 3.7. Phiếu biểu mẫu ..................................................................................... 29
Hình 3.8. Xử lý nhận diện mã QR ....................................................................... 30
Hình 3.9. Xử lý nhận diện bảng trong phiếu biểu mẫu ........................................ 31
Hình 3.10. Xử lý làm nổi bật cạnh của bảng số liệu ............................................ 32
Hình 4.1. Dữ liệu huấn luyện dấu “/”................................................................... 34
Hình 4.2. Dữ liệu huấn luyện dấu “-” .................................................................. 35
Hình 4.3. Mơ hình mơ tả luồng của màn hình ..................................................... 36
Hình 4.4. Phiếu biểu mẫu đã được xử lý ảnh bằng thuật toán Hough Transform 39
Hình 4.5. Bảng số liệu đường huyết sau khi loại bỏ nền ..................................... 40
Hình 4.6. Bảng số liệu đường huyết sau khi nhận dạng các trục ngang - dọc ..... 40

Võ Đình Nghĩa – Huỳnh Ngọc Nhân

6

Lớp DHKHMT13A



Khóa tốt nghiệp chun ngành Khoa Học Máy Tính

DANH MỤC CÁC BẢNG BIỂU
Bảng 3.1. Bảng kết quả về độ chính xác của Document Rectification and
Illumination Correction using a Patch-based CNN.............................................. 21
Bảng 3.2. Tham số đầu ra của mơ hình ................................................................ 26
Bảng 4.1. Kết quả kiểm tra nhận dạng các ký tự viết tay .................................... 41

Võ Đình Nghĩa – Huỳnh Ngọc Nhân

7

Lớp DHKHMT13A


Khóa tốt nghiệp chun ngành Khoa Học Máy Tính

DANH MỤC CÁC TỪ VIẾT TẮT
VÀ TỪ KHÓA CHUYÊN NGÀNH
Từ viết tắt
OCR
Build
Push
Machine Learning
Deep Learning
Run
Container
Image

Framework

Front-end
IOH-Mobile
Pretrain model
model
transformer
BERT
Seq2seq
attention
CNNs
conv layer
nonlinear layer
pooling layer
fully connected layer
softmax
feature
Filter
receptive field
feature map
stride
padding
ReLU
MNIST

Ý nghĩa
Optical Character Recognition - Nhận diện ký tự quang
học
Xây dựng phần mềm từ mã nguồn đã viết
Đẩy mã nguồn lên nền tảng git
Học máy - máy học
Học sâu

Chạy chương trình
Là thực thể thực thi của Image
Hình ảnh chụp lại hệ thống- Khi đóng gói hệ thống
Image được tạo ra khi build chương trình đã đóng gói trên
nền tảng docker.
Là các đoạn mã nguồn được đóng gói sẵn
Là tất cả những gì tương tác với người dùng (hình ảnh
font chữ,..)
Ứng dụng thu thập và quản lý dữ liệu do VDAT phát triển
Mơ hình đã được huấn luyện trước
Mơ hình
Một mơ hình pretrain của Deep learning
Bidirectional
Encoder
Representations
from
Transformers - Thể hiện mã hóa 2 chiều từ Transformer
Phương pháp sequence-to-sequence dựa theo mơ hình
Encode-Decoder
Cơ chế lấy tổng các trọng số của vector trong mơ hình
Encoder-Decoder
Mạng neural tích chập
Convolution layer, tầng tích chập
Tầng kích hoạt
Lớp gộp
Các lớp ẩn, gồm các tất cả node được kết nối với nhau
Hàm trung bình mũ
Đặc trưng
bộ lọc
Vùng tương ứng giữa filter và phần tích chập, ở đây

neural có thể thấy để đưa ra quyết định.
Ma trận đặc trưng.
Bước nhảy, là số pixel thay đổi trên ma trận đầu vào
Biên ảnh
Rectified Linear Units - hàm phi tuyến
Cơ sở dữ liệu chứa các chữ số viết tay dùng để huấn luyện

Võ Đình Nghĩa – Huỳnh Ngọc Nhân

8

Lớp DHKHMT13A


Khóa tốt nghiệp chun ngành Khoa Học Máy Tính

service
IOH-Mobile

Một dịch vụ của mơ hình microservice
Quản lý và Phân tích chỉ số đường huyết

Võ Đình Nghĩa – Huỳnh Ngọc Nhân

9

Lớp DHKHMT13A


Khóa tốt nghiệp chun ngành Khoa Học Máy Tính


LỜI MỞ ĐẦU
1. Tổng quan tình hình nghiên cứu thuộc lĩnh vực của đề tài
Hiện nay, tại Việt Nam hầu hết các bệnh viện- nơi có nguồn dữ liệu lớn và
phát sinh liên tục hàng ngày, thì cơng việc nhập liệu và lưu trữ dữ liệu vẫn còn
đang thực hiện bằng cách thủ công và rời rạc. Dẫn đến việc tốn nhiều thời gian,
chi phí và tồn tại nhiều khó khăn trong việc tổng hợp dữ liệu, đồng bộ dữ liệu để
phục vụ cho việc phân tích, theo dõi, đánh giá tình trạng bệnh của bệnh nhân.
Dưới sự phát triển của công nghệ thơng tin nói chung và ngành trí tuệ nhân
tạo nói riêng, nhiều hệ thống số hóa dữ liệu y khoa sử dụng các mơ hình học máy
đã được đưa vào sử dụng ở nhiều công ty, bệnh viện trên thế giới.
Tại Việt Nam việc số hóa dữ liệu y khoa chưa được đưa vào ứng dụng rộng
rãi. Một trong những trở ngại lớn nhất khiến các hệ thống hỗ trợ số hóa khơng
được sử dụng rộng rãi là vấn đề về tài nguyên và tính ổn định khi chuyển từ mơ
hình cũ sang mơ hình mới.
Khi chuyển mơ hình, các bệnh viện đối mặt với vấn đề khó khăn là đồng bộ
dữ liệu cũ vào hệ thống mới. Dữ liệu cũ có thể là tập các dữ liệu trên hệ thống cũ,
tệp excel hoặc là hồ sơ giấy. Trong đó hồ sơ giấy là vấn đề khó khăn nhất, do phải
tiêu tốn rất nhiều tài nguyên con người để nhập dữ liệu lên hệ thống.
Với mong muốn xóa bỏ rào cản này, đưa hệ thống hỗ trợ số hóa áp dụng vào
bệnh viện tại Việt Nam cũng như giảm chi phí trong quy trình nhập liệu đã thơi
thúc chúng tơi hồn thành ứng dụng - tính năng này.
2. Ý nghĩa khoa học và thực tiễn của đề tài
Trong đề tài này, chúng tơi tập trung phát triển một tính năng hỗ trợ số hóa
dữ liệu đường huyết từ giai đoạn cấu hình phần mềm, chức năng chụp và sao lưu
ảnh, hỗ trợ số hóa biểu mẫu và nhập liệu dữ liệu số hóa vào cơ sở dữ liệu của bệnh
viện.
Tính năng hỗ trợ số hóa dữ liệu đường huyết được tạo ra nhằm tập trung đến
giảm tải việc nhập liệu của nhân viên y tế. Với tính năng chụp phiếu ghi để nhận
diện và nhập liệu tự động sẽ giảm thiểu tối đa thời gian nhập liệu của nhân viên y

tế, giúp họ có thể tập trung vào những những chun mơn khác nhiều hơn.

Võ Đình Nghĩa – Huỳnh Ngọc Nhân

10

Lớp DHKHMT13A


Khóa tốt nghiệp chun ngành Khoa Học Máy Tính

CHƯƠNG I. GIỚI THIỆU
1.1. Tổng quan
Chỉ số đường huyết viết tắt là GI (Glycemic Index) được định nghĩa là giá trị
chỉ nồng độ glucose có trong máu thường được đo bằng đơn vị là mmol/l hoặc
mg/dl. Nồng độ glucose trong máu liên tục thay đổi từng ngày thậm chí từng phút
đặc biệt liên quan đến chế độ ăn uống sinh hoạt hàng ngày. Lúc nào trong máu
ln có một lượng đường nhất định, nếu lượng đường trong máu thường xuyên
cao sẽ dẫn tới bệnh đái tháo đường và ảnh hưởng biến chứng đến nhiều cơ quan
đặc biệt là thận mạch máu. Vì vậy chỉ số đường huyết cần được theo dõi sát sao.
Khi bước vào giai đoạn chuyển đổi số, thì việc kiểm soát chỉ số đường huyết để
đưa ra nhận định đúng đắn về tình trạng của bệnh nhân trở nên dễ dàng hơn cho
đội ngũ y bác sĩ. Tuy nhiên một vấn đề mới lại phát sinh, Bác sĩ cần theo dõi chỉ
số đường huyết cũ của bệnh nhân và chỉ số đường huyết cần theo dõi với tần suất
thường xuyên hơn. Lúc này các phiếu ghi đường huyết được ra đời, các y tá - điều
dưỡng sẽ ghi lại chỉ số đường huyết cho bệnh nhân vào các khung giờ trong ngày
ở bệnh viện hoặc bệnh nhân sẽ tự đo và ghi tại nhà. Phiếu đường huyết chứa 1
lượng lớn các chỉ số về đường huyết của bệnh nhân vào các khung giờ trong ngày.
Khi tái khám hoặc tổng hợp dữ liệu, y tá - điều dưỡng có trách nhiệm nhập những
chỉ số này vào hệ thống, tuy nhiên vì số lượng chỉ số quá nhiều gây tốn kém về tài

nguyên con người trong việc nhập dữ liệu vào hệ thống.
Trong quá trình theo dõi và khảo sát tại một bệnh viện lớn tại Tp.HCM, các
quy trình nhập liệu ở bệnh viện vẫn còn sử dụng là phương pháp nhập liệu truyền
thống, vẫn còn tồn tại nhiều hạn chế, khó khăn về tài nguyên con người trong việc
nhập liệu. Không những tại bệnh viện đang được khảo sát mà còn nhiều bệnh viện
khác tại Việt Nam cũng đang gặp phải vấn đề tương tự, với mong muốn có thể giải
quyết được vấn đề cấp thiết này đã thôi thúc chúng tơi thực hiện tính năng hỗ trợ
số hóa dữ liệu đường huyết này. Ứng dụng được thử nghiệm trên quy trình nhập
liệu tại bệnh viện, bằng việc sử dụng ứng dụng này bộ phận nhập liệu có thể tiết
kiệm được cả thời gian cũng như chi phí về người và của bỏ ra cho việc nhập liệu.

Võ Đình Nghĩa – Huỳnh Ngọc Nhân

11

Lớp DHKHMT13A


Khóa tốt nghiệp chun ngành Khoa Học Máy Tính

1.2. Mục tiêu đề tài
Xây dựng tính năng hỗ trợ q trình nhập liệu và lưu trữ dữ liệu chỉ số đường
huyết.
Đầu vào của tính năng là ảnh chụp hoặc ảnh scan phiếu đường huyết và đầu
ra là các chỉ số đường huyết được nhập tự động và lưu trữ vào cơ sở dữ liệu
Dữ liệu sẽ được kiểm soát, kiểm tra và trực quan hóa ở website.
Với người dùng nhập liệu (y tá - điều dưỡng - bệnh nhân): sử dụng app IOH
mobile để chụp ảnh và nhập liệu tự động. Đối với y tá - điều dưỡng (người kiểm
tra độ chính xác của q trình nhập liệu): sử dụng website ioh.cloud để quan sát
dữ liệu nhập vào, cấu hình cấu trúc dữ liệu, tạo biểu đồ trực quan hóa từ dữ liệu đã

nhập.
1.3. Mô tả yêu cầu chức năng
Người nhập liệu sẽ chọn tính năng nhập liệu trên ứng dụng IOH-mobile. Tại
đây người nhập liệu cần chụp lại phiếu ghi đường huyết và nhấn gửi lên hệ thống.
Sau khi xử lý hệ thống sẽ trả lại thông tin đã được được số hóa (nếu ảnh chụp có
vấn đề sẽ nhận được yêu cầu chụp lại). Sau khi nhận được thông tin đã được số
hóa, người nhập liệu sẽ quan sát lại thông tin của bệnh nhân và nhấn lưu và cơ sở
dữ liệu.
Trên website ioh.cloud người dùng được phân quyền có thể sẽ quan sát kiểm
tra lại dữ liệu, cấu hình lại cấu trúc dữ và tạo ra các biểu đồ để trực quan hóa dữ
liệu đã nhập.

Võ Đình Nghĩa – Huỳnh Ngọc Nhân

12

Lớp DHKHMT13A


Khóa tốt nghiệp chun ngành Khoa Học Máy Tính

CHƯƠNG II. CƠ SỞ LÝ THUYẾT
2.1. Kiến trúc mơ hình
2.1.1. Optical Character Recognition - OCR
Nhận dạng ký tự quang học là kỹ thuật chuyển nhận diện các kí tự trong ảnh
thành dữ liệu dạng text. OCR là một lĩnh vực con của trí tuệ nhân tạo chuyên dùng
để đọc dữ liệu dạng text text từ dữ liệu dạng ảnh. Các chức năng của OCR như số
hóa văn bản, tìm kiếm, chỉnh sửa, v.v. sẽ được thực hiện bằng máy tính, giúp tiết
kiệm được không gian lưu trữ và thời gian nhập liệu.
Các chức năng của OCR đã được đưa vào ứng dụng trong thực tế như:

+
+
+

Hỗ trợ cho những người gặp vấn đề về thị giác.
Tìm kiếm và xác định vị trí tài liệu dựa trên từ khóa, chỉnh sửa văn bản.
Cập nhật dữ liệu: hỗ trợ người nhập liệu bằng kỹ thuật scan và nhận
dạng văn bản từ hình ảnh.

Trong phạm vi của nghiên cứu này, nhóm nghiên cứu sử dụng phương pháp
OCR nhằm nhận dạng và trích xuất thơng tin đường huyết thành văn bản, nhằm
phục vụ cập nhật và lưu trữ dữ liệu y khoa trong bệnh viện.

Hình 2.1. Kiến trúc OCR với các phương pháp sử dụng trong bài tốn nhận dạng
số viết tay qua biểu mẫu

Võ Đình Nghĩa – Huỳnh Ngọc Nhân

13

Lớp DHKHMT13A


Khóa tốt nghiệp chun ngành Khoa Học Máy Tính

2.1.2. Convolutional Neural Network - CNNs
Convolutional Neural Network (CNNs - Mạng neural tích chập) là một trong
các mơ hình của Deep Learning, với thành phần chính là các lớp Convolution
chồng lên nhau, được sử dụng trong các bài toán nhận dạng đối tượng trong ảnh.
Cấu trúc mạng CNN là một tập hợp các lớp cơ bản bao gồm Convolution

layer + nonlinear layer, pooling layer, fully connected layer liên kết với nhau theo
một thứ tự nhất định. Theo một cách thơng thường thì ảnh đầu vào sẽ đi qua
convolution layer và nonlinear layer đầu tiên, các tham số tính tốn sẽ được lan
truyền qua pooling layer, ba lớp này theo thứ tự có thể được lặp lại nhiều lần trong
một mạng CNN và sau đó được lan truyền qua fully connected layer và thơng qua
hàm softmax để tính xác suất đối tượng trong ảnh là gì.
Convolution layer cịn gọi là conv layer, là lớp quan trọng nhất và cũng là
lớp đầu tiên của mơ hình CNN, với chức năng chính là phát hiện các đặc trưng ảnh
(feature). Tầng này có 4 đối tượng chính là: ma trận đầu vào, bộ filters, receptive
field và feature map. Conv layer nhận đầu vào là một ma trận 3 chiều và một bộ
filters cần phải học. Bộ filters này sẽ trượt qua từng vị trí trên bức ảnh để tính tích
chập (convolution) giữa bộ filter và phần tương ứng trên bức ảnh. Phần tương ứng
này trên bức ảnh gọi là receptive field, tức là vùng mà một neuron có thể nhìn thấy
để đưa ra quyết định, và ma trận cho ra bới quá trình này được gọi là feature map.
Các tham số của convolution layer gồm: kích thước bộ filter đầu vào, stride
và padding.
Kích thước bộ filter là một trong những tham số quan trọng nhất của
convolution layer. Kích thước này tỉ lệ thuận với tham số cần học tại mỗi tầng
convolution và là tham số quyết định receptive field của tầng này. Các kích thước
filter thường dùng là 3x3, 5x5.
Nonlinear layer, gọi là ReLU (Rectified Linear Units, f = max(0,x)) là hàm
kích hoạt phổ biến của CNN. Hàm ReLU được sử dụng vì cơ chế tính tốn đơn
giản, hạn chế tình trạng vanishing gradient và cũng cho kết quả tốt hơn. ReLU
được đặt ngay sau tầng convolution, gán các giá trị âm bằng 0 và giữ ngun giá
trị đầu vào khi lớn hơn 0.

Hình 2.2. Cơng thức hàm ReLU

Võ Đình Nghĩa – Huỳnh Ngọc Nhân


14

Lớp DHKHMT13A


Khóa tốt nghiệp chun ngành Khoa Học Máy Tính

Nếu như đầu vào quá lớn, các lớp pooling sẽ được sắp xếp vào giữa các lớp
convolution để làm giảm số tham số đầu vào. Pooling layer có 2 loại phổ biến là
max pooling và average pooling.
Tầng cuối của mơ hình CNN là Fully Connected Layer. Tầng này có chức
năng chuyển ma trận đặc trưng ở tầng trước thành vector chứa xác suất của các đối
tượng cần được dự đốn. Ví dụ, trong bài tốn phân loại số viết tay MNIST có 10
lớp tương ứng 10 số từ 0-9, tầng fully connected layer sẽ chuyển ma trận đặc trưng
của tầng trước thành vector có 10 chiều thể hiện xác suất của 10 lớp tương ứng.
2.1.3. Xử lý ảnh với opencv
a. OpenCV
OpenCV là thư viện mã nguồn mở hàng đầu cho xử lý về Computer Vision,
Machine Learning, xử lý ảnh. OpenCV được viết bằng C/C++, vì vậy có tốc độ
tính tốn rất nhanh, có thể sử dụng với các ứng dụng liên quan đến thời gian thực.
OpenCV có các interface cho C/C++, Python, Java nên có thể hỗ trợ được nhiều
hệ điều hành như Windows, Linux, MacOS, v.v.
OpenCV có nguồn tài ngun vơ cùng lớn hỗ trợ cho các công đoạn xử lý
của nhiều loại đối tượng khác nhau:
+
+
+
+

Giúp xử lý cũng như tìm kiếm, hiển thị lên các hình ảnh, video, ...

Phát hiện vật thể ứng dụng trong phân tích hình ảnh trong y học
Ứng dụng vào kiểm tra, giám sát tự động
Kết hợp với Machine Learning trong phân loại, nhận dạng ảnh, văn bản …
b. Một số thuật toán xử lý ảnh

- 2D Convolution (Image Filtering): Phép nhân tích chập 2D. OpenCv cung
cấp hàm cv2.filter2D() để thực hiện phép nhân tích chập giữa 1 ảnh và một
kernel.
- Erosion: Là 1 biến thể của phép nhân tích chập 2D mà ở đó kernel có hình
dạng đặc biệt sẽ làm mỏng độ dày của đối tượng.
- Dilation: Là 1 biến thể của phép nhân tích chập 2D mà ở đó kernel có hình
dạng đặc biệt sẽ làm dày đối tượng.
- Image Blurring (Image Smoothing): Phép biến đổi làm mờ ảnh khử nhiễu
bằng cách nhân tích chập với 1 kernel trung bình. Opencv cung cấp 4 kĩ thuật
làm mờ:
+ Trung bình.
+ Gausian.
+ Median.
+ Bilateral.
- Adaptive Thresholding: Kỹ thuật lấy ngưỡng dựa trên môi trường sáng
của ảnh.
Võ Đình Nghĩa – Huỳnh Ngọc Nhân

15

Lớp DHKHMT13A


Khóa tốt nghiệp chun ngành Khoa Học Máy Tính


2.2. Kiến trúc phần mềm
2.2.1. Microservices
Microservices là một kiểu kiến trúc phần mềm. Các module trong phần
mềm này được chia thành các service rất nhỏ (microservice). Mỗi service sẽ được
đặt trên một server riêng. Các service trong Microservices tồn tại độc lập với nhau
về xử lý (process), lưu trữ (database), v. v.
Ưu điểm của Microservices:
- Ổn định: Các thành phần trong microservices tách biệt với nhau nên khi
một thành phần có lỗi thì phần cịn lại của hệ thống vẫn hoạt động tốt.
- Bảo trì và nâng cấp: Dễ dàng bảo trì và nâng cấp từng phần vì các dịch vụ
tách biệt với nhau, không ràng buộc vào nhau.
Mở rộng và liên kết: Dễ dàng mở rộng các dịch vụ sử dụng nhiều mà không
cần mở rộng cả hệ thống. Khi cần liên kết với các hệ thống khác cũng dễ dàng
hơn vì các dịch vụ liên kết khơng bị ràng buộc nhau.

-

Hình 2.3. Kiến trúc Microservice

Võ Đình Nghĩa – Huỳnh Ngọc Nhân

16

Lớp DHKHMT13A


Khóa tốt nghiệp chun ngành Khoa Học Máy Tính

2.2.2. Docker
Containerization (hay cịn được gọi là operating system virtualization), cơng

nghệ này khơng ảo hóa phần cứng, hệ điều hành mà nó ảo hóa mơi trường.
Docker là một cơng cụ dùng để đóng gói, vận chuyển và chạy container một
cách đơn giản và dễ dàng trên các nền tảng khác nhau. Có thể thao tác bằng cách
sử dụng các lệnh đơn giản và chạy nhất quán trên hầu hết các nền tảng phần cứng
và môi trường. Vấn đề triển khai phần mềm trở nên dễ dàng hơn.
Docker được xây dựng trên nền tảng Containerization nên có những ưu điểm
như sau:
- Các dịch vụ trong Container vẫn chạy chung hệ điều hành (Host OS), chung
nhân (Kernel) nhưng môi trường chạy của các dịch vụ thì ln độc lập với nhau.
Khơng ảo hóa phần cứng và dùng chung nhân nên tốc độ rất cao.
- Tạo và triển khai ứng dụng nhanh chóng, mơi trường thực thi nhẹ và độc
lập.
- Tính di động và mở rộng cao. Dễ dàng quản lý phiên bản tích hợp kiểm thử
và triển khai tự động (CI-CD). Tách biệt giữa phát triển và vận hành.

Hình 2.4. Kiến trúc Docker

Võ Đình Nghĩa – Huỳnh Ngọc Nhân

17

Lớp DHKHMT13A


Khóa tốt nghiệp chun ngành Khoa Học Máy Tính

2.2.3. Angular
Angular là một open source (mã nguồn mở) hay Framework chuyên dùng
cho thiết kế Frontend. Angular được tối ưu và nâng cao hiệu năng, tận dụng những
ưu thế của Javascript mới nhất (ES6, ES7, ES8) và hơn thế nữa là các Class,

Module, Decorators hỗ trợ các trình duyệt hiện đại như Edge, Chrome, Firefox, …
Việc binding dữ liệu trở nên dễ dàng hơn với Angular, có hai phương pháp binding
dữ liệu là binding một chiều và binding hai chiều. Với hai phương thức binding
này, việc tương tác giữa view và controller trở nên dễ dàng hơn.

Hình 2.5. Kiến trúc Angular

Võ Đình Nghĩa – Huỳnh Ngọc Nhân

18

Lớp DHKHMT13A


Khóa tốt nghiệp chun ngành Khoa Học Máy Tính

2.2.4. Flask API Server
Flask là một micro-framework được viết bằng Python, được dùng để thiết kế
một chức năng cụ thể nhất cho ứng dụng web và người dùng có thể mở rộng bất
cứ lúc nào. Flask hỗ trợ các thành phần tiện ích mở rộng cho ứng dụng như tích
hợp cơ sở dữ liệu, xác thực biểu mẫu, rest API…
Flask phù hợp cho việc xây dựng các web application có quy mơ vừa và nhỏ,
tạo rest API, web-server và web-services.
Flask cung cấp cho người dùng các thành phần cốt lõi thường được sử dụng
trong ứng dụng web và API như URL routing, request & response object, v.v.

Hình 2.6. Kiến trúc 1 Flask API đơn giản

Võ Đình Nghĩa – Huỳnh Ngọc Nhân


19

Lớp DHKHMT13A


Khóa tốt nghiệp chun ngành Khoa Học Máy Tính

CHƯƠNG III. MƠ HÌNH
3.1. Một số nghiên cứu liên quan
Nguồn gốc sơ khai nhất của nhận dạng ký tự được cho là vào năm 1870. Đây
là thời điểm mà C.R.Carey của Boston Massachusetts đã phát minh ra máy quét
võng mạc – một hệ thống truyền hình ảnh sử dụng khảm các tế bào quang điện.
Hai thập kỷ sau, P. Nipkow – nhà khoa học Ba Lan đã phát minh ra máy quét tuần
tự, đây là một bước đột phá lớn đối với cả máy đọc và truyền hình hiện đại. Trong
những thập kỷ đầu tiên của thế kỷ 19, một số nỗ lực đã được thực hiện để phát
triển các thiết bị hỗ trợ người mù thơng qua các thí nghiệm với OCR. Tuy nhiên,
mãi đến năm 1940, với sự phát triển của kĩ thuật số, công nghệ OCR hiện đại mới
xuất hiện. Từ đó trở đi, ứng dụng trong kinh doanh trở thành động lực để OCR tiếp
tục tiến xa hơn.
OCR phát triển song hành với các sự phát triển của kỹ thuật học máy, học
sâu. Có vơ số nghiên cứu khoa học về OCR trong đó một số nghiên cứu có tính
ứng dụng cao như: “Improving accuracy and speeding up Document Image
Classification through parallel systems” [1] của Christoph Wick và cộng sự: Sử
dụng GPU để tăng tốc độ xử lý cũng như tăng độ sâu của mơ hình học máy để
nâng cao độ chính xác.
Ngồi ra Christoph Wick và cộng sự cịn có 1 bài báo khác là “Improving
OCR Accuracy on Early Printed Books using Deep Convolutional Networks” [2]:
Trong nghiên cứu này nhóm tác giả sử sử dụng kết hợp CNN- và Pooling-Layer
trước lớp LSTM, kết quả cho thấy độ sai số giảm 44%.
Nghiên cứu về chỉnh sửa tài liệu và hiệu chỉnh độ ánh của văn bản “Document

Rectification and Illumination Correction using a Patch-based CNN” [3] của Pedro
V. Sander và cộng sự. Trong nghiên cứu này nhóm tác giả tập trung nghiên cứu
căn chỉnh tài liệu ở dạng ảnh chụp khơng chính diện và hiệu chỉnh độ sáng trên
các loại tài liệu: biên lai, sách, tài liệu bị biến dạng nhiều như cong, gấp hay nhàu.
Độ chính xác được tăng lên trong mục bảng sau.

Võ Đình Nghĩa – Huỳnh Ngọc Nhân

20

Lớp DHKHMT13A


Khóa tốt nghiệp chun ngành Khoa Học Máy Tính

Method

OCR accuracy

Kim et al. - 2015 [9]

29.77

Kil et al. - 2017 [10]

28.20

Ma et al. -2018 [11]

39.09


local network

47.47

local global

50.56

local global + b

56.90

local global + i

58.49

Bảng 3.1. Bảng kết quả về độ chính xác của Document Rectification and
Illumination Correction using a Patch-based CNN

3.2. Phương pháp
Với bài toán được đặt ra là xác định các ô chứa số liệu trên biểu mẫu và số
hóa dữ liệu đó, chúng tơi chia quy trình nghiên cứu làm 2 phần: sử dụng các kỹ
thuật xử lý ảnh để nhận diện vị trí của số liệu trong biểu mẫu và xây dựng mơ hình
nhận diện chữ số viết tay.
3.2.1. Các bước tiền xử lý
a. Một số kỹ thuật xử lý ảnh.
Trước khi đưa ảnh vào sử dụng thuật toán Hough transform cần được tiền
xử lý để đem lại hiệu quả tốt nhất.
1. Ảnh đầu vào sẽ được chuyển sang ảnh xám bằng hàm cv2.cvtColor.

2. Ảnh xám ảnh sẽ được khử nhiễu bằng Gaussian.
3. Ảnh xám sẽ được chuyển sang ảnh nhị phân bằng ngưỡng
cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU
4. Ảnh sau khi được chuyển sang nhị phân sẽ được nhận diện cấu trúc
bảng và crop ảnh bảng ra khỏi ảnh gốc.
5. Từ ảnh crop này ta tiến hành nhân tích chập bằng các bộ lọc khác
nhau để làm nổi bật lên các dịng kẻ ngang và dọc.

Võ Đình Nghĩa – Huỳnh Ngọc Nhân

21

Lớp DHKHMT13A


Khóa tốt nghiệp chun ngành Khoa Học Máy Tính

Hình 3.1. Ảnh sau khi được xử lý làm nổi bật các dịng kẻ
b. Thuật tốn Hough Transform
Dữ liệu hình ảnh đầu vào được xử lý bằng các hàm xử lý ảnh của thư viện
OpenCV [4], trong đó thuật tốn Hough Transform [5] là thuật toán được ứng dụng
mạnh mẽ nhất trong việc phát hiện các trục ngang - dọc của bảng số liệu.
Tương tự hệ tọa độ Descartes một đường thẳng trong hệ tọa độ cực được biểu diễn
bằng công thức:
𝑦 = (−

𝑐𝑜𝑠𝜃
𝑟
). 𝑥 + (
)

𝑠𝑖𝑛𝜃
𝑠𝑖𝑛𝜃

qua đó được biến đổi thành:
𝑟 = 𝑥. 𝑐𝑜𝑠𝜃 + 𝑦. 𝑠𝑖𝑛𝜃
, trong đó:
r là khoảng cách của đường thẳng với gốc tọa độ,
θ là góc giữa Ox và đường thẳng đi qua gốc tọa độ vng góc với đường thẳng
đang mơ tả.

Võ Đình Nghĩa – Huỳnh Ngọc Nhân

22

Lớp DHKHMT13A


Khóa tốt nghiệp chun ngành Khoa Học Máy Tính

Hình 3.2. Hình biểu diễn đường thẳng trong hệ tọa độ cực
Tổng quát, với mỗi cặp (x0, y0), chúng ta có thể xác định những đường thẳng
đi qua điểm đó với cơng thức đã cho (r, θ).
Có nghĩa rằng mỗi cặp (rθ, θ) biểu diễn một đường thẳng đi qua (x0, y0):
1. Với mỗi điểm (x0, y0), nếu ta vẽ những đường thẳng đi qua điểm đó, chúng ta
đạt được đồ thị hình sin (như hình vẽ 3.2) (Điều kiện: r > 0 và 0 <θ < 2π).
Ví dụ: với x0 = 8, y0= 6 ta có đồ thị sau (trong hệ (θ-r)):

Hình 3.3. Đồ thị biểu diễn một điểm trong hệ (r,θ)
2. Chúng ta có thể làm tương tự với mọi điểm trong hình ảnh. Nếu đường cong của
2 điểm khác nhau cùng giao nhau tại 1 điểm, điều này có nghĩa là hai điểm đó cùng

nằm trên một đường thẳng.
Ví dụ, với điểm x1 = 4, y1 = 9 và x2 = 12, y2 =3, cộng với (x0, y0), ta có:
Cả 3 điểm cùng giao nhau tại 1 điểm (0.925, 9.6), những cặp tọa độ đó là biến số
cho cặp (rθ, θ), cịn là đường thẳng mà 3 điểm đó thuộc về.

Võ Đình Nghĩa – Huỳnh Ngọc Nhân

23

Lớp DHKHMT13A


Khóa tốt nghiệp chun ngành Khoa Học Máy Tính

Hình 3.4. Đồ thị biểu diễn nhiều 3 điểm trong hệ tọa độ (r, θ)
3. Một cách tổng quát, một đường thẳng có thể được xác định bằng cách tìm những
giao điểm giữa những đường cong (như hình) với nhau. Càng nhiều đường cong
giao nhau có nghĩa là đường thẳng đó có nhiều điểm. Vì vậy chúng ta có thể xác
định một ngưỡng cho việc tìm số điểm ít nhất để có thể tạo ra một đường thẳng.
4. Hough line transform theo dõi những điểm giao nhau giữa các đường cong tạo
nên bởi mỗi điểm trong hình ảnh. Nếu số điểm giao nhau vượt ngưỡng đã nhất
định, khi đó thuật tốn sẽ xác định được đường thẳng cho cặp (θ, rθ) ở giao điểm
của những đường cong đó.
Về thư viện, opencv cung cấp 2 hàm là Houghline() va HoughlineP(). Trong đó
Houghline là hàm tìm tất cả đường thẳng có trong ảnh, hàm houghlineP được thêm
2 tham số là minLineLength là độ dài tối thiểu của đoạn thẳng, maxLineGap là
khoảng cách lớn nhất giữa hai điểm được xét trên cùng một đường thẳng.
3.2.2. Mơ hình máy học
a. Mơ hình nhận diện ký tự số
Mơ hình được xây dựng bằng thư viện keras sử dụng kiến trúc học sâu CNN.

Mơ hình có 59933 tham số bao gồm 2 lớp convolution với 2 lớp max-pooling
với pool-size = (2,2) và 3 lớp full-connected, cuối cùng là hàm softmax cho đầu ra
là xác suất của chữ số ứng với các nhãn từ 0 đến 9 và 2 ký tự đặc biệt “-”, “/”. Mơ
hình có thêm một lớp dropout để giảm overfitting khi huấn luyện.

Võ Đình Nghĩa – Huỳnh Ngọc Nhân

24

Lớp DHKHMT13A


×