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

PHÁT HIỆN VÀ GIẢI MÃ MÃ VẠCH SỬ DỤNG MÔ HÌNH DEEP LEARNING

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

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
------

ĐỒ ÁN CHUYÊN NGÀNH
KHOA HỌC MÁY TÍNH
PHÁT HIỆN VÀ GIẢI MÃ MÃ VẠCH
SỬ DỤNG MƠ HÌNH DEEP LEARNING
Giảng viên hướng dẫn

:

Ts. Nguyễn Mạnh Cường

Nhóm

:

14

Lớp

:

IT6052.2 – 20231IT6052002

Sinh viên thực hiện

:

Nguyễn Chí Dũng – 2020601153


Hoàng Hữu Duy – 2020600230
Vũ Quang Trường – 2020601158

Hà Nội - 2023


MỤC LỤC
MỤC LỤC...................................................................................................................................... 1
DANH MỤC HÌNH ẢNH ............................................................................................................. 3
DANH MỤC BẢNG ...................................................................................................................... 4
LỜI CẢM ƠN ................................................................................................................................ 5
LỜI NÓI ĐẦU ............................................................................................................................... 6
CHƯƠNG I: TỔNG QUAN VỀ BÀI TOÁN PHÁT HIỆN VÀ GIẢI MÃ MÃ VẠCH ......... 8
1.1.

Tổng quan về mã vạch .................................................................................................. 8

1.1.1. Giới thiệu về mã vạch ............................................................................................... 8
1.1.2. Các loại mã vạch ....................................................................................................... 8
1.1.3. Ứng dụng của mã vạch ........................................................................................... 14
1.2.

Phát biểu bài toán ....................................................................................................... 15

CHƯƠNG 2: CÁC KỸ THUẬT GIẢI QUYẾT BÀI TOÁN .................................................. 18
2.1.

Nhận diện mã vạch bằng cách sử dụng mơ hình CNN ............................................ 18

2.1.1. Tích chập.................................................................................................................. 18

2.1.2. Mơ hình mạng nơ-ron tích chập ............................................................................ 18
2.1.3. Hoạt động của mơ hình CNN ................................................................................. 20
2.2.

Nhận diện mã vạch bằng cách sử dụng mơ hình mạng YOLO .............................. 20

2.2.1. Kiến trúc của YOLO .............................................................................................. 20
2.2.2. Kiến trúc của YOLOv5 .......................................................................................... 21
2.2.3. Hàm lỗi ..................................................................................................................... 23
2.2.4. Độ đo đánh giá......................................................................................................... 24
2.3.

Nhận diện mã vạch bằng cách sử dụng mô hình mạng Single Shot Detector ....... 27

2.3.1. Tổng quan về mơ hình mạng Single Shot Detector (SSD) ................................... 27
2.3.2. Kiến trúc mạng SSD ............................................................................................... 28
2.3.3. Các kỹ thuật chính trong mơ hình mạng SSD...................................................... 34
2.3.4. Ưu điểm và nhược điểm ......................................................................................... 36
CHƯƠNG 3: THỰC NGHIỆM ................................................................................................. 37
3.1.

Chuẩn bị dữ liệu .......................................................................................................... 37

3.2.

Huấn luyện mơ hình.................................................................................................... 38

3.3.

Nhận dạng .................................................................................................................... 41


3.4.

Giải mã ......................................................................................................................... 42
1


3.5.

Thử nghiệm và kết quả ............................................................................................... 44

CHƯƠNG 4: MỘT SỐ KẾT QUẢ THỰC NGHIỆM .......................................48
KẾT LUẬN .............................................................................................................54
TÀI LIỆU THAM KHẢO .....................................................................................56

2


DANH MỤC HÌNH ẢNH
Hình 1.1. Mã vạch UPC..................................................................................................... 10
Hình 1.2. Mã vạch EAN .................................................................................................... 11
Hình 1.3. Mã vạch code 39 ................................................................................................ 12
Hình 1.4. Mã vạch code 128 .............................................................................................. 13
Hình 1.5. Mã vạch 2 chiều................................................................................................. 13
Hình 2.1. Phép tích chập.................................................................................................... 18
Hình 2.2. Mơ hình mạng CNN .......................................................................................... 19
Hình 2.3. Cấu trúc của YOLO[7] ...................................................................................... 20
Hình 2.4. Cấu trúc mạng YOLOv5 ................................................................................... 22
Hình 2.5. Tỉ lệ giữa vùng giao nhau và vùng hợp nhau .................................................... 24
Hình 2.6. Cách hoạt động của mơ hình mạng SSD ........................................................... 28

