You are on page 1of 28

ĐẠI HỌC BÁCH KHOA HÀ NỘI

TRƯỜNG ĐIỆN – ĐIỆN TỬ

BÁO CÁO BÀI TẬP LỚN


TRÍ TUỆ NHÂN TẠO VÀ ỨNG DỤNG
ĐỀ TÀI:
CẮT TRANG VĂN BẢN

Giảng viên hướng dẫn: Thầy Võ Lê Cường


Sinh viên thực hiện:
Họ và tên MSSV
Phạm Trung Tuấn 20193174
Trần Hữu Đông 20192761
Doãn Văn Vũ 20193196

Hà Nội, 12/2023
LỜI CẢM ƠN
Lời đầu tiên, chúng em xin bày tỏ lòng biết ơn sâu sắc đến thầy Võ Lê Cường–
giảng viên đã giảng dạy và hướng dẫn chúng em trong quá trình học tập. Thầy đã cùng
đồng hành trong suốt quá trình thực hiện đề tài và giới thiệu chúng em với công ty MQ
ICT Solutions để thực hiện đề tài này. Nhờ có sự giúp đỡ nhiệt tình của thầy mà chúng
em có thể hoàn thành được bài tập lớn này một cách tốt nhất.
Chúng em cũng xin gửi lời cảm ơn chân thành đến công ty MQ ICT Solutions
vì sự giúp đỡ và hỗ trợ quý báu trong quá trình thực hiện đề tài. Với sự tận tâm và hiểu
biết sâu sắc của các nhân viên trong công ty, chúng em đã nhận được những hướng
dẫn và giúp đỡ quan trọng, giúp cho đề tài của chúng tôi tiến triển và hoàn thiện hơn.
Vì kiến thức của chúng em vẫn còn hạn hẹp nên không thể tránh khỏi những
thiếu sót trong quá trình thực hiện. Tuy nhiên, chúng em đã cố gắng hoàn thành đúng
hạn và hạn chế các lỗi nhiều nhất có thể. Nhóm chúng em luôn mong đợi nhận được
những ý kiến đóng góp quý báu từ thầy và qua đó có thể rút kinh nghiệm, tự sửa chữa,
hoàn thiện bản thân mình trên tinh thần nghiêm túc, tự giác học hỏi.
Trong quá trình làm đề tài báo cáo, sẽ không thể tránh khỏi các thiếu sót, rất
mong nhận được phản hồi từ thầy và các bạn để góp phần làm cho bản báo cáo thêm
hoàn thiện hơn.
Chân thành cảm ơn thầy và quý công ty!

2
MỤC LỤC

LỜI CẢM ƠN.................................................................................................................2


MỤC LỤC.......................................................................................................................3
DANH MỤC BẢNG BIỂU.............................................................................................5
DANH MỤC HÌNH ẢNH...............................................................................................6
CHƯƠNG I: TỔNG QUAN VỀ ĐỀ TÀI.......................................................................7
1.1. Mở đầu................................................................................................................7
1.1.1. Lí do chọn đề tài...........................................................................................7
1.1.2. Mục tiêu đề tài..............................................................................................7
1.1.3. Tính cấp thiết................................................................................................7
1.1.4. Thực trạng....................................................................................................8
1.2. Đặt vấn đề...........................................................................................................9
1.3. Tiến trình và phân công công việc....................................................................9
CHƯƠNG II: QUY TRÌNH THỰC HIỆN...................................................................11
2.1. Tổng hợp báo cáo.............................................................................................11
2.2. Phân tích và lựa chọn phương pháp...............................................................13
2.3. Giới thiệu các công cụ được lựa chọn để giải quyết bài toán.......................14
2.3.1. Pytorch........................................................................................................14
2.3.2. DeepLabV3.................................................................................................15
2.3.3. MobileNetV3-Large....................................................................................15
2.3.4. DeepLabV3_MobileNetV3-Large in Pytorch............................................15
2.4. Phương pháp giải quyết bài toán....................................................................16
2.5. Thu thập dữ liệu và tiền xử lý.........................................................................16
2.5.1. Thu thập dữ liệu.........................................................................................16
2.5.2. Giai đoạn tiền xử lí dữ liệu........................................................................18
2.6. Huấn luyện mô hình.........................................................................................21
2.6.1. Chuẩn bị dữ liệu.........................................................................................21
2.6.2. Chọn hàm mất mát và hàm đánh giá........................................................22
2.7. Xây dựng trang web.........................................................................................23
CHƯƠNG III: TRIỂN KHAI........................................................................................25
3.1. Quá trình thực hiện..........................................................................................25
3.2. Kết quả thu được..............................................................................................26
3
3.3. Xây dựng App bằng Streamlit........................................................................27
CHƯƠNG IV: KẾT LUẬN..........................................................................................28
4.1. Kết quả đạt được..............................................................................................28
4.2. Hướng phát triển của đề tài.............................................................................28

DANH MỤC BẢNG BIỂU


4
Bảng 1.1. Bảng phân công công việc..........................................................................................9
Bảng 2.1. Các bài báo nhóm đã nghiên cứu..............................................................................11
Bảng 2.2. Đánh giá các loại mô hình phổ biến dùng để phân đoạn hình ảnh...........................13
Bảng 2.3. Các tài liệu và số lượng sử dụng..............................................................................17
Bảng 3.1. Bảng giá trị lớn nhất và nhỏ nhất của Loss và Metric trên các tập..........................26
Bảng 3.2. Bảng kết quả training................................................................................................26

DANH MỤC HÌNH ẢNH

Hình 2.1. Mô hình kiến trúc của MobileNetV3........................................................................17


Hình 2.2. Quá trình tạo dữ liệu tổng hợp..................................................................................19
5
Hình 2.3. Intersection over Union (IoU) và Dice Coefficient..................................................22
Hình 3.1. Sơ đồ các giá trị Loss và Metric theo epoch.............................................................26
Hình 3.2. Hình ảnh ứng dụng trên Web được xây dựng bằng Streamlit..................................27

6
CHƯƠNG I: TỔNG QUAN VỀ ĐỀ TÀI

