Phương pháp nghiên cứu Phương pháp tài liệu: Tìm hiểu lập trình Python và cơ sở lý thuyết về thuật toán CNN Tìm hiểu các phương pháp nhận dạng biển báo giao thông Tìm hiểu và lựa c
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ GTVT
KHOA CÔNG NGHỆ THÔNG TIN
-o0o -BÁO CÁO BÀI TẬP LỚN TRÍ TUỆ NHÂN TẠO
TÊN ĐỀ TÀI:
PHÂN LOẠI HÀNG HOÁ BẰNG ĐỌC MÃ VẠCH
LỚP:
NGUYỄN HOÀNG TÚ LẠI KHÁNH NAM NGUYỄN VĂN HƯNG PHẠM HỒNG ĐỨC 72DCTT21
Trang 2Hà Nội, 2023
Trang 3MỤC LỤC
Trang 4DANH MỤC HÌNH ẢNH
Trang 5DANH MỤC TỪ VIẾT TẮT
Trang 6MỞ ĐẦU
Ngày nay với sự tiến bộ của nền khoa học kỹ thuật thì mọi việc gầnnhư đều tiến hành trên máy tính một cách tự động hóa hoàn toàn Một trongnhững sự thay đổi lớn đó là cách thức chúng ta thu nhận và xử lý dữ liệu Cáccông cụ nhập liệu như bàn phím hay máy scan dần bị thay thế bằng các thiết bịtiện lợi hơn như màn hình cảm ứng, camera…
Hơn thế nữa, các máy tính để bàn không còn là công cụ duy nhất có thể
hỗ trợ cho con người Chúng ta đang ở thời đại công nghệ 4.0 với sự phát triểnmạnh mẽ của các thiết bị di động, giải trí cầm tay hay smartphone Với kíchthước ngày càng nhỏ gọn và hiệu suất làm việc thì không ngừng được cải tiến,các công cụ mini này hứa hẹn sẽ là một phần không thể thiếu trong xã hội hiệnđại Và do đó, phát triển các ứng dụng trên các thiết bị này cũng là một xu thếtất yếu
Công nghệ nhận dạng là một trong các công nghệ đã và đang được ápdụng cho các thiết bị di động hiện nay Nhận dạng có thể bao gồm nhận dạng
âm thanh, hình ảnh Các đối tượng nhận dạng có nhiều kiểu như tiếng nói, chữviết, khuôn mặt, mã vạch Chương trình nhận dạng hàng hóa bằng quét mãvạch được cài đặt trên những hệ thống có bộ xử lý lớn, camera chất lượng cao.Mục tiêu của báo cáo là giúp chúng ta phân loại hàng hóa sản phẩm và nhậndạng nó một cách nhanh nhất
Trang 7NỘI DUNG
1 Đặt vấn đề
Hàng hóa là những sản phẩm lao động, thông qua trao đổi, mua bán có thể thỏamãn một số nhu cầu nhất định của con người Hàng hóa có thể đáp ứng nhu cầu cánhân hoặc nhu cầu sản xuất Việc phân loại hàng hóa là yếu tố quan trọng để xác địnhđặc điểm, thành phần, cấu tạo, quy cách đóng gói nhằm phân loại tên gọi, mã số củahàng hóa theo quy trình sản xuất và tổ chức sắp xếp 1 cách thông minh
Trên thế giới có rất nhiều tập đoàn đa Quốc gia, các doanh nghiệp có nhiều nhàmáy phân loại thông minh sử dụng những công nghệ, phần mềm và các thiết bị máymóc hiện đại để sắp xếp và cũng như phân loại hàng hóa theo từng danh mục khácnhau Điều này dễ dàng trong việc quản lý các hàng hóa lớn nhỏ 1 cách nhanh chóng.Tại Việt Nam có nhiều công ty thiết kế hệ thống dây chuyền phân loại hàng hóa chocác doanh nghiệp lớn, đặc biệt trong chuỗi cung ứng Logistics tăng hiệu suất côngviệc lên đến 80% Qua đó giúp nâng cao chất lượng, hiệu quả dịch vụ và chuỗi cungứng, giảm chi phí, nâng cao năng lực cạnh tranh
Những năm trở lại gần đây, trí thông minh nhân tạo AI, cụ thể hơn là MachineLearning và Deep Learning đang nổi lên là bằng chứng cho cuộc công nghệ cách mạngcông nghiệp 4.0 Vận dụng từ những gì chúng em đã được học Trí tuệ nhân tạo và Xử
lý ảnh cho đề tài này là phân loại hàng hóa bằng quét mã
Trang 8Nguồn tham khảo: https://intech-group.vn/he-thong-phan- loai.htm
3 Phương pháp nghiên cứu
Phương pháp tài liệu:
Tìm hiểu lập trình Python và cơ sở lý thuyết về thuật toán CNN
Tìm hiểu các phương pháp nhận dạng biển báo giao thông
Tìm hiểu và lựa chọn công cụ hỗ trợ
Phương pháp thực nghiệm:
Trang 9 Xây dựng chương trình thực nghiệm
4 Phạm vi nghiên cứu
Dữ liệu xử lý là thu thập các mã Barcode, QRcode bằng cách tạo ra từ Python
5 Nội dung nghiên cứu
a Tìm hiểu các kĩ thuật xử lý ảnh trong nhận diện hình học
b Xây dựng hệ thống nhận diện các biển báo khác nhau
c Công cụ thực hiện: Pycharm
d Ngôn ngữ: Python
6 Cấu trúc báo cáo
Báo cáo “ Phân loại hàng hóa bằng quét mã vạch ” bao gồm tất cả 3 phần.
Chương I – Tổng quan: Giới thiệu về các kiến thức nền tảng cũng như công nghệ và
phần mềm được sử dụng trong đề tài bao gồm kiến thức về xử lý ảnh, thư viện xử lýảnh OpenCV
Chương II – Triển khai thuật toán và tạo giao diện Tkinter: Trình bày tổng quan về
mã vạch, phương pháp đề xuất và từ đó triển khai thuật toán xây dựng để giải quyếtbài toán nhận diện mã vạch
Chương III – Chạy chương trình: Từ phương pháp và thuật toán đã tìm hiểu, xây
dựng một chương trình để nhận dạng đưa ra đầu ra cho bài toán cần giải quyết
➢ Phần Kết luận – Đánh giá kết quả và kết luận: Tổng kết quá trình thực hiện và rút ra
hướng phát triển sau này
Trang 10Chương 1: Tổng quan
1 Một số khái niệm cơ bản
1.1 Trí tuệ nhân tạo
Trí tuệ nhân tạo AI là trí thông minh của máy do con ngườitạo ra Ngay từ khi chiếc máy tính điện tử đầu tiên ra đời, các nhàkhoa học máy tính đã hướng đến phát hiển hệ thống máy tính (gồm
cả phần cứng và phần mềm) sao cho nó có khả năng thông minh nhưloài người
Mặc dù cho đến nay, theo quan niệm của người viết, ước mơnày vẫn còn xa mới thành hiện thực, tuy vậy những thành tựu đạtđược cũng không hề nhỏ: chúng ta đã làm được các hệ thống (phầnmềm chơi cờ vua chạy trên siêu máy tinh GeneBlue) có thể thắngđược vua cờ thế giới; chúng ta đã làm được các phần mềm có thểchứng minh được các bài toán hình học; v.v Hay nói cách khác,trong một số lĩnh vực, máy tính có thể thực hiện tốt hơn hoặc tương
đương con người (tất nhiên không phải tất cả các lĩnh vực)
Trang 11Hình 1 Hình ảnh AI
1.2 Xử lý hình ảnh
Xử lý ảnh là một trong những mảng quan trọng nhất trong kỹ thuật thị giác máytính, là tiền đề cho nhiều nghiên cứu thuộc lĩnh vực này Hai nhiệm vụ cơ bản của quátrình xử lý ảnh là nâng cao chất lượng thông tin hình ảnh và xử lý số liệu cung cấp chocác quá trình khác trong đó có việc ứng dụng thị giác vào điều khiển
Quá trình bắt đầu từ việc thu nhận ảnh nguồn (từ các thiết bị thu nhận ảnh dạng sốhoặc tương tự) gửi đến máy tính Dữ liệu ảnh được lưu trữ ở định dạng phù hợp vớiquá trình xử lý Người lập trình sẽ tác động các thuật toán tương ứng lên dữ liệu ảnhnhằm thay đổi cấu trúc ảnh phù hơp với các ứng dụng khác nhau
Quá trình xử lý nhận dạng ảnh được xem như là quá trình thao tác ảnh đầu vàonhằm cho ra kết quả mong muốn Kết quả đầu ra của một quá trình xử lý ảnh có thể làmột ảnh “đã được xử lý” hoặc một kết luận
Ảnh có thể xem là tập hợp các điểm ảnh và mỗi điểm ảnh được xem như là đặctrưng cường độ sáng hay một dấu hiệu nào đó tại một vị trí nào đó của đối tượng trongkhông gian và nó có thể xem như một hàm n biến P(c,c1,c2,…).Do đó,ảnh trong xử lýảnh có thể xem như ảnh n chiều
OpenCV (Open Computer Vision) là một thư viện mã nguồn mở hàng đầu cho xử
lý về thị giác máy tính, machine learning, xử lý ảnh OpenCV đươc viết bằng C/C++,
vì vậy có tốc độ tính toán rất nhanh, có thể sử dụng với các ứng dụng liên quan đếnthời gian thực Opencv có các interface cho C/C++, Python Java vì vậy hỗ trợ đượccho Window, Linux, MacOs lẫn Android, iOS OpenCV có cộng đồng hơn 47 nghìnngười dùng và số lượng download vượt quá 6 triệu lần
Chức năng có trong thư viện OpenCV:
Thư viện OpenCV bao gồm một số tính năng nổi bật như:
• Bộ công cụ hỗ trợ 2D và 3D
• Nhận diện khuôn mặt
Trang 12• Nhận diện cử chỉ
• Nhận dạng chuyển động, đối tượng, hành vi,
• Tương tác giữa con người và máy tính
• Điều khiển Robot
• Hỗ trợ thực tế tăng cường
1.4 Tkinter
Là một gói trong Python có chứa module Tk hỗ trợ cho việc lập trình giao diện
(GUI) Tk ban đầu được viết bằng ngôn ngữ Tcl Sau đó Tkinter được viết ra để sử dụng Tk bằng trình thông dịch Tcl trên nền Python Ngoài Tkinter ra còn có một số
công cụ khác giúp tạo một ứng dụng GUI viết bằng Python như wxPython, PyQt, vàPyGTk
1.5.Zbar
Để giải mã Barcode và QR code ta sử dụng thư viện Zbar là 1 thư viện đa nền tảng,gọn nhẹ và cho kết quả nhận dạng tốt Thư viện được xây dựng trên mã nguồn C/C++nên dễ dàng chạy trên nền tảng IOS, Android và Linux Zbar có thể nhận dữ liệu trựctiếp từ Camera hoặc file ảnh, video sau đấy đưa vào bộ giải mã decoder để xử lý vànhận dạng
Cách cài thư viện Zbar trong python: pip install pyzbar
Trang 13Nguồn:https://sites.google.com/site/embedded247/npcourse/impcourse/ barcode_qrcode
Hình 1.1 Mô hình hệ thống của Zbar
1.6.Numpy
Numpy là một thư viện lõi phục vụ cho khoa học máy tính của Python, hỗtrợ cho việc tính toán các mảng nhiều chiều, có kích thước lớn với các hàm đãđược tối ưu áp dụng lên các mảng nhiều chiều đó Numpy đặc biệt hữu ích khithực hiện các hàm liên quan tới Đại Số Tuyến Tính
1.7.Pyttsx3 là thư viện chuyển đổi văn bản thành giọng nói
1.8.Date time
Thư viện datetime trong python được chia làm 4 lớp chính:
- Date – Chỉ ngày, tháng, năm
- Time – Chỉ thời gian trong ngày (Giờ, phút, giây, micro giây)
- Datetime – Kết hợp thời gian và ngày (Ngày, tháng, năm, giờ, phút,giây, micro giây)
- Timedelta – Dùng để tính toán thời gian trong quá khứ và tương lai
Trang 14(dạng bảng, đa chiều, không đồng nhất) và dữ liệu chuỗi thời gian, dùng hiển
thị cấu trúc dữ liệu trong file excel dưới dạng cột và dòng
1.12.Speech_recognition là thư viện nhận diện giọng nói trong Python
1.13.Pathlib là thư viện đường dẫn liên kết đến thư mục mà ta đã khai báo
trong chương trình
1.14.Workbook là thư viện đọc toàn bộ file Excel
2 Tổng quan về Barcode và QR code
2.1.Giới thiệu về Barcode
Barcode (hay còn được gọi là mã vạch) là phương pháp lưu trữ và truyền tảithông tin bằng một lọai ký hiệu gọi là ký mã vạch (Barcode symbology) Ký mãvạch hay gọi tắt cũng là mã vạch, là 1 ký hiệu tổ hợp các khoảng trắng và vạchthẳng để biểu diễn các mẫu tự, ký hiệu và các con số Sự thay đổi trong độ rộngcủa vạch và khoảng trắng biểu diễn thông tin số hay chữ số dưới dạng mà máy
2.2.Giới thiệu về QR code
QR code (Quick Respond Code) là một dạng mã haichiều, có thể lưu trữ nhiều loại kí tự khác nhau (số, ký tự,
đường dẫn liên kết, ), phổ biến nhất của mã QR code là
chuẩn ISO18004 QR code có nhiều ưu điểm vượt trội hơn so
Trang 15với Barcode có khả năng lưu trữ được lượn dữ liệu lớn, khảnăng tự sửa lỗi.
Được sử dụng trong nhiều lĩnh vực:
- Nhận dạng và xác thực người dùng thẻ ID
- Theo dõi các mặt hàng (Quản lý hàng hóa)
- Chia sẻ thông tin thanh toán (Gpay, Paytm)
- Chia sẻ liên kết, hình ảnh, phương tiện
Hình 1.2.1 Hình ảnh mã QR code
Trang 16CHƯƠNG 2: TRIỂN KHAI THUẬT TOÁN VÀ TẠO
GIAO DIỆN TKINTER
1 Thuật toán chương trình
1.1 Sơ đồ hoạt động chương trình
Hình 2.1 Lưu đồ thuật toán hệ thống
2 Tạo giao diện Tkinter
Code tạo giao diện
Nam = Tk () # code gọi tkinter
Nam.title( 'BTL Trí Tuệ Nhân Tạo' ) # đặt tên cho khung giao diện Nam.geometry( "800x610" ) # kích thước khung
Nam.resizable(width=False, height=False) # khóa khung
Trang 17Nam.iconbitmap( "D:\AI\pythonProject\Ico-file-for-testing.ico" ) # icon cho giao diện thứ 1
TLN = speech_recognition Recognizer () # khở Ai động giọng nói
Hinh cv2 VideoCapture ( 0
Hinh set ( , 200 )
GN pyttsx3 init () # khở Ai tạo tiêJ ng nói cu Aa máy tính
voices GN getProperty ( "voices" )
GN setProperty ( "voice" , voices[ ].id) # setup giọng cho máy tính
TocDoDoc GN getProperty ( 'rate' ) # tốJ c độ đọc cu Aa máy tính chậm
GN setProperty ( 'rate' , TocDoDoc - 80 ) # gia Am tốJ c độ đọc cu Aa giộng nói xuốJ ng 80
N1 Label (Nam, text= "" , bg= "white" , padx= 210 , pady= 5 , relief= 'solid' ) # khung chữ thứ nhâJ t
N1 place( = 375 , y 180 ) # vị trí cu Aa khung chữ thứ nhâJ t
N2 Label (Nam, text= "" , bg= "white" , padx= 210 , pady= 8 , relief= 'solid' ) # khung chữ thứ hai
N2 place( = 375 , y 330 ) # vị trí cu Aa khung chữ thứ hai
N3 Label (Nam, text= "" , bg= "white" , padx= 210 , pady= 45 , relief= 'solid' ) # khung chữ thứ Ba
N3 place( = 375 , y 215 ) # vị trí cu Aa khung chữ thứ Ba
N4 Label (Nam, text= "" , bg= "white" , padx= 400 , pady= 106 ,
relief= 'solid' ) # khung chữ thứ hai
N4 place( = , y 370 ) # vị trí cu Aa khung chữ thứ hai
TieuDe Label (Nam, text= "Phân Loại Hàng Hóa Tự Động Bằng Quét Mã" , font= "bold" , 20 ), fg= 'red' ) # khung chữ tiêu đê]
TieuDe.place( = 130 , y 15 ) # vị trí khung chữ tiêu đê]
MaVach Label (Nam, text= "Mã Vạch:" , font=( "Arial" , 12 ), bg= "white" ) # khung chữ mã vạch
MaVach.place( = 380 , y 182 ) # vị trí cu Aa khung mã vạch
HienMV Label (Nam, text= "" , fg= "red" , font=( "Arial" , 12 ), bg= "white" ) # Khung hiện mã vạch
HienMV.place( = 500 , y 182 ) # vị trí cu Aa khung hiện mã vạch
HNT = Label (Nam, text= "" , font= "Arial" , 12 ), bg= "white" )
Trang 20CHƯƠNG 3: CHẠY CHƯƠNG TRÌNH
1 Mô tả bài toán
Thông tin sản phẩm mã vạch phải được lưu trong file excel
Nếu thêm hay xóa mã vạch trên giao diện Tkinter thì dữ liệu
trong excel phải đồng bộ với thông tin trên giao diện
9 img = Hinh read ()[ 1
10 img = cv2 cvtColor (img, cv2 COLOR_BGR2RGB)
11 for barcode in decode (img): # nhận diện mã vạch
20 XN = 'Chua Xac Nhan'
21 MXN Label (Nam, text= " " , bg= "red" , padx= , pady= , relief= 'solid' )
Trang 243.2 Code Trợ lý ảo
def TL (): # khở Ai chạy trợ lý a Ao
robot = ""
while True:
Noi speech_recognition Recognizer ()
with speech_recognition Microphone () as mic:
elif "Hello" in Ban:
robot "Xin Chào Bạn"
elif "hốm nay" in Ban:
homnay = date today ()
robot homnay strftime ( %d %B %Y" )
elif "time" in Ban:
ThoiGian = datetime now ()
robot ThoiGian strftime ( "%H : %M : %S" )
elif "Google" in Ban:
elif "YouTube" in Ban:
robot "Đang mở A"
wb open ( "https://www.youtube.com/" )
elif "bạn là ai" in Ban:
robot "Tối tên là trợ lý a Ao cu Aa bạn"
Trang 25Kết quả chạy :
3.3 File Excel lưu trữ thông tin code
3.3.4 Kết quả tổng quan chương trình
- Đầu tiên ta đưa mã QR hoặc Barcode lên cho camera quét:
+ Nếu chưa có mã vạch được lưu thì sẽ hiện “Chưa xác nhận” và laptop xuất giọng nói
“Chưa thêm sản phẩm”
Trang 26- Sau khi nhấn “Thêm sản phẩm” thông tin được lưu vào File Excel: Nếu đã lưu mã vạch thì khi đưa qua camera để quét thì hiện”Đã xác nhận” và laptop xuất giọng nói
“Mã sản phẩm là + Thông tin mã”
Trang 27- Nếu chưa có nhập thông tin sản phẩm mà bấm nút thêm sản phẩm thì sẽ hiện lên cảnh báo MessengerBox “Bạn chưa nhập đủ dữ liệu”
Trang 28- Nếu ta nhấn nút xóa dòng 1 thì sẽ hiện lên Box cảnh báo, bởi vì đây là dòng hiển thị
ID, mã vạch, tên sản phẩm và khu vực
- Để xóa được ta phải nhập số dòng tương ứng nếu không nhập thì sẽ không có gì xảy ra
Trang 29KẾT LUẬN Kết quả đạt được:
Trong quá trình tim hiểu nhóm đã gặp phải một số khó khăn nhất định Nhưng với sự đam mê và sự hướng dẫn
nhiệt tình của thầy giáo cộng thêm nỗ lực tìm tòi, đam mê khám phá cái mới đã giúp nhóm đạt được một số kết quả sau:
- Tổng quan về thư viện cần thiết cho đề tài
- Đã tạo được giao diện Tkinter
- Tiến hành chạy thực tế và đạt được kết quả
Hạn chế:
- Chưa truy xuất được dữ liệu từ mã vạch 1 cách trực tiếp
- Trợ lý giọng nói chưa truy cập vào trong file excel và
Trang 30còn bị hạn chế chưa can thiệp vào hệ thống
Hướng phát triển:
- Phát triển phần mềm đọc mã vạch mà bất cứ ai cũng
có thể sử dụng được, chỉ cần tải về và đăng nhập
- Quét mã vạch hiển thị đầy đủ các thông tin sản phẩm lên phần mềm, sau đó tự động lưu vào thư mục do chínhphần mềm đó tạo ra không bị phụ thuộc vào Excel, người dùng có thể chỉnh sửa trực tiếp trong file đó
- Sử dụng trợ lý giọng nói có thể điểu khiển thêm hoặc xóa các mã vạch sản phẩm và đồng bộ với thư mục đểlưu thông tin