Hình 2.7. Kiến trúc chung của mơ hình mạng SSD .......................................................... 29
Hình 2.8. Ví dụ kết quả dự đốn mỗi ơ trong Conv4_3 .................................................... 30
Hình 2.9. Đầu ra mong muốn ............................................................................................ 31
Hình 2.10. Khi chưa áp dụng thuật tốn NMS .................................................................. 33
Hình 2.11. Áp dụng thuật tốn NMS ................................................................................. 34
Hình 3.1. Giao diện cơng cụ gán nhãn Roboflow ............................................................. 38
Hình 3.2. Sơ đồ cấu trúc quá trình huấn luyện mơ hình .................................................... 39
Hình 3.3. Kết quả huấn luyện mơ hình YOLOv5.............................................................. 41
Hình 3.4. Q trình phát hiện và giải mã mã vạch ............................................................ 43
Hình 3.5. Kết quả của quá trình giải mã mã vạch ............................................................. 44

3


DANH MỤC BẢNG
Bảng 1.1. Đặc điểm của mã vạch 1D .................................................................................. 9
Bảng 1.2. Đặc điểm của mã vạch 2D ................................................................................ 14
Bảng 2.1. Bảng giải thích thơng số.................................................................................... 25
Bảng 2.2. So sánh mơ hình VGG16 với các mơ hình mạng ResNet, GoogleNet ............. 29
Bảng 3.1. Bảng kết quả huấn luyện các mơ hình YOLO .................................................. 45
Bảng 3.2. Bảng kết quả thử nghiệm tốc độ xử lý trên các phiên bản YOLO .................... 46
Bảng 3.3. Kết quả đánh giá phát hiện và giải mã với YOLO V5 ...................................... 47

4


LỜI CẢM ƠN
Trước hết, nhóm 14 chúng em xin chân thành gửi lời cảm ơn sâu sắc đến tất cả
các giảng viên trong khoa Công nghệ thông tin tại Trường Đại học Công nghiệp
Hà Nội. Nhờ sự truyền đạt của quý thầy cô, chúng em đã được tiếp cận với những

kiến thức nền tảng quan trọng về học sâu và trí tuệ nhân tạo. Đồng thời, chúng em
muốn bày tỏ lòng biết ơn đặc biệt đến giảng viên Tiến sĩ Nguyễn Mạnh Cường,
người đã đồng hành và hỗ trợ chúng em trực tiếp trong quá trình nảy sinh ý tưởng,
nghiên cứu và hoàn thành báo cáo đề tài này.
Chúng em cũng không quên gửi lời cảm ơn chân thành đến các thành viên khác
trong nhóm, những người đã đồng hành và hỗ trợ chúng em trong quá trình thực hiện
các đề tài liên quan. Sự đóng góp của các bạn khơng chỉ giúp chúng em về mặt tinh
thần mà cịn đóng vai trị quan trọng trong việc hồn thành nhiệm vụ cá nhân trong
báo cáo của nhóm.
Đồng thời, chúng em nhận thức rằng trong quá trình nghiên cứu và thực hiện
đề tài, khả năng, kiến thức, kỹ năng và trình độ của chúng em vẫn cịn hạn chế, khơng
tránh khỏi những sai sót kỹ thuật. Vì vậy, chúng em chân thành mong muốn được
lắng nghe ý kiến đóng góp từ quý thầy cô giảng viên và các thành viên khác trong
các nhóm nghiên cứu khác. Chúng em trân trọng mọi góp ý nhằm rút kinh nghiệm
và hồn thiện báo cáo tốt hơn trong tương lai.
Chúng em xin chân thành cảm ơn tất cả mọi người vì sự giúp đỡ và đóng góp
q báu của mình!

5


LỜI NĨI ĐẦU
Trong thời đại số hóa và dữ liệu lớn ngày nay, việc phát hiện và giải mã mã
vạch đã trở thành một nhiệm vụ quan trọng trong nhiều ngành công nghiệp và lĩnh
vực. Mã vạch là một phương pháp mã hóa thơng tin dựa trên các dãy các vạch đen
và trắng có độ rộng và khoảng cách khác nhau. Việc phân tích và giải mã mã vạch
là quan trọng để thu thập và xử lý thông tin sản phẩm, theo dõi hàng hóa, quản lý
kho, và nhiều ứng dụng khác.
Đề tài này tập trung vào việc tìm hiểu về phát hiện và giải mã mã vạch và các
phương pháp ứng dụng trong lĩnh vực này. Chúng em sẽ nghiên cứu về cấu trúc của

