Professional Documents
Culture Documents
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
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
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
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
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):
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, :]
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:
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
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,
)
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))
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
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
22
Hình 2.3: Intersection over Union (IoU) và Dice Coefficient
25
3.2. Kết quả thu được
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
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