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

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

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệ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 đã đ

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 : Nguyễn Chí Dũng – 2020601153 Hồng Hữu Duy – 2020600230 Vũ Quang Trường – 2020601158 Hà Nội - 2023 MỤC LỤC MỤC LỤC DANH MỤC HÌNH ẢNH DANH MỤC BẢNG LỜI CẢM ƠN LỜI NÓI ĐẦU 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 mã vạch 1.1.1 Giới thiệu mã vạch 1.1.2 Các loại mã vạch 1.1.3 Ứng dụng mã vạch 14 1.2 Phát biểu 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 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 mơ hình CNN 20 2.2 Nhận diện mã vạch cách sử dụng mơ hình mạng YOLO 20 2.2.1 Kiến trúc YOLO 20 2.2.2 Kiến trúc 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 cách sử dụng mơ hình mạng Single Shot Detector 27 2.3.1 Tổng quan 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 mơ hình mạng SSD 34 2.3.4 Ưu điểm nhược điểm 36 CHƯƠNG 3: THỰC NGHIỆM 37 3.1 Chuẩn bị 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 3.5 Thử nghiệm kết 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 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 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 YOLO[7] 20 Hình 2.4 Cấu trúc mạng YOLOv5 22 Hình 2.5 Tỉ lệ vùng giao vùng hợp 24 Hình 2.6 Cách hoạt động mơ hình mạng SSD 28 Hình 2.7 Kiến trúc chung mơ hình mạng SSD 29 Hình 2.8 Ví dụ kết dự đốn Conv4_3 30 Hình 2.9 Đầu mong muốn 31 Hình 2.10 Khi chưa áp dụng thuật toán NMS 33 Hình 2.11 Áp dụng thuật toá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 trình huấn luyện mơ hình 39 Hình 3.3 Kết huấn luyện mơ hình YOLOv5 41 Hình 3.4 Quá trình phát giải mã mã vạch 43 Hình 3.5 Kết trình giải mã mã vạch 44 DANH MỤC BẢNG Bảng 1.1 Đặc điểm mã vạch 1D Bảng 1.2 Đặc điểm 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 mơ hình mạng ResNet, GoogleNet 29 Bảng 3.1 Bảng kết huấn luyện mơ hình YOLO 45 Bảng 3.2 Bảng kết thử nghiệm tốc độ xử lý phiên YOLO 46 Bảng 3.3 Kết đánh giá phát giải mã với YOLO V5 47 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 giảng viên khoa Công nghệ thông tin Trường Đại học Công nghiệp Hà Nội Nhờ truyền đạt quý thầy cô, chúng em tiếp cận với kiến thức tảng quan trọng học sâu 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 hỗ trợ chúng em trực tiếp trình nảy sinh ý tưởng, nghiên cứu hoàn thành báo cáo đề tài Chúng em không quên gửi lời cảm ơn chân thành đến thành viên khác nhóm, người đồng hành hỗ trợ chúng em trình thực đề tài liên quan Sự đóng góp bạn không giúp chúng em mặt tinh thần mà cịn đóng vai trị quan trọng việc hoàn thành nhiệm vụ cá nhân báo cáo nhóm Đồng thời, chúng em nhận thức trình nghiên cứu thực đề tài, khả năng, kiến thức, kỹ trình độ chúng em cịn hạn chế, khơng tránh khỏi sai sót kỹ thuật Vì vậy, chúng em chân thành mong muốn lắng nghe ý kiến đóng góp từ quý thầy cô giảng viên thành viên khác nhóm nghiên cứu khác Chúng em trân trọng góp ý nhằm rút kinh nghiệm hoàn thiện báo cáo tốt tương lai Chúng em xin chân thành cảm ơn tất người giúp đỡ đóng góp q báu mình! LỜI NĨI ĐẦU Trong thời đại số hóa liệu lớn ngày nay, việc phát giải mã mã vạch trở thành nhiệm vụ quan trọng nhiều ngành công nghiệp lĩnh vực Mã vạch phương pháp mã hóa thơng tin dựa dãy vạch đen trắng có độ rộng khoảng cách khác Việc phân tích giải mã mã vạch quan trọng để thu thập xử lý thơng tin sản phẩm, theo dõi hàng hóa, quản lý kho, nhiều ứng dụng khác Đề tài tập trung vào việc tìm hiểu phát giải mã mã vạch phương pháp ứng dụng lĩnh vực Chúng em nghiên cứu cấu trúc mã vạch quy tắc mã hóa, phương pháp phân tích giải mã mã vạch hiệu Bên cạnh đó, chúng em tìm hiểu ứng dụng tiềm phát giải mã mã vạch lĩnh vực khác nhau, bao gồm bán lẻ, vận chuyển logistics, quản lý sản phẩm, tiếp thị theo dõi hàng hóa Chúng tơi xem xét thách thức xu hướng lĩnh vực này, mã vạch hai chiều, mã vạch di động ứng dụng công nghệ mã vạch thực tế mở rộng Internet of Things (IoT) truy vết nguồn gốc hàng hóa Đề tài phát giải mã mã vạch giúp hiểu rõ cách hoạt động ứng dụng mã vạch giới kỹ thuật số đại mở khả việc tăng cường quản lý thông tin quy trình kinh doanh Trong báo cáo đề tài "Phát giải mã mã vạch sử dụng mơ hình học sâu", chúng em sử dụng kiến thức tảng tìm hiểu trước để hoàn thành chương sau: Chương 1: Tổng quan toán phát giải mã mã vạch Trong chương này, chúng em giới thiệu toán; xác định liệu đầu liệu đầu vào toán; hướng tiếp cận toán Chương 2: Các kỹ thuật giải toán Sau xác định yêu cầu toán, chúng em giới thiệu phương pháp có để giải nó, kèm theo điểm mạnh yếu phương pháp Chương 3: Thực nghiệm Chúng em chọn phương pháp tối ưu phương pháp đề xuất chương để thực nghiệm với tốn Chúng em trình bày chi tiết bước thực kết thu áp dụng kỹ thuật Chúng em so sánh đánh giá hiệu kỹ thuật đề xuất với kỹ thuật khác sử dụng rộng rãi đưa nhận xét chân thực Chương 4: Một số kết thực nghiệm Chúng em tiến hành xây dựng chương trình hiển thị kết dựa thực nghiệm Chúng em hy vọng đồ án cung cấp nhìn tổng quan mơ hình học sâu ứng dụng toán phát giải mã mã vạch Chúng em hy vọng kết chương trình cung cấp thơng tin hữu ích đáng tin cậy cho người quan tâm đến lĩnh vực 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 mã vạch 1.1.1 Giới thiệu mã vạch a) Khái niệm Mã vạch (Barcode) công nghệ phổ biến sử dụng để thu thập nhận dạng liệu thông qua mã số, chữ số đối tượng định Mã vạch có độ nhỏ lớn khác có khoảng trống song song xen kẽ Chúng xếp theo quy tắc mã hóa để máy quét máy đọc mã vạch nhận dạng đọc thơng tin b) Lịch sử hình thành Ý tưởng mã vạch nảy vào năm 1948 Norman Joseph Woodland Bernard Silver phát triển Ý tưởng phát triển họ dựa mong muốn vị chủ tịch buôn bán thức ăn làm để tự động kiểm tra tồn quy trình Ý tưởng sử dụng mã Morse để in vạch rộng hẹp dạng thẳng đứng, sau họ chuyển sang sử dụng hình dạng “điểm đen” mã vạch với vòng tròn đồng tâm Sau họ gửi đến quan quản lý sáng chế Mỹ vào ngày 20 tháng 10 năm 1949 để lấy sáng chế Và sáng chế phát hành thị trường vào ngày tháng 10 năm 1952 1.1.2 Các loại mã vạch 1.1.2.1 Mã vạch chiều Mã vạch chiều (1D) cịn có tên gọi khác mã vạch tuyến tính Đây loại mã vạch thơng dụng nay, với vạch đen trắng xen kẽ song song liệu mã hóa thay đổi dựa theo chiều chiều ngang rộng Đặc điểm Mã vạch 1D Số lượng mã liệu lưu trữ 8-15 ký tự Hình dạng Ngang hình chữ nhật Đọc liệu Theo chiều ngang Vị trí quét Thẳng đứng Bảng 1.1 Đặc điểm mã vạch 1D Mã vạch 1D chia thành nhiều loại khác tùy theo dung lượng thơng tin, dạng thức thơng tin mã hóa mục đích sử dụng: • Mã vạch UPC (Universal Product Code): hệ thống mã vạch phổ biến sử dụng rộng rãi bán lẻ ngành công nghiệp Các phiên mã vạch UPC bao gồm UPC-A, UPC-B, UPC-C, UPC-D UPC-E o UPC-A phiên phổ biến nhất, mã vạch gồm 12 chữ số sử dụng để định danh sản phẩm o UPC-B, UPC-C, UPC-D UPC-E phiên sử dụng đặc biệt cho mục đích đặc thù bao bì nhỏ gọn định danh đặc biệt Như biết, mạng YOLO mạng nơ ron mạnh việc phát nhận dạng đối tượng ảnh Đã có nhiều phiên YOLO khác từ YOLOV1 lần đầu xuất năm 2016 YOLOV7 cơng bố năm 2022 Mỗi phiên có ưu điểm nhược điểm riêng Trong khuôn khổ báo cáo này, nhóm em khơng trình bày lại mạng YOLO mà chúng em sử dụng số phiên từ YOLOV2 đến YOLOV7 để huấn luyện lại đánh giá thử nghiệm cho phát mã vạch Tuy nhiên, mạng YOLO gốc công bố cho cộng đồng dùng chung lại huấn luyện DỮ LIỆU ImageNet[10] mà huấn luyện cho đối tượng mã vạch Do đó, báo này, nhóm em sử dụng DỮ LIỆU BarcodeEpu[11] tự thu thập gán nhãn trình bày mục 3.1 để huấn luyện lại mơ hình đánh giá thử nghiệm độ xác trình phát mã vạch Kết thử nghiệm trình bày mục 3.5 3.4 Giải mã Hệ thống mạng YOLO lấy liệu đầu vào từ camera để phát vùng mã vạch (hình 3.4 (b)) cắt vùng mã vạch để loại bỏ bớt (hình 3.4 (c)) Tuy nhiên, liệu mã vạch thực tế thu nhận từ camera chụp trực tiếp thường khơng có chiều thẳng đứng mong muốn mà thường bị xoay minh họa hình 3.4 (c) Vì thế, nhóm em áp dụng số phương pháp biến đổi hình thái hình (hình 3.4 (d), (e)) để tiền xử lý hình ảnh Sau q trình đó, hình ảnh mã vạch (màu trắng) phân tách so với (màu đen) thể hình 3.4 (e) Áp dụng phương pháp phát biên dạng phân loại diện tích đường viền, xác định tọa độ bốn đỉnh hộp giới hạn cụm điểm ảnh màu trắng lớn (vùng mã vạch) Từ bốn tọa độ này, áp dụng phương pháp nắn ảnh đưa hình ảnh mã vạch bị nghiêng, xoay méo dạng phù hợp để giải mã Bộ giải 42 mã Pyzbar, thực quét vùng mã vạch lần để tìm vùng mã vạch phù hợp để giải mã (hình 3.4 (h)) Hình 3.4 Quá trình phát giải mã mã vạch Thư viện Pyzbar nhà nghiên cứu cơng bố với mơ hình phù hợp cho bước giải mã mã vạch đồ án nhóm em Đầu vào thư viện Pyzbar ảnh đầu YOLO sau xử lý hậu kỳ, đầu liệu định dạng mã vạch Trong báo cáo này, chúng em không tiến hành đánh giá chi tiết hiệu riêng thư viện mà sử dụng cơng cụ trung gian đánh giá hiệu toàn hệ thống thực tế Kết thử nghiệm trình bày chi tiết chương Pyzbar thư viện mã nguồn mở viết ngôn ngữ Python phát triển dựa thư viện Zbar, sử dụng phổ biến cho việc đọc mã vạch từ nhiều thiết bị khác camera, cảm biến, … Zbar hỗ trợ hệ điều hành Linux, Microsoft Windows, hệ điều hành di động Android, IOS Tính thư viện Zbar: • Hỗ trợ giải mã gần toàn loại mã vạch chiều EAN – 13, EAN – 8, UPC – A, UPC – E, Code 128, Code 39, … mã vạch hai chiều QR 43 • Quét mã vạch thời gian thực từ luồng hình ảnh • Hỗ trợ ngơn ngữ lập trình C++, Python, Perl, Ruby • Thích hợp cho ứng dụng nhúng vi xử lý/phần cứng giá rẻ Kết đầu trình giải mã định dạng liệu mã vạch Định dạng: EAN13 Dữ liệu: 8934683008560 Hình 3.5 Kết trình giải mã mã vạch 3.5 Thử nghiệm kết Để đánh giá hiệu mơ hình YOLO, chúng em sử dụng tiêu độ xác P (Precision), độ triệu hồi R (Recall), Độ xác trung bình mAP (Mean Average Precision) Trong đó, độ xác thu tập liệu thử nghiệm thước đo đánh giá độ hiệu mơ hình qua thơng số độ xác P độ triệu hồi R Chúng em thực thử nghiệm máy tính máy tính sử dụng CPU Intel Core i5-11400H, GPU NVIDIA GeForce GTX 1650, nhớ Ram 8GB Ngơn ngữ lập trình để thực trình thu thập phát hiện, nhận dạng mã vạch kết nối mạng Python Ngôn ngữ lập trình phần cứng cho Adruino C++ Các thử nghiệm 44 phát mã vạch đánh giá hai pha: pha trực tuyến pha không trực tuyến Ở pha khơng trực tuyến nhóm em sử dụng DỮ LIỆU tự thu thập BarcodeEpu[11] Ở pha trực tuyến nhóm em sử dụng hình ảnh thu thập trực tiếp từ camera thơng thường Các thử nghiệm tiến hành nghiên cứu gồm: (1) Khảo sát, đánh giá trình phát mã vạch thông qua nhiều phiên YOLO khác nhau; (2) Đánh giá độ xác thời gian đáp ứng tồn hệ thống Kết huấn luyện mơ hình sử dụng phiên khác YOLO tập liệu huấn luyện Các trọng số trình huấn luyện thể bảng 3.2: • Kích thước lơ liệu huấn luyện (Batch size): 16 • Số lần thuật tốn huấn luyện qt qua tồn lơ liệu (Epochs): 300 Phương pháp (Framework) Precision (%) Recall (%) mAP@0.5 (%) YOLOv2 tiny (Darknet) 96 95 94.1 YOLOv3 tiny (Pytorch) 98.1 96.9 98.3 YOLOv4 tiny (Pytorch) 98,3 98.8 98.3 YOLOv5 nano (Pytorch) 99.8 99.9 99.8 YOLOv6 nano (Pytorch) 99.5 98.6 99.1 YOLOv7 tiny (Pytorch) 97.6 98.2 98.6 Bảng 3.1 Bảng kết huấn luyện mơ hình YOLO Kết bảng 3.1 cho thấy, phiên YOLOv5 hiệu DỮ LIỆU BarcodeEpu Kết đạt với độ xác, độ triệu hồi, số mAP đạt 99.8; 99.9%; 99,8% Phiên YOLOv2 đạt kết 45 tất tiêu chí 96,0%; 95,0% 94,1% Một điều đặc biệt không hẳn phiên cao đạt kết cao DỮ LIỆU Đối với BarcodeEpu chúng em phiên V6 V7 lại có kết thấp V5 Ngoài việc so sánh kết độ xác trên, chúng em cịn tiến hành thực khảo sát thời gian thực phiên YOLO để phát mã vạch Đánh giá thử nghiệm phiên YOLO chạy tảng CPU GPU Kết thời gian đáp ứng trình bày bảng 3.2 sau đây: Phương pháp (Framework) YOLOv2 tiny (Darknet) Tốc độ xử lý khung hình (CPU) 48.62 ms Tốc độ xử lý khung hình (GPU) 22.46 ms YOLOv3 tiny (Pytorch) 75.59 ms 14.40 ms YOLOv4 tiny (Pytorch) 59.99 ms 24.99 ms YOLOv5 nano (Pytorch) 48.30 ms 14.61 ms YOLOv6 nano (Pytorch) 53.50 ms 23.16 ms YOLOv7 tiny (Pytorch) 95.16 ms 23.28 ms Bảng 3.2 Bảng kết thử nghiệm tốc độ xử lý phiên YOLO Kết bảng 3.2 cho thấy mạng YOLOv5 có thời gian phát sử dụng GPU thấp nhóm với YOLOv3 (14ms) sử dụng CPU kết cách xa kết cao 48ms so với 75ms 95ms Phiên YOLOv5 phù hợp với tốn phát mã vạch nhóm em Do đó, phần thử nghiệm tồn mơ hình tiếp theo, nhóm em sử dụng phiên YOLOv5 Trong phần chúng em tiến hành đánh giá hệ thống thực tế mơ hình YOLOv5 huấn luyện toàn DỮ LIỆU BarcodeEpu[11] Việc đánh 46 giá thực 200 mã vạch dán sẵn hộp minh họa hình 3.4 Độ phân giải ảnh thực tế thu nhận 1080x1920 điểm ảnh Tốc độ thu nhận ảnh 30 fps; YOLO chạy máy tính tảng sử dụng CPU Intel Core i5-11400H GPU NVIDIA GeForce GTX 1650, nhớ Ram 8GB Kết đánh giá gồm: Độ xác phát mã vạch kết hợp với độ xác giải mã mã vạch (x%); Thời gian trung bình từ thu nhận ảnh đến giải mã xong mã vạch (ttb) Kết hai giá trị thể bảng 3.3 sau đây: CPU GPU Độ xác x(%) (phát + giải mã) Thời gian đáp ứng ttb(ms) Độ xác x(%) (phát + giải mã) Thời gian đáp ứng ttb(ms) 99,5 59.86 100 16.91 Bảng 3.3 Kết đánh giá phát giải mã với YOLO V5 Kết cho thấy hệ thống phát với độ xác cao lên tới 100% sử dụng GPU Thời gian đáp ứng nhanh, trung bình 16,91ms, xấp xỉ 59fps cho ảnh mã vạch Ngồi ra, độ xác (Acc) chúng em thực đạt 99,5% nhóm em nhận thấy lần sai cấu tác động phần cứng bị nhiễu ảnh chụp lệch không bắt mã vạch Do vậy, giải pháp đề xuất sử dụng YOLO Pyzbar để phát giải mã mã vạch hệ thống thơng minh hồn tồn phù hợp để triển khai ứng dụng thực tế 47 CHƯƠNG 4: MỘT SỐ KẾT QUẢ THỰC NGHIỆM Bước 1: Import thư viện import torch import cv2 from pyzbar import pyzbar Bước 2: Chúng em kiểm tra xem có sẵn GPU hỗ trợ CUDA không thiết lập thiết bị phù hợp Sau đó, tải mơ hình phát đối tượng YOLOv5 huấn luyện mô hình tùy chỉnh từ kho lưu trữ Ultralytics đặt thiết bị chọn để dùng cho việc suy luận xử lý device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu') model = torch.hub.load('ultralytics/yolov5', 'custom',path='barcode_detection.pt').to(device) Bước 3: Chúng em sử dụng thư viện OpenCV để mở kết nối với camera (được ký hiệu để sử dụng camera mặc định) Sau đó, vịng lặp vơ hạn (while cap.isOpened()), đọc khung hình từ camera cap = cv2.VideoCapture(0) while cap.isOpened(): _, frame = cap.read() results = model(frame) detections = results.pandas().xyxy[0] Bước 4: Tiếp tục, chúng em sử dụng vòng lặp for để duyệt qua phát đối tượng detections đoạn mã duyệt qua phát đối tượng DataFrame’Detection’ trích xuất thơng tin tọa độ, lớp, độ chắn đối tượng để sử dụng cho mục đích xử lý hiển thị thơng tin 48 for i, detection in detections.iterrows(): x1, y1, x2, y2 = detection[['xmin', 'ymin', 'xmax', 'ymax']] x1, y1, x2, y2 = [round(num) for num in [x1, y1, x2, y2]] class_id = detection['class'] confidence = detection['confidence'] Bước 5: Chúng em sử dụng thư viện OpenCV để vẽ hộp chữ nhật với độ dày pixel, màu xanh xung quanh vùng chứa đối tượng phát frame, dựa tọa độ x1, y1, x2, y2 hộp giới hạn xác định trước cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2) Bước 6: Đoạn mã tạo nhãn chứa thông tin loại đối tượng (trong trường hợp "Barcode") với độ chắn việc phát hiện, đặt nhãn lên khung hình vị trí kích thước phù hợp để hiển thị thông tin đối tượng phát label = f'{"Barcode"} {confidence:.2f}' label_size, baseline = cv2.getTextSize(label, cv2.FONT_HERSHEY_SIMPLEX, 0.5, 1) cv2.rectangle(frame, (x1, y1), (x1 + label_size[0], y1 label_size[1] - baseline), (0, 255, 0), cv2.FILLED) cv2.putText(frame, label, (x1, y1 - baseline), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 0), 1) cropped_img = frame[y1:y2, x1:x2] gray = cv2.cvtColor(cropped_img, cv2.COLOR_BGR2GRAY) barcodes = pyzbar.decode(gray) 49 for barcode in barcodes: data = barcode.data.decode("utf-8") • cropped_img = frame[y1:y2, x1:x2]: Dùng để cắt (crop) phần ảnh chứa đối tượng phát từ frame Đoạn sử dụng tọa độ (x1, y1) (x2, y2) để chọn phần ảnh cần cắt từ frame gán vào cropped_img • gray = cv2.cvtColor(cropped_img, cv2.COLOR_BGR2GRAY): Chuyển đổi phần ảnh cắt sang ảnh xám (grayscale) Hàm chuyển đổi từ không gian màu BGR (màu ảnh RGB OpenCV) sang không gian màu xám (ảnh xám) để dễ dàng xử lý • barcodes = pyzbar.decode(gray): Sử dụng thư viện pyzbar để quét mã vạch (barcode) từ ảnh xám gray chuyển đổi từ phần ảnh chứa đối tượng • for barcode in barcodes:: Duyệt qua mã vạch phát ảnh • data = barcode.data.decode("utf-8"): Lấy liệu từ mã vạch giải mã, sau chuyển đổi sang chuỗi có dạng UTF-8 Dữ liệu thường chứa thơng tin mã hóa mã vạch, decode("utf-8") dùng để giải mã thành chuỗi thơng thường Bước 7: Em tạo nhãn chứa thông tin từ mã vạch giải mã đặt lên khung hình vị trí phù hợp để hiển thị thơng tin liệu trích xuất từ mã vạch data_size, baseline = cv2.getTextSize(data, cv2.FONT_HERSHEY_SIMPLEX, 0.5, 1) cv2.rectangle(frame, (x1, y2), (x1 + data_size[0], y2 + data_size[1]), (0, 255, 0), cv2.FILLED) 50 cv2.putText(frame, data, (x1, y2 + data_size[1]), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 0), 1) Bước 8: Cuối hiển thị ảnh thích cửa sổ kiểm tra người dùng nhấn phím ESC ('q'), có đóng cửa sổ kết thúc chương trình cv2.imshow('Result', frame) if cv2.waitKey(1) & ord('q') == 27: cv2.destroyAllWindows() break Sau chạy chương trình, chúng em thu số kết sau: 51 52 53 KẾT LUẬN Thời gian làm đồ án tốt nghiệp vừa qua trải nghiệm vô thú vị đáng giá với thân em Em tìm hiểu kỹ thuật khác trí tuệ nhân tạo nhằm giải tốn phát giải mã mã vạch, qua khơng tích lũy kinh nghiệm chun mơn mà học kĩ làm việc độc lập, quản lý thời gian Đây chắn hành trang quý giá nghiệp tương lai chúng em Qua trình thực đồ án, với giúp đỡ tận tình giảng viên TS Nguyễn Mạnh Cường, nhóm em đạt kết quả, thấy mặt hạn chế hệ thống đưa phương hướng phát triển sau: Kết đạt • Thực chương trình xử lý ảnh ngơn ngữ lập trình Python • Thu thập, gán nhãn cho liệu sử dụng sau • Huấn luyện thành cơng mơ hình nhận diện mã vạch ứng dụng trí tuệ nhân tạo phiên YOLO • Xây dựng chương trình để phát giải mã mã vạch Mặt hạn chế • Hệ thống dừng lại mức độ mơ hình thử nghiệm, chưa có hội để áp dụng vào thực tế • Camera sử dụng có độ bắt nét, tốc độ, độ phân giải hạn chế Phương hướng phát triển • Cải thiện tốc độ lấy nét hệ thống camera nhằm bắt kịp hình ảnh • Có thể phát giải mã mã vạch chiều Kết nghiên cứu cho thấy phương pháp phát giải mã mã vạch Deep Learning đạt độ xác cao Phương pháp ứng dụng nhiều lĩnh vực, giúp nâng cao hiệu suất lao động 54 Chúng em xin gửi lời cảm ơn chân thành tới thầy giáo, Tiến sĩ Nguyễn Mạnh Cường tận tình hướng dẫn em thực đề tài Em xin chúc thầy luôn mạnh khỏe thành công nghiên cứu tới 55 TÀI LIỆU THAM KHẢO [1] Mơ hình CNN - Bài tập lớn mơn Xử lí ảnh trường Đại học Công Nghiệp Hà Nội [2] https://www.robots.ox.ac.uk/~vgg/research/very_deep/ [3] https://jonathan-hui.medium.com/ssd-object-detection-single-shot-multiboxdetector-for-real-time-processing-9bd8deac0e06 [4] https://phamdinhkhanh.github.io/2019/10/05/SSDModelObjectDetection.html [5] https://viblo.asia/p/tim-hieu-va-trien-khai-thuat-toan-non-maximumsuppression-bJzKmr66Z9N [6] https://github.com/ultralytics/yolov5/releases [7] 1506.02640.pdf (arxiv.org) [8] https://datagen.tech/guides/image-annotation/image-labeling/ [9] https://app.roboflow.com/ [10] J Deng, W Dong, R Socher, L.-J Li, K Li, and L FeiFei Imagenet: A largescale hierarchical image database In Computer Vision and Pattern Recognition, 2009 CVPR 2009 IEEE Conference on, pages 248–255 IEEE, 2009 [11] BarcodeEPU: https://drive.google.com/file/d/1NS_fOOZnUw3lKHn1T5I2cVp1h6FIkHq/view?usp=sharing 56

Ngày đăng: 12/01/2024, 21:33

Tài liệu cùng người dùng

Tài liệu liên quan