mã vạch và các quy tắc mã hóa, cũng như các phương pháp phân tích và giải mã mã
vạch hiệu quả.
Bên cạnh đó, chúng em sẽ tìm hiểu về các ứng dụng tiềm năng của phát hiện và
giải mã mã vạch trong các lĩnh vực khác nhau, bao gồm bán lẻ, vận chuyển và
logistics, quản lý sản phẩm, tiếp thị và theo dõi hàng hóa. Chúng tôi cũng sẽ xem xét
các thách thức và xu hướng mới trong lĩnh vực này, như mã vạch hai chiều, mã vạch
di động và ứng dụng của công nghệ mã vạch trong thực tế mở rộng như Internet of
Things (IoT) và truy vết nguồn gốc hàng hóa.
Đề tài phát hiện và giải mã mã vạch sẽ giúp chúng tôi hiểu rõ hơn về cách hoạt
động và ứng dụng của mã vạch trong thế giới kỹ thuật số hiện đại và mở ra những
khả năng mới trong việc tăng cường quản lý thơng tin và quy trình kinh doanh. Trong
báo cáo đề tài "Phát hiện và giải mã mã vạch sử dụng mơ hình học sâu", chúng em
sẽ sử dụng những kiến thức nền tảng đã được tìm hiểu trước đó để hồn thành các
chương sau:
Chương 1: Tổng quan về bài toán phát hiện và giải mã mã vạch

6


Trong chương này, chúng em sẽ giới thiệu về bài toán; xác định dữ liệu đầu ra
và dữ liệu đầu vào của bài toán; hướng tiếp cận bài toán.
Chương 2: Các kỹ thuật giải quyết bài toán
Sau khi xác định được yêu cầu bài toán, chúng em giới thiệu các phương pháp
hiện có để giải quyết nó, kèm theo các điểm mạnh và yếu của từng phương pháp.
Chương 3: Thực nghiệm
Chúng em chọn ra phương pháp tối ưu trong những phương pháp được đề xuất
ở chương 2 để thực nghiệm với bài tốn. Chúng em trình bày chi tiết về các bước
thực hiện và các kết quả thu được khi áp dụng kỹ thuật. Chúng em cũng sẽ so sánh
và đánh giá hiệu quả của kỹ thuật được đề xuất với các kỹ thuật khác được sử dụng
rộng rãi hiện nay và đưa ra các nhận xét chân thực.

Chương 4: Một số kết quả thực nghiệm
Chúng em tiến hành xây dựng chương trình và hiển thị kết quả dựa trên thực
nghiệm.
Chúng em hy vọng rằng đồ án này sẽ cung cấp một cái nhìn tổng quan mơ hình
học sâu và ứng dụng của nó trong bài tốn phát hiện và giải mã mã vạch. Chúng em
cũng hy vọng rằng kết quả chương trình sẽ cung cấp thơng tin hữu ích và đáng tin
cậy cho những người quan tâm đến lĩnh vực này.

7


CHƯƠNG I: TỔNG QUAN VỀ BÀI TOÁN PHÁT HIỆN VÀ GIẢI
MÃ MÃ VẠCH
1.1. Tổng quan về mã vạch
1.1.1. Giới thiệu về mã vạch
a) Khái niệm
Mã vạch (Barcode) là một công nghệ phổ biến hiện nay được sử dụng để thu
thập và nhận dạng dữ liệu thông qua một mã số, chữ số của một đối tượng nhất
định nào đó.
Mã vạch có độ nhỏ lớn khác nhau và có khoảng trống song song xen kẽ nhau.
Chúng được sắp xếp theo một quy tắc mã hóa để các máy quét và máy đọc mã
vạch có thể nhận dạng và đọc được thơng tin.
b) Lịch sử hình thành
Ý tưởng về mã vạch được nảy ra vào năm 1948 do Norman Joseph Woodland
và Bernard Silver phát triển. Ý tưởng phát triển của họ dựa trên mong muốn của
một vị chủ tịch buôn bán thức ăn là làm thế nào để có thể tự động kiểm tra tồn
bộ quy trình.
Ý tưởng đầu tiên là sử dụng mã Morse để in những vạch rộng hoặc hẹp dạng
thẳng đứng, sau đó họ chuyển sang sử dụng hình dạng “điểm đen” của mã vạch
với các vòng tròn đồng tâm. Sau đó họ đã gửi đến cơ quan quản lý sáng chế của