1.1. Mở đầu
1.1.1. Lí do chọn đề tài
Việc chọn đề tài "Cắt trang văn bản" xuất phát từ việc nhận thấy sự quan
trọng và ứng dụng rộng rãi của việc xử lý và trích xuất thông tin từ văn bản. Trong
thời đại số hóa ngày nay, chúng ta đang chứng kiến sự gia tăng về lượng dữ liệu văn
bản có sẵn trên các nền tảng điện tử và internet.
Tuy nhiên, dữ liệu văn bản thường được lưu trữ trong các tài liệu có định dạng
thỏa thuận như sách, báo, tài liệu khoa học, v.v. Để trích xuất thông tin từ những tài
liệu này, quá trình cắt trang văn bản là bước đầu tiên quan trọng để tách riêng và cô
đọng phần chứa văn bản.
Bằng cách cắt trang văn bản một cách chính xác, chúng ta có thể tạo ra các hình
ảnh chỉ gồm văn bản, loại bỏ các yếu tố không cần thiết khác như hình ảnh nền, đồ họa
hoặc biểu đồ. Kết quả là, quá trình nhận diện và trích xuất thông tin từ những trang
văn bản đó sẽ trở nên đáng tin cậy và hiệu quả hơn.
Điều quan trọng là quá trình cắt trang văn bản không chỉ liên quan đến việc xử
lý ảnh, mà còn liên quan đến việc hiểu cấu trúc của văn bản và ngữ nghĩa của nó. Điều
này đòi hỏi sự kết hợp giữa trí tuệ nhân tạo và công nghệ xử lý ảnh. Việc nghiên cứu
và áp dụng công nghệ cắt trang văn bản mang lại cơ hội để khám phá sự giao thoa giữa
các lĩnh vực này và tạo ra những kiến thức và công nghệ tiên tiến hơn.
Tóm lại, việc chọn đề tài "Cắt trang văn bản" đạt được sự kết hợp giữa nhu
cầu xử lý và trích xuất thông tin từ văn bản và sự tiềm năng của các công nghệ như xử
lý ảnh và trí tuệ nhân tạo. Nó là một đề tài hứa hẹn mang lại những tiến bộ đáng kể
trong việc tăng cường hiệu quả và độ chính xác của việc xử lý và trích xuất thông tin
từ văn bản, đồng thời đóng góp vào sự phát triển của các ứng dụng và công nghệ liên
quan.
1.1.2. Mục tiêu đề tài
Mục tiêu của đề tài Cắt trang văn bản là sử dụng công nghệ AI và xử lý ảnh để
nhận biết, cắt trang văn bản có trong hình ảnh với đầu vào là hình ảnh có chứa trang
văn bản và đầu ra là hình ảnh chỉ có trang văn bản
1.1.3. Tính cấp thiết
Việc nghiên cứu và phát triển đề tài "cắt trang văn bản" đang trở nên cấp thiết
với một số lý do sau:
 Nhu cầu xử lý thông tin tự động: Với lượng dữ liệu văn bản ngày càng tăng
mạnh và việc gia tăng sự số hóa thông tin, việc xử lý và trích xuất thông tin từ
văn bản tự động trở nên cần thiết hơn bao giờ hết. Việc cắt trang văn bản đóng
vai trò quan trọng trong quá trình này, giúp tách riêng phần chứa văn bản và

7
loại bỏ các yếu tố không cần thiết, từ đó tăng cường khả năng trích xuất thông
tin và cải thiện hiệu quả xử lý.
 Ứng dụng thực tế: Đề tài "cắt trang văn bản" có ứng dụng rộng rãi trong nhiều
lĩnh vực, bao gồm tổ chức và quản lý tài liệu, xử lý ngôn ngữ tự nhiên, công
nghệ nhận dạng biểu đồ, và nhiều ứng dụng khác. Việc nghiên cứu và phát triển
công nghệ cắt trang văn bản sẽ đóng góp vào việc cải thiện chất lượng và khả
năng ứng dụng của các hệ thống và ứng dụng trong thực tế.
 Tối ưu hóa xử lý văn bản: Quá trình cắt trang văn bản giúp tạo ra các hình ảnh
chỉ gồm văn bản, loại bỏ các yếu tố không cần thiết như hình ảnh nền, đồ họa
hoặc biểu đồ. Điều này giúp giảm nhiễu và tập trung vào văn bản chính, từ đó
cải thiện chất lượng quá trình nhận dạng, trích xuất và hiểu thông tin từ văn
bản. Điều này rất quan trọng trong việc nâng cao hiệu suất và độ chính xác của
các ứng dụng xử lý văn bản.
 Tiềm năng phát triển: Đề tài "Cắt trang văn bản" không chỉ tạo ra cơ sở để cải
tiến các ứng dụng hiện tại, mà còn tạo ra tiềm năng phát triển cho các công
nghệ và ứng dụng mới trong tương lai. Công nghệ cắt trang văn bản đóng góp
vào việc mở rộng ranh giới của trí tuệ nhân tạo, xử lý ảnh và trích xuất thông
tin, và đóng vai trò quan trọng trong việc phát triển các hệ thống thông minh và
tự động hóa.
1.1.4. Thực trạng
Hiện tại, "cắt trang văn bản" là một lĩnh vực nghiên cứu đang được quan tâm và
phát triển. Có một số công cụ và phương pháp đã được đề xuất và triển khai để cắt
trang văn bản, nhưng vẫn còn nhiều thách thức và hạn chế cần được giải quyết.
Một trong những thách thức đối với đề tài này là việc xử lý các định dạng và
cấu trúc văn bản đa dạng. Sự đa dạng này gồm các kiểu font, kích thước, định dạng
trang, các yếu tố đồ họa đi kèm và định dạng file khác nhau. Điều này đòi hỏi các
phương pháp phải linh hoạt và có khả năng nhận diện và trích xuất thông tin từ các tài
liệu đa dạng.
Một thách thức khác là việc xử lý văn bản trên hình ảnh chất lượng thấp hoặc bị
nhiễu. Đối với các hình ảnh xuất phát từ quyển sách cũ, bị mờ hoặc nhiễu, quá trình
nhận diện và trích xuất thông tin trên các vùng chứa văn bản trở nên khó khăn hơn.
Đòi hỏi công nghệ cắt trang văn bản phải có khả năng xử lý và tái tạo văn bản chính
xác dựa trên những hình ảnh này.
Một vấn đề khác là việc xử lý văn bản trên các ngôn ngữ và kiểu chữ khác
nhau. Quá trình cắt trang văn bản cần phải đảm bảo tính linh hoạt và độ chính xác khi
xử lý các ngôn ngữ và kiểu chữ khác nhau trên toàn cầu.
Mặc dù đã có nhiều nỗ lực nghiên cứu và phát triển, tuy nhiên, nhu cầu vẫn còn
lớn để tạo ra các công nghệ cắt trang văn bản hiệu quả và đáng tin cậy. Tính chính xác
và hiệu suất của các công cụ hiện có cần được nâng cao để đáp ứng các yêu cầu thực tế
và đa dạng.

8
Tóm lại, lĩnh vực "Cắt trang văn bản" đang tiếp tục phát triển với các nghiên
cứu và ứng dụng tiềm năng. Các nỗ lực để tăng cường tính linh hoạt, độ chính xác và
hiệu suất của quá trình cắt trang văn bản sẽ tiếp tục được đẩy mạnh trong tương lai.
1.2. Đặt vấn đề
Bài toán "Cắt trang văn bản" là một bài toán quan trọng và có tính ứng dụng
cao trong việc xử lý các tài liệu văn bản. Dưới đây là một số nhận định chung về bài
toán này:
 Tính phức tạp và đa dạng: Bài toán "Cắt trang văn bản" đòi hỏi khả năng xử lý
và nhận diện các đặc trưng đa dạng của văn bản, bao gồm kiểu font, kích thước,
định dạng trang và yếu tố đồ họa. Điều này đòi hỏi các phương pháp và công cụ
phải linh hoạt và có khả năng xử lý được các tình huống đa dạng trong thực tế.
 Bài toán về xử lý ảnh: Để cắt trang văn bản, cần phải xử lý ảnh chứa văn bản từ
tài liệu gốc. Các kỹ thuật xử lý ảnh, bao gồm lọc nhiễu, tách biên, nhận dạng
các thành phần hình ảnh, đóng vai trò quan trọng trong việc phân đoạn và trích
xuất văn bản..
 Bài toán về AI: Trí tuệ nhân tạo đóng một vai trò quan trọng trong bài toán cắt
