Nó có thể được sử dụng trong hệthống CRM Quản lý quan hệ kháchhàng, ứng dụng quản lý liên hệ và các quy trình tự động hóa kinhdoanh khác nhau,nâng cao ý nghĩathực tế của đề tài.2.Mục tiê
Mục tiêu nghiên cứu
Mặc dù hiện có các giải pháp quét danh thiếp và trích xuất thông tin, nhưng nhiều giải pháp trong số đó dựa vào các phương pháp dựa trên quy tắc hoặc kỹ thuậtOCR(Nhậndạng ký tự quang học) truyền thống, có thể khôngchính xáchoặc không thích ứngvới các định dạng danh thiếp đadạng Hoặc các ứngdụng này hầu hết lưu tấtcả thông tin từ danh thiếp dẫn đến thông tin khó truy xuất, việc tìm kiếm khó khăn và khôngcần thiết.
Học sâu cung cấp khả năng cải thiện độ chính xác và xử lý các thiết kế danh thiếp khác nhau một cách hiệu quả Bằng cách pháttriển một ứng dụng dựa trên học sâu để trích xuấtthông tin cần thiết từ danh thiếp, phục vụ cho việc số hóathông minh;tiết kiệm các bước lưu trữ dữ liệu bằng tay không chính xác và hỗ trợ các chuyên gia quản lý danh bạ của họ hiệu quảhơn [3].
Cách tiếp cận
Luận văn đề xuất một cách tiếpcận bằng cách ápdụng môhình YOLO để pháthiện các thông tin quan trọng trong danh thiếp Với một ảnh tùy ý trong tập dữ liệu của ảnh gốc, yêu cầu của bài toán là:
• Xác định xem hình ảnh đó có thông tin cần thiết hay không, ảnh có thể hiện rõ thông tin trên danh thiếp hay không.
• Phát hiện và trích xuất các thông tin đó với độ chính xáctin cậy.
• Dựa trên yêu cầu của bài toán, tôi đã đưa ra giải pháp để giải quyết vấn đề như sau: o Chọn bộ dữ liệu đángtin cậy: Dữ liệu phải rõ,không bị mờ, bể ảnh và phải được chụp chínhdiện. o Huấn luyện mô hình bằng cách sử dụng YOLO Tôi sử dụng YOLOv8 [4] cho môhình vì tốc độ đượcđào tạo nhanhvà tính toán hiệu quả. Địa điểm và vậtliệu nghiên cứu: Địađiểm: Nghiên cứu được thực hiện tại các khu vực nhà riêng, công sở, nơi công cộng trên địa bàn.
Vật liệu: Laptop Dell XPS 13, laptop Asus Rog Strix 2019.
5 Ý nghĩathực tiễn của đề tài Ý nghĩa thực tiễn của đề tài nằm ở việc tập trung vào xây dựng một ứng dụng trích xuấtthông tin từ danh thiếp, sử dụng kỹ thuật học sâu Phương phápnày tích hợp mô hình YOLO [5] để phát hiện và xác định vị trí các thông tin quan trọng trên danh thiếp như tên, điện thoại, email và địachỉ Sau đó, thư viện Tesseract(OCR) [6] được áp dụng để trích xuất thông tin từ các vùng đã được phát hiện Ý nghĩa thực tế của nghiên cứu là giải quyết vấn đề tiết kiệm thời gian trong quản lý thông tin từ danh thiếpvà tự động hóa quy trình thu thập dữ liệu.
Sự kết hợp giữa YOLO và Tesseract không chỉ tăng cường khả năng phát hiện đối tượng mà còn cải thiện độ chính xác của quá trình trích xuấtthông tin Phương pháp đã được thử nghiệm trên một tập dữ liệu đa dạng, đạt đến độ chính xác trung bình cao, làm nền tảng cho việc ứng dụng thực tế Điều này không chỉ mang lại giá trị tronglĩnh vực học sâu và xử lý ảnh mà còn hỗ trợ xây dựng một công cụ nhận dạng thông tin trên danhthiếp, góp phần xây dựng một môi trường mạnglành mạnh trong thời đại 4.0.
CHƯƠNG 1 TỒNG QUAN VỀ LĨNH vực NGHIÊN cứu
Trong thờiđại số, danh thiếp vẫn là công cụ cơbản để chia sẻ thông tin liên lạc và xây dựng mối quan hệ chuyên nghiệp Tuy nhiên, quá trình truyền thông dữ liệu từ danh thiếp sang định dạng điện tử bằng cách thủ công là công việc đòihỏinhiềunhân lực, dễ mắc lỗi và không đáp úng đủ nhanh chóngvớiyêu cầu về hiệu suất trong các hoạt động kinh doanh hiện đại Đểgiảiquyết thách thức này, việctíchhợp cácphương pháp học sâu mang lại một giảipháp hứa hẹn thông quaviệc tự động hóa quátrình trích xuất thông tin từ danhthiếp.
1.2 Tập dữ liệu đầu vào
Tập dữliệu đầu vào của luận văn:
• Tập ảnh được thu thập đạt 1330 ảnh danh thiếp các loại Một số hình ảnh ví dụ từ tập dữ liệu:
9 Táng 1, tòa nhà C5, Nguyễn Cd Thạch
K NamTỪLièm, Hà Nội l \ {.Chị Yến: 036.53 ỉ.6495 (Đột tiệc)
\\.Hưng: 084.988.8638 ĂN SÁNG-ĐẶC SÀN LÂU CUA SÔNG CẤC MÓN ĐỐNG OUÊ
Hình 1.2 Ảnh danh thiếp 2 1.3 Phương hướng giải quyết
Phương pháp nghiên cứudựa trên tài liệu:
• Nghiên cứu, tham khảo từ các bài báo khoa học và khai thác tài liệukhác trên Internetvề các nội dung nghiên cứu liên quan.
• Nghiên cứu vềcácmô hình phát hiện đốitượng, các phương pháp trích xuất văn bản.
• Nghiên cứu tàiliệuvề cấu trúc dữ liệu và cách thức thu thập dữ liệu.
• Nghiên cứu tàiliệuvềngôn ngữ lập trình Python.
Phương pháp nghiên cứudựa trên thực nghiệm:
• Lậptrình cókiểm chứng dựa trên các tập dữ liệuthuđược.
• Sử dụng kết quả thu được từ V iệc lập trìnhmô phỏng, từ đó rút ra kết luận so sánh các phương pháp huấn luyện cho bài toán.
• Xây dụng úng dụngtự động hóa trích xuất thông tin danh thếp.
Dữ liệuthu thập thủ côngtừcác hình ảnh danh thiếp của các côngty, từ các hội chợ triển lãm, tờrơi danh thiếp quảng cáo.
Xử lý và Phân tích dữ liệu:
Bước 1: Từ tập dữ liệu thu được, tôi phằn loại danh thiếp đúng yêu cầu Ảnh phải rõ, đượcchụp chính diện.
Bước 2: Lậptrình xây dựng cácmô hìnhchuẩn bị cho việc huấn luyện.
Bước3: Ảp các mô hình đã xây dựng vào tậpdữ liệu và thực hiện việc huấn luyện.Bước 4: Đánh giákết quả đạt được và thực hiện so sánh.
CHƯƠNG 2 Cơ SỞ LÝ THUYẾT
2.1 Mạng thần kinh tích chập
Mạng thần kinh làmộthệthống tínhtoán lấy cảm hứng từ sự hoạt động của các thần kinh trong hệ thần kinh Mạng thần kinh làmộtloại trítuệ nhân tạocố gắng mô phỏng cách mà não con người hoạt động thay vì sử dụng mô hình số, trong đó tất cả các phép tính điều khiển bằngcác số 0 và 1, một mạng thần kinh hoạt động bằng cách tạo rakếtnối giữa các yếu tố xử lý với cấu trúc và trọng số của các kếtnối quyếtđịnh kết quảđầu ra [7]
Mạng thần kinh thường rất hiệu quả trong việc dự đoán các sự kiện khi mạng có một cơ sở dữ liệu lớn về cácví dụ trước đó đểtham chiếu.Nói một cáchchính xác, mạng thần kinh đề cập đến một máy tính không phải là số, nhưng mạng thần kinh có thể được mô phỏng trên máy tính số Mạng thần kinh làmột tậphợp các thuật toán, chúng giải mã dữ liệu giác quan thông qua một loại cảm nhận máy móc, đánh nhãn hoặc phân nhóm đầu vào thô Những mô hình mà chúng nhận biết là số, được chứatrong các vector, trong đó tất cả dữ liệu thế giới thực, chẳng hạn như hình ảnh, âm thanh, văn bản hoặc dãythời gian, phải được chuyển đổi [8]
Lấy cảm hứngtừ não, một mạng thần kinh nhân tạolàmộttập hợp cácđơn vị kết nối, còn được gọi là thần kinh Kết nối giữa các thần kinh có thể truyền tín hiệu giữa chúng Mỗi kết nối mang mộtgiátrị số thực quyết địnhtrọng số hay độ mạnh của tín hiệu.
Input layer: là lớp chứa các dữ liệu đầu vào.
Hidden layer: là lớp ẩn, nhiệm vụ của nó là xử lý dữ liệu đầu vào và xuất ra dữ liệu mới, từ đó làm dữ liệuđầu ra cuối cùng (hoặclàm dữliệu đầu vào cho lớp ần khác) Trong mạng thần kinh có thể chứa nhiềuhoặc không chứa lớp ẫn.
Output layer: là lớp chứa các dữliệu đầu ra.
Mỗi hình tròn trong hình 2.1 là một node,mỗinode trong hidden layervà output layer thực hiện các nhiệm vụ sau:
• Liênkếtvới tất cả cácnode ởlayertrước đó V ới các hệ số w riêng.
• Mỗi node có 1 hệ số bias b riêng.
• Tính tổng Linear tại mỗinode bằng côngthức:
• Sau đó, áp dụng hàm activationfunction(tùyvào truờng hợp sẽ cóhàmkíchhoạt khácnhau) để tạora đầu ra của node [9]
2.1.2 Mạng thần kinh tích chập
Mạngthần kinh tích chập (Convolutional Neural Networks - ConvNets hay CNNs) tương tụnhumạng thầnkinh truyền thẳng (feedforward neural networks), trong đó các thầnkinh có trọng số và độ lệch có thể học được, ứng dụng chủ yếu của chúng nằm trong xử lýtín hiệu và ảnh, thay thế cho OpenCV trong lĩnh vực thị giác máy tính.
Mạngthầnkinh tích chậplà một tập họp các lớp tí ch chập chàng lên nhau và sử dụng các hàmkích hoạt phi tuyến nhưReLU vàtanh đễ kích hoạt các trọng sốtrong các node Mỗi một lớp sau khi thông qua các hàmkíchhoạtsẽtạo ra các thông tintrừu tuọng hon cho các lớp tiếp theo Mỗi một lớp được sử dụng các bộ lọc khác nhau, thông thường có hàng trăm hàng nghìnbộ lọc như vậy và kết họp kếtquả của chúng lậ.
Kiến trúc môhình mạng thần kinh tích chập nhưsau:
Input Convolutional Pooling Convolutional Pooling Flatten FC Output
Hlnh2.2 Kiến trúc mạng CNN [10]
Tầng tích chập Convolution: Tầng tích chập sử dụng các bộ lọc để thực hiện phép tích chập khi đưa chúng đi qua đầu vào I theo các chiều của nó Các siêu tham số của các bộ lọc này bao gồm kích thướcbộ lọc F và độ trượt(stride) s Kết quả đầura o dược gọi là featuremap hay activationmap Dùng để trích xuấtđặc trung cửa ảnh.
Tầng Pooling: thường được dùng sau tầngtíchchập, giúp làm giảm số lượngtham số mà không làm thay đổi kiến trúc mạngvà tăng tốc độ tính toán.
• Max pooling: bảo toàn các đặc trưng được phát hiện (được sử dụng thường xuyên).
• Average pooling: giảm kích thước các feature map.
Tầng Flatten: giúp chuyển đổi các đặc trưng ảnh từ tầng tích chập thành vector 1 chiều (phẳng) để đưavào tầng Fully Connected đểthực hiện phân loại.
Tang FullyConnected: sẽđóng vai trònhư một bộ phân lớp các đặc trưng đã rút trích trước đó Tầng này sẽ đưaraxác suất của một đối tượng trong ảnh.
Nhận diện đối tượng (Object Detection) là một nhiệm vụ trong thị giác máy tính, trong đó mục tiêu là phát hiện và xác định vị trí củacác đối tượng quan trọng trong mộtảnh hoặc video Nhiệm vụ này bao gồm việc xác định vị trí vàranh giới của các đốitượng trong ảnh, và phân loại các đốitượngvào các danh mục khác nhau Nó tạo thành một phần quan trọng của việc nhận diện hình ảnh, cùng với phân loại và truy xuất hình ảnh.
Phân loại thành hai loại chính:
• Phưong pháp mộtgiai đoạn (One-stagemethods): ưu tiên tốc độ dự đoán, với một số mô hìnhnhưYOLO, SSDvà RestinaNet.
• Phưong pháp hai giai đoạn (Two-stage methods): ưu tiên độ chính xác trong việc phát hiện đối tượng, với mộtsố mô hìnhphổ biến như Fast R-CNN (Region-based Convolutional Neural Networks), Faster R-CNN.
2.3 Giói thiệu một số lớp mô hình R-CNN
R-CNN [11] được giới thiệu lần đầu vào năm 2014 bởi RossGirshickvà các cộng sự tại ƯC Berkeley, mộttrong nhữngtrung tâm nghiên cứuAI hàng đầu thế giói.
R-CNN làmột trong những ứng dụng tiễn phong của mạng thầnkinh tích chập trong việc định vị, phát hiện, và phân đoạn đối tượng Phương pháp này đã đạt được kết quả ấn tưọng trên bộ dữ liệư VOC-2012 và bộ dữ liệu pháthiệnđối tưọng ILSVRC-
2013 ỢmagebTet Large Scale Visual Recognition Challenge 2013).
Kiếntrúc R-CNN gồm ba thành phần là:
* Vùngđềxuất ảnh (Region proposal): tạo và tríchxuất cácvùngđề xuất chứavật thễ được bao bọc bởibounding box.
* Trích xuất đặc trưng (Feature Extractor): Trích xuất các đặc trưnggiúp nhận diện hình ảnhtừ các region proposal thông qua các mạngthầnkinh tích chập sâu.
* Phân loại (classifer): Sử dụng cácđặctrưngtríchxuấtđễ phân loạihình ảnhtrong vùng đề xuất vào các nhãn tưong úng. phân loại vè đúng nhân
TỎNG QUAN VỀ LĨNH vực NGHIÊN cứu
Khái quát vấn đề
Trong thờiđại số, danh thiếp vẫn là công cụ cơbản để chia sẻ thông tin liên lạc và xây dựng mối quan hệ chuyên nghiệp Tuy nhiên, quá trình truyền thông dữ liệu từ danh thiếp sang định dạng điện tử bằng cách thủ công là công việc đòihỏinhiềunhân lực, dễ mắc lỗi và không đáp úng đủ nhanh chóngvớiyêu cầu về hiệu suất trong các hoạt động kinh doanh hiện đại Đểgiảiquyết thách thức này, việctíchhợp cácphương pháp học sâu mang lại một giảipháp hứa hẹn thông quaviệc tự động hóa quátrình trích xuất thông tin từ danhthiếp.
Tập dữ liệu đầu vào
Tập dữliệu đầu vào của luận văn:
• Tập ảnh được thu thập đạt 1330 ảnh danh thiếp các loại Một số hình ảnh ví dụ từ tập dữ liệu:
9 Táng 1, tòa nhà C5, Nguyễn Cd Thạch
K NamTỪLièm, Hà Nội l \ {.Chị Yến: 036.53 ỉ.6495 (Đột tiệc)
\\.Hưng: 084.988.8638 ĂN SÁNG-ĐẶC SÀN LÂU CUA SÔNG CẤC MÓN ĐỐNG OUÊ
Phương hướng giải quyết
Phương pháp nghiên cứudựa trên tài liệu:
• Nghiên cứu, tham khảo từ các bài báo khoa học và khai thác tài liệukhác trên Internetvề các nội dung nghiên cứu liên quan.
• Nghiên cứu vềcácmô hình phát hiện đốitượng, các phương pháp trích xuất văn bản.
• Nghiên cứu tàiliệuvề cấu trúc dữ liệu và cách thức thu thập dữ liệu.
• Nghiên cứu tàiliệuvềngôn ngữ lập trình Python.
Phương pháp nghiên cứudựa trên thực nghiệm:
• Lậptrình cókiểm chứng dựa trên các tập dữ liệuthuđược.
• Sử dụng kết quả thu được từ V iệc lập trìnhmô phỏng, từ đó rút ra kết luận so sánh các phương pháp huấn luyện cho bài toán.
• Xây dụng úng dụngtự động hóa trích xuất thông tin danh thếp.
Dữ liệuthu thập thủ côngtừcác hình ảnh danh thiếp của các côngty, từ các hội chợ triển lãm, tờrơi danh thiếp quảng cáo.
Xử lý và Phân tích dữ liệu:
Bước 1: Từ tập dữ liệu thu được, tôi phằn loại danh thiếp đúng yêu cầu Ảnh phải rõ, đượcchụp chính diện.
Bước 2: Lậptrình xây dựng cácmô hìnhchuẩn bị cho việc huấn luyện.
Bước3: Ảp các mô hình đã xây dựng vào tậpdữ liệu và thực hiện việc huấn luyện.Bước 4: Đánh giákết quả đạt được và thực hiện so sánh.
Cơ SỞ LÝ THUYẾT
Mạng thần kinh tích chập
Mạng thần kinh làmộthệthống tínhtoán lấy cảm hứng từ sự hoạt động của các thần kinh trong hệ thần kinh Mạng thần kinh làmộtloại trítuệ nhân tạocố gắng mô phỏng cách mà não con người hoạt động thay vì sử dụng mô hình số, trong đó tất cả các phép tính điều khiển bằngcác số 0 và 1, một mạng thần kinh hoạt động bằng cách tạo rakếtnối giữa các yếu tố xử lý với cấu trúc và trọng số của các kếtnối quyếtđịnh kết quảđầu ra [7]
Mạng thần kinh thường rất hiệu quả trong việc dự đoán các sự kiện khi mạng có một cơ sở dữ liệu lớn về cácví dụ trước đó đểtham chiếu.Nói một cáchchính xác, mạng thần kinh đề cập đến một máy tính không phải là số, nhưng mạng thần kinh có thể được mô phỏng trên máy tính số Mạng thần kinh làmột tậphợp các thuật toán, chúng giải mã dữ liệu giác quan thông qua một loại cảm nhận máy móc, đánh nhãn hoặc phân nhóm đầu vào thô Những mô hình mà chúng nhận biết là số, được chứatrong các vector, trong đó tất cả dữ liệu thế giới thực, chẳng hạn như hình ảnh, âm thanh, văn bản hoặc dãythời gian, phải được chuyển đổi [8]
Lấy cảm hứngtừ não, một mạng thần kinh nhân tạolàmộttập hợp cácđơn vị kết nối, còn được gọi là thần kinh Kết nối giữa các thần kinh có thể truyền tín hiệu giữa chúng Mỗi kết nối mang mộtgiátrị số thực quyết địnhtrọng số hay độ mạnh của tín hiệu.
Input layer: là lớp chứa các dữ liệu đầu vào.
Hidden layer: là lớp ẩn, nhiệm vụ của nó là xử lý dữ liệu đầu vào và xuất ra dữ liệu mới, từ đó làm dữ liệuđầu ra cuối cùng (hoặclàm dữliệu đầu vào cho lớp ần khác) Trong mạng thần kinh có thể chứa nhiềuhoặc không chứa lớp ẫn.
Output layer: là lớp chứa các dữliệu đầu ra.
Mỗi hình tròn trong hình 2.1 là một node,mỗinode trong hidden layervà output layer thực hiện các nhiệm vụ sau:
• Liênkếtvới tất cả cácnode ởlayertrước đó V ới các hệ số w riêng.
• Mỗi node có 1 hệ số bias b riêng.
• Tính tổng Linear tại mỗinode bằng côngthức:
• Sau đó, áp dụng hàm activationfunction(tùyvào truờng hợp sẽ cóhàmkíchhoạt khácnhau) để tạora đầu ra của node [9]
2.1.2 Mạng thần kinh tích chập
Mạngthần kinh tích chập (Convolutional Neural Networks - ConvNets hay CNNs) tương tụnhumạng thầnkinh truyền thẳng (feedforward neural networks), trong đó các thầnkinh có trọng số và độ lệch có thể học được, ứng dụng chủ yếu của chúng nằm trong xử lýtín hiệu và ảnh, thay thế cho OpenCV trong lĩnh vực thị giác máy tính.
Mạngthầnkinh tích chậplà một tập họp các lớp tí ch chập chàng lên nhau và sử dụng các hàmkích hoạt phi tuyến nhưReLU vàtanh đễ kích hoạt các trọng sốtrong các node Mỗi một lớp sau khi thông qua các hàmkíchhoạtsẽtạo ra các thông tintrừu tuọng hon cho các lớp tiếp theo Mỗi một lớp được sử dụng các bộ lọc khác nhau, thông thường có hàng trăm hàng nghìnbộ lọc như vậy và kết họp kếtquả của chúng lậ.
Kiến trúc môhình mạng thần kinh tích chập nhưsau:
Input Convolutional Pooling Convolutional Pooling Flatten FC Output
Hlnh2.2 Kiến trúc mạng CNN [10]
Tầng tích chập Convolution: Tầng tích chập sử dụng các bộ lọc để thực hiện phép tích chập khi đưa chúng đi qua đầu vào I theo các chiều của nó Các siêu tham số của các bộ lọc này bao gồm kích thướcbộ lọc F và độ trượt(stride) s Kết quả đầura o dược gọi là featuremap hay activationmap Dùng để trích xuấtđặc trung cửa ảnh.
Tầng Pooling: thường được dùng sau tầngtíchchập, giúp làm giảm số lượngtham số mà không làm thay đổi kiến trúc mạngvà tăng tốc độ tính toán.
• Max pooling: bảo toàn các đặc trưng được phát hiện (được sử dụng thường xuyên).
• Average pooling: giảm kích thước các feature map.
Tầng Flatten: giúp chuyển đổi các đặc trưng ảnh từ tầng tích chập thành vector 1 chiều (phẳng) để đưavào tầng Fully Connected đểthực hiện phân loại.
Tang FullyConnected: sẽđóng vai trònhư một bộ phân lớp các đặc trưng đã rút trích trước đó Tầng này sẽ đưaraxác suất của một đối tượng trong ảnh.
Giới thiệu một số lớp mô hình R-CNN
mà không làm thay đổi kiến trúc mạngvà tăng tốc độ tính toán.
• Max pooling: bảo toàn các đặc trưng được phát hiện (được sử dụng thường xuyên).
• Average pooling: giảm kích thước các feature map.
Tầng Flatten: giúp chuyển đổi các đặc trưng ảnh từ tầng tích chập thành vector 1 chiều (phẳng) để đưavào tầng Fully Connected đểthực hiện phân loại.
Tang FullyConnected: sẽđóng vai trònhư một bộ phân lớp các đặc trưng đã rút trích trước đó Tầng này sẽ đưaraxác suất của một đối tượng trong ảnh.
Nhận diện đối tượng (Object Detection) là một nhiệm vụ trong thị giác máy tính, trong đó mục tiêu là phát hiện và xác định vị trí củacác đối tượng quan trọng trong mộtảnh hoặc video Nhiệm vụ này bao gồm việc xác định vị trí vàranh giới của các đốitượng trong ảnh, và phân loại các đốitượngvào các danh mục khác nhau Nó tạo thành một phần quan trọng của việc nhận diện hình ảnh, cùng với phân loại và truy xuất hình ảnh.
Phân loại thành hai loại chính:
• Phưong pháp mộtgiai đoạn (One-stagemethods): ưu tiên tốc độ dự đoán, với một số mô hìnhnhưYOLO, SSDvà RestinaNet.
• Phưong pháp hai giai đoạn (Two-stage methods): ưu tiên độ chính xác trong việc phát hiện đối tượng, với mộtsố mô hìnhphổ biến như Fast R-CNN (Region-based Convolutional Neural Networks), Faster R-CNN.
2.3 Giói thiệu một số lớp mô hình R-CNN
R-CNN [11] được giới thiệu lần đầu vào năm 2014 bởi RossGirshickvà các cộng sự tại ƯC Berkeley, mộttrong nhữngtrung tâm nghiên cứuAI hàng đầu thế giói.
R-CNN làmột trong những ứng dụng tiễn phong của mạng thầnkinh tích chập trong việc định vị, phát hiện, và phân đoạn đối tượng Phương pháp này đã đạt được kết quả ấn tưọng trên bộ dữ liệư VOC-2012 và bộ dữ liệu pháthiệnđối tưọng ILSVRC-
2013 ỢmagebTet Large Scale Visual Recognition Challenge 2013).
Kiếntrúc R-CNN gồm ba thành phần là:
* Vùngđềxuất ảnh (Region proposal): tạo và tríchxuất cácvùngđề xuất chứavật thễ được bao bọc bởibounding box.
* Trích xuất đặc trưng (Feature Extractor): Trích xuất các đặc trưnggiúp nhận diện hình ảnhtừ các region proposal thông qua các mạngthầnkinh tích chập sâu.
* Phân loại (classifer): Sử dụng cácđặctrưngtríchxuấtđễ phân loạihình ảnhtrong vùng đề xuất vào các nhãn tưong úng. phân loại vè đúng nhân
Một kỹ thuật được sử dụng để đề xuất các region proposal hoặc các bounding box chứa cácđối tượng tiềm năng trong hình ảnh đượcgọi là “selective search” [12], các region proposal có thể được phát hiện bởi đa dạng những thuật toán khác nhau. Đây làmột ứng dụng tưong đối đon giản và dễ hiểu của CNN đối với vấn đề định vị vàphát hiện đối tượng Mộtnhược điểm của phưong pháp này là chậm, đòi hỏi phải vượt qua nhiều module độc lập trong đó có trích xuất đặc trưng từ một mạng CNN học sâu trên từngregion proposal được tạo bởi thuật toán đề xuấtvùng chứa ảnh.
Dựa trên thành công của R-CNN, Ross Girshick đề xuất một mở rộng để giải quyết vấn đề của R-CNN trong mộtbài báo vào năm 2015 với tiêu đề rất ngắn gọn Fast R- CNN.
Fast R-CNN [13] ra đời để khắc phục hạn chếcủa R-CNN Điểm đột phá của Fast R- CNN là sử dụng một single model thay vì pipeline để phát hiện region và classification cùng lúc.
Kiến trúc của mô hình trích xuất từ bức ảnh một tập hợp các region proposals làm đầu vào đượctruyền qua mạng CNN sâu Mạng CNN sâu (ví dụ VGG-19) được sử dụng để trích xuất đặc trưng Phần cuối của mạng là là một layer tùy chỉnh hay còn được gọi là layer vùng quan tâm (Region of Interest Pooling - Rol Pooling) có tác dụng trích xuất các features cho một vùng ảnh input nhất định Sau đó các features được kếtbởi một lớp fully connected Cuốicùng mô hình chiathành hai đầu ra, một đầu racho dự đoán nhãn thông qua một softmax layervà một đầu ra khác dự đoán bounding box (kí hiệu làbbox) dựa trên hồi qui tuyến tính.
Hình 2.4 Kiến trúc FastR-CNN
Mô hìnhnày nhanh hon đángkểcảvề huấn luyện vàdụ đoán, tuy nhiên vẫn cần một tập họp các region proposal được đề xuất cùng vói môi hình ảnh đẩu vào.
Năm 2016, dưới sự đề xuất của Shaoqing Ren và các cộng sự tạiMicrosoft Research thìFasterR-CNNrađời Kiến trúcmôhình đã được cải thiện hon về cảtốc độ huấn luyệnvàphát hiện đối tuọng.
Faster R-CNN [ 14] manglạiđộ chính xác cao nhất trên cả hai nhiệm vụchính là phát hiện và nhận dạng đối tưọngtrêntập dữ liệu ILSVRC-2015 và MS COCO-2015.
Faster R-CNN giải quyếtđược vấnđề của Fast R-CNN bằng cách thay thế Selective Search với RPN (Region Proposal Network) Những cải tiến này vừa lầm giảm số lưọng region proposal vừa tăng tốc hoạt độngtrongthờigianthử nghiệm mố hình lên gần thời gian thực với hiệu suất tốt nhất.
Kiến trúc này là kết hợp của hai modules:
• Mạng đề xuất khu vực (Region Proposal Network, viết tat RPN): là mạng CNN để đềxuấtcác vùngvà các loại đoi tượng cần xem xét trong vùng.
• Fast R-CNN: Mạng CNN để tríchxuất cácđặc trưng từ các region proposal vàtrả về các nhãn và bounding box.
Region Proposal Network feature map
Hình 2.5 Kiến trúc Faster R-CNN
RPN hoạt động bằng cách lấy đầu ra của một mạng pretrained CNN sâu (ví dụ VGG19)và truyền feature map vào một mạng nhỏ và đưaranhiều region proposals và nhãn dự đoán cho chúng Region proposals là các bounding boxes, dựa trên các anchor boxes hoặc hình dạng được xác định trước được thiết kế để tăng tốc và cải thiện khả năng đề xuất vùng Dự đoán của nhãn được thể hiện dưới dạng nhị phân cho biết region proposalcó xuất hiện vậtthể hoặc không.
YOLO làviếttắt của YouOnly Look Once làmộtthuật toán phát hiện đối tượng phổ biến tronglĩnh vực thị giác máy tính YOLO có kiếntrúc đơn giản và yêu cầu dữ liệu đàotạo tối thiểu, giúp dễdàng thực hiện và thích ứng với các tác vụ mới Thuật toán YOLO lấy một hình ảnh làmđầu vào và sau đó sử dụng một mạng thần kinh tích chập sâu đơn giản để phát hiệncác đối tượng trong hình ảnh.
YOLO được viết bởi Joseph Redmon trong một framework tùy chỉnh có tên là Darknet Darknet là một researchframework rất linh hoạt được viết bằng ngôn ngữ cấp thấp (low level languages) và đãtạo ra một loạt công cụ phát hiện đối tượngthời gian thực (realtime object detectors) tốtnhất trong thị giác máy tính.
Dòng mô hình YOLO đã tiếp tục phát triển kể từ lần phát hành đầu tiên vào năm
2016 Đángchú ý làcả YOLOv2 và YOLOv3 đều của JosephRedmon Các mô hình YOLO sau YOLOv3 được viết bởi các tác giả mới và- thay vì được coi là các bản phát hành tuần tự nghiêm ngặt cho YOLOv3 - có các mục tiêu khác nhau dựa trên các tác giả đãphát hành chúng.
Mô hình YOLO ban đầu là mạng phát hiện đối tượng đầu tiên kếthợp vấn đề vẽ các hộp giới hạn (bounding boxes)và xác định nhãn lớp (identifying class labels) trong một mạng có thể phân biệt từ đầu đến cuối.
Một số mô hình phát hiện đối tượng coi quá trình phát hiện là một vấn đề gồm hai phần Đầutiên, xác định các vùng quan tâm (bounding boxes) cho vị trí hiện diện của một đối tượng Sau đó, phân loại khu vực quan tâm cụ thể đó Đây được coi là một máy dò hai giai đoạn vàcác mô hình phổbiến như Faster R-CNN tận dụng phương pháp này.
Một số phiên bản YOLO
YOLOv4 [15] là sản phẩm của nhiều thử nghiệm và nghiên cứu kết hợp nhiều kỹ thuật mới khác nhau để cảithiện độ chính xác và tốc độ của Mạng thần kinh tích chập (Convolutional Neural Network - CNN).
Trong YOLOv4, các tác giả tìm hiểu, thử nghiệm các phương pháp state-of-the-art trong Nhận diện đối tượng để đánhgiá, so sánh sự hiệu quả của các phương pháp này theo một số tiêu chí cân bằng giữa độ phức tạp của mô hình và tốc độ xử lý FPS. YOLOv4 cũng hướngtới khảnăng training được trên một GPU.
Kiến trúcYOLOv4 bao gồm 3 phần chính:
• Neck: SPP(Spatial Pyramid Pooling), PAN (Path Aggregation Network)
YOLOv4 sử dụng CSPDarknet53 để làm backbone vì theotác giả, CSPDarknet53 có độ chính xác trong tác vụ phát hiện đối tượng cao hơn so với ResNet và mặc dù ResNet có độ chính xác trong tác vụ phân loại cao hơn, hạn chếnày có thể đượccải thiện nhờhàm activation Mish.
Trong những tác vụ phân loại, phần output feature map sẽ được flatten để làm đầu vào cho lớp Fully Connected ở cuối Tuy nhiên, bằng cách này thì ta phải cố định kích thước của output feature map và điều này gây khó khăn trong việc phát hiện đối tượng trong nhiều kích thước ảnh khác nhau Đe khắc phục điều này thì cho output feature map đi qua những lớp poolingvới kích thước khác nhau trên từng kênh màu của ảnh Ví dụ tacó ảnh đầu vào có kích thước 512 X 100 X 100 thì khi đi qua 3 lớp pooling với kích thước kernel là 1x1, 2x2, 4x4 thì SPP sẽ tạo ra 512, 4 X 512, 16 X
512 vetor 1 chiều và được concatenated đểthành đầu vào cho lóp FC ở cuối.
PAN là viết tắt của Path Aggregation Network và một phiên bản cải tiến của FPN (Feature Pyramid Networks ) [16] PAN rat linh hoạt và hiện nay vẫn còn nhiều kiến trúc sử dụng nó với tác dụng để lưu chuyển và kết hợp những local (low-level) features và global (high-level) features Nó giúp kết họp những semantic features đánggiátừ những level cao củapyramid và localization featurestừ những level thấp hon để cho kết quả dự đoán cuối cùng.
SAM là viếttắt của spatial Attention Module Attention modules gần đây đang được sử dụng nhiều trong nhữngmạng CNN để làm mạng tập trung vào những đối tượng có trong ảnh hon làtập trung vềtổng thể Modules nàygiúp mạng có thểtăng cường weight tậptrung vào những thông tin ngữ cảnh xung quanh đốitượng vànhững đặc trưng quan trọng.
Hàm kích hoạtMish [17] theotác giả thu được kết quả tốt hon so vói hàm kích hoạt ReLu, SoftPlus, Swish f(x) = xtanh(ln (1 4- ex)) (2-2)
Một số ưu điểm của hàm:
• Không đon điệu, giữ lại một phần nhỏ negative gradient cho phép mô hình học tốt hon.
Hình 2.6Kiến trúc mô hình Y0L0v4 [ 18]
Y OLOv4 đã được thử nghiệm và cho thấy rằng mô hình vượt trội hơntấtcả các kiến trúc mạng phát hiện đốitượng (object detection) khác vềtốc độ và độ chính xác tại thời điểm đó.
Hình 2.7 Biểu,đồ so sánh hiệu suất YOLOv4
Vào năm 2020, sau khi phát hành YOLOv4, chỉtrongvòng hai tháng, Glenn Jocher, người sánglập và Giám đốc điều hành của Ưltralỵtics, đãphát hành bản triển khai mã nguốn mỏ’ của YOLOv5 [19] trên GitHúb Đâỵ là công cụ phát hiện đối tượng YOLO duy nhất chưa có bài nghiên cứu ban đầu (research paper) đẫn đến một số tranhcãi. Điềutuyệt nhất là YOLOv5 được triểnkhai nguyên bản bằng PỵTorch, loại bỏ các hạn chế của Darknet framework (dựa trên ngônngữlập trìnhc và không được xây dựng với phối cảnhmôi trường sản xuất (productionenvironments perspective) Sự thay đổi lớn này của YOLO trong PỵTorch giúpcác nhà phát triển dễ dàng sủa đổi kiến trúc hon và xuất sang nhiều môi trường triểnkhai một cáchdễ dàng.
Kiến trúcmô hình Y0L0v5 bao gồm 3 phầnchính:
Hay còn được gọi là SPP-Fast, giống với module SPP của YOLOv4 nhưng nhanh hon gấp hai lan Thay vi sử dụng Max-pooling song song như SPP thì SPPF của YOLOv5 sử dụng Max-pooling tuần tự Và hơn nữa, kernel size trong Max-pooling của SPPF toàn bộ là 5 thay chohệ sốkernel size (5,9,13) như SPP của YOLOv4
Tên đay đủ là Sigmoid Linear Units (SiLUs) [20] còn được gọi là hàm kích hoạt swish Nó được sử dụng với các phép toán tích chập trong lóp an (hidden layer). Trong khi hàm kích hoạt Sigmoid được sử dụng với các phép tích chập lóp đầu ra (output layer). f(x) = xơ(x) (2-3)
Backbone: CSPDarknet Neck: PANet Head: Yolo Layer
Hình 2.8 Kiếntrúc mô hình YOLOv5 [21 ]
Y0L0v5 cóbốn phiên bảnkhácnhauvớitỉ lệ: nhỏ (small), trung bình (medium), lớn (large) và cực lớn (x) Phiên bản càng lớn thì tỷ lệ độ chính xác càng cao.
Faster 4 GPU Speed (ms/img)
Hình 2.9Biểu đồ so sánh hiệu suất mô hình Y0L0v5 [19]
Với biểu đồ trên, mục tiêu là tạo ra mô hình phát hiện đối tượngvới hiệu suất cao (biểu thị ở trục Y) tươngứng với thời gian suy luận (biểu thị ở trục X) Dựa trên kết quả, cóthể thấy rằng tất cả cácphiênbản của Y0L0v5 đều được huấn luyện nhanh hơnmô hình Effie iencyDet, trong khi đómô hình YOLOv5xcóthềxửlỳ nhanh hơn nhiều lần với mức độ chính xác tương đươngmô hình EfficiencyDet
Y0L0v8 [4] là dòngmô hình phát hiện đối tượng dựa trên YOLO tương đối mới từ Ultralytics cung cấp hiệu suất tốt Y0L0v8tận dụng cácphiên bản YOLO trước đó nhưng được cải tiếnnhanhhơnvàchínhxác hơn đồng thời cung cấp một khung thống nhất cho cácmô hình đào tạo để thực hiện phát hiện đối tượng, phân đoạn phiên bản và phân loại hình ảnh So sánhhiệu quả của YOLOv8 được mô tả ở hình 2.10.
Hình 2.10 Kiếntrúc mô hình YOLOv8 [22] ưu điểm của YOLOv8 là có tỷ lệ chính xác cao được đo bằng coco vàRoboflow
100, YOLOv8 đi kèm với rất nhiều tính năngthuận tiện cho nhà phát triển, từ CLI dễ sử dụng đến gói Python có cấu trúc tốt Có một cộngđồng lớnxung quanh YOLOvà một cộng đồng đang phát triển xung quanh mô hình YOLOv8, nghĩa là có nhiều người trong giới thị giác máy tính có thể hỗ trợ khi cần hướng dẫn So vớiđánh giá YOLOv5, mô hình YOLOv8 tạo ra kết quả tương tự trên mỗi tập dữ liệu hoặc cải thiệnkết quả đángkể.
Kiến trúc mạng của YOLOv8 được xây dựng dựa trên cácphiênbản trước của thuật toán YOLO.
YOLOv8 sử dụng mạng thần kinh tích chập có thể được chia thành hai phần chính:xương sống và phần đầu Phiên bản sửa đồi của kiến trúc CSPDarknet53 tạo thành xương sống của YOLOv8 Kiến trúc này bao gồm 53 lớp tích chập và sử dụng các nhau Phần đầu của YOLOv8 bao gồm nhiều lớptích chập, theo sau là một loạt các lớp được kết nối đầy đủ Các lớp này chịu trách nhiệm dự đoán các hộp giói hạn, điểm đốitượng và xác suất lớp cho các đối tượngđược phát hiện trong một hình ảnh. Mộttrong những tính năng chính của YOLOv8 làsửdụngcơchế tự chú ý trong phần đầu của mạng Cơ chế này cho phép mô hình tập trung vào các phần khác nhau của hình ảnh và điều chỉnh tầm quan trọng của các tính năng khác nhau dựa trên mức độ phù hợp của chúngvớinhiệm vụ Một tính năng quan trọngkhác của YOLOv8 là khả năng thực hiện phát hiện đối tượng đa tỷlệ Mô hình sử dụng mạng kim tự tháp đặc trưng đểphát hiện các đối tượng có kích thước và ty lệ khác nhau trong một hình ảnh. Mạngkim tự tháp tính năng này baogồm nhiều lớp phát hiện các đối tượng ở các ty lệ khác nhau, cho phép mô hình phát hiện các đối tượng lớn và nhỏ trong một hình ảnh.
Một sốthay đổi của YOLOv8 sovới YOLOv5:
• Trong mạng thần kinh, “Stem” là những tầng đầu tiên Nhiệm vụ chính của nó là giảm kích thước của hình ảnh ban đầu trong khi tăng độ sâu hoặc số lượng kênh biểu diễn hình ảnh.Đơn giản, stemcủa mạng neural là quá trình biến hình ảnh 2D ban đầu thành một trừu tượng đa chiều hiệu quả TrongYOLOv8, kích thước của lõi tích chập đầu tiên trong stem, thực hiện một số phần trừu tượng này, đã được giảm từ (6x6)xuống còn (3x3).
So sánh giữa YOLOv8 và Faster RCNN
Kiến trúc mô hình Y OLOv8 thực hiện toàn bộ quy trình nhận diện đối tượng chỉ trong một lần thực thi của mạng thần kinh Từ việc đọc ảnh đầu vào đến việc đưa ra các dự đoán về đối tượng.
Kiến trúc mô hình Faster R-CNN yêu cầu một giaiđoạntrung gian phức tạp là tạo ra cácvùng quan tâm (region proposals) trước khi vào giaiđoạn thực hiện dự đoán đối tượng.
Bằng cách thực hiện tất cả các bước nàytrong một lần chạy, YOLO giảm đángkểđộ phức tạp của quytrình nhận diện đối tượng và làm cho nó trở thành một quá trình
" end-to-end" (từ đầu đến cuối) Điều này giúp mô hình Y OLO thực hiện nhanh chóng trên cáchình ảnh và video, làmcho nó phổ biến trong ứng dụng thị giác máy tính thời gian thực.
Tiến hành đánh giá hiệu suất hai mô hình YOLOv8 và Faster R-CNN trên tậpdữ liệu SAR (Synthetic Aperture Radar) Dữ liệu SAR bao gồm các hình ảnh radar về các đối tượng quan trọng như công trình, phưong tiện giao thông, tàu thủy Dữ liệu gốc làmột bộ sưu tập các hình ảnh tif lớn vói hon 7000 hình ảnh và hon 12000 bouding box.
Tiến hành đánh giá hiệu suất hai mô hìnhYOLOv8 và Faster R-CNN trên tậpdữ liệu SAR (Synthetic Aperture Radar) Dữ liệu SAR bao gồm các hình ảnh radar về các đối tượng quan trọngnhư công trình, phưong tiện giao thông, tàu thủy Dữ liệu gốc làmột bộ sưu tập các hình ảnh tif lớn với hon 7000 hình ảnh và hơn 12000 bonding box [23]
Bảng 2.1 So sánh hiệu suất của mô hình YOLOv8 với Faster R-CNN
Mô hình mAP@50 GPU Latency (ms)
Dựa trên kết quả đánhgiá, YOLOv8 đã vượt trội hơn Faster R-CNN về cả độ chính xác và tốc độ YOLOv8 đạt được mộtmAP@50 là 0.62 với một độtrễGPU là 1,3ms, trong khi FasterR-CNN đạt được một mAP@50 là0.41 với một độ trễ GPU là 54ms
So sánh hiệu suất này làm nổi bật sự ưu việtcủa YOLOv8 trong các nhiệm vụ phát hiện đối tượng.
Với bài toán nhận diện thông tin của danh thiếp thì cần ưu tiên độ chính xác và hiệu suất thực thi thời gian thực thì mô hình YOLOv8 là sự lựa chọn tốt hơn.
Tesseract
Tesseract làmột công cụ nhận dạng ký tự quang học (OCR) mãnguồn mở được sử dụng để trích xuất văn bản từ hình ảnh Trong Python, Pytesseract là thư viện cung cấp giao diện chocông cụ OCR của Tesseract.
Pytesseract luônlà một công cụ mạnh mẽ nhờkhả năngchuyển đổi các hình ảnhchứa văn bản in hoặc viết tay thành dữ liệu văn bản có thể đọc được Nó cóthể xử lý hình ảnh ở nhiều định dạng khác nhau, trích xuất văn bản với độ chính xác đáng kể Pytesseract hoạt độngvói nhiều loại hình ảnhbaogồm việc quét tài liệu, hình ảnh và ảnh chụp màn hình.
Pytesseract tạo văn bản được nhận dạng dưới dạng đầu ra đon giản màbạn có thể sử dụng cho các tác vụ như phân tích dữ liệu, xử lý ngôn ngữ hoặcbất kỳ thao tác nào khác.
• Bước 1: Tiền xử lý ảnh o Chuyển đổi hình ảnh đầu vào thành dạng nhị phân.
• Bước 2: Phân tíchcác thànhphần kếtnối o Xác định và lưu trữ đường viền các thành phần kếtnối trongảnh. o Các đường viền được tập hợp lại thành các “blobs” (cụm điểm).
• Bước 3: cấu trúcdòng văn bản o Tổ chức các blobs thành các dòng văn bản có cấu trúc.
• Bước 4: Phân đoạn từ o Phân tách dòng văn bản thành thànhcác từ đon dựa trên khoảng cáchgiữa các ký tự.
• Bước 5: Quy trình nhận dạng o Trường hợp 1: Nhận diện từng từ một cách độc lập và các từ đó đượcchuyển đến một bộ phân loại thích ứng. o Trường hợp2: Nhận diện văn bản không thànhcông trong trường hợp một.
Các thông số đánh giá mô hình
• Accuracy (Độ chínhxác): Đây là tỷ lệ giữa số lượng dự đoán chính xác và tổng số lượng dữ liệu đượcdùng để đánh giá mô hình.Accuracy là mộtthông số quan trọngvà thường được sử dụng để đánh giá môhình, nhưng nókhông phải làđánh giátốt nhất cho bài toán nhận dạng ảnh, đặcbiệt là trong trường hợp các lớp dữ liệu không cân bằng về số lượng.
• Precision (Độ chắc chắn): Precision là tỷ lệ giữa số lượng dự đoán đúng và tổng số lượngdự đoán được thực hiện cho một lớp cụ thể Thông số này cho biết mức độ chắc chắn của môhìnhtrong việcdự đoán mộtlớpnào đó Neu mô hình có độ chính xác cao nhưng độ chắc chắn thấp, nghĩa là nó có thể dự đoán sai một số trường hợp.
• Recall (Độ phủ): Recall là tỷ lệgiữa số lượngdự đoán đúng vàtổng số lượng thực tế cho một lớp cụ thể Thông số này cho biết mức độ hoàn thành của mô hình trongviệc dự đoán tất cả các trường hợp của một lớpnào đó Neu mô hìnhcó độ chính xác thấp nhưng độ phủ cao, nghĩa là nó có thể phát hiện được tất cả các trường hợp nhưngcó thể dự đoán sai một số trường hợp.
• Fl-score: Fl-score là trung bình điều hòa của precision và recall Nó được tính bằng công thức:
Fl - score = —22S222L—ST2- precision + recall (2-5)
Fl-scorecho biết mức độ chính xác của mô hìnhtrên toàn bộ các lớp.
• mAP: là trung bìnhcộng của tất cả các giátrị AP (Average Precision) của các lớp đối tượngtrongtập dữ liệu Trong đó, AP được tính bằng cáchtínhdiện tích dưới đường Precision-Recall (PR) curve cho từng lớp đối tượng Precision là tỷ lệ số lượng đối tượng được nhận dạng đúng trên tổng số đối tượng được dự đoán là positive Recall là tỷ lệ số lượng đối tượng được nhận dạng đúng trên tổng số đối tượng thực tế. ứng dụng các mô hình học sâu đểtríchxuất các thông tin cần thiết từ danh thiếp, mô hìnhOCR để trích xuất văn bản tiếng Việt Dữ liệu đượcthu thậptừ nhiều loại danh thiếp khác nhau bao gồm hơn 1330 ảnh, trên mỗi danh thiếp sẽ được gán nhãn thành
4 lớp Dữ liệu được huấn luyện thông qua pre-train bằng mô hình YOLOv8 để nhận dạng vị trí và lớp của các đối tượng trong ảnh Từ các lớp và vị trí được xác định ở bước huấn luyện, tôi tiến hành cắt thành các ảnh nhỏ theo vị trí và lớp tương ứng Các ảnh được cắt sau đó được tiền xử lý bằng kỹ thuật xử lý ảnh để đảm bảo phần văn bảnrõ ràng, nổi bật làm tăng độ chính xác cho bướcsau.Những hình ảnhnày, sẽ đưa vào Tesseract để nhận diện ký tự trên ảnh và chuyển thành dạng văn bản.
Flask
Flask [24] làmột framework ứng dụng web được viếtbằng Python vàđược phát triển bởi Armin Ronacher Nó nổi tiếng với sự đơn giản và dễ sử dụng Flask được xây dựng trên nền tảng của bộ công cụ WSGI Werkzeug và sử dụng templateJinja2. Đội ngũ phát triển do Armin Ronacher dẫn dắt và đượcbiết đến với tên gọi Pocco(Python Community and other Code Contributors) đã đóng một vai trò quan trọng trong việc phát triển Flask Triết lý thiết kế của Flask nhấn mạnh tính linh hoạt và manglại cho các nhàpháttriển tự do lựa chọn các thành phần màhọ muốn sử dụng, làm cho nó trởthành sự lựa chọn phổ biến để xâydựng ứng dụng web trong Python.
Flask ho trợ các tiện ích mở rộngcho ứng dụng như tích hợp cơ sở dữ liệu, xác thực biểu mẫu, xử lý upload, các công nghệ xác thực, template, email, RESTful , người dùng có thể tập trung xây dựng ứng dụng web ngay từ đầu trong một khoảng thời gian rất ngắn và có thể pháttriển quy mô của ứngdụng tùy theoyêu cầu.
Werkzeug là một bộ công cụ WSGI (Web Server Gateway Interface) thực hiện các đối tượng yêu cầu (request object), đối tượng phảnhoi (response objects), và các hàm tiện ích Điều nàytạo điều kiện cho việc xây dựng một framework web trên nền tảng của nó Flask frameworksử dụng Werkzeug như mộttrong những thành phần cơ bản của nó [26].
Jinja2 là một template engine phổ biến cho Python Jinja2 thường được sử dụng để tạo và hiển thị các trangweb động bằng cách kết hợp các template với dữ liệu được truyền vào từ ứng dụng Jinja2 cung cấp cú pháp và tính linh hoạtcho việcxây dựng các template, giúp phát triển và duy trì mã nguồn trở nên thuận tiện Điều này làm cho quá trình hiển thị thông tin động trên các trang web trởnên dễ dàng và linh hoạt hơn.
KẾT QUẢ NGHIÊN cứu
Giới thiệu về dữ liệu
Bộ dữ liệu sử dụng là bộ dữ liệu hình ảnh đuợc thu thập một cách thủ công từ các hình ảnh danh thiếp của các công ty, trang web in cácmẫu danh thiếp, từ các cửa hàng tiện lợi, siêu thị, quán ăn, từ bạn bè, nguời thân, tờ rơi danh thiếp quảng cáo. Tập dũ liệu cuối cùng sau quá trình tiền xử lý đạt 1330 ảnh:
Xây dựng phiên bản tốt hơn của bạn
ĐIEN LANH - OIEN GIA DUNG NGUYỄN VÃN QUY
^ “y*' Sủa Chùa Láp Đội Mua Bân Còc Loo
Mõy Lanh Mỏy Gằỗằ Tủ Lanh ĐT: 0943 223 342
: KHOM 3 n CAI NUƠC HUYỆN CAI NUOC TCM
CỔNG TY TNHH TMDV TRANG TRÍ HOÀNG Vlh
Hình 3.1 Một sổ ảnh danh thiếptrong tập dữ liệu
Dữ liệu sau đó đuợc gán nhãnthànhcáctrường sau:
♦ Name(tên): là tên của chủ thể có trong danhthiếp,lóp tên thường được hiển thị với cỡ chữ lớn.
♦ Email: là địa chỉ thư điện tử trong danh thiếp Đặc trungcủa email có chứa ký tự đặcbiệt“@”.
• Phone: là số điện thoại liên lạc có trong danh thiếp, sỗ điện thoại ở đây cóthể là số điện thoại cá nhân của chủ danh thiếp hoặc là số của công ty Đặc trung của lớp này là các ký số từ “0-9”, Các ký tự đi kèmtheo là “.” hoặc “-” để ngăn cách các ký số Đôikhi trường số điện thoại bắtđầu từ mã vùng (mã vùng “+84” là mãvùng điện thoại ở Việt Nam.
♦ Address: chứa thông tin địa chỉliên hệnơi làm việc,trụ sở chính, công ty của chủ danhthiếp.
Thông tinchitiết được thể hiện ở bảngvà biểu đồ dướiđây:
Label MÔ tả SỐ lượng nhãn Đối tượng mẫu
Name Tên của chủ thể có trong danh thiếp 986 Dương Thị Thiết
Email Địa chi thư điện tử cótrong danhthiếp 902
Phone Số điệnthoại liên lạc có trongdanh thiếp 1594
Address Địa chỉ liên lạc có trong danh thiếp 1149
Bảng 3.1 Bảng mô tả một số lớp trong tập dữliệu
Hinh 3.2 Biểu đồ biểu diễn so lượng lóp trong tập dữ liệu
Từ biểu đồ cho thấy số lượng của mỗi loại có sự khâc nhau Dữliệu số diện thoại (phone) có số lượng cao nhấtvời 1594 nhãn Cấc lớp cònlại có số lượngtươngđồng nhau với email có số lượt thấp nhất là902 nhãn, tiếp theo là ten (name) với 986nhãn và cuối cùng lầ địa chỉ (address) vời 1149 nhãn.
Xử lý dữ liệu
Dữ liệu sau khi được thư thập cần phải được phân loại như sau:
• Ảnh phải có thông tin các trương như tên, điện thoại, địa chỉ, email.
• Ảnh phải rổ ràng và đứng trọng tâm (không bị lệch).
Hỉnh3.3 Một sế ảnh danh thiếp lỗi
Các bước tiền xử lý ảnh (tùy theo từngloại ành lỗi) bao gồm:
• Tănggiảm độ sáng tốicủa ảnh.
• Loại bỏ các ảnh bị lỗi màkhông thề xử lý.
Tiến hành huấn luyện
Mô hình được sử dụngđể huấn luyện mô hình YOLO tươngứng vói phiên bản mới nhất hiện nay là YOLOv8 Cụ thể,tôi sẽ tiếnhànhhuấnluyệnmô hình YOLOvS vói ba bản kíchthướckhác nhau gồm: YOLOvSn, YOLOv8mvà YOLOvSl.
Các mô hình được huấn luyện trên Google Colab vói cấu hìnhchính là:
Dữliệuđượcchia thànhhai tập huấn luyện và đánh giá theo tỉ lệ 80% và 20%:
Kết quả huấn luyện mô hình
Thiết lập tham số mô hình:
• Số vòng huấn luyện (Epoch) : 100
Kết quả môhình sau khi huấn luyện:
Address (3) 84.1 82.6 83.3 87.1 59.8 Bảng3.2 Kết quả mô hình huấn luyện môhình YOLOv8n
Nhận xét: Dựavào bảng trên, ta thấy mô hình YOLOv8n có độ chính xác khá tốt Ở cột Precision là tỷ lệ giữa số lượng đối tượng dự đoán đúng và tổng số đốitượng được dự đoán thì đối tượng Email được đánh giá caonhất Ở ba tiêu chí Recall, mAP50, mAP50-95 thì đối tượng Name đều đạt tỉ lệ cao nhất lần lượtlà 89.1%, 90%, 9.4%.
Hình 3.5 Các biểu đồ biểu diễn quátrìnhhuấn luyệnvàđánh giá mô hình ỸOLOvSn
• Box closs: là đại lượng đo lường giữa dự đoán bounding box của mô hỉnh và boundingbox thực tế của ảnh.Nhìn vào cột biểu đồ đầu, ta thấy chỉ số box closs của dữ liệuhuấn luyện giảm theo số lần huấn luyện, cho thấy mô hình học được và dự đoán được các bounding box gầnvới thực tế theo thời gian Nhungvớitập đánh giá thì biến động hơn.
• Class loss: để đo lường sự chênh lệch giữa dự đoán của mô hình với nhãn lớp thực tế của các mẫu dữ liệu, ở cộthai, ta thấy mô hình dựđoán được nhãnvà so khớp được vớinhãn thực tế theo thời gian.
• Dựa vào hai cột biểu đè đánh giá hiệu suất bên phải, ta thấy được mô hình đạt hiệu suất khá tốtkhi các chỉ số precision, mAPđều tăng theo thời gian thực.
Hình 3.6 ConfusionMatrix Nomalizedmô hình YOLOv8n
Nhận xét: Biểu đồ Confusion Matrix normalized biểu thị giá trị ở dạng phần trăm biểu thị tỉ lệ dự đoán đúng và sai trên tùng lớp cụ thể ở đây, tỉ lệ dự đoán đúng của bốn lớp Name, Email, Phone, Adress lần lượt là 90%, 87%, 87%, 87% Điềunày cho thấy mô hình YOLOv8n phát hiện đối tượng rất tốt trên tùng lớp.
Một sôkêt quả dự đoán:
BỆNH VIỆN 3A KHOA NGUYỀN ĐÍNH CHIỂU
Bác Ỉỉ NGỔN HOÀNG LÂN
Chuyền WiM I: NỘI THẮN KINH
PHỐ KHOA THẨN KINH NỘI TIẾT
Chuyền hhMÍ' NỘI THÁN KINH PHÓ KHOA THẨN KINH NỘI TIẾT TRƯỞNG ĐON V| ĐỘT QUỴ
Hình 3.7 Kết quả dự đoán mô hình YOLOvSn (1)
Hình 3.8 Kết quả dự đoán mô hình YOLOvSn (2)
Thiêt lập tham sô mô hình:
• Số vòng huấn luyện (Epoch) : 100
Ket quả mô hình saukhihuấn luyện:
Address (3) 83.1 82.3 82.3 87.2 61.8 Bảng 3.3 Kết quả mô huấn luyện mô hình YOLOv8m
Nhận xét: mô hình YOLOv8m có hiệu suất tốt trên cả bốn lớp Với lớp Name được đánh giá tốt nhất trên cảbốn tiêu chí là Precision, Recall, mAP50 vàmAP50-95.
Hình 3.9 Các biểu đồ biểu diễn quátrìnhhuấn luyệnvàđánh giá mô hình
• Box closs: Tương tự như mô hình YOLOv8n Nhìnvào cột biểu đồ đầu, ta thấy chỉ số box closs của dữ liệu huấn luyện giảm theo số lần huấn luyện, cho thấy mô hình học được vàdựđoán được cácboundingbox gần với thực tế theo thời gian Nhung với tập đánh giá thì biến động hơn.
• Class loss: để đo lường sự chênh lệch giữa dự đoán của mô hình với nhãn lớp thực tế của các mẫu dữ liệu, ở cộthai, ta thấy mô hình dựđoán được nhãnvà so khớp được vớinhãn thực tế theo thời gian.
• Dựa vào hai cột biểu đồ đánh giá hiệu suất bên phải, ta thấy được mô hình đạt hiệu suất khá tốt khi các chỉ số precision, mAP đều tang theo thời gian thực và các chỉ số có nhỉnh hơn so VỚI YOLOv8nnhưngkhôngđángkể.
Nhận xét: Biểu đồ Confusion Matrix normalized biểu thị giá trị ở dạng phần trăm biểu thị tỉ lệ dự đoán đúng và sai trên tùng lớp cụ thể ở đây, tỉ lệ dự đoán đúng của bốnlóp Name, Email, Phone, Adress lần lượt là88%, 92%, 94%, 87% So sánh với YOLOvSn thì lóp Name bị giảm một chút nhưng không đáng kể, còn hai lóp Email và Phone được cải thiện tôt hon.
Một số kết quả dự đoán:
Hình 3.11 Kết quả dự đoán môhìnhYOLOv8m (1) ĨMÍaẴr
0 cớy G TY CÓ PHĂN TAKAO VIẾT NAM
Phỏgiàmớot (^õgíàm^ổẽ r ‘ /ĩ TV r A BU Á M T AKA0 VIỆT NAM
Hình 3.12Kết quả dự đoán môhìnhYOLOv8m (2)
Thiết lập tham số mô hình:
• Số vòng huấn luyện (Epoch) : 100
• Tốc độ học (Learning rate): 0.01
Kết quả môhình sau khi huấn luyện:
Address (3) 87.2 83.1 80.3 87.8 61.6 Bảng 3.4 Kết quảmô huấn luyện môhình YOLOv81
• Mô hìnhYOLOv81 vẫn đạt hiệu suất phát hiện tốt trên cảbốn lớp Chỉ số mAP50 và mAP50-95 của lớp Name cao nhất cho thấy khả năng định vị chính xác của mô hình với lớp Name.
• Tỉ lệ của tất cả các đối tượng thuộc lớp Email mà mô hình đã dự đoán đúng đạt 88.3% biểu thị ở cột Recall.
• Và lớp Address có precision đạt 87.2% là tỉ lệ các đối tượng được dự đoán là thuộc lớpAddress màthực tế cũng thuộc lớp đó. train/clsjoss traln/dfi_toss metrx$#CKiSK>n(BJ metncs/recôll(B) train/box_lo$s
Hình 3.13 Các biểu đồ biểu diễn quá trìnhhuấn luyện và đánh giá mô hình Y0L0v81
• Box closs: Nhìn vào cột biểu đồ đầu, ta thấy chỉ số box closs của dữ liệu huấn luyện giảm theo số lần huấn luyện, cho thấy mô hình học được vàdựđoánđược các boundingbox gần với thực tế theo thời gian Biểu đồ của tập dữ liệuđánh giá không biến động so với hai mô hình Y0L0v8n và Y0L0v8m
• Class loss: để đo lường sự chênh lệch giữa dự đoán của mô hình với nhãn lớp thực tế của các mẫu dữ liệu, ở cộthai, ta thấy mô hình dựđoán được nhãnvà so khớp được với nhãn thực tế theo thời gian Nhưng ở biểu đồ trên dữ liệu đánh giá, kết quả lại không tốthơn so vơi hai biểu đồthuộc mô hình Y0L0v8m.
• Dựa vào hai cột biểu đè đánh giá hiệu suất bên phải, ta thấy được mô hình đạt hiệu suất khá tốt khi các chỉ số precision, mAP đều tang theo thời gian thực và các chỉ số đánh giá trên có phần kém hơn Y0L0v8m.
Hình 3.14 Confusion MatrixNomalized mô hình YOLOv81
• Biểu đồ Confusion Matrix normalized biểu thị giá trị ở dạngphần trăm, biểu thị tỉ lệ dựđoán đúng và sai trên từng lớp cụthể.
• ở đây, tỉ lệ dự đoán đúng của bốn lớp Name, Email, Phone, Adress lần lượt là94%, 92%, 94%, 90%.
Một sô kêtquả dự đoán: ĩaJ(fur
Hình3.15 Kết quả dự đoán môhình YOLOvSl (1)
Hình 3.lổ Kết quả dự đoán mô hình YOLOvSl (2)
Kết quả so sánh giữa ba mô hình của YOLO
• Bảng kết quả huấn luyện của từng lớp
Bảng 3.5 Kết quả huấn luyện từng lớp của ba mô hình
Thông tintừ bảng 3.5 số lượngtham số có sự khác biệt lớn giữa các mô hình Bắt đầu với mô hình YOLOv8n, đây làmộtmô hình nhẹưu tiên tốc độ nên lượngtham số chỉ
3 triệu Với mô hình YOLOv8m và YOLOv81, đây là nhữngmô hình nặng ưutiên độ chính xácnên lượng tham số tương đối lớn.
♦ Bảng đánh giá hiệu suất mô hình
Bảng 3.6 Hiệu suất của ba mô hìnhVới lượng tham số càng lớn thì độ chính xác càng tốtnhưng thời gian huấn luyện, thời gian nhận dạng dữ liệu và kích thước của file weight cũng lớn theo Từ bảng 3.6 có thể thấy được các chỉ số về độ chính xác và hiệu suất nhận diện của mô hìnhYOLOv8m có phần tốt hơn mô hình YOLOv8n và YOLO81 nhung không đáng kể.
Quy trình xây dựng và triển khai mô hình
Hình3.17 Sơ đồ quá hìnhxâydựng mô hình
• Đầutiên, thu thậpdữ liệu về đanh thiếp là quá trình tậphọpthông tin vềcác danh thiếp được sử dụng để thiết kế, phát hiển và cung cấp cho một tồ chức hoặc cá nhân, bộ dữ liệu hình ảnh được thu thập một cách thủ công từ cáchìnhảnh danh thiếpcủacác công ty, trang web in cácmẫu danh thiếp, từ các cửa hàng tiện lợi, siêu thị, quán ăn, từ bạn bè, người thằn, tờrơi danh thiếp quảng cáo.
• Sau khi thu thập dữ liệu từ các danh thiếp, quá trình tiếp theo làxử lý dữ liệu để đảm bảo rằng thông tin được phân loại và lọc ra một cách hiệu quả Dữ liệu thu thập được cần phải được phân loại theo các tiêu chí cụ thể như tên, số điện thoại, địa chỉ và email Đồng thời, để đảm bảo chất lượng của ảnh, các tiêu chí như sự rõ ràng vàđúng trọng tâm cũng cần được kiểmtra. o Quá trình tiền xử lý dữliệu ảnh làmộtphần không thểthiếu vàđòi hỏi sự cẩn thận Các bước tiền xử lý có thể bao gồm việc xoay ảnh, điều chỉnh độ sáng tối, giảm nhiễu, v.v o Ngượclại, loại bỏnhữnghình ảnh không thể xử lý.
• Sau khi dữ liệu đã đượcxử lý, việc tiếp theo là gán nhãn cho các trường thông tin quan trọng như "Name" (Tên), "Email" (Địa chỉ email), "Phone" (Số điện thoại) và "Address" (Địachỉ) Quátrình này đảm bảo rằng mỗi mẫu dữ liệu được phân loại và cócấu trúc để dễdàng sử dụng trong xâydựng mô hình học sâu.
• Tiếp theo, quá trình là xây dựng một mô hình học sâu để nhận dạng các trường thông tin đã được gán nhãn trước đó từ cácdanhthiếp Quá trình huấn luyện mô hình sẽ tập trung vào việc học cáchnhận dạng và trích xuất các trườngthông tin quan trọng như tên,email, số điện thoại và địa chỉ từ các danhthiếp Mô hìnhsẽ được huấn luyện trên mộttập dữ liệu được chia thành tập huấn luyện vàtập đánh giá, với mục tiêu là tối ưu hóa hiệu suất của nó. o Sau khi mô hình đã được huấn luyện, quá trình đánh giá sẽ đượcthực hiện để đảm bảo rằng mô hình hoạt động hiệu quả trên dữ liệu thực tế Các phép đo đánh giá như độ chính xác (accuracy), độ phủ (recall), độ chính xác dương tính (precision), và fl-score sẽ được sử dụng để đánh giá hiệu suất của môhình trên tập đánhgiá. o Neu hiệu xuất không tốt sẽ phải thực hiện lại quá trình xây dựng mô hình.
• Cuối cùng, sau khi mô hình học sâu đã được huấn luyện và đánh giá, quá trình tiếp theo là triển khai mô hình vào ứng dụng thực tế để sử dụng trong quytrình làm việc hàng ngày.
3.6.2 Triển khai mô hình, ứng đụng
Sau khi huấn luyện các mô hình vàđưa ra những kết quả so sánh, từ đó em chọn ra mô hình có độ chính xác cao hơn Mô hình Y0L0v8m được triền khai Backend với ngôn ngữ Python và sử dụng Flask là một Python micro-framework cho phép xây dựng webAPI Sau khi ngườidùng chọn“Submit” hệ thống sẽ gửi requestcho server và dữliệu được xử lý nhận diện ở Backend Kết quả responsecủa server sẽ được hiển thị ở khung “Kết quả”.
Krn ánh dư (toán sè đưnc hiển thi bồn dưa
MA mi OĩỏHỶu NW Dinh ThSmM/Hdojj rang
Hình 3.19 Trang kết quả Một số kết quả khác:
Hình 3.20 Ảnh danh thiếp thứ hai
Hnh ânhđư&an ỉé đua WỂh tN bénaưo
Hình 3.21 Kết quả nhận diện ảnh danh thiếp thứ hai
Mô hình Yolo ưng dựng w& độ pnM Nộn vi ưýb mil đaỡh ằ1^1
Hình 3.22 Ảnh danh thiếp thứ ba
_ Km ỹh