Mỹ vào ngày 20 tháng 10 năm 1949 để lấy bằng sáng chế. Và bằng sáng chế này
đã được phát hành ra thị trường vào ngày 7 tháng 10 năm 1952.
1.1.2. Các loại mã vạch
1.1.2.1. Mã vạch một chiều

8


Mã vạch 1 chiều (1D) cịn có tên gọi khác là mã vạch tuyến tính. Đây là
một trong những loại mã vạch thông dụng nhất hiện nay, với các vạch đen trắng
xen kẽ song song là những dữ liệu đã được mã hóa và thay đổi dựa theo một
chiều duy nhất là chiều ngang hoặc rộng.
Đặc điểm

Mã vạch 1D

Số lượng mã dữ liệu lưu trữ

8-15 ký tự

Hình dạng

Ngang và hình chữ nhật

Đọc dữ liệu

Theo chiều ngang

Vị trí quét


Thẳng đứng
Bảng 1.1. Đặc điểm của mã vạch 1D

Mã vạch 1D được chia thành nhiều loại khác nhau tùy theo dung lượng
thông tin, dạng thức thơng tin được mã hóa cũng như mục đích sử dụng:
• Mã vạch UPC (Universal Product Code): là một hệ thống mã vạch phổ
biến được sử dụng rộng rãi trong bán lẻ và ngành công nghiệp. Các phiên
bản của mã vạch UPC bao gồm UPC-A, UPC-B, UPC-C, UPC-D và
UPC-E.
o UPC-A là phiên bản phổ biến nhất, mã vạch gồm 12 chữ số được sử
dụng để định danh sản phẩm.
o UPC-B, UPC-C, UPC-D và UPC-E là phiên bản được sử dụng đặc biệt
cho mục đích đặc thù như bao bì nhỏ gọn hoặc định danh đặc biệt.

9


Hình 1.1. Mã vạch UPC

• Mã vạch EAN (European Article Number): là một hệ thống mã vạch sử
dụng rộng rãi ở châu Âu và trên toàn cầu. Các phiên bản của mã vạch
EAN bao gồm EAN-8, EAN-13 và EAN-14.
o EAN-8: Mã vạch 8 chữ số được sử dụng cho sản phẩm có khơng gian
hạn chế.
o EAN-13: Mã vạch 13 chữ số là hình thức phổ biến nhất, được sử dụng
để định danh sản phẩm.
o EAN-14: Mã vạch 14 chữ số được sử dụng cho việc định danh tổng
hợp, bao gồm thơng tin về đơn vị đóng gói.

10



Hình 1.2. Mã vạch EAN

• Mã vạch code 39: là loại hình mã vạch cho phép hiển thị cả chữ cái, chữ
số cà một vài ký hiệu đặc biệt (Tối đa 39 kí tự) để biểu thị các thơng tin
về sản phẩm. Nó khơng có chiều dài cố định như UPC và EAN, vì thế
mà dung lượng thơng tin của nó có thể chứa nhiều hơn là UPC hay EAN.

11


Hình 1.3. Mã vạch code 39

• Mã vạch code 128 là một loại mã vạch đa dạng và linh hoạt, thường được
sử dụng trong các ứng dụng công nghiệp và quản lý. Các phiên bản của
mã vạch Code 128 bao gồm Code 128 Auto, Code 128-A, Code 128-B
và Code 128-C.
o Code 128 Auto: Tự động chuyển đổi giữa các bộ ký tự Code 128-A,
Code 128-B và Code 128-C để tối ưu hóa mã hóa dữ liệu.
o Code 128-A: Mã hóa các ký tự số, chữ hoa, chữ thường, mã điều khiển
và các ký tự chuẩn ASCII
o Code 128-B: Mã hóa các ký tự số, chữ hoa, chữ thường và các ký tự
chuẩn ASCII.
o Code 128-C: Có khả năng nén 2 ký tự số trong 1 ký tự mã hóa.

12


Khu vực


Ký tự

trống

bắt đầu

Ký tự
Dữ liệu

kiểm tra

Ký tự
kết thúc

Khu vực
trống

Hình 1.4. Mã vạch code 128

1.1.2.2. Mã vạch hai chiều
Mã vạch 2 chiều có cấu tạo là một ma trận hình vuông trắng đen trong một
khối thống nhất. Các mã vạch này có khơng gian lưu trữ dữ liệu lớn gấp nhiều
lần với mã vạch 1 chiều. Đặc biệt thích hợp với các sản phẩm có kích thước
nhỏ và có thể quét ở khoảng cách xa.