trang văn bản. Các thuật toán và mô hình AI được sử dụng để nhận diện văn
bản và phân tích cấu trúc của trang văn bản. Các mô hình học sâu, như mạng
nơ-ron, cho phép học các đặc trưng quan trọng từ dữ liệu và tạo ra các dự đoán
chính xác về cắt trang.
 Độ chính xác: Trong việc cắt trang văn bản, độ chính xác và độ tin cậy là yếu tố
quan trọng. Cần đảm bảo rằng việc cắt được thực hiện chính xác, không bỏ sót
hoặc chồng chéo văn bản. Đồng thời, độ chính xác cần được đảm bảo để sử
dụng trong các ứng dụng thực tế.
 Tiềm năng và ứng dụng: Bài toán "cắt trang văn bản" có tiềm năng và ứng dụng
rộng rãi trong nhiều lĩnh vực, bao gồm việc xử lý các tài liệu số, trích xuất
thông tin từ sách, báo, tài liệu khoa học, tự động tạo nội dung, công nghệ nhận
dạng và nhận diện ký tự, và nhiều ứng dụng khác. Sự phát triển và cải tiến của
công nghệ cắt trang văn bản sẽ tạo ra nhiều tiện ích và giá trị trong thực tế.
1.3. Tiến trình và phân công công việc
Bảng 1.1: Bảng phân công công việc

Tuần Công việc Người thực hiện


7 Khảo sát và nghiên cứu đề Trần Hữu Đông
tài Doãn Văn Vũ
Đặt vấn đề và đưa ra quan Phạm Trung Tuấn
điểm
8-9 Thu thập dữ liệu Trần Hữu Đông
Phạm Trung Tuấn
Tiền xử lí dữ liệu Phạm Trung Tuấn
Doãn Văn Vũ
9-10 Tìm kiếm và thử nghiệm Trần Hữu Đông
9
một số phương pháp Doãn Văn Vũ
11-12 Lựa chọn phương pháp phù Trần Hữu Đông
hợp Doãn Văn Vũ
11-12 Huấn luyện mô hình Phạm Trung Tuấn
13 Xây dựng ứng dụng để Trần Hữu Đông
serving mô hình AI Phạm Trung Tuấn
14-15 Viết báo cáo và kết thúc Cả nhóm
thực tập

10
CHƯƠNG II: QUY TRÌNH THỰC HIỆN
2.1. Tổng hợp báo cáo
Theo kế hoạch, nhóm sẽ khảo sát từ 3-5 bài nghiên cứu liên quan đến đề tài và
so sánh các kết quả nghiên cứu được của các bài báo khác nhau. Dưới đây là bảng so
sánh các nghiên cứu liên quan đến đề tài:
Bảng 2.1: Các bài báo nhóm đã nghiên cứu

Tên bài An Unsupervised Survey on Image TextTiling: Text


báo Classification Segmentation Segmenting Segmentation in
Technique for Techniques Text into Document
Detection of Multi- Images: A Survey
Flipped paragraph
Orientations in Subtopic
Document Images Passages
Năm 20/7/2016 12/2015 1997 1998
công bố
Hướng Phát hiện hướng Phân đoạn hình Hướng giải Bài báo trình bày
giải văn bản được thực ảnh , trích xuất và quyết của bài các phương pháp
quyết hiện thông qua việc tách chúng ra để báo có thể được và kỹ thuật đã
sử dụng các tính nhận dạng và phân chia thành ba được phát triển để
năng định hướng tích đối tượng bước chính: giải quyết vấn đề
văn bản bị đảo trong xử lý ảnh Tokenization: phân đoạn văn bản
ngược mà tài liệu Văn bản được trong hình ảnh tài
ban đầu được đưa phân tách thành liệu. Nó bao gồm:
vào thiết bị quét : các từ và đơn vị Phân đoạn theo đặc
Việc phát hiện có kích thước điểm hình thái: Các
hướng hình ảnh câu. phương pháp này
văn bản trong tác Phân bổ điểm: sử dụng các đặc
phẩm được đề xuất Một điểm được điểm hình thái như
giả định đầu vào là gán cho mỗi đơn đường biên, góc,
một tài liệu văn vị có kích thước khoảng cách giữa
bản tiếng Anh đơn câu. Điểm được các ký tự để phân
giản. Ban đầu, hình tính toán dựa đoạn văn bản trong
ảnh đầu vào phải trên các mẫu hình ảnh.
trải qua các quy đồng xuất hiện Phân đoạn dựa trên
trình tiền xử lý, sau và phân phối từ màu sắc: Sử dụng
đó là tính toán tính vựng trong văn thông tin màu sắc
năng gradient định bản. để tách các phần
hướng. Cuối cùng, Phát hiện ranh khác nhau trong
các đặc điểm được giới chủ đề hình ảnh.
tính toán phải tuân phụ: Các ranh Phân đoạn dựa trên
theo bộ phân loại giới chủ đề phụ hình học: Sử dụng
không giám sát đa được cho là xảy các kỹ thuật hình
cấp để dự đoán ra ở những học như phát hiện
hướng của văn bản thung lũng lớn đường thẳng và sự
11
trong hình ảnh. nhất trong biểu phù hợp vùng hình
Việc gọi thuật toán đồ kết quả từ ảnh để phân đoạn
phát hiện hướng việc vẽ biểu đồ văn bản.
văn bản bắt đầu đơn vị câu so Phân đoạn dựa trên
bằng cách lấy hình với điểm số. ngữ nghĩa: Các
ảnh văn bản làm phương pháp này
đầu vào. Hình ảnh sử dụng kiến thức
đầu vào có thể ngôn ngữ và ngữ
được đọc theo nghĩa để tách văn
hướng 00, 900, bản, ví dụ: cách mà
1800 hoặc 2700 các từ và câu được
của văn bản xếp đặc biệt trong
tài liệu.
Bài báo cũng đề
cập đến một số
thách thức trong
việc phân đoạn văn
bản trong hình ảnh
tài liệu, bao gồm
sự biến đổi của
hình ảnh, đa dạng
về font và kiểu
chữ, nền nhiễu, và
nhiều yếu tố khác.
Ưu điểm Dựa trên các mẫu Do bài báo này Phương pháp cụ Đa dạng phương
đã được thử đánh giá nhiều thể: Bài báo này pháp: Bài báo này
nghiệm, phương phương pháp khác đề xuất một tổng hợp nhiều
pháp này thành nhau nên không thể phương pháp cụ phương pháp phân
công trên hầu hết đánh giá ưu điểm thể để phân đoạn văn bản từ
các hình ảnh tài của chúng đoạn văn bản hình ảnh tài liệu, từ
liệu văn bản, bao thành các đoạn phân đoạn theo đặc
gồm cả những hình con liên quan về điểm hình thái,
ảnh có chứa biểu cùng một chủ màu sắc, hình học
tượng nhỏ. Hình đề, giúp cải đến phân đoạn dựa
ảnh tài liệu dưới thiện khả năng trên ngữ nghĩa,
dạng đơn đăng ký hiểu văn bản giúp người đọc
cũng đã được thử dài. hiểu rõ các phương
nghiệm thành Đã được đánh pháp khác nhau có
công. Phương pháp giá và áp dụng thể được áp dụng
phát hiện hướng rộng rãi: Phương trong lĩnh vực này.
này hoạt động hiệu pháp TextTiling Tổng quan về ứng
quả với hiệu suất đã được sử dụng dụng: Bài báo giới
tổng thể là 94%. và đánh giá thiệu các ứng dụng
Phương pháp này trong nhiều ứng tiềm năng của phân
không yêu cầu bất dụng thực tế và đoạn văn bản từ
kỳ thiết lập phần đã đem lại kết hình ảnh tài liệu, từ
12
cứng đặc biệt nào quả tốt. nhận diện ký tự
để thu được hình đến trích xuất
ảnh tài liệu, hình thông tin.
ảnh thu được bằng
máy quét bàn
phẳng là đủ
Nhược Phương pháp này Rất nhiều thuật Giới hạn ứng Nghiên cứu tổng
điểm không hiệu quả đối toán phân đoạn dụng: Phương quan: Bài báo tập
với một số trường hình ảnh đã được pháp này dựa trung vào việc tổng
hợp như hình ảnh thảo luận và rõ vào việc xác quan và giới thiệu
tài liệu có độ phân ràng là không có định sự tương các phương pháp
giải thấp. Nó còn phương pháp phân đồng giữa các tồn tại, không đưa
thất bại khi hình đoạn hình ảnh nào đoạn văn con, ra giải pháp cụ thể
ảnh tài liệu có được chấp nhận không thích hợp hoặc đánh giá sâu
nhiều hình rộng rãi, do đó cho việc phân về hiệu suất của
ảnh/biểu tượng hơn không có phương đoạn văn bản từ từng phương pháp.
và đối với các tài pháp duy nhất nào hình ảnh tài liệu Không liên quan
liệu có rất ít văn có thể được coi là hoặc trong các trực tiếp đến phân
bản. Nếu hình ảnh tốt cho tất cả các ngữ cảnh khác. đoạn văn bản trong
tài liệu có phông loại hình ảnh, cũng văn bản thông
chữ khác nhau, như không có thường, mà thay
điều này cũng sẽ phương pháp nào vào đó tập trung
dẫn đến việc phát tốt như nhau cho vào văn bản trong
hiện hướng định một loại hình ảnh hình ảnh tài liệu
hướng sai cụ thể
2.2. Phân tích và lựa chọn phương pháp
Để giải quyết bài toán này, một trong những vấn đề quan trọng cần được giải
quyết là giải pháp để phân đoạn hình ảnh. Có một số mô hình AI phổ biến được sử
dụng như U-Net, DeepLabV3, Fully Convolutional Network (FCN), Mask R-CNN.
Mỗi mô hình có những ưu điểm và hạn chế riêng.
Bảng 2.2: Đánh giá các loại mô hình phổ biến dùng để phân đoạn hình ảnh

