TÓM TẮT ĐỒ ÁNĐề tài "Ứng dụng nhận diện sản phẩm" nhằm giải quyết vấn đề khó khăn trong việcquản lý và nhận diện sản phẩm trong các kho hàng, siêu thị và cửa hàng bán lẻ.. Cụ thể, sử dụn
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO PBL5 – DỰ ÁN KỸ THUẬT MÁY TÍNH
TÊN ĐỀ TÀI Nhận diện sản phẩm
Giảng viên hướng dẫn: Huỳnh Hữu Hưng
NHÓM SINH VIÊN THỰC HIỆN LỚP HỌC PHẦN
Trang 2TÓM TẮT ĐỒ ÁN
Đề tài "Ứng dụng nhận diện sản phẩm" nhằm giải quyết vấn đề khó khăn trong việcquản lý và nhận diện sản phẩm trong các kho hàng, siêu thị và cửa hàng bán lẻ Với số lượngsản phẩm đa dạng và phong phú, việc nhận diện chính xác và nhanh chóng từng sản phẩm làmột thách thức lớn, dẫn đến sai sót trong quản lý kho, thiếu hụt hàng hóa hoặc thừa mứa hàngtồn kho Để giải quyết vấn đề này, đề tài áp dụng các kỹ thuật tiên tiến trong lĩnh vực học máy
và xử lý hình ảnh Cụ thể, sử dụng các thuật toán nhận diện hình ảnh và mạng nơ-ron tíchchập (Convolutional Neural Networks - CNN) để phát triển hệ thống có khả năng tự độngnhận diện sản phẩm thông qua hình ảnh Hệ thống này có thể được triển khai dưới dạng ứngdụng di động, giúp người dùng dễ dàng chụp ảnh sản phẩm để nhận diện và truy xuất thôngtin sản phẩm
Kết quả đạt được từ đề tài là một ứng dụng hỗ trợ mạnh mẽ cho các hoạt động quản lýkho và bán lẻ Ứng dụng giúp giảm thiểu sai sót trong quá trình nhập liệu và kiểm kê, tăngcường độ chính xác trong việc theo dõi tồn kho và bổ sung hàng hóa kịp thời Đồng thời, nócũng mang lại trải nghiệm mua sắm tiện lợi cho khách hàng khi có thể dễ dàng tra cứu thôngtin sản phẩm, giá cả và đánh giá từ người dùng khác Bên cạnh đó, hệ thống còn hỗ trợ phântích dữ liệu từ các lần nhận diện sản phẩm để cung cấp các báo cáo và dự báo hữu ích cho nhàquản lý, giúp tối ưu hóa quy trình kinh doanh và quản lý kho hàng Tổng quan, đề tài khôngchỉ giải quyết bài toán nhận diện sản phẩm mà còn góp phần nâng cao hiệu quả hoạt động vàchất lượng dịch vụ trong lĩnh vực bán lẻ
Trang 3BẢNG PHÂN CÔNG NHIỆM VỤ
(Đã hoàn thành/Chưahoàn thành/Không triển
khai)Thái Ngọc Qúy -Huấn luyện mô hình
-Thu thập dữ liệu-Code module phần cứng-Viết báo cáo
-Đã hoàn thành
Hoàng Phúc Nguyên -Viết báo cáo
-Code Server-Huấn luyện mô hình
-Đã hoàn thành
Ngô Gia Bảo -Viết báo cáo
-Code Server-Code App Android
-Đã hoàn thành
Nguyễn Tấn Phát -Viết báo cáo
-Code App Android-Thu thập dữ liệu
-Đã hoàn thành
Trang 4MỤC LỤC
CHƯƠNG 1: GIỚI THIỆU 7
1.1 Thực trạng sản phẩm 7
1.2 Các vấn đề cần giải quyết 7
1.3 Đề xuất giải pháp tổng quan 7
CHƯƠNG 2: GIẢI PHÁP 8
2.1 Giải pháp phần cứng 8
2.1.1 Module ESP32-CAM 9
2.1.2 Mạch chuyển USB to TTL ch340g 11
2.1.3 Sơ đồ kết nối 13
2.1.4 Bảng kê chi phí linh kiện 13
2.2 Giải pháp truyền thông 14
2.2.1.RESTFULL API 14
2.2.2.Giới thiệu về Flask 16
2.3 Giải pháp TTNT/KHDL 16
2.3.1 Mô hình học sâu RESNET152V2 16
2.3.2 Cấu trúc mạng ResNet152V2 17
2.3.4 Data Augmentation 21
2.4 Giải pháp phần mềm 21
2.4.1.Phát triển bài toán 21
2.4.2.Công nghệ sử dụng 21
CHƯƠNG 3: KẾT QUẢ 22
3.1.Kết quả nhận diện model 23
3.2.Server 23
3.3.Ứng dụng di động 26
CHƯƠNG 4: KẾT LUẬN 29
4.1 Đánh giá 29
4.2 Hướng phát triển 29
CHƯƠNG 5: DANH MỤC TÀI LIỆU THAM KHẢO 30
Trang 5DANH MỤC HÌNH ẢNH
Hình 1 Bảng đề xuất giải pháp tổng quan……… 7
Hình 2 Sơ đồ tổng quan hệ thống……… 8
Hình 3 Sơ đồ hoạt động tổng quát……… 9
Hình 4 ESP32-CAM……….……… 9
Hình 5 USB to TTL ch340g……… 12
Hình 6 Sơ đồ kết nối……… 13
Hình 7 Bảng kê chi phí……… 13
Hình 8 Mô hình Restfull……… 14
Hình 9 Phương thức hoạt động Restfull……… 15
Hình 10.Cấu trúc mạng ResNet152V2……….17
Hình 11.Danh sách các layers……… 18
Hình 12 Sơ đồ sắp xếp các lớp trong Identity Block……… 19
Hình 13 Sơ đồ sắp xếp các lớp trong Convolution Block……… 19
Hình 14 Số lượng ảnh trong từng tệp……… 20
Hình 15 Số lượng ảnh trong từng class……… 20
Hình 16 Data augmentation……….………21
Hình 17.Biểu đồ usecase tổng quát………….……… 22
Hình 18.Kết quả nhận dạng……….……… 23
Hình 19 Chức năng đăng nhập……….………23
Hình 20 Chức năng đăng ký……….………24
Hình 21 Chức năng thanh toán……….………24
Hình 22 Chức năng lấy tất cả sản phẩm ….………24
Hình 23 Chức năng tạo mã QR
……… 25
Hình 24 Chức năng tạo sản phẩm……… ………
25 Hình 25 Chức năng xóa sản phẩm……….………
25 Hình 26.Giao diện sau khi nhận diện……….26
Hình 27.Giao diện tất cả sản phẩm trong kho……… 26
Trang 6Hình 28.Giao diên mã QR thanh toán………
2 Mục tiêu và ý nghĩa của đồ án
Mục tiêu chính của đề tài này là nghiên cứu và phát triển các phương pháp và côngnghệ nhận diện sản phẩm hiệu quả Điều này bao gồm việc phân tích các phương pháp nhận
Trang 7diện hiện có, từ các kỹ thuật truyền thống như mã vạch và RFID đến các công nghệ tiên tiếnnhư nhận dạng hình ảnh và học máy Đề tài cũng sẽ xem xét ứng dụng của các công nghệnày trong các ngành công nghiệp khác nhau và đánh giá hiệu quả của chúng trong việc cảithiện quy trình kinh doanh và trải nghiệm khách hàng
Trong khuôn khổ đồ án, dưới sự hướng dẫn của thầy Huỳnh Hữu Hưng, giảng viênkhoa Công nghệ thông tin, Trường Đại học Bách khoa – Đại học Đà Nẵng, em đã nghiêncứu, tìm hiểu và thực hiện đề tài ” Nhận diện sản phẩm”
Do thời gian và kiến thức của em còn hạn chế nên không tránh khỏi những sai sót nhấtđịnh trong quá trình thực hiện đồ án Xin cảm ơn sự hỗ trợ từ thầy Huỳnh Hữu Hưng và rấtmong nhận được sự góp ý từ quý thầy cô
và đảm bảo bảo mật thông tin người dùng Việc đầu tư vào nghiên cứu và phát triển sẽ giúpnâng cao hiệu quả và mở rộng phạm vi ứng dụng của công nghệ nhận diện sản phẩm trongtương lai
1.2 Các vấn đề cần giải quyết
Cần có các phần cứng để thu thập dữ liệu
Phát hiện nhiều sản phẩm khác nhau
Trang 8Hệ thống cần phải có khả năng xử lý và nhận diện sản phẩm trong thời gian ngắn đểđáp ứng yêu cầu thời gian thực
Giao diện người dùng: Phải thiết kế giao diện dễ sử dụng và thân thiện, giúp ngườidùng dễ dàng thao tác và nhận diện sản phẩm
1.3 Đề xuất giải pháp tổng quan
…Huấn luyện trên Google Colab
Có chức năng nhận diện tự động
Hiển thị kết quả nhận diện
Viết bằng java android
Hình 1 Bảng đề xuất giải pháp tổng quan
CHƯƠNG 2: GIẢI PHÁP
2.1 Giải pháp phần cứng
2.1.1.Sơ đồ tổng quan hệ thống
Trang 9Hình 2 Sơ đồ tổng quan hệ thống
2.1.2.Sơ đồ hoạt động tổng quan
Hình 3 Sơ đồ hoạt động tổng quan
Sơ đồ chân của ESP32-CAM như sau:
Trang 10Nguyên tắc hoạt động:
Trang 112.1.4.Sơ đồ lắp mạch
Hình 6 Sơ đồ lắp mạch
2.1.5.Bảng kê chi phí linh kiện
Tên linh kiện Giá tiền
Trang 12tài nguyên hệ thống (tệp văn bản, ảnh, âm thanh, video, hoặc dữ liệu động…), bao gồm các trạng thái tài nguyên được định dạng và được truyền tải qua HTTP.
Hình 8.Mô hình Restfull
Các thành phần trong RESTful API
API (Application Programming Interface) là một tập các quy tắc và cơ chế màtheo đó, một ứng dụng hay một thành phần sẽ tương tác với một ứng dụng hay thànhphần khác API có thể trả về dữ liệu mà bạn cần cho ứng dụng của mình ở những kiểu
dữ liệu phổ biến như JSON hay XML
REST (REpresentational State Transfer) là một dạng chuyển đổi cấu trúc dữliệu, một kiểu kiến trúc để viết API Nó sử dụng phương thức HTTP đơn giản để tạocho giao tiếp giữa các máy Vì vậy, thay vì sử dụng một URL cho việc xử lý một sốthông tin người dùng, REST gửi một yêu cầu HTTP như GET, POST, DELETE,…đến một URL để xử lý dữ liệu
RESTfull API là một tiêu chuẩn dùng trong việc thiết kế các API cho các ứngdụng web để quản lý các resource RESTful là một trong những kiểu thiết kế API được
sử dụng phổ biến ngày nay để cho các ứng dụng (web, mobile…) khác nhau giao tiếpvới nhau
Chức năng quan trọng nhất của REST là quy định cách sử dụng các HTTPmethod (như GET, POST, PUT, DELETE…) và cách định dạng các URL cho ứngdụng web để quản các resource RESTful không quy định logic code ứng dụng và
Trang 13không giới hạn bởi ngôn ngữ lập trình ứng dụng, bất kỳ ngôn ngữ hoặc framework nàocũng có thể sử dụng để thiết kế một RESTful API.
Phương thức RESTful hoạt động
Hình 9.phương thức hoạt động của Restfull
REST hoạt động chủ yếu dựa vào giao thức HTTP Các hoạt động cơ bản nêutrên sẽ sử dụng những phương thức HTTP riêng
GET (SELECT): Trả về một Resource hoặc một danh sách Resource
POST (CREATE): Tạo mới một Resource
PUT (UPDATE): Cập nhật thông tin cho Resource
DELETE (DELETE): Xoá một Resource
Những phương thức hay hoạt động này thường được gọi là CRUD tương ứngvới Create, Read, Update, Delete – Tạo, Đọc, Sửa, Xóa
2.2.2.Giới thiệu về Flask
Flask là loại framework web phổ biến được viết bằng trình lập ngôn ngữ Python.Công nghệ thường được sử dụng để xây dựng trang web từ những ứng dụng đơn giảnđến những hệ thống phức tạp hơn
Flask Framework sở hữu một số tính năng quan trọng mà nhà phát triển thường
sử dụng để xây dựng hiệu ứng web Các tính năng chính của Flask:
Trang 14 Nhẹ và dễ sử dụng: Công nghệ có cấu trúc nhẹ nhàng và mã nguồn dễ đọc, giúp ngườiphát triển dễ dàng tiếp cận và tùy chỉnh theo nhu cầu cụ thể của họ.
Định tuyến linh hoạt: Flask cung cấp cơ chế hoạt động định tuyến, cho phép ngườiphát triển xác định các mẫu URL và phân bổ chúng cho các hàm xử lý tương ứng.Điều này giúp quản lý và xử lý yêu cầu HTTP một cách hiệu quả
Được mở rộng rộng rãi: Mặc dù mang đặc điểm rút gọn nhưng Flask vẫn có khả năng
mở rộng mạnh mẽ thông qua việc sử dụng các tiện ích và thư viện của cộng đồng.Người dùng có thể phân tích các tính năng như xác thực, đăng nhập, điều hướng, cơ sở
dữ liệu tương tác và nhiều tính năng khác
Máy chủ phát triển tích hợp: Flask cung cấp máy chủ phát triển hợp đồng, giúp ngườiphát triển dễ dàng kiểm tra và phát triển ứng dụng mà không cần cấu hình bổ sung
Gửi yêu cầu RESTful: Flask hỗ trợ xây dựng API và các ứng dụng RESTful theo cáchhoạt động và hiệu quả
2.3 Giải pháp TTNT/KHDL
2.3.1 Mô hình học sâu RESNET152V2
ResNet sử dụng một kỹ thuật gọi là "residual learning" để giảm bớt vấn đề này Cụthể, mô hình ResNet sử dụng các "skip connections" hay "shortcut connections", chophép đầu vào của một lớp mạng có thể bỏ qua một hoặc nhiều lớp tiếp theo và đượccộng trực tiếp vào đầu ra của các lớp đó Điều này giúp duy trì thông tin qua các lớpmạng và hỗ trợ việc huấn luyện các mô hình rất sâu
ResNet152V2 có tổng cộng 152 lớp, và là một trong những mô hình sâu nhất trong dòng ResNet So với ResNet152 phiên bản đầu tiên, ResNet152V2 có một số cải tiến quan trọng:
- Batch Normalization trước khi Activation: Trong phiên bản V2, batch
normalization được thực hiện trước khi kích hoạt (activation), thay vì sau như
ở phiên bản trước Điều này giúp cải thiện sự ổn định của quá trình huấn luyện
- Pre-activation Residual Units: ResNetV2 sử dụng pre-activation residual units,tức là batch normalization và activation được thực hiện trước khi thực hiện phép biến đổi chính (convolution) Điều này giúp gradient lan truyền dễ dàng hơn và cải thiện hiệu suất tổng thể
Lợi ích của ResNet152V2 :
Trang 15- Hiệu suất cao: ResNet152V2 đạt được hiệu suất cao trên nhiều bộ dữ liệu, đặc biệt là trong các nhiệm vụ nhận diện hình ảnh.
- Dễ dàng huấn luyện: Nhờ vào các cải tiến về cấu trúc, mô hình này dễ dàng được huấn luyện hơn so với các mô hình mạng sâu khác
- Ứng dụng rộng rãi: ResNet152V2 được ứng dụng rộng rãi trong nhiều lĩnh vựcnhư nhận diện hình ảnh, phân loại hình ảnh, phát hiện đối tượng, và nhiều ứng dụng khác trong trí tuệ nhân tạo
2.3.2 Cấu trúc mạng ResNet152V2
Hình 10.Cấu trúc mạng ResNet152V2
Gồm các Residual Block :
- Identity Block: Identity block là block đơn giản với các lớp convolution và
batch normalization được áp dụng liên tiếp, sau đó kết hợp với đầu vào bằng phép cộng Điều này giúp duy trì thông tin qua nhiều lớp mà không làm tăng
độ phức tạp
- Convolutional Block: Convolutional block có thêm các lớp convolution để
thay đổi kích thước và số lượng kênh của đầu vào Các shortcut connection giúp mô hình học được các đặc trưng mà không bị mất mát gradient
Sắp xếp theo các Stage :
Stage 2 đến Stage 5: Mỗi stage bao gồm một convolutional block đầu tiên để giảm kích thước và tăng số lượng kênh, tiếp theo là một số lượng lớn các identity block Số lượng các block tăng dần theo từng stage, từ 3 block ở stage 2 đến 36 block ở stage 4, giúp mô hình học được các đặc trưng ở nhiều cấp độ khác nhau
Danh sách các layers đáng chú ý :
Trang 16Hình 11.Danh sách các layers
Sơ đồ sắp xếp các lớp trong Identity Block
Hình 12 Sơ đồ sắp xếp các lớp trong Identity Block
Sơ đồ sắp xếp các lớp trong Convolutional Block
Trang 17Hình 13 Sơ đồ sắp xếp các lớp trong Convolutional Block
2.3.3 Giải pháp phân bố dữ liệu
Dataset gồm có 6018 ảnh cho 6 class nhận diện sản phẩm , được chụp từ chínhESP32-cam để tăng tỉ lệ nhận diện khi chụp với ESP32-cam với độ phân giải thấphơn Chia tập Train và Valid theo tỉ lệ 8 : 2 ( Train : 3610 ảnh , Valid : 899 ảnh ) vàtập Test chứa 1509 ảnh
Trang 192 Hình 16 Data augmentation
2.4 Giải pháp phần mềm
2.4.1.Phát triển bài toán
Xây dựng app android để tương tác với hệ thống server và ESP32-Cam để nhận diện
và quản lý sản phẩm Hệ thống bao gồm 2 tác nhân chính đó là admin và khách hàng
Admin có quyền thêm sản phẩm vào giỏ hàng,thêm sửa xóa tìm kiếm sản phẩm trong kho,tạo mã QR cho khách hàng thành toán.Để sử dụng tất cả tính năng trên thì Admin phải đăng nhập App
Khách hàng có quyền nhận hóa đơn từ Gmail của khách hàng sau khi đã thanh toán thành công
2.4.2.Công nghệ sử dụng.
Server:Dùng ngôn ngữ lập trình python và Flask Framework
Client:Sử dụng java và bộ công cụ hỗ trợ Android Studio để tạo giao diện và fetch Api
từ Server gửi tới
Thư viện Retrofit : Dùng để thực hiện các HTTP Request
Trang 20
Hình 17.Biểu đồ usecase tổng quát
CHƯƠNG 3: KẾT QUẢ
Trang 213.1.K t qu nh n di n model ết quả nhận diện model ả nhận diện model ận diện model ện model
Trang 22Tên chức năng Đăng ký
Response 400 như List sai định dạng , 200 nếu thành công
Hình 21 Chức năng thanh toán
Tên chức năng lấy tất cả sản phẩm có trong kho
Trang 25
Hình 30 Giao diện thêm sản phẩm Hình 31.Giao diện xóa sản phẩm
Trang 26Hình 32 Gửi hóa đơn về Gmail cho khách
Tốc độ nhận diện: Ứng dụng nhận diện sản phẩm trong thời gian ngắn, có hiệu suất ổnđịnh ngay cả khi có nhiều yêu cầu
Server:Server hệ thống xử lý ổn định, gần như không xảy ra lỗi Đáp ứng yêu cầu đồán
4.2 Hướng phát triển
Nâng cao độ chính xác và khả năng nhận diện: Áp dụng các mô hình học sâu (DeepLearning) để cải thiện độ chính xác của việc nhận diện sản phẩm, đặc biệt là với các sản phẩm
có nhiều biến thể hoặc điều kiện môi trường khác nhau
Tăng cường tốc độ sử lý:Cải thiện các thuật toán nhận diện để giảm thời gian xử lý,tậndụng sức mạnh xử lý của đám mây để xử lý nhanh hơn và hiệu quả hơn
Cải thiện giao diện người dùng: Cải thiện để người dùng dễ dàng thao tác và sử dụng
Trang 27 Chức năng bổ sung:Thêm các chức năng như thông tin mở rộng về sản phẩm,lưu trữ
http://arduino.vn/tutorial/1570-gioi-thieu-module-esp32-va-huong-dan-cai-trinh-[4]https://www.researchgate.net/figure/ResNet152V2-Architecture_fig1_355839262
[5]https://www.kaggle.com/code/givkashi/resnet152v2
[6]https://docs.python.org/3/
[7]https://docs.oracle.com/en/java/