Hình 1.5. Mã vạch 2 chiều

13



• Cell: Là các ô đen trắng chứa các đoạn mã nhị phân. Các ô này lần lượt
mang giá trị 0 và 1, tập hợp các cell chính là các thơng tin được lưu trữ
vào QR code.
• Hoa văn định vị: Ở bốn góc của QR code bố trí các ô vuông gọi là hoa
văn định vị. Nhờ vào hoa văn định vị này, camerra có thể xác định được
phạm vi QR code cũng như đọc được thông tin ngay cả trong trường hợp
QR code bị biến dạng, nhờ đó ta có thể quét được QR code một cách
nhanh chóng ở bất kỳ góc độ nào.
• Timing pattern: Các ơ vuông đen trắng được đặt xen kẽ nhau nhằm giúp
cho việc xác định toạ độ của QR code.
• Alignment pattern: Ở vùng phía dưới bên phải của QR code có một hình
vng chứa hình vng nhỏ khác bên trong, hoa văn này có tác dụng quan
trọng, giúp cho việc điều chỉnh lại những chênh lệch phát sinh do camera
bị lệch trong q trình qt.
• Thơng tin format: Xung quanh hoa văn định vị là phần chứa thông tin
format, quyết dịnh mức độ sửa chữa lỗi của QR code.
Đặc điểm

Mã vạch 2D

Số lượng mã dữ liệu lưu trữ

2000+ ký tự

Hình dạng

Hình vng, hình chữ nhật hoặc hình trịn

Đọc dữ liệu


Theo chiều ngang và chiều dọc

Vị trí quét

Bất kỳ
Bảng 1.2. Đặc điểm của mã vạch 2D

1.1.3. Ứng dụng của mã vạch
Mã vạch có nhiều ứng dụng trong nhiều lĩnh vực khác nhau trong cuộc sống,
bao gồm:

14


• Phân loại hàng hóa và quản lý kho: Trước đây khi chưa có mã vạch thì
chủ yếu việc phân biệt hàng hóa hoặc quản lý tồn kho đều làm bằng thủ
công, thu thập dữ liệu sản phẩm, thông tin và thuộc tính của sản phẩm.
Tuy nhiên, với mã barcode thì doanh nghiệp chỉ cần có máy đọc mã vạch
có kết nối với hệ thống quản trị kho hàng thì đã có thể kiểm tra lượng hàng
tồn kho đơn giản, nhanh chóng.
• Phân biệt hàng thật – giả: Barcode có chuỗi số định danh giúp người dùng
hồn tồn có thể kiểm tra được nguồn gốc sản phẩm, bước đầu xác minh
được hàng hóa là thật hay giả. Người tiêu dùng có thể quét mã bằng các
phần mềm, app đọc trên thiết bị điện thoại rất dễ dàng.
• Thanh tốn hàng hóa và giao dịch: Ngày nay, nhiều siêu thị và cửa hàng
đã dùng máy đọc mã vạch để giúp cho việc thanh tốn hàng hóa diễn ra
nhanh và chính xác hơn. Đồng thời mỗi sản phẩm bán đi doanh nghiệp và
người tiêu dùng đều kiểm soát được chất lượng và xuất xứ của sản phẩm.
• Y tế: Các cơ sở y tế cũng ứng dụng cơng nghệ kiểm sốt mã vạch để kiểm

tra thông tin bệnh nhân, hồ sơ bệnh án, khai bao y tế, tiêm ngừa, … để hạn
chế những sai sót khơng đáng có.
• Chuyển phát nhanh: Đa số các đơn vị giao hàng đề sử dụng mã barcode
để check các thông tin như: Tên hàng, người nhận, mã hàng, ….
• Hàng khơng: Các hãng hàng khơng cũng dùng mã barcode để quản lý hàng
hóa ký gửi của khách hàng đảm bảo không bị thất lạc và sai sót
• …
1.2. Phát biểu bài tốn
Phát hiện và giải mã mã vạch thuộc dạng bài tốn phân loại và trích xuất thơng
tin từ hình ảnh, trong đó các thuật tốn và kỹ thuật xử lý ảnh được áp dụng để phát
hiện và giải mã mã vạch
15