U-Net DeepLabV3 FCN Mask R-CNN


Đặc điểm Sử dụng kiến Sử dụng atrous Mô hình được Sử dụng kiến trúc
trúc encoder- convolution và thiết kế đặc biệt encoder-decoder
decoder để atrous spatial cho việc phân để phân đoạn
chính xác hóa pyramid pooling đoạn hình ảnh hình ảnh và
việc tạo ra để phân đoạn với kiến trúc thường được sử
các dự đoán hình ảnh với các toàn cục giữ lại dụng cho việc
chi tiết đối tượng nhỏ thông tin vị trí phân đoạn đối
và chi tiết của đối tượng tượng hình ảnh
trong hình ảnh
Ưu điểm Hiệu suất cao Hiệu suất tốt đối Thiết kế linh Hiệu suất tốt cho
đối với việc với việc phân hoạt và phù hợp việc phân đoạn
phân đoạn đối đoạn đối tượng với nhiều loại các đối tượng lớn
tượng nhỏ nhỏ và cấu trúc dữ liệu hình ảnh với chi phí tính
13
trong hình phức tạp trong khác nhau toán thấp
ảnh hình ảnh
Hạn chế Có thể yêu Có thể yêu cầu Có thể yêu cầu Khả năng phân
cầu nhiều dữ nhiều tài nguyên điều chỉnh để đoạn các đối
liệu huấn tính toán phù hợp với các tượng nhỏ có thể
luyện và thời cấu trúc không tốt bằng
gian huấn document các mô hình khác
luyện lâu segmentation cụ
thể

Đánh giá các mô hình:


 Mask R-CNN có độ chính xác cao, nhưng đòi hỏi thời gian xử lý lâu hơn,
nhưng có thể quá phức tạp và không cần thiết với nhu cầu của đề tài
 U-Net có độ chính xác tương đối cao, thời gian xử lý nhanh hơn 3 mô hình còn
lại
 FCN có độ chính xác cao, thời gian xử lí lâu, phù hợp với đề tài
 DeepLabV3 là một mô hình cải tiến của FCN, có độ chính xác cao, thời gian xử
lí lâu, phù hợp với đề tài
Sau khi so sánh và đánh giá và tiếp tục tìm hiểu, nhóm quyết định lựa chọn mô
hình DeepLabV3. Trong Pytorch, có thể huấn luyện mô hình bằng DeepLabV3 với
MobileNetV3 là xương sống. DeepLabV3 là một mô hình mạng nơ-ron sử dụng để
phân đoạn hình ảnh, với khả năng xử lý thông tin lớn và tạo ra các kết quả chính xác.
MobileNetV3, mặt khác, là một mô hình mạng nơ-ron tối ưu hóa cho việc triển khai
trên các thiết bị di động, với hiệu suất cao và tốc độ xử lý nhanh. Sự kết hợp giữa
DeepLabV3 và MobileNetV3 mang lại lợi ích là kết hợp sức mạnh của DeepLabV3
trong việc phân đoạn hình ảnh cùng với hiệu suất tối ưu và tốc độ xử lý nhanh của
Mobilenetv3. Kết quả là một hệ thống phân đoạn tài liệu có khả năng xử lý hiệu quả và
chính xác trên các thiết bị có tài nguyên hạn chế như điện thoại di động và thiết bị di
động khác.
2.3. Giới thiệu các công cụ được lựa chọn để giải quyết bài toán
2.3.1. Pytorch
PyTorch là một thư viện deep learning phổ biến với cộng đồng nghiên cứu và
phát triển rộng lớn. Nó cung cấp một cách tiếp cận linh hoạt và dễ dàng cho việc xây
dựng, huấn luyện và triển khai mô hình deep learning.
Sự linh hoạt của PyTorch cho phép người dùng thực hiện các thay đổi và tùy
chỉnh mô hình một cách dễ dàng, đồng thời cung cấp những tính năng hiệu quả cho
việc xử lý và huấn luyện trên dữ liệu lớn. PyTorch cũng hỗ trợ tính toán trên GPU một
cách hiệu quả, giúp tăng tốc quá trình huấn luyện mô hình.
Ngoài ra, PyTorch cũng cung cấp nhiều phần mềm mã nguồn mở và mô hình
tiền huấn luyện (pre-trained models) mạnh mẽ trong lĩnh vực xử lý ảnh. Điều này giúp