Đầu vào của bài tốn là dữ liệu hình ảnh mã vạch trên các sản phẩm đã được tiền
xử lý thành ma trận pixel và đầu ra bài toán bao gồm vùng chứa mã vạch và thông
tin dữ liệu đã được giải mã từ mã vạch.
Bài tốn này nhóm chúng em sử dụng mã vạch 1D bởi mã vạch 1D được sử dụng
rộng rãi, phổ biến cho tới ngày nay và mã vạch 1D đơn giản hơn về mặt cấu trúc và
quy trình đọc so với mã vạch 2D.
Hướng giải quyết bài tốn:
• Phát hiện mã vạch: Xác định vị trí của mã vạch 1D trong hình ảnh. Điều này
có thể được thực hiện bằng cách tìm kiếm các thành phần đặc trưng của mã
vạch, chẳng hạn như thanh đen/trắng và các dãy phần tử của mã vạch.
• Giải mã mã vạch: Áp dụng quy tắc mã hóa của mã vạch 1 chiều để chuyển
đổi dãy các thanh đen/trắng thành thông tin dữ liệu tương ứng. Thông tin này
thường là các chuỗi số hoặc ký tự.
Trong phạm vi bài toán của nhóm bạn, các bước thực hiện bao gồm:
• Sử dụng hình ảnh đầu vào là ảnh mã vạch 1 chiều. Điều này có nghĩa là hình
ảnh chứa một dãy thanh đen và trắng tạo thành mã vạch 1D.

• Tiến hành thực nghiệm trên một bộ dữ liệu có khoảng 3000 ảnh để huấn
luyện và kiểm tra thuật toán. Bộ dữ liệu này nên chứa các mã vạch của các
sản phẩm trong siêu thị hoặc các sản phẩm khác sử dụng mã vạch 1D.
• Áp dụng các phương pháp phát hiện mã vạch để xác định vị trí của mã vạch
trong ảnh. Các phương pháp này có thể bao gồm việc tìm kiếm các thành
phần đặc trưng của mã vạch, như các thanh đen và trắng, hoặc phân tích dãy
phần tử của mã vạch.
• Sau khi xác định được vị trí của mã vạch, áp dụng quy tắc mã hóa của mã
vạch 1D để giải mã dãy thanh đen và trắng thành thông tin dữ liệu tương

16


ứng. Thông tin này thường là các chuỗi số hoặc ký tự, thể hiện thông tin về
sản phẩm hoặc các thuộc tính khác.
➢ Với cách tiếp cận trên, chúng em có thể xây dựng một hệ thống phát hiện và
giải mã mã vạch 1D từ hình ảnh. Tuy nhiên, để đạt được kết quả tốt, việc lựa
chọn và tinh chỉnh các thuật toán và kỹ thuật xử lý ảnh phù hợp là rất quan
trọng.

17


CHƯƠNG 2: CÁC KỸ THUẬT GIẢI QUYẾT BÀI TOÁN
2.1. Nhận diện mã vạch bằng cách sử dụng mơ hình CNN
2.1.1. Tích chập
Tích chập (convolution) được sử dụng đầu tiên trong xử lý tín hiệu số (signal
processing). Nhờ vào nguyên lý biến đổi thông tin, các nhà khoa học đã áp dụng
kĩ thuật này vào xử lý ảnh và video số. Để dễ hình dung, chúng ta có thể xem tích
chập như một cửa sổ trượt (sliding window) áp đặt lên một ma trận.


Hình 2.1. Phép tích chập

Ma trận bên trái là một ảnh xám, mỗi giá trị của ma trận tương đương với
một điểm ảnh (pixel) có giá trị biến thiên từ 0 đến 255. Sliding window cịn có tên
gọi là kernel, filter hay feature detector. Ở đây, ta dùng một ma trận filter kích
thước 3×3 nhân từng thành phần tương ứng với ma trận ảnh bên trái. Giá trị đầu
ra do tích của các thành phần này cộng lại. Kết quả của tích chập là một ma trận
sinh ra từ việc trượt ma trận filter và thực hiện tích chập cùng lúc lên toàn bộ ma
trận ảnh bên trái.
2.1.2. Mơ hình mạng nơ-ron tích chập
Mơ hình CNN chỉ đơn giản gồm một vài layer của convolution kết hợp với
các hàm kích hoạt phi tuyến như ReLU hay tanh để tạo ra thông tin ở mức trừu
tượng hơn cho các layer tiếp theo.

18


Trong mơ hình mạng nơ-ron truyền thẳng (feedforward nơ-ron network), các
layer kết nối trực tiếp với nhau thông qua một trọng số w (weighted vector). Các
layer này còn được gọi là có kết nối đầy đủ (fully connected layer) hay affine
layer.
Trong mơ hình CNN thì ngược lại. Các layer liên kết được với nhau thông
qua cơ chế convolution. Layer tiếp theo là kết quả convolution từ layer trước đó,
nhờ vậy mà ta có được 110 các kết nối cục bộ. Nghĩa là mỗi nơ-ron ở layer tiếp
theo sinh ra từ filter áp đặt lên một vùng ảnh cục bộ của nơron layer trước đó. Mỗi
layer như vậy được áp đặt các filter khác nhau, thơng thường có vài trăm đến vài
nghìn filter như vậy. Một số layer khác như pooling/subsampling layer dùng để
chắt lọc lại các thơng tin hữu ích hơn (loại bỏ các thơng tin nhiễu).
Trong suốt q trình huấn luyện, CNN sẽ tự động học được các thông số cho

các filter. Ví dụ, trong nhiệm vụ phân lớp ảnh như được minh họa trong hình 2,
CNN sẽ cố gắng tìm ra thơng số tối ưu cho các filter tương ứng theo thứ tự raw
pixel > edges > shapes > facial > high-level features. Layer cuối cùng được dùng
để phân lớp ảnh.
Minh họa kiến trúc CNN dùng trong phân loại ảnh:

Hình 2.2. Mơ hình mạng CNN

CNN có tính bất biến và tính kết hợp cục bộ (Location Invariance and
Compositionality). Với cùng một đối tượng, nếu đối tượng này được chiếu theo
19


các góc độ khác nhau (translation, rotation, scaling) thì độ chính xác của thuật
tốn sẽ bị ảnh hưởng đáng kể. Pooling layer sẽ cho tính bất biến đối với phép dịch
chuyển (translation), phép quay (rotation) và phép co giãn (scaling). Tính kết hợp
cục bộ cho ta các cấp độ biểu diễn thông tin từ mức độ thấp đến mức độ cao và
trừu tượng hơn thông qua convolution từ các filter. Đó là lý do tại sao CNN cho
ra mơ hình với độ chính xác rất cao.
2.1.3. Hoạt động của mơ hình CNN
Mơ hình CNN được hình thành bằng cách kết nối các layer nêu trên lại với
nhau. Mơ hình bắt đầu với Convolutional Layer. ReLU Layer thường được cài đặt
ngay sau Convolutional Layer hoặc thậm chí kết hợp cả hai layer này thành một
layer. Các layer tiếp theo có thể là Convolutional hay Pooling tùy theo kiến trúc
mà ta muốn xây dựng. Cuối cùng sẽ là Fully-Connected Layer để tiến hành phân
lớp.
2.2. Nhận diện mã vạch bằng cách sử dụng mơ hình mạng YOLO
2.2.1. Kiến trúc của YOLO
Ảnh đầu vào được chia thành các SxS ô lưới, thường sẽ là 3x3, 7x7, ... Sau
đó thực hiện qt một mạng tích chập đơn qua từng ô lưới. Đầu ra của mô hình là

xác xuất dự đốn và hộp giới hạn bao quanh đối tượng

Hình 2.3. Cấu trúc của YOLO[7]

Quá trình phát hiện vật thể của mạng Yolo gồm ba bước chính.
Hầu hết các hệ thống dựa trên mạng học sâu khác đều sử dụng các bộ phân
loại hoặc bộ định vị để phát hiện một đối tượng trong ảnh. Những mô hình này
20


được áp dụng cho một hình ảnh ở nhiều vị trí và tỷ lệ khác nhau. So với các
phương pháp nhận diện đối tượng thơng thường, YOLO cho thấy nó có nhiều ưu
điểm. Thay vì sử dụng hai khâu phân loại và định vị đối tượng thì YOLO tích hợp
cả hai bài toán phân loại và định vị đối tượng.
Đầu ra của mơ hình YOLO là một vector bao gồm các thành phần:
yT = [p0 ,(t x , t y , t w , t h ),(p1,p2 ,...,pc )]

4.1

Trong đó:
• p0: xác suất dự đoán vật thể xuất hiện trong hộp giới hạn.
• tx, ty: tọa độ tâm; tw, th: chiều rộng, cao của hộp giới hạn.
• (p1 , p 2 ,..., pc ) : vector phân phối xác suất dự đoán các lớp đối tượng.
Việc huấn luyện mạng YOLO nhằm tối ưu hóa hàm mục tiêu bao gồm các
thành phần sau:

Ltotal = Lclassification + Llocalization + Lconfidence

4.2