14
giảm bớt công đoạn xây dựng mô hình từ đầu và tận dụng được kiến thức chung của
cộng đồng trong lĩnh vực này.
2.3.2. DeepLabV3
DeepLabV3 là một giải pháp phân đoạn ảnh mạnh mẽ trong lĩnh vực xử lý ảnh.
Kỹ thuật này sử dụng deep learning để phân đoạn hình ảnh thành các phần tử riêng lẻ,
cho phép xác định chính xác ranh giới và định rõ vị trí của các đối tượng trong hình
ảnh.
DeepLabV3 nổi trội hơn các phương pháp khác nhờ vào việc sử dụng mạng
neural convolutional sâu (deep convolutional neural network) với kiến trúc atrous
convolution. Phương pháp này giúp mô hình có khả năng phân đoạn hình ảnh với độ
chính xác cao, đặc biệt trong việc nhận diện đối tượng có kích thước nhỏ trong các
hình ảnh lớn. Cấu trúc của DeepLabv3 cũng cho phép xử lý hiệu quả các bối cảnh đa
dạng và phức tạp trong ảnh.
Khi áp dụng DeepLabV3 cho phân đoạn tài liệu, nó có thể mang lại những lợi
ích đáng kể. Bằng cách sử dụng DeepLabV3, chúng ta có thể phân đoạn các phần tử
trong tài liệu như văn bản, hình ảnh, biểu đồ một cách chính xác và hiệu quả. Điều này
có thể giúp cải thiện quá trình quét tài liệu và xử lý tự động tài liệu, đồng thời tạo điều
kiện thuận lợi cho việc tìm kiếm và trích xuất thông tin.
Để áp dụng DeepLabv3 thành công, cần có dữ liệu huấn luyện đa dạng và
phong phú để mô hình có thể nhận diện và phân đoạn đúng các đối tượng trong tài
liệu. Ngoài ra, việc tiêu tốn tài nguyên tính toán lớn cũng là một yếu tố cần xem xét
khi sử dụng DeepLabv3.
2.3.3. MobileNetV3-Large
MobileNetV3-Large là một mô hình CNN được tối ưu hóa để có hiệu suất cao
trên các thiết bị di động, đặc biệt là trong việc nhận dạng hình ảnh. Đây là một trong
những mô hình có kích thước nhỏ và tiêu tốn ít tài nguyên tính toán, nghĩa là nó có thể
chạy một cách hiệu quả trên các thiết bị di động có tài nguyên hạn chế. MobileNetV3-
Large được thiết kế để cải thiện hiệu suất so với các phiên bản trước đó của mô hình
MobileNet, đồng thời vẫn giữ được tính di động và tiết kiệm tài nguyên.
Mô hình này có thể được sử dụng trong các ứng dụng nhận dạng hình ảnh trên
các thiết bị di động như ứng dụng camera, ứng dụng về thị giác máy tính, hoặc các ứng
dụng liên quan đến xử lý ảnh và video trên điện thoại di động. Điều này giúp tối ưu
hóa trải nghiệm người dùng và giảm áp lực tải lên mạng từ thiết bị di động, đồng thời
giữ cho mô hình có thể chạy một cách mượt mà mà không tốn nhiều tài nguyên và
năng lượng.
2.3.4. DeepLabV3_MobileNetV3-Large in Pytorch
Sử dụng giải pháp MobilenetV3 cho phân đoạn tài liệu có nhiều lợi ích.
MobilenetV3 là một mô hình nhẹ nhưng vẫn giữ lại độ chính xác cao, vì vậy nó rất
phù hợp cho việc triển khai trên các thiết bị có tài nguyên hạn chế như điện thoại di
động hoặc máy tính bảng. Việc sử dụng MobilenetV3 cho phân đoạn tài liệu giúp tối

15
ưu hóa tài nguyên tính toán và tăng cường khả năng di động của ứng dụng. Đồng thời,
việc sử dụng mô hình nhẹ cũng giúp giảm thiểu tài nguyên tính toán và dung lượng bộ
nhớ cần thiết cho quá trình phân đoạn, làm tăng hiệu quả trong việc xử lý tài liệu trên
các thiết bị có hạn chế về tài nguyên.
Sử dụng giải pháp DeepLabV3_MobileNetV3-Large trong PyTorch cho phân
đoạn tài liệu mang lại nhiều lợi ích. Mô hình DeepLabV3_MobileNetV3-Large kết
hợp giữa DeepLabV3, một phương pháp mạnh mẽ cho phân đoạn hình ảnh, và
MobileNetV3-Large, một phiên bản mạnh mẽ và tối ưu hóa của MobileNetV3, để
cung cấp độ chính xác cao và hiệu suất tốt trong việc phân đoạn tài liệu.
Với kết hợp này, bạn có thể đạt được độ chính xác cao trong việc phân đoạn tài
liệu, đồng thời vẫn tiết kiệm tài nguyên tính toán và phía máy chủ. PyTorch cũng cung
cấp sự linh hoạt và hiệu suất trong việc triển khai mô hình deep learning, giúp dễ dàng
tích hợp DeepLabV3_MobileNetV3-Large vào ứng dụng xử lý tài liệu của bạn.
2.4. Phương pháp giải quyết bài toán
Nhóm tiến hành giải quyết bài toán theo các bước sau:
1. Thu thập dữ liệu từ nhiều nguồn khác nhau, tạo thành một tập dữ liệu tổng hợp
đa dạng về các kiểu chụp, góc chụp, ánh sáng, độ nghiêng
2. Sau khi tạo tập dữ liệu tổng hợp, chúng ta chuyển sang PyTorch để xử lý sơ bộ
tập dữ liệu tổng hợp và tạo ra một tập các lớp Dataset đã được xử lý bao gồm
các cặp mặt nạ và hình ảnh.
3. Tải mô hình deep learning cho tác vụ. Có rất nhiều mô hình được đào tạo trước
có sẵn trong PyTorch. Ở đây, nhóm đang sử dụng DeeplabV3 với xương sống
MobilenetV3-Large.
4. Trước khi nhóm bắt đầu đào tạo mô hình, thành phần cuối cùng là chọn
các hàm tổn thất và số liệu đánh giá thích hợp. Nhóm sẽ thảo luận ngắn gọn về
hai khái niệm phổ biến nhất, Intersection over Union (IoU) and Dice
Coefficient(F1-score), được sử dụng cho các bài toán phân đoạn và chọn một
khái niệm hữu ích nhất cho nhiệm vụ của nhóm.
2.5. Thu thập dữ liệu và tiền xử lý
2.5.1. Thu thập dữ liệu
Để tạo một tập dữ liệu tổng hợp, chúng ta cần các bộ hình ảnh sau:
 Hình ảnh của các loại Tài liệu khác nhau.
 Một loạt các hình ảnh nền.
Để tạo ra một mô hình phân đoạn tài liệu mạnh mẽ, cần một tập dữ liệu chứa
các tài liệu khác nhau trong nhiều nền được chụp theo các hướng khác nhau. Như vậy,
việc thu thập một tập dữ liệu như vậy rất tốn thời gian, vì vậy nhóm đã đi theo con
đường khác. Ở đây, một bộ dữ liệu tổng hợp sẽ được tạo ra gần giống với các vấn đề
khác nhau (chẳng hạn như mờ chuyển động, nhiễu máy ảnh, v.v.) liên quan khi chụp
ảnh trong thế giới thực. Quy trình này giúp khắc phục một số thiếu sót của tập dữ liệu
được tạo thủ công và loại bỏ những rắc rối khi chụp ảnh và chú thích.
16
Bảng 2.3: Các tài liệu và số lượng sử dụng