Trong đó:
• Lclassification: lỗi phân loại của việc dự đoán loại nhãn của đối tượng.
• Llocalization: lỗi dự đốn vị trí bao gồm tọa độ tâm, chiều rộng, cao của
vùng bao quanh đối tượng (x, y, w, h). Trong đó, (x, y) là tọa độ tâm, w
là chiều rộng và h là chiều cao của vùng bao quanh đối tượng phát hiện
được.
• Lconfidence: lỗi của việc dự đoán hộp giới hạn so với nhãn thực tế tại vùng
đó.
2.2.2. Kiến trúc của YOLOv5

21


Hình 2.4. Cấu trúc mạng YOLOv5

YOLOv5 là một dự án mã nguồn mở bao gồm một họ các mơ hình phát
hiện đối tượng và các phương pháp phát hiện dựa trên mơ hình YOLO được đào
tạo trước trên tập dữ liệu COCO. Nó được Ultralytics duy trì và đại diện cho
nghiên cứu mã nguồn mở, được Glenn Jocher phát hành bằng khung phần mềm
Pytorch sử dụng ngôn ngữ Python.
- Backbone: là một mạng neural tích chập sử dụng CSPDarknet để trích xuất
đặc trưng từ các ảnh đầu vào của tập dữ liệu huấn luyện. Trong các phiên bản
trước, YOLOv3 sử dụng Darknet-53 làm backbone, YOLOv4 đã cải tiến mơ
hình Darknet-53 bằng cách thay các khối ResNet thông thường bằng các khối
CSPResNet. Trong phiên bản YOLOv5, backbone sử dụng cấu trúc mạng

22


BottleNeckCSP, giúp tăng khả năng học của mạng CNN, giảm khối lượng

tính tốn và giảm chi phí bộ nhớ.
- Neck: thực hiện tổng hợp các bản đồ đặc trưng của đối tượng dựa vào SPP,
PAN.
• Spatial Pyramid Pooling (SPP): sử dụng để tối ưu các đặc trưng toàn cục
(golobal feature) và cục bộ (local region feature).
• Path Aggregation Network (PAN): tổng hợp thông tin từ tất cả các tầng tại
một đầu ra duy nhất.
-

Head: đưa ra các kết quả dự đoán hộp giới hạn và phân phối xác xuất của các
lớp đối tượng.

2.2.3. Hàm lỗi
Hàm lỗi cho biết cách điều chỉnh trọng số để giảm khối lượng tính tốn.
Hàm lỗi CIoU giới thiệu hai khái niệm mới so với hàm lỗi IoU.
Khái niệm đầu tiên là khái niệm về khoảng cách điểm trung tâm, là khoảng
cách giữa điểm trung tâm của vùng bao thực và điểm trung tâm của vùng bao dự
đoán.

LCIoU = 1 − IoU +

 2 ( b,b gt )
c2

4.3

+ v

Trong đó:






IoU: được tính theo cơng thức (4).
b và bgt: các điểm chính giữa của vùng bao dự đoán và vùng bao thực tế.
ρ: khoảng cách Euclidean.
c: độ dài đường chéo của vùng bao nhỏ nhất giữa vùng bao dự đốn và
vùng bao thực tế.
• v: đo tính nhất qn của tỷ lệ khung hình đươc tính theo cơng thức (5).
• α: tham số cân bằng dương được tính theo cơng thức (6).
23


Khái niệm thứ hai là Intersection over Union (IoU) đo lường sự chồng chéo
giữa các vùng bao thực tế và các vùng bao dự đốn. Nó là tỷ lệ giữa vùng giao và
vùng hợp của hộp giới hạn thực tế và hộp giới hạn dự đoán.

| B  B gt |
IoU =
| B  B gt |

4.4

Hình ảnh phía dưới mô tả tỉ lệ giữa vùng giao và vùng hợp của vùng bao
thực tế và vùng bao dự đốn.

Hình 2.5. Tỉ lệ giữa vùng giao nhau và vùng hợp nhau

Trong đó: B = (x, y, w, h) là vùng bao dự đoán; Bgt = (xgt, ygt, wgt, hgt) là

vùng bao thực.

w gt
w
v = 2 (arctan gt − arctan )2

h
h
4

4.5

Trong đó: wgt, hgt là chiều rộng và chiều cao của vùng bao thực tế; w, h là
chiều cao và chiều rộng của vùng bao dự đoán.

v
=
( 1 − IoU ) + v

4.6

2.2.4. Độ đo đánh giá

24


×