Dataset Số lượng
DocVQA 700
LRDE 125
FUNSD 199
SmartDocQA 85
Denoising Dirty 125
Documents
Handwriting 100
Tổng 1343

Hình 2.1: Các loại tài liệu

Sau khi qua quá trình tiền xử lý, từ 1343 hình ảnh ban đầu sẽ tạo ra được 8058
cặp hình ảnh và mặt nạ, tương đương sẽ đưa 16.116 ảnh vào để huấn luyện mô hình.

17
2.5.2. Giai đoạn tiền xử lí dữ liệu
Sau khi thu thập được tài liệu, cần tiến hành tiến tiền xử lý hình ảnh bằng 4 các
bước:
1. Chọn ngẫu nhiên một số lượng ảnh từ tập dữ liệu tổng hợp thu được ở trên, sau
đó tiến hành sao chép và tạo mặt nạ cho mỗi hình ảnh, mặt nạ cho mỗi tài liệu
được tạo bằng cách tạo một mảng có cùng hình dạng được tô với giá trị 255.
def copy_and_create_mask(img_paths, crop=True):

for image_path in img_paths:

img_name = os.path.split(image_path)[-1]
image = cv2.imread(image_path)

if crop:
H, W, _ = image.shape
image = image[42 : H - 42, 42 : W - 42, :]

cv2.imwrite(os.path.join(DST_IMG_DIR, img_name), image)


mask = np.ones_like(image) * 255
cv2.imwrite(os.path.join(DST_MSK_DIR, img_name), mask)
return

2. Hình ảnh trong các nguồn trên khác nhau rất nhiều về kích thước. Do đó, tất cả
các tài liệu đã được thay đổi kích thước (tỷ lệ khung hình được duy trì) với kích
thước kích thước tối đa được đặt thành 640. Điều này được thực hiện để tạo ra
một số cấu trúc trong tài liệu và giảm thời gian xử lý.
def ResizeWithAspectRatio(curr_dim, resize_to: int = 640):
"""returns new h and new w which maintains the aspect ratio"""

h, w = curr_dim

if h > w:
r = resize_to / float(h)
size = (int(w * r), resize_to)
else:
r = resize_to / float(w)
size = (resize_to, int(h * r))
return size[::-1]

3. Thực hiện các phép biến đổi trên hình ảnh và mặt nạ tương ứng
4. Sao chép hình ảnh và tạo mặt nạ từ các thư mục hình ảnh và mặt nạ ban đầu,
sau đó lưu chúng vào các thư mục tập huấn luyện và kiểm tra.

18
Quy trình tạo dữ liệu từ tập dữ liệu thu thập được được tiến hành theo sơ đồ
sau:

Hình 2.2: Quá trình tạo dữ liệu tổng hợp

Mục tiêu chính của quá trình này là tạo ra các tài liệu dựa trên nhiều phép biến
đổi đồng thời. Vì vậy, mỗi cặp mặt nạ tài liệu phải chịu sự chuyển đổi
RandomPerspective (với RandomBrightnessContrast (xác suất 50%) cho tài liệu) 6
lần, với xác suất 70% rằng chuyển đổi sẽ được áp dụng.
Đối với 6 tài liệu được chuyển đổi và hình ảnh mặt nạ, 6 hình nền từ toàn bộ bộ
được chọn ngẫu nhiên. Tài liệu đã chuyển đổi và hình nền đã chọn sau đó được hợp
nhất với nhau. Mỗi cặp đầu ra được hợp nhất (hình ảnh và mặt nạ) phải được tăng
cường thêm để tái tạo kịch bản trong thế giới thực càng gần càng tốt.
Bộ tăng cường bao gồm các sửa đổi sau.
 Lật ngang và dọc
 Ngẫu nhiên Xoay vòng
 Màu sắc Jitter
 Xáo trộn kênh
 Độ sáng và độ tương phản ngẫu nhiên
 Một trong các loại: Nén hình ảnh, Nhiễu ISO, Làm mờ chuyển động
 Một trong các dịch chuyển: Random Shadow, Sun-Flare, RGB
 Một trong những biến dạng quang học, biến dạng lưới hoặc biến đổi đàn hồi
motion_blur = A.MotionBlur(blur_limit=18, p=0.35)
v_flip = A.VerticalFlip(p=0.75)
h_flip = A.HorizontalFlip(p=0.75)

19
rotate_aug = A.Rotate(border_mode=1, interpolation=0, p=0.5)
color_J = A.ColorJitter(hue=0.25, saturation=0.25, p=0.7)

# One of or apply more than one


value = (0, 0, 0)
if random() > 0.5:
value = (255, 255, 255)

opt_aug = A.OpticalDistortion(distort_limit=0.28, interpolation=0,


border_mode=0, value=value, mask_value=0, p=0.9)
grid_aug = A.GridDistortion(num_steps=2, distort_limit=(-0.22,
0.35), interpolation=0, border_mode=0, value=value, mask_value=0,
p=0.9)
elastic_aug = A.ElasticTransform(alpha=150, sigma=13,
alpha_affine=10, interpolation=0, border_mode=0, value=value,
mask_value=0, p=0.9)

# One of
compression_aug = A.ImageCompression(quality_lower=30,
quality_upper=80, p=1.0)
# downscale_aug = A.Downscale(p=1.0)
noise = A.ISONoise(color_shift=(0.05, 0.25), p=0.75)

# One of
shadow = A.RandomShadow(shadow_roi=(0.0, 0.0, 1.0, 1.0),
num_shadows_lower=0, num_shadows_upper=1, shadow_dimension=3, p=0.7)
sunflare = A.RandomSunFlare(
flare_roi=(0.0, 0.0, 1.0, 1.0),
angle_lower=0,
angle_upper=1,
num_flare_circles_lower=6,
num_flare_circles_upper=10,
src_radius=200,
src_color=(255, 255, 255),
p=0.6,
)

rgb_shift = A.RGBShift(r_shift_limit=20, g_shift_limit=0,


b_shift_limit=10, p=0.4)
cshuffle = A.ChannelShuffle(p=0.6)
contrast = A.RandomBrightnessContrast(contrast_limit=(0.1, 0.34),
p=0.5)
contrast_2 = A.RandomBrightnessContrast(p=0.5)

augs = A.Compose(
[
A.OneOf([v_flip, h_flip], p=0.8),
rotate_aug,
color_J,

20
cshuffle,
contrast_2,
A.OneOf([opt_aug, grid_aug, elastic_aug], p=0.8),
A.OneOf([noise, motion_blur, compression_aug], p=0.7),
A.OneOf([shadow, sunflare, rgb_shift], p=0.65),
],
p=1.0,
)

distortion_scale = 0.55
perspective_transformer =
T.RandomPerspective(distortion_scale=distortion_scale, p=0.7,
interpolation=T.InterpolationMode.NEAREST)

NUM_BCK_IMAGS = 6
total_idxs = np.arange(0, len(BCK_IMGS))

Với Loss function


# Normalize model predictions
predictions = torch.sigmoid(predictions)

# Calculate pixel-wise loss for both channels. Shape: Scalar


pixel_loss = F.binary_cross_entropy(predictions, targets,
reduction="mean")

mask_loss = 1 - intermediate_metric_calculation(predictions,
targets, use_dice=self.use_dice, smooth=self.smooth)
total_loss = mask_loss + pixel_loss

return total_loss

Với hàm Metric


predictions = convert_2_onehot(predictions,
num_classes=self.num_classes) # one hot encoded

metric = intermediate_metric_calculation(predictions, targets,


use_dice=self.use_dice, smooth=self.smooth)

Tất cả ngoại trừ chuyển đổi phối cảnh được áp dụng bằng cách sử dụng thư
viện Albumentations.
Từ 1343 hình ảnh ban đầu, tạo ra được 8058 cặp hình ảnh và mặt nạ và được
chia theo tỉ lệ 5-1 đến các tập huấn luyện và tập kiểm tra

21
2.6. Huấn luyện mô hình
2.6.1. Chuẩn bị dữ liệu
Để chuẩn bị dữ liệu cho quá trình huấn luyện mô hình, các cặp ảnh và mặt nạ sẽ
được chuyển thành các tensor và áp dụng các phép biến đổi nhất định giúp mô hình
học được hiệu quả hơn và dễ dàng hơn trong việc rút trích đặc trưng và huấn luyện.
Riêng đối với tập huấn luyện sẽ bổ sung thêm "RandomGrayscale", được áp dụng cho
các hình ảnh với xác suất 40% giúp tăng tính đa dạng và hiệu quả của dữ liệu huấn
luyện để mô hình có thể học cách nhận biết và xử lý các dạng ảnh khác nhau. . Việc
xử lý trên dữ liệu chuẩn hóa cũng giúp tăng khả năng mô hình tổng quát hóa và làm
giảm khả năng overfitting.
def train_transforms(mean=(0.4611, 0.4359, 0.3905),
std=(0.2193, 0.2150, 0.2109)
):
transforms = torchvision_T.Compose([
torchvision_T.ToTensor(),
torchvision_T.RandomGrayscale(p=0.4),
torchvision_T.Normalize(mean, std),
])

return transforms
def common_transforms(mean=(0.4611, 0.4359, 0.3905),
std=(0.2193, 0.2150, 0.2109)
):
transforms = torchvision_T.Compose([
torchvision_T.ToTensor(),
torchvision_T.Normalize(mean, std),
])

return transforms

2.6.2. Chọn hàm mất mát và hàm đánh giá

22
Hình 2.3: Intersection over Union (IoU) và Dice Coefficient

Intersection over Union (IoU) và Dice Coefficient (F1-score) được sử dụng


rộng rãi cho nhiệm vụ phân đoạn. Cả 2 đều có thể sử dụng làm hàm mất mát hoặc hàm
đánh giá.
 Intersection over Union (IoU) là một số liệu thường được sử dụng để đánh giá
độ chính xác của mô hình trong các vấn đề phân đoạn. Nó cung cấp một cơ sở
trực quan hơn cho độ chính xác không bị sai lệch bởi tỷ lệ phần trăm (không
cân bằng) của pixel từ bất kỳ lớp cụ thể nào.
 Dice Coefficient (còn được gọi là F1-Score) là một số liệu khác được sử dụng
trong bối cảnh phân khúc và rất giống với IoU. Nói một cách đơn giản, số liệu
gấp đôi diện tích chồng chéo chia cho tổng số pixel trong cả sự thật và dự đoán.
Cả hai chỉ số đều nằm trong khoảng từ 0 đến 1 và có tương quan dương. Với
một số khác biệt nhỏ, chúng ta có thể sử dụng cả hai phương pháp làm hàm mất mát và
đánh giá (mất mát = 1 – đánh giá). Tính toán cốt lõi vẫn giữ nguyên. Vì lý do này, một
hàm chung được xác định trả về giá trị số liệu.
def intermediate_metric_calculation(
predictions, targets, use_dice=False, smooth=1e-6, dims=(2, 3)
):
intersection = (predictions * targets).sum(dim=dims) + smooth
summation = (predictions.sum(dim=dims) + targets.sum(dim=dims)) +
smooth
if use_dice:
metric = (2.0 * intersection) / summation
else:
union = summation - intersection
metric = intersection / union
total = metric.mean()
return total
Mô hình sẽ được huấn luyện bằng cách sử dụng tổ hợp IoU và Binary Cross
Entropy (BCE).
2.7. Xây dựng trang web
Nhóm thực hiện xây dựng trang web bằng python sử dụng streamlit để hỗ trợ.
Bao gồm các hàm sau:
 load_model: Hàm “load_model” được sử dụng để tải mô hình DeepLabV3
được huấn luyện trước với các tham số nhất định từ đĩa và chuẩn bị nó cho việc
sử dụng trong quá trình inference. Sau khi tải mô hình và trọng số từ tập tin
checkpoint tương ứng, hàm sẽ đánh giá mô hình và trả về mô hình đã sẵn sàng
sử dụng. Mô hình được tải được chuẩn bị cho việc sử dụng trên thiết bị được
chỉ định (có thể là CPU hoặc GPU).
 image_preprocess_transforms: Hàm “image_preprocess_transforms” được sử
dụng để tạo ra một bộ biến đổi dữ liệu hình ảnh để tiền xử lý ảnh trước khi đưa
vào mô hình. Bộ biến đổi này bao gồm hai phần chính: chuyển đổi hình ảnh
thành tensor và chuẩn hóa theo mean và std được cung cấp. Trong phần chuyển
23
đổi hình ảnh, ảnh sẽ được chuyển đổi thành tensor, và sau đó được chuẩn hóa
theo mean và std đã được cung cấp. Nói chung, hàm này cho phép chuẩn bị dữ
liệu hình ảnh theo cách mà mô hình yêu cầu trước khi đưa vào để dự đoán hoặc
huấn luyện.
 order_points: Hàm “order_points” nhận vào một list các điểm và sắp xếp chúng
theo thứ tự: góc trên bên trái, góc trên bên phải, góc dưới bên phải, và góc dưới
bên trái của một hình chữ nhật. Đầu tiên, hàm tạo một ma trận 4x2 chứa toạ độ
của 4 điểm của hình chữ nhật. Sau đó, nó tính tổng và hiệu của các toạ độ để
xác định góc trên bên trái, góc trên bên phải, góc dưới bên phải và góc dưới bên
trái của hình chữ nhật. Kết quả cuối cùng sẽ là một list chứa toạ độ của 4 điểm
được sắp xếp theo thứ tự mong muốn và được làm tròn xuống thành số
nguyên.
 find_dest: Hàm “find_dest” nhận một list chứa toạ độ của các điểm ảnh trong
hình chữ nhật và tính toán toạ độ của các đỉ điểm tương ứng trong một hình chữ
nhật với chiều rộng và chiều cao lớn nhất (tức là hình chữ nhật tỷ lệ). Mục tiêu
cuối cùng là trả về list chứa toạ độ của các điểm đã tính toán và đã sắp xếp theo
thứ tự mong muốn (góc trên bên trái, góc trênên phải, góc dưới bên phải và góc
dướiên trái). Tuy nhiên, để hàm “find_dest” chạy thành công, hàm
“order_points” cần phải định nghĩa ở đâu đó trong cùng một phạm vi hoặc được
import từ một thư viện khác.
 scan: hàm “scan” dùng để quét và xử lý ảnh dựa trên một mô hình đã được
huấn luyện trước. Một số bước chính trong hàm này bao gồm:
1. Đổi kích thước ảnh: Ảnh được thay đổi kích thước thành kích thước cố
định (IMAGE_SIZE x IMAGE_SIZE).
2. Chuẩn bị ảnh để đưa vào mô hình: Ảnh được chuẩn hóa và chuyển đổi
thành dạng tensor để đưa vào mô hình.
3. Dự đoán vùng chứa tài liệu: Sử dụng mô hình để dự đoán vùng chứa tài
liệu trong ảnh.
4. Xác định vùng chứa tài liệu: Dựa trên kết quả dự đoán, xác định vùng
chứa tài liệu trong ảnh và điều chỉnh kích thước ảnh nếu cần thiết.
5. Biến đổi ảnh: Áp dụng phép biến đổi hình học để thu được ảnh chứa tài
liệu đã được điều chỉnh.
6. Cuối cùng, hàm trả về ảnh chứa tài liệu đã được xử lý.
 get_image_download_link: Hàm “get_image_download_link” dùng để tạo một
liên kết tải về cho ảnh. Nó nhận một đối tượng ảnh, tên tập tin và văn bản và tạo
một liên kết có thể được nhấn để tải về ảnh dưới dạng tệp tin có tên và văn bản
tùy chỉnh.
Sau đó, sử dụng các hàm liên quan đến streamlit để thực hiện các bước sau:
1. Thực hiện cấu hình đường dẫn cho thư mục "tải xuống" bên trong thư mục tĩnh
của Streamlit. Nó kiểm tra nếu thư mục "tải xuống" không tồn tại, thì sẽ tạo
mới.
2. Thiết lập kích thước ảnh và chuẩn bị các bước tiền xử lý cho ảnh.
3. Thiết lập giao diện người dùng bằng cách sử dụng Streamlit để tạo một ứng
dụng quét tài liệu dựa trên mô hình phân đoạn semantice DeepLabV3-PyTorch.
4. Cho phép người dùng tải lên một tập tin ảnh, chọn mô hình phân đoạn để sử
dụng, hiển thị ảnh gốc và ảnh đã quét trên giao diện.
24
5. Nếu ảnh đã quét thành công, mã sẽ hiển thị một liên kết cho phép người dùng
tải về ảnh đã quét.
CHƯƠNG III: TRIỂN KHAI

3.1. Quá trình thực hiện


1. Connect với Google Drive trên Google Colab
2. Tạo hai thư mục: datasets và chosen
3. Tải tài liệu từ các nguồn thu thập được
4. Tạo các thư mục con trong thư mục datasets sau đó sao chép hình ảnh tài liệu
vào các thư mục con tương ứng
5. Chạy file generate_doc_set.py (bước 1 của quá trình tiền xử lí) để sao chép tài
liệu và tạo mặt nạ tương ứng cho chúng trong các thư mục con của chosen:
chosen\images và chosen\masks tương ứng.
6. Chạy file resizer.py (bước 2 của quá trình tiền xử lí) để thay đổi kích thước hình
ảnh tài liệu và mặt nạ với kích thước tối đa là 640. Sao chép sản phẩm tương
ứng đến 2 thư mục con của chosen chosen\resized_images và chosen\
resizer_masks
7. Tạo thư mục gốc background_images chứa các hình ảnh nền. Đầu tiên, chuyển
đổi tất cả hình ảnh từ các định dạng khác nhau sang .jpg, sau đó loại bỏ các
hình ảnh trùng lặp.
8. Chạy file create_dataset.py (bước 3 của quá trình tiền xử lí) để tạo ra bộ dữ liệu
hình ảnh và mặt nạ tổng hợp trong các thư mục final_set\images và final_set\
masks tương ứng.
9. Chạy file split_dataset.py (bước 4 của quá trình tiền xử lí) để chia bộ dữ liệu
thành các tập huấn luyện và tập xác thực.
10. Huấn luyện mô hình sử dụng DeeplabV3 với xương sống MobilenetV3-Large
trong Pytorch trên Google Colab. Thiết lập số epochs một cách thích hợp.

25
3.2. Kết quả thu được

Hình 3.1: Sơ đồ các giá trị IoU và Loss theo epoch

Từ hai đồ thị trên với các thông số về Loss và IoU, ta có thể thấy mô hình có sự
cải thiện rõ rệt khi tăng các giá trị epochs. Riêng với Loss validation, các giá trị Loss
giảm dần và đạt min tại epoch = 22 và sau đó tăng dần
Bảng 3.1: Bảng giá trị lớn nhất và nhỏ nhất của Loss và Metric trên các tập

Training Validation
Min Max Min Max
Loss 0.030 0.454 0.094 0.283
Metric 0.879 0.988 0.932 0.970
Các giá trị Loss và Metric có sự tăng, giảm khá rõ ràng khi thông số epoch thay
đổi. Tuy nhiên theo thông số đã thu thập được, giá trị Metric Training > Metric
Validation, đồng thời, Loss Training < Loss Validation và đều giảm ban đầu, nhưng
sau đó Loss Training tiếp tục giảm trong khi Loss Validation tăng lên. Đây đều là các
dấu hiệu của Overfitting - xảy ra khi mô hình học quá nhiều từ dữ liệu huấn luyện cụ
thể mà nó không thể tổng quát hóa được cho dữ liệu mới.
Kết quả traning được thể hiện ở bảng sau:
Bảng 3.2: Bảng kết quả training

Mô hình xương sống MobileNetV3-Large


Hình dạng hình ảnh 384x384x3
Hình dạng mặt nạ 384x384x2
Số lượng kênh đầu ra 2 (0 – nền, 1 – tài liệu)
26
Số epoch 50
Batch Size 64
Trình tối ưu hóa Adam
Learning rate 0.0001
Loss function BCE+IoU
Metric IoU
Loss tốt nhất Training – 0.030
Validation – 0.094
Metric tốt nhất Training – 0.988
Validation – 0.970
3.3. Xây dựng App bằng Streamlit

Hình 3.2: Hình ảnh ứng dụng trên Web được xây dựng bằng Streamlit

Nhóm đã tiến hành xây dựng một ứng dụng đơn giản với các chức năng như:
Tải ảnh cần xử lí lên, xử lí hình ảnh tải lên, tải hình ảnh đã qua xử lí về.

27
CHƯƠNG IV: KẾT LUẬN
4.1. Kết quả đạt được
Nhóm đã đạt được các kết quả sau:
 Huấn luyện thành công mô hình trên một tập dữ liệu tương đối lớn sử dụng
DeepLabv3 và MobileNetV3-Large. Kết quả về Metric và Loss cho thấy tín
hiệu tốt về khả năng “Cắt trang văn bản” của mô hình.
 Xây dựng một trang web để phục vụ cho mô hình đã xây dựng được
 Tìm hiểu sâu hơn, biết rõ hơn về các quy trình và những điều cần làm khi thực
hiện một bài toán về trí tuệ nhân tạo
4.2. Hướng phát triển của đề tài
Để cải thiện chất lượng, trong tương lai nhóm hướng tới:
 Khả năng “Cắt trang văn bản” có thể tốt hơn nữa, model có thể xử lí tốt các loại
văn bản khó xử lí như chồng chéo lên nhau.
 Tiến hành huấn luyện trên một tập dữ liệu lớn hơn

28

You might also like