Sử dụng kỹ thuật nhận diện đối tượng bằng YOLO, tuy có tốc độ phản hồi nhanh và có thể nhận diện được nhiều vật thể cùng một lúc, nhưng độ chính xác của YOLO không chính xác bằng các mô
TỔNG QUAN
Lý do chọn đề tài
Trái cây không chỉ là thực phẩm lành mạnh mà còn là nguồn tài nguyên quan trọng cho ngành nông nghiệp toàn cầu Sự gia tăng nhu cầu tiêu thụ đã dẫn đến việc mở rộng các nông trại và sản lượng trái cây tăng lên Tuy nhiên, việc phân loại chất lượng và mức độ chín của trái cây tốn nhiều nhân công và chi phí, tạo ra thách thức cho doanh nghiệp Trong thời đại 4.0, với sự phát triển của trí tuệ nhân tạo, quy trình phân loại trái cây đã trở nên tự động hóa, giúp giải quyết hiệu quả vấn đề này.
Công việc phân loại và đánh giá sản phẩm là rất quan trọng, dẫn đến nhiều ý tưởng về đề tài phân loại Một ví dụ là ứng dụng xử lý ảnh trong hệ thống phân loại sản phẩm, cho phép phân loại màu sắc với độ chính xác cao, nhưng chưa thể phân loại sản phẩm bị lỗi Một đề tài khác là thiết kế mô hình phân loại trái cây theo màu sắc, có khả năng phân loại trái cây dựa trên màu sắc, nhưng lại không đánh giá được chất lượng của trái cây.
Phân loại trái cây nâng cao giá trị sản phẩm và tối ưu hóa quy trình sản xuất, lưu trữ và phân phối Việc này cũng đảm bảo an toàn thực phẩm, vì trái cây không đạt tiêu chuẩn có thể chứa chất độc hại hoặc thiếu dinh dưỡng Do đó, nhóm sinh viên đã chọn đề tài “Phân loại trái cây bằng mô hình phát hiện vật thể YOLO”.
Mục tiêu đề tài
- Nghiên cứu và hiểu được kỹ thuật phát hiện, phân loại đối tượng
- Xây dựng được một hệ thống có thể phân loại trái cây, đánh giá hư hại của loại trái cây đó
- Hệ thống làm việc với tốc độ thời gian thực
- Hiển thị kết quả lên màn hình
- Điều khiển được tốc độ băng chuyền
- Kết nối không dây và giao tiếp giữa các thiết bị
- Có nút nhấn thao tác dừng khẩn cấp.
Giới hạn đề tài
Hệ thống hiện tại có một số giới hạn về điều khiển và môi trường hoạt động Cụ thể, hệ thống chưa hỗ trợ điều khiển thủ công từ xa qua ứng dụng hoặc website, buộc người dùng phải sử dụng các phím nhấn trên bo mạch để điều khiển.
Độ chính xác của chức năng phân loại trong hệ thống phụ thuộc vào cường độ ánh sáng của môi trường hoạt động Ánh sáng xung quanh cần được duy trì ở mức vừa phải để hệ thống hoạt động ổn định Nếu ánh sáng quá mạnh, tông màu của vật thể sẽ bị biến đổi thành màu trắng, trong khi ánh sáng quá yếu sẽ làm khó khăn cho việc phân loại màu sắc.
Kỹ thuật sử dụng giao thức qua Firebase yêu cầu kết nối Wifi ổn định, vì vậy hệ thống cần được đặt ở khu vực có sóng Wifi mạnh để đảm bảo hoạt động hiệu quả và liên tục.
Kỹ thuật nhận diện đối tượng YOLO nổi bật với tốc độ phản hồi nhanh và khả năng nhận diện nhiều vật thể đồng thời Tuy nhiên, độ chính xác của YOLO không đạt được mức cao như các mô hình khác như R-CNN và SSD.
Tốc độ của băng chuyền mini không thể so sánh với các dây chuyền công nghiệp do thiết kế và cấu trúc của nó Hơn nữa, việc chỉ sử dụng một camera để thu ảnh cũng ảnh hưởng đến hiệu suất hoạt động của hệ thống.
3 khiến cho quy trình phân loại không thể liên tiếp nhau cùng một lúc được, mà phải xử lý các quy trình lần lượt từng loại trái cây.
Đối tượng nghiên cứu
Nghiên cứu này tập trung vào các loại trái cây có giá trị kinh tế cao và phổ biến trên thị trường, đặc biệt là táo, cam và chuối Mỗi loại trái cây này sở hữu những đặc điểm riêng biệt về hình dạng, màu sắc, kích thước và độ chín, do đó cần áp dụng các phương pháp phân loại khác nhau để đảm bảo chất lượng và giá trị thương mại của chúng.
Nghiên cứu sẽ phân tích các công nghệ và thiết bị phân loại trái cây hiện có, bao gồm hệ thống phân loại tự động sử dụng máy học, thị giác máy tính và kỹ thuật phân tích hình ảnh Đánh giá sẽ tập trung vào hiệu quả, độ chính xác và khả năng ứng dụng của các công nghệ này trong sản xuất và chế biến thực tế.
Phạm vi nghiên cứu
Nghiên cứu tập trung vào ứng dụng công nghệ cảm biến và nhận dạng hình ảnh, trong đó hệ thống nhận dạng hình ảnh sử dụng thuật toán xử lý ảnh và học máy để phân tích và phân loại trái cây dựa trên các đặc điểm đã thu thập.
Hệ thống phân loại trái cây sẽ được thiết kế và xây dựng với các thành phần chính như băng chuyền, camera, cảm biến và bộ điều khiển trung tâm Nghiên cứu sẽ tập trung vào thiết kế và lắp đặt hệ thống phần cứng, nhằm đảm bảo hoạt động mượt mà và hiệu quả của toàn bộ hệ thống.
Phương pháp nghiên cứu
Nhóm sinh viên tiến hành khảo sát và thu thập dữ liệu về các loại trái cây như táo, cam và chuối, tập trung vào các đặc điểm vật lý như kích thước, màu sắc, hình dạng và mức độ hư hại Dữ liệu này sẽ được sử dụng làm cơ sở dữ liệu để đào tạo mô hình phân loại trái cây.
Phân tích và xử lý dữ liệu là bước đầu tiên, trong đó mỗi bức ảnh sẽ được kẻ một box bao quanh vật thể và ghi lại tọa độ vào một file notepad tương ứng Tiếp theo, nhóm sinh viên sẽ đào tạo mô hình phân loại dựa trên dữ liệu đã phân tích, áp dụng kỹ thuật học máy và mô hình yolov8 để đạt được hiệu quả tối ưu.
Thiết kế hệ thống phần cứng: Nhóm sinh viên thực hiện thiết kế và xây dựng hệ thống phần cứng để thực hiện quá trình phân loại tự động
Hệ thống sẽ được kiểm tra bằng cách sử dụng các mẫu trái cây thực tế nhằm đánh giá hiệu suất và độ chính xác trong quá trình phân loại.
Bố cục đề tài
Chương này nêu rõ lý do lựa chọn đề tài nghiên cứu, xác định các mục tiêu cụ thể, giới hạn và đối tượng nghiên cứu, cũng như phạm vi và phương pháp nghiên cứu được áp dụng cho đề tài.
Chương 2: Cơ sở lý thuyết
Giới thiệu về YOLO, trình bày các kỹ thuật quan trọng được sử dụng trong YOLO, mô tả chi tiết phiên bản YOLOv8 và các kỹ thuật khác
Chương 3: Thiết kế hệ thống
Xây dựng hệ thống, các thiết bị phù hợp, xây dựng sơ đồ khối và sơ đồ nguyên lí của hệ thống
Trình bày và đánh giá các kết quả sau khi hoàn thiện
Chương 5: Kết luận và hướng phát triển Đưa ra kết luận, hạn chế và định hướng phát triển cho đề tài
CƠ SỞ LÝ THUYẾT
Tổng quan về YOLO
You Only Look Once (YOLO) is an advanced real-time object detection algorithm introduced in 2015 by researchers Joseph Redmon, Santosh Divvala, Ross Girshick, and Ali Farhadi in their influential paper titled "You Only Look Once: Unified, Real-Time Object Detection."
Cảm hứng của YOLO xuất phát từ nhu cầu trong lĩnh vực thị giác máy tính và trí tuệ nhân tạo, nơi việc phát hiện đối tượng yêu cầu sự kết hợp giữa độ chính xác và tốc độ cao Trước khi có YOLO, các phương pháp truyền thống thường phức tạp và tốn thời gian, từ trích xuất đặc trưng đến dự đoán lớp đối tượng Trong khi con người có thể dễ dàng nhận biết và chọn lọc các đối tượng mà không cần chú ý đến nhiều yếu tố, việc nhận diện đối tượng trên máy tính đòi hỏi xử lý phức tạp Nhận diện đối tượng trong hình ảnh hoặc video là một phần quan trọng của thị giác máy tính, bao gồm các bước như trích xuất đặc điểm, đặc biệt trong các ứng dụng như giám sát và nhận diện xe cộ Mặc dù nhiều phương pháp đã được áp dụng, nhưng vẫn tồn tại vấn đề về độ chính xác và hiệu suất Tuy nhiên, học máy và mạng nơ-ron sâu đã đạt được thành công trong việc cải thiện nhận diện đối tượng, với mục tiêu tìm ra tất cả các trường hợp của một lớp đối tượng đã biết trong một bức ảnh, bất chấp sự đa dạng về vị trí và tỉ lệ.
Việc nhận diện đối tượng được mô tả qua thông tin về đặc trưng dữ liệu, bao gồm vị trí, vùng và tỉ lệ của đối tượng, thường được thể hiện bằng hộp giới hạn Thông tin này có thể chi tiết hơn, như các thông số của biến đổi tuyến tính hoặc phi tuyến tính Chẳng hạn, một công cụ nhận diện khuôn mặt có khả năng xác định vị trí của mắt, mũi và miệng, kèm theo hộp giới hạn bao quanh khuôn mặt.
YOLO được phát triển để giải quyết thách thức trong phát hiện đối tượng một cách đơn giản và hiệu quả Với việc thực hiện phát hiện trong một lần chạy mô hình, YOLO loại bỏ các bước trung gian phức tạp, tối ưu hóa quy trình và tăng tốc độ xử lý mà vẫn đảm bảo độ chính xác cao Sự tiện lợi trong triển khai trên nhiều nền tảng, từ thiết bị nhúng đến máy tính cá nhân, đã tạo điều kiện thuận lợi cho việc ứng dụng YOLO trong thực tiễn.
Trí tuệ nhân tạo, đặc biệt là Deep learning, đã trở thành xu hướng trong những năm gần đây, với vai trò quan trọng trong việc cải thiện hiệu suất qua việc xử lý dữ liệu lớn Deep learning sử dụng các thuật toán mô phỏng cấu trúc và chức năng của não bộ, cho phép hiệu suất tăng theo tỷ lệ với lượng dữ liệu, khác với các thuật toán học truyền thống Trong lĩnh vực thị giác máy tính, giám sát đối tượng thời gian thực là một trong những chủ đề nghiên cứu hàng đầu, mặc dù vẫn còn nhiều thách thức trong việc theo dõi chính xác và hiệu quả Các tính năng từ hình ảnh và video được trích xuất để phục vụ cho các ứng dụng giám sát và an ninh, với nhiều thuật toán phổ biến như You Only Look Once (YOLO), mạng nơ-ron tích chập (CNN), và Faster R-CNN, trong đó RCNN thường đạt độ chính xác cao.
7 hơn so với các thuật toán khác, nhưng YOLO lại nổi bật hơn khi tốc độ được ưu tiên hơn so với độ chính xác [6]
YOLO là một phương pháp nổi bật trong thị giác máy tính và xử lý ảnh, tập trung vào việc phát hiện và định vị đối tượng trong hình ảnh và video Bằng cách sử dụng mạng nơ-ron tích chập (CNN) để trích xuất đặc trưng từ hình ảnh, YOLO có khả năng dự đoán vị trí và loại đối tượng một cách nhanh chóng và hiệu quả.
Hình 2.1: Lịch sử phát triển của YOLO [6]
YOLO nổi bật với việc chia hình ảnh thành lưới ô vuông cố định, trong đó mỗi ô dự đoán một số hộp giới hạn và xác suất cho các đối tượng Điều này cho phép YOLO phát hiện nhiều đối tượng cùng lúc Các dự đoán của YOLO cung cấp thông tin về tọa độ hộp giới hạn, xác suất của đối tượng, cũng như các đặc điểm như lớp và thuộc tính khác Quá trình huấn luyện của YOLO điều chỉnh trọng số của mạng nơ-ron nhằm giảm thiểu sai số giữa dự đoán và nhãn thực tế trong tập dữ liệu huấn luyện.
YOLO được so sánh với các thuật toán phát hiện đối tượng phổ biến như R-CNN và SSD Mặc dù không phải là thuật toán chính xác nhất, YOLO nổi bật với tốc độ phát hiện nhanh nhất Theo nghiên cứu của nhóm tại trường đại học Southern Medical, Quảng Châu, Trung Quốc (2021), ba phương pháp Faster R-CNN, YOLOv3 và SSD được đào tạo trên cơ sở dữ liệu thuốc để nhận dạng và phân phối Kết quả cho thấy mô hình Faster R-CNN đạt MAP cao hơn so với YOLO và SSD.
8 cao (87.69%) nhưng tốc độ phát hiện thấp (FPS: 7) không đủ nhanh cho thời gian thực SSD có hiệu suất trung bình với MAP (82.41%) và tốc độ (FPS: 32) Mặc dù YOLOv3 có MAP khiêm tốn nhất (80.17%) nhưng lại có tốc độ (FPS: 51) cao nhất Vì vậy, trong các bệnh viện, YOLOv3 là lựa chọn phù hợp nhất trong ba phương pháp trên, Xác định thuốc, giảm xác suất phân phối thuốc sai và có thể giúp đỡ cải thiện sự an toàn của bệnh nhân
Bảng 2.1: So sánh các thuật toán phát hiện đối tượng phổ biến dựa trên kết quả nghiên cứu [7] nêu trên
Thuật toán Độ chính xác Tốc độ Ứng dụng chính
Faster R-CNN Cao Thấp Phát hiện đối tượng chính xác cao, ứng dụng nghiên cứu
YOLOv3 Trung bình Cao Phát hiện đối tượng thời gian thực, ứng dụng di động
SSD Trung bình Trung bình Cân bằng giữa tốc độ và độ chính xác
YOLO là công cụ quan trọng trong nhiều lĩnh vực như xe tự lái, giám sát an ninh, nhận diện khuôn mặt và phân loại đối tượng Với khả năng kết hợp giữa độ chính xác và tốc độ, YOLO đóng vai trò then chốt trong ứng dụng thị giác máy tính và trí tuệ nhân tạo.
Các kỹ thuật chính được sử dụng trong YOLO
Kỹ thuật Grid Cell (Ô Lưới) đóng vai trò quan trọng trong thuật toán YOLO, giúp tối ưu hóa và đơn giản hóa quy trình phát hiện vật thể trong hình ảnh.
Kỹ thuật này chia nhỏ ảnh dữ liệu đầu vào thành lưới các ô vuông kích thước S x S, với S là số nguyên dương Mỗi ô lưới đại diện cho một khu vực cụ thể trong ảnh.
Hình 2.2: Dữ liệu ảnh được áp dụng Grid Cell [3]
Mỗi ô lưới trong mô hình YOLO được giao nhiệm vụ dự đoán các vật thể có thể xuất hiện trong khu vực của nó, sử dụng các "Anchor box" để hỗ trợ xác định vị trí và kích thước của các vật thể Anchor box là các hộp có kích thước cố định, đại diện cho các loại vật thể phổ biến, và mỗi ô lưới được gán một số Anchor box phù hợp YOLO sử dụng mạng nơ-ron tích chập (CNN) để trích xuất các đặc trưng từ mỗi ô lưới, mô tả nội dung của ô lưới và các đối tượng có thể có mặt cùng vị trí của chúng Dựa trên các đặc trưng này, YOLO thực hiện dự đoán cho mỗi ô lưới.
+ Có vật thể hay không: YOLO dự đoán khả năng xuất hiện của vật thể trong ô lưới
+ Loại vật thể: Nếu có vật thể, YOLO xác định loại vật thể (ví dụ: người đi bộ, xe máy, xe hơi, )
YOLO dự đoán vị trí của vật thể trong ô lưới bằng cách sử dụng Bounding box Kỹ thuật Regression được áp dụng để điều chỉnh Anchor box, giúp dự đoán chính xác vị trí và kích thước của vật thể.
YOLO tổng hợp các dự đoán từ tất cả các ô lưới để tạo ra kết quả phát hiện cuối cùng, bao gồm các Bounding box cho từng vật thể được phát hiện cùng với xác suất xác định loại vật thể đó.
Số lượng ô lưới trong YOLO là yếu tố quan trọng ảnh hưởng đến hiệu suất phát hiện vật thể Việc lựa chọn kích thước lưới phù hợp cần xem xét nhiều yếu tố khác nhau.
Độ phân giải của kết quả phát hiện phụ thuộc vào kích thước lưới; lưới lớn với ít ô lưới dẫn đến độ phân giải thấp, có thể bỏ sót các vật thể nhỏ, trong khi lưới nhỏ với nhiều ô lưới mang lại độ phân giải cao nhưng làm chậm tốc độ xử lý Để phát hiện các vật thể nhỏ, cần sử dụng lưới có độ phân giải cao như 53x53 hoặc 60x60, trong khi lưới có độ phân giải thấp hơn như 7x7 hoặc 13x13 là đủ cho việc phát hiện các vật thể lớn.
Kích thước lưới ảnh hưởng trực tiếp đến hiệu suất tính toán của YOLO; lưới lớn sẽ làm giảm tốc độ xử lý Do đó, cần cân nhắc giữa độ chính xác và tốc độ khi quyết định kích thước lưới.
YOLO có khả năng phát hiện nhiều vật thể trong cùng một bức ảnh, với lưới lớn giúp tăng cường khả năng này Tuy nhiên, việc tăng số lượng dự đoán có thể ảnh hưởng đến hiệu suất của hệ thống.
Nhìn chung, kỹ thuật Grid Cell là một yếu tố quan trọng giúp YOLO đạt được độ chính xác và tốc độ cao trong việc phát hiện vật thể
2.2.2 Mạng nơ-ron tích chập (CNN)
Mạng nơ-ron tích chập CNN (Convolutional Neural Network) là một mô hình Deep learning quan trọng trong công nghệ YOLO, giúp nhận diện các vật thể trong hình ảnh một cách hiệu quả.
Trong quá trình phát hiện vật thể, một mạng nơ-ron có khả năng tính toán ngay lập tức các khung giới hạn và xác suất lớp từ toàn bộ hình ảnh Quy trình này được tối ưu hóa từ đầu đến cuối nhờ vào việc sử dụng một mạng duy nhất Đối với việc nhận diện đối tượng theo thời gian thực, kiến trúc cố định có thể xử lý ảnh với tốc độ 45 khung hình mỗi giây cho mỗi khung hình 2D.
Mặc dù YOLO có thể gặp một số sai lệch trong việc định vị so với các thuật toán nhận diện khác, nhưng nó lại ít có khả năng dự đoán sai dựa trên dữ liệu trước đó Cuối cùng, YOLO trở thành lựa chọn ưu việt khi xử lý dữ liệu từ các bức ảnh tự nhiên hoặc tranh vẽ, vượt trội hơn các kỹ thuật nhận diện cạnh tranh như SSD và R-CNN.
Mạng nơ-ron tích chập (CNN) được ưa chuộng trong xử lý ảnh và trí tuệ nhân tạo nhờ hiệu suất cao, nhưng lại gặp khó khăn khi triển khai trên thiết bị di động do quy tắc tính toán phức tạp FPGA là lựa chọn lý tưởng cho việc triển khai CNN vì chúng có hiệu suất cao, khả năng lập trình lại và tiêu thụ ít năng lượng Thuật toán YOLO tiếp cận việc phát hiện mục tiêu như một vấn đề hồi quy, yêu cầu ít tính toán hơn so với các thuật toán CNN khác, điều này phù hợp với cấu trúc phần cứng FPGA Việc sử dụng tính song song của FPGA giúp giải quyết vấn đề về tính toán phức tạp của CNN và tài nguyên hạn chế trên chip FPGA, từ đó tăng tốc quá trình xử lý.
Mạng nhận diện đối tượng dựa trên CNN được chia thành hai loại chính: mạng nhận diện đối tượng hai bước và một bước Mạng hai bước bao gồm hai giai đoạn: đầu tiên tạo ra nhiều đề xuất vị trí của các đối tượng, sau đó thực hiện phân loại chúng Một số mạng tiêu biểu cho loại này bao gồm R-CNN, Fast R-CNN, SPPNet, Faster R-CNN, FPN và Mask-RCNN.
Mạng nhận diện đối tượng một bước là mô hình end-to-end, cho phép tính toán từ ảnh đầu vào đến kết quả đầu ra chỉ trong một lần Các mô hình tiêu biểu cho loại này bao gồm YOLO, SSD và RetinaNet Mặc dù bộ nhận diện đối tượng một bước có tốc độ nhanh hơn, nhưng độ chính xác về vị trí của bộ nhận diện hai bước lại cao hơn Tuy nhiên, một thách thức lớn trong ứng dụng thực tế là việc tiêu tốn nhiều tài nguyên tính toán và bộ nhớ, vấn đề này không phụ thuộc vào loại mạng nhận diện nào được sử dụng.
YOLOv8
Theo thời gian, YOLO đã trải qua nhiều phiên bản nâng cấp và mới đây YOLOv8 được ra mắt vào ngày 10 tháng 1 năm 2023, được viết và duy trì bởi
Nhóm Ultralytics đã phát triển YOLOv8, kế thừa và nâng cao những ưu điểm từ các phiên bản trước, đồng thời mang lại nhiều cải tiến vượt trội về tốc độ, độ chính xác và khả năng sử dụng.
YOLOv8 có cấu trúc tương tự YOLOv5 nhưng được cải tiến với mô-đun C2f (Channel to feature) thay thế cho CSPLayer Mô-đun C2f kết hợp đặc điểm cao cấp với thông tin ngữ cảnh, nâng cao độ chính xác trong nhận diện Bên trong C2f, kết nối residual (shortcut connection) giúp tích hợp các đặc trưng từ nhiều cấp độ phân giải khác nhau, tối ưu hóa hiệu suất trích xuất đặc trưng và cho phép mô hình học hỏi các chi tiết và mối quan hệ phức tạp trong hình ảnh.
YOLOv8 áp dụng một mô hình với phần đầu tách riêng để xử lý độc lập các nhiệm vụ như phát hiện đối tượng, phân loại và hồi quy, giúp tăng cường độ chính xác tổng thể Tại lớp đầu ra, YOLOv8 sử dụng hàm Sigmoid để tính toán điểm đối tượng, biểu thị xác suất hộp giới hạn chứa đối tượng, trong khi hàm Softmax được sử dụng để xác định xác suất lớp, cho thấy khả năng thuộc về từng lớp đối tượng Cả hàm Sigmoid và hàm Softmax đều là những hàm kích hoạt quan trọng trong mô hình YOLOv8, mỗi hàm đảm nhiệm những vai trò và đặc điểm riêng biệt.
Bảng 2.2: So sáng hai hàm kích hoạt Sigmoid và Softmax
Sigmoid Softmax Đặc điểm Dự đoán "có vật thể" hay
"không có vật thể" trong một Grid cell
Dự đoán lớp của vật thể trong một Grid cell (ví dụ: người, xe đạp, xe máy, v.v.)
Giới hạn giá trị 0 đến 1 0 đến 1, tổng bằng 1
Phân loại Nhị phân Đa lớp
YOLOv8 áp dụng hai hàm mất mát CIoU và DFL để tính toán độ mất mát của hộp giới hạn, giúp cải thiện hiệu suất nhận diện đối tượng, đặc biệt là trong việc dự đoán các đối tượng nhỏ.
CIoU (Complete IoU Loss) là một phương pháp cải thiện độ chính xác trong việc dự đoán khung bao cho các vật thể bằng cách sử dụng bốn thành phần: IoU, trung tâm hình chữ nhật, tỷ lệ khung bao và độ lệch góc Những thành phần này kết hợp thành một hàm tổn thất duy nhất, giúp mô hình học cách dự đoán khung bao chính xác hơn, đặc biệt đối với các vật thể có hình dạng bất thường hoặc bị che khuất Mục tiêu của CIoU là giảm số lượng khung bao sai (false positive) và nâng cao độ chính xác trong việc phát hiện vật thể, đặc biệt là với các vật thể nhỏ và có hình dạng phức tạp.
DFL (Dual Focal Loss) là một giải pháp hiệu quả để xử lý vấn đề mất cân bằng lớp trong tập dữ liệu Nó sử dụng hàm sigmoid để điều chỉnh độ khó học cho các lớp có nhiều mẫu (các lớp dễ) và giảm độ khó cho các lớp có ít mẫu (các lớp khó) Nhờ đó, mô hình có thể tập trung vào việc học các lớp khó hơn, cải thiện hiệu suất phát hiện cho tất cả các lớp Chức năng chính của DFL là nâng cao hiệu suất phát hiện cho các lớp ít mẫu trong dữ liệu, đồng thời giảm thiểu ảnh hưởng của mất cân bằng lớp đến hiệu suất của mô hình.
CSPDarknet53 là một mạng nơ-ron tích chập (CNN) quan trọng được sử dụng làm backbone (xương sống) cho mô hình phát hiện vật thể YOLOv4 và YOLOv8
CSPDarknet53 được phát triển để tối ưu hóa hiệu suất của Darknet53, đặc biệt trong việc cân bằng giữa độ chính xác và tốc độ xử lý Điểm nổi bật của CSPDarknet53 là việc tích hợp CSPNet (Cross Stage Partial Network), giúp nâng cao khả năng xử lý và cải thiện kết quả.
CSPNet cải thiện khả năng học tập và tối ưu hóa luồng gradient bằng cách chia nhỏ bản đồ đặc trưng và kết hợp chúng qua các giai đoạn khác nhau, từ đó giảm thiểu tính toán trùng lặp Kiến trúc phân tầng của CSPDarknet53 cho phép luồng gradient di chuyển qua nhiều đường dẫn mạng khác nhau, tăng cường sự kết hợp gradient và giúp mạng học hiệu quả hơn.
CSPDarknet53 sở hữu 27 đặc trưng khác nhau của dữ liệu và giảm thiểu lượng tính toán cần thiết, giúp mô hình nhẹ nhàng hơn và dễ dàng triển khai trên các thiết bị có tài nguyên hạn chế Việc áp dụng CSPNet tối ưu hóa sự kết hợp gradient và giảm thiểu thông tin trùng lặp, từ đó nâng cao khả năng học của mạng Nhờ vào tính hiệu quả trong tính toán, CSPDarknet53 cho phép YOLO hoạt động nhanh hơn trên các thiết bị hạn chế và phù hợp cho các tác vụ thời gian thực.
SPPF (Spatial Pyramid Pooling Fast) là hàm quan trọng trong mô hình YOLOv8, giúp trích xuất đặc trưng từ ảnh đầu vào Kỹ thuật SPP cho phép tạo ra các biểu diễn có độ dài cố định, bất kể kích thước ảnh, từ đó xử lý hiệu quả các hình ảnh có kích thước khác nhau SPP chia bản đồ đặc trưng thành các vùng với tỷ lệ khác nhau và thực hiện các phép pooling, tạo ra vector đặc trưng có kích thước cố định SPPF là phiên bản tối ưu hóa của SPP, nâng cao hiệu suất trích xuất đặc trưng.
SPPF đơn giản hóa quy trình trích xuất đặc trưng đa tỷ lệ bằng cách sử dụng nhiều lớp pooling với kích thước khác nhau, giúp tăng tốc độ thực hiện mà vẫn giữ nguyên lợi ích của việc tìm kiếm các đặc trưng ở nhiều tỷ lệ Các đầu ra từ các lớp pooling được kết hợp để tạo thành một vector đặc trưng duy nhất.
Thiết kế của SPPF được tối ưu hóa nhằm giảm tải tính toán và tăng tốc độ xử lý, giúp nó trở thành lựa chọn lý tưởng cho các ứng dụng thời gian thực, đặc biệt trong nhận diện đối tượng với các mô hình YOLO.
Hình 2.16: Kiến trúc của YOLOv8 [6]
Dựa trên kiến trúc của YOLOv8, một ảnh đầu vào có kích thước 640x640x3 (chiều cao x chiều rộng x số kênh) sẽ được xử lý Ảnh này có chiều cao và chiều rộng là 640 pixel, với 3 kênh màu tương ứng với RGB Ảnh sẽ được đưa vào hàm Conv với các tham số k=3, s=2, và p=1 Tham số k=3 chỉ kích thước của bộ lọc tích chập, nghĩa là bộ lọc có kích thước 3x3 pixel Tham số s=2 xác định bước nhảy của bộ lọc, cho biết bộ lọc sẽ di chuyển qua ảnh với bước nhảy 2 pixel theo cả chiều cao và chiều rộng Cuối cùng, p=1 là hệ số bù, cho phép bộ lọc lấn ra ngoài rìa ảnh và sử dụng padding để thêm các pixel ảo vào rìa, giúp bộ lọc bao phủ toàn bộ ảnh và hạn chế việc mất thông tin.
Trong trường hợp mất thông tin, p=1 có nghĩa là sẽ thêm 1 pixel "ảo" vào mỗi rìa ảnh theo cả chiều ngang và chiều dọc Sau khi áp dụng hàm Conv, chiều dài của ảnh sẽ giảm còn 320 pixel theo công thức đã cho.
Width_out=(Width_in - Kernel_width + 2 x Padding)/Stride (2.5)
Và chiều cao của ảnh sẽ giảm xuống 320 pixel qua công thức:
Height_out=(Height_in - Kernel_height + 2 x Padding)/Stride (2.6)
Sau lớp Conv đầu tiên, kết quả đạt được là 320x320x64xw, trong đó 64xw là số lượng feature map của ảnh Tiếp theo, qua hàm Conv thứ hai, kích thước ảnh giảm xuống còn 160x160 pixel với 128xw feature map Ảnh sau đó được đưa vào hàm C2f với “shortcut=true”, cho phép sử dụng kết nối residual để kết hợp các đặc trưng từ các cấp độ phân giải khác nhau, từ đó nâng cao hiệu suất trích xuất đặc trưng Số kênh của feature map đầu ra từ mỗi khối CSPDarknet là 3xd Quá trình này giúp giảm kích thước ảnh và tăng cường các bản đồ đặc trưng, tạo điều kiện thuận lợi cho mô hình trong việc dự đoán các đối tượng.
Mạng dữ liệu COCO
Trong lịch sử nghiên cứu thị giác máy tính, bộ dữ liệu đóng vai trò quan trọng trong việc huấn luyện và đánh giá thuật toán, đồng thời thúc đẩy nghiên cứu vào các vấn đề mới và phức tạp hơn Sự phát triển của các bộ dữ liệu nhận diện đối tượng đã cho phép so sánh hàng trăm thuật toán nhận diện hình ảnh, dẫn đến những tiến bộ đáng kể trong lĩnh vực này Gần đây, bộ dữ liệu ImageNet với hàng triệu hình ảnh đã mở ra cơ hội mới cho phân loại và phát hiện đối tượng thông qua các thuật toán học sâu Các bộ dữ liệu nhận diện đối tượng được chia thành ba nhóm chính: phân loại đối tượng, phát hiện đối tượng và gán nhãn ngữ cảnh cho đối tượng.
Phân loại ảnh là một nhiệm vụ thiết yếu trong lĩnh vực thị giác máy tính, cho phép máy tính nhận diện và phân loại các đối tượng trong hình ảnh Để thực hiện hiệu quả quá trình này, cần sử dụng các bộ dữ liệu với những hình ảnh đã được gắn nhãn rõ ràng.
Các bộ dữ liệu như MNIST và COIL ban đầu cung cấp hình ảnh đơn giản với một đối tượng trên nền trắng Tiếp theo, Caltech 101 và Caltech 256 đã giới thiệu hình ảnh đa dạng và thực tế hơn từ internet với nhiều loại đối tượng khác nhau CIFAR-10 và CIFAR-100 tiếp tục mở rộng phạm vi với số lượng đối tượng và hình ảnh lớn hơn, tuy nhiên, chúng vẫn chỉ phản ánh một phần nhỏ của thế giới thực.
Gần đây, bộ dữ liệu ImageNet đã tạo ra một bước tiến lớn với 22,000 loại đối tượng với 500-1000 hình ảnh mỗi loại và hơn 14 triệu hình ảnh được gắn nhãn Điều này đã làm nền tảng cho những tiến bộ đáng kể trong việc phân loại hình ảnh bằng cách sử dụng các thuật toán học sâu [20]
Phát hiện đối tượng là quá trình xác định và định vị các đối tượng thuộc lớp cụ thể trong ảnh thông qua hộp giới hạn Ban đầu, các thuật toán chủ yếu tập trung vào phát hiện khuôn mặt với các bộ dữ liệu đơn giản, sau đó phát triển thành các bộ dữ liệu thực tế hơn Một thách thức lớn là phát hiện người đi bộ, với bộ dữ liệu Caltech Pedestrian chứa hàng trăm nghìn trường hợp đã được gắn nhãn Từ 2005 đến 2012, nhiều nỗ lực đã tạo ra các bộ dữ liệu thử nghiệm như PASCAL VOC, bao gồm hàng nghìn hình ảnh và hộp giới hạn cho nhiều loại đối tượng Gần đây, ImageNet đã phát triển một thách thức mới với hơn 400,000 hình ảnh và 200 loại đối tượng Việc sử dụng hình ảnh trong môi trường tự nhiên là rất quan trọng, vì nhiều đối tượng phụ thuộc vào thông tin ngữ cảnh, dẫn đến đề xuất sử dụng các trường hợp phân đoạn đầy đủ để đánh giá hiệu suất của các thuật toán phát hiện đối tượng.
Gắn nhãn ngữ cảnh cho các đối tượng trong bức ảnh là quá trình phân loại từng pixel thành các danh mục cụ thể như bầu trời, ghế và sàn Việc này không chỉ giúp hiểu rõ hơn về nội dung hình ảnh mà còn hỗ trợ trong các ứng dụng như nhận diện đối tượng và phân tích hình ảnh.
Việc gắn nhãn cho các đối tượng như cỏ, đường phố hoặc tường không cần phân đoạn từng trường hợp cụ thể, giúp đơn giản hóa quá trình phát hiện Các bộ dữ liệu hiện có cho cả cảnh trong nhà và ngoài trời, một số còn cung cấp thông tin về chiều sâu Mục tiêu chính là đo lường độ chính xác từng pixel của các nhãn đối tượng, tuy nhiên, để phân biệt giữa các trường hợp cụ thể, cần có sự hiểu biết rõ ràng về phạm vi của từng đối tượng.
COCO, hay Common Objects in Context, là một trong những bộ dữ liệu phổ biến nhất được sử dụng trong lĩnh vực nhận diện và phân loại đối tượng qua hình ảnh Bộ dữ liệu này bao gồm các hình ảnh thực tế chứa nhiều đối tượng khác nhau, kèm theo nhãn (label) cho mỗi đối tượng và các định nghĩa về mối quan hệ giữa chúng COCO có sự đa dạng về loại hình ảnh, từ các bức ảnh trong nhà đến ngoài trời, và các đối tượng có thể xuất hiện trong nhiều ngữ cảnh khác nhau Điều này làm cho COCO trở thành một bộ dữ liệu phong phú và đa dạng, rất hữu ích cho việc huấn luyện và đánh giá các mô hình nhận diện và phân loại đối tượng [20]
Mạng COCO đóng vai trò quan trọng trong việc phát triển và đánh giá các mô hình YOLO nhờ vào tập dữ liệu lớn và đa dạng với nhiều ảnh và chú thích cho các đối tượng khác nhau Việc sử dụng COCO để huấn luyện mô hình YOLO đảm bảo khả năng nhận diện và phân loại vật thể trong nhiều bối cảnh khác nhau Bên cạnh đó, COCO cung cấp bộ đánh giá hiệu suất tiêu chuẩn, giúp so sánh độ chính xác của các mô hình YOLO một cách khách quan Ngoài ra, COCO còn hỗ trợ các nhà nghiên cứu phát triển kỹ thuật mới nhằm cải thiện hiệu suất của YOLO Tóm lại, mạng COCO là công cụ thiết yếu cho việc phát triển và ứng dụng YOLO trong nhận diện và phân loại vật thể.
Huấn luyện YOLO
Huấn luyện mô hình YOLO (You Only Look Once) là một quy trình phức tạp nhưng cực kỳ quan trọng trong lĩnh vực computer vision
Quá trình huấn luyện mô hình bắt đầu bằng việc chuẩn bị dữ liệu, bao gồm thu thập hình ảnh và gán nhãn với các Bounding box cũng như nhãn phân loại cho các đối tượng Tiếp theo, cần tạo các tệp dữ liệu huấn luyện, đảm bảo chúng đúng định dạng với tệp hình ảnh và tệp nhãn tương ứng Bước tiếp theo là tạo file cấu hình để xác định các thông số quan trọng như số lớp đầu ra, kiến trúc mạng và các tham số huấn luyện Cuối cùng, tải một mô hình YOLO đã được tiền huấn luyện từ tập dữ liệu lớn như COCO dataset để làm điểm khởi đầu cho quá trình huấn luyện.
Sau khi hoàn tất việc chuẩn bị, tiến hành huấn luyện bằng tệp dữ liệu đã chuẩn bị trước đó Quá trình này tiêu tốn nhiều thời gian và yêu cầu nguồn tài nguyên tính toán lớn, nhất là khi làm việc với khối lượng dữ liệu lớn.
Sau khi hoàn tất quá trình huấn luyện, cần tiến hành kiểm tra và đánh giá mô hình trên tập dữ liệu kiểm tra để xác nhận tính chính xác và hiệu quả của nó Nếu cần thiết, có thể thực hiện các điều chỉnh bổ sung nhằm nâng cao hiệu suất của mô hình trước khi đưa vào ứng dụng thực tế.
Quá trình huấn luyện YOLO mặc dù phức tạp và yêu cầu kiến thức chuyên sâu, nhưng với sự chăm chỉ và kiên nhẫn, bạn có thể xây dựng một mô hình mạnh mẽ và hiệu quả cho các ứng dụng thị giác máy tính của mình.
Firebase
Firebase là nền tảng phát triển ứng dụng di động và web toàn diện do Google cung cấp, giúp đơn giản hóa quy trình phát triển, triển khai và quản lý ứng dụng Hàng triệu nhà phát triển trên toàn thế giới sử dụng Firebase để xây dựng các ứng dụng chất lượng cao, an toàn và hiệu quả Các dịch vụ chính mà Firebase cung cấp bao gồm nhiều công cụ hữu ích cho việc phát triển ứng dụng.
Firebase Authentication là giải pháp đơn giản để xác thực và quản lý người dùng trong ứng dụng Tích hợp với Firebase Authentication cho phép người dùng đăng nhập qua nhiều phương tiện như email/password, Google, Facebook, Twitter, và hơn thế nữa Ngoài ra, Firebase Authentication còn hỗ trợ xác thực qua số điện thoại và xác thực từ máy chủ thông qua các token tùy chỉnh.
Firebase Realtime Database là một cơ sở dữ liệu thời gian thực lưu trữ dữ liệu dưới dạng JSON, cho phép đồng bộ hóa dữ liệu giữa các thiết bị Tính năng này giúp ứng dụng tự động cập nhật dữ liệu ngay khi có sự thay đổi, mà không cần làm mới hoặc tải lại trang.
Firestore là một cơ sở dữ liệu đám mây mạnh mẽ và linh hoạt, cho phép lưu trữ dữ liệu dưới dạng tài liệu và bộ sưu tập Nó cung cấp khả năng truy vấn linh hoạt, đồng bộ dữ liệu theo thời gian thực và hỗ trợ các tính năng an toàn và quyền riêng tư.
Firebase Storage là giải pháp lý tưởng cho việc lưu trữ tệp tin như hình ảnh, video và âm thanh trên đám mây Nó cho phép người dùng tải lên và tải xuống tệp tin nhanh chóng, đồng thời quản lý hiệu quả các tệp tin trong ứng dụng của bạn.
Firebase Hosting cung cấp cho người dùng khả năng đăng ký, triển khai và quản lý ứng dụng web, bao gồm cả trang web tĩnh và động Với dịch vụ này, bạn có thể phân phối nội dung toàn cầu một cách nhanh chóng và hiệu quả, đồng thời đảm bảo hiệu suất cao và khả năng mở rộng.
Firebase là một công cụ được nhiều nhà phát triển ưa chuộng nhờ vào tính năng hỗ trợ xây dựng và triển khai ứng dụng một cách nhanh chóng và tiện lợi Với sự gia tăng phổ biến, Firebase đã trở thành một phần thiết yếu trong quá trình phát triển ứng dụng.
Firebase mang lại nhiều lợi ích đáng chú ý, trong đó nổi bật là tính toàn diện và tích hợp, cung cấp một loạt dịch vụ đám mây như quản lý người dùng, lưu trữ dữ liệu, cơ sở dữ liệu thời gian thực và lưu trữ tệp tin Sự đồng nhất của các dịch vụ này giúp các nhà phát triển dễ dàng tích hợp và sử dụng mà không phải lo lắng về việc quản lý nhiều dịch vụ khác nhau Hơn nữa, Firebase cũng nổi tiếng với tính linh hoạt và khả năng mở rộng, cho phép các nhà phát triển tùy chỉnh ứng dụng theo nhu cầu cụ thể Bằng cách tận dụng các tính năng như Firebase Authentication, Realtime Database và Firestore, họ có thể xây dựng các ứng dụng thời gian thực, có khả năng mở rộng và đáp ứng nhanh chóng nhu cầu người dùng.
Firebase không chỉ là nền tảng phát triển ứng dụng mà còn cung cấp các công cụ phân tích và giám sát, giúp nhà phát triển nắm bắt cách người dùng tương tác với ứng dụng Nhờ đó, họ có thể cải thiện trải nghiệm người dùng, tăng cường hiệu suất và hiệu quả của ứng dụng, từ đó nâng cao cơ hội thành công trong thị trường cạnh tranh hiện nay.
THIẾT KẾ HỆ THỐNG
Yêu cầu của hệ thống
Các yêu cầu của hệ thống để đạt được mục tiêu đề tài bao gồm:
Hệ thống cần có chức năng phân loại các loại trái cây khác nhau và đánh giá mức độ hư hại của từng loại.
- Điều chỉnh tốc độ của băng tải: Hệ thống cần có khả năng cho người sử dụng điều chỉnh được tốc độ của băng chuyền
- Hiển thị hình ảnh của camera: Hệ thống cần hiển thị hình ảnh được nhận diện thông qua mạng Yolo
Hệ thống cần đảm bảo kết nối Wifi ổn định giữa các thiết bị như máy tính, vi điều khiển và camera, đồng thời sử dụng Firebase để giao tiếp hiệu quả.
- Các nút nhấn dừng khẩn cấp: Hệ thống hỗ trợ 3 nút nhấn có chức năng lần lượt là: khởi động hệ thống, dừng băng chuyền, dừng khẩn cấp.
Sơ đồ đặc tả của hệ thống
Hình 3.1: Sơ đồ đặc tả của hệ thống.
Sơ đồ khối của hệ thống
Hình 3.2: Sơ đồ khối của hệ thống
Chức năng và hoạt động của các khối:
- Khối xử lý trung tâm (MCU): Nhận các bit tín hiệu, và điều khiển các thiết bị ngoại vi có trong hệ thống
- Khối nguồn: Bao gồm 24V/DC, 12V/DC, 5V/DC cung cấp cho các thiết bị trong hệ thống
- Khối điều khiển: Nhận tín hiệu từ MCU, sau đó kích mở các MOSFET để dòng điện chạy qua các thiết bị mong muốn
Khối cảm biến tiệm cận được lắp đặt trên băng chuyền giúp piston nhận diện chính xác thời điểm vật thể đến gần, từ đó đẩy vật thể đi một cách hiệu quả Đặc biệt, tốc độ nhận diện của cảm biến cần phải nhanh để đảm bảo hệ thống hoạt động mượt mà và liên tục.
- Khối piston: Dùng để đẩy các vật thể
- Camera: Ghi hình ảnh các vật thể và gửi về máy tính
- CPU and YOLO: Xử lý các vật thể có trong hình ảnh, đánh giá độ chính xác và xác định loại vật thể
- Firebase: Có chức năng trung gian giao tiếp giữa máy tính và vi điều khiển thông qua các số bit
Thiết kế chi tiết khối
3.4.1 Khối MCU Để có thể chọn được MCU phù hợp với hệ thống, MCU cần đáp ứng các yêu cầu đã đặt ra cho hệ thống như sau: xuất tín hiệu điều khiển các thiết bị ngoại vi, kết nối được với Firebase, có hỗ trợ dual core, bộ nhớ đủ để sử dụng trong quá trình lập trình, kích thước, giá thành, sử dụng nguồn 5V/DC
Xuất tín hiệu điều khiển các thiết bị ngoại vi: Module ESP32 có thể xuất tín hiệu với nhiều dạng như: Analog, Digital, PWM, giao thức I2C…
Module ESP32 hỗ trợ kết nối Wi-Fi, cho phép truy cập vào nền tảng Firebase để tải và gửi dữ liệu một cách dễ dàng.
Hỗ trợ dual core: Module ESP32 có cấu tạo dual core, có thể ứng dụng vô việc lập trình chia tác vụ
Bộ nhớ: Bộ nhớ của module ESP32 tuy không lớn, nhưng đối với hệ thống của đề tài thì module ESP32 vẫn có thể đáp ứng tốt
Module ESP32 với 30 chân GPIO là lựa chọn lý tưởng cho các hệ thống nhỏ gọn, giúp giao tiếp hiệu quả với MCU mà không cần nhiều ngoại vi.
Giá thành của Module ESP32 trên thi trường rất rẻ, chỉ rơi vào mức 50 ~ 70 ngàn đồng Và module còn hỗ trợ sử dụng nguồn 5V/DC
Nhóm sinh viên đã quyết định chọn Module ESP32 làm MCU cho hệ thống, vì module này đáp ứng đầy đủ các yêu cầu mà hệ thống đề ra.
Bảng 3.1: Thông số kỹ thuật ESP32
Thông số kỹ thuật Mô tả Điện áp hoạt động 5 V/DC Điện áp giao tiếp GPIO 3.3 V/DC
Dòng cung cấp tối thiểu 500mA
RAM 448 KB ROM và 520 KB SRAM
Hỗ trợ các giao thức UART, SPI, I2C, PWM
Tần số hoạt động 240 MHz
Kết nối trực tiếp với nguồn 5V/DC của hệ thống
3.4.2 Khối cảm biến tiệm cận
Giới thiệu cảm biến E18-D80NK
Cảm biến tiệm cận E18-D80NK dùng ánh sáng hồng ngoại để xác định khoảng cách tới vật cản cho độ phản hồi nhanh và rất ít nhiễu
Cảm biến tiệm cận E18-D80NK có thể chỉnh khoảng cách mong muốn thông qua biến trở
Cảm biến sử dụng cấu trúc Transistor NPN - Open Collector với ngõ ra tín hiệu, yêu cầu có trở kéo từ 1 đến 10K kết nối lên chân nguồn dương VCC để tạo ra tín hiệu mức cao (High).
Với những đặc điểm trên, có thể thấy cảm biến E18-D80NK vừa phù hợp với yêu cầu của hệ thống và tương thích với MCU
Bảng 3.2: Thông số kỹ thuật cảm biến E18-D80NK
Thông số kỹ thuật Mô tả Điện áp hoạt động 5V
Dòng tiêu thụ Khoảng 300mA
Thời gian phản hồi ~ 2ms
Bảng 3.3: Bảng kết nối các chân giữa ESP32 và E18-D80NK
Hình 3.5: Sơ đồ kết nối giữa E18-D80NK và ESP32
Các chân output của cảm biến cung cấp điện áp 5V/DC, trong khi vi điều khiển chỉ chấp nhận điện áp tối đa 3.3V Để giải quyết vấn đề này, nhóm sinh viên đã sử dụng điện trở 1k Ohm kết hợp với diode Zener 3.3V Điện trở 1k Ohm giúp hạn chế dòng điện, bảo vệ diode khỏi hư hỏng do quá dòng.
Diode Zener có chức năng ổn định điện áp, tạo ra điện áp rơi 3.3V ở chân GPIO, giúp tín hiệu vào ESP32 đạt mức điện áp cho phép.
Nhóm sinh viên sẽ sử dụng băng chuyền với điện áp 24V/DC, cho phép kết nối trực tiếp với nguồn từ bộ chuyển đổi Việc này giúp giảm nhiệt độ cho các transistor công suất chịu dòng 12V/DC hoặc 5V/DC, nâng cao hiệu suất hoạt động.
Với chiều rộng của băng chuyền trên có thể vừa vặn với các loại trái cây có kích thước chiều rộng rơi vào khoảng 4~6 cm
Bảng 3.4: Thông số kỹ thuật băng chuyền
Thông số kỹ thuật Mô tả Điện áp hoạt động 24V
Giới thiệu piston từ JF-0826B:
JF-0826B là piston kéo đẩy bằng nam châm, dùng điện áp 12V/DC cho lực kéo 20N (2kg) và có hành trình của chốt 10mm
Băng chuyền rộng 60mm được thiết kế để vận chuyển ba loại trái cây có kích thước trung bình từ 50~60mm Khi piston đẩy, khoảng trống 10mm sẽ giúp trái cây rơi xuống khay chứa một cách an toàn Với lực đẩy 20N, piston đảm bảo đủ sức di chuyển trái cây mà không gây hư hại cho chúng.
Bảng 3.5: Thông số kỹ thuật piston từ JF-0826B
Thông số kỹ thuật Mô tả Điện áp hoạt động 12V
Hình 3.8: Sơ đồ kết nối giữa Piston và MOSFET
Các piston hoạt động với điện áp 12V/DC, trong đó mỗi dây cực của piston được kết nối với nguồn điện 12V/DC và chân D của MOSFET Khi MOSFET được kích mở, cực nối với chân D sẽ được kết nối với GND, tạo thành một mạch hoàn chỉnh.
1 mạch kín và piston sẽ được kích hoạt
Diode được kết nối ngược chiều với piston để triệt tiêu điện áp phân cực ngược, phát sinh khi piston tắt đột ngột Nếu không được triệt tiêu, biên độ điện áp xung này có thể rất cao, gây nguy hiểm cho các mối nối của MOSFET.
FQP30N06L là một MOSFET công suất kênh N với điện áp kích mở thấp và khả năng chịu đựng điện áp, dòng điện cao Thiết bị này dễ sử dụng và không cần dòng điện để kích mở như BJT, giúp giảm thiểu công suất hao phí.
Bảng 3.6: Thông số kỹ thuật MOSFET FQP30N06L
Thông số kỹ thuật Mô tả Điện áp chịu đựng VDS tối đa 60V Điện áp chịu đựng VGS tối đa 20V
PC817 hoạt động khá đơn giản, khi điện áp đầu vào được đặt ở chân 1 và chân
Khi LED được kích hoạt, transistor bên trong IC sẽ nhận ánh sáng và chuyển sang trạng thái bão hòa, khiến chân 3 và 4 kết nối với nhau Linh kiện này yêu cầu điện áp kích mở bóng LED ở mức thấp, rất phù hợp với GPIO của Module ESP32 với chỉ 3.3V Ngoài ra, điện áp cách ly của linh kiện này cao, đảm bảo an toàn cho MCU.
Bảng 3.7: Thông số kỹ thuật Opto PC817
Thông số kỹ thuật Mô tả Điện áp ngõ ra tối đa 35V
Dòng ngõ ra 50mA Điện áp cách ly 5000Vrms
Bảng 3.8: Kết nối chân giữa ESP32 và cảm biến Opto PC817
Hình 3.9: Sơ đồ kết nối của khối điều khiển
Các điện trở 220 Ohm có chức năng hạn dòng giúp bóng led ở trong PC817 không bị quá dòng chịu đựng
Các điện trở R5, R6, và R7 với giá trị 10k Ohm có chức năng xả điện áp tại cực GS của MOSFET Khi nguồn cấp vào cực G ngừng, điện áp tại mối nối cực GS vẫn tồn tại giống như hai bản mặt của tụ điện Nếu không xả hoàn toàn điện áp, MOSFET sẽ không thể đóng lại Hơn nữa, các điện trở này còn kết hợp với các linh kiện khác để đảm bảo hoạt động ổn định của mạch.
Điện trở 1k Ohm được sử dụng để chia một mức điện áp phù hợp cho cực G của MOSFET khi transistor PC817 đang mở Đối với MOSFET điều khiển băng tải, nhóm sinh viên đã chọn sử dụng một biến trở, cho phép người dùng tùy chỉnh mức điện áp rơi ở cực, vẫn giữ chức năng tương tự như điện trở cố định.
G, do đó người sử dụng có thể điều chỉnh được tốc độ của băng tải
Thiết kế phần mềm
3.5.1 Sử dụng ngôn ngữ lập trình Python cùng với OpenCV và model
Gán các thư viện cần thiết:
Khi chương trình mới bắt đầu, chương trình sẽ gán các thư viện cần thiết trong quá trình vận hành import cv2 import numpy as np import threading
55 from yolov8 import YOLOv8 import queue
Khởi tạo camera: url = 'http://192.168.137.43:81/stream' cap = VideoCapture(url)
Chương trình sẽ lấy đường dẫn chứa địa chỉ IP và cổng (port) của camera, trong đó địa chỉ IP là địa chỉ của thiết bị camera kết nối Wifi với router Đồng thời, máy tính chạy chương trình cũng cần phải được kết nối với router này.
The program assigns a path to a previously declared class called VideoCapture Within this class, the constructor initializes the video capture object using OpenCV's cv2.VideoCapture method and sets up a queue for frame processing A separate thread is started to continuously read frames from the video source The reader function retrieves frames in a loop, breaking the loop if reading fails Additionally, it checks the queue to discard any previous frames if the queue is not empty.
56 except queue.Empty: pass self.q.put(frame) def read(self): return self.q.get() def release(self): self.cap.release()
Khởi tạo YOLOV8: model_path = "models/best1.onnx" yolov8_detector = YOLOv8(model_path, conf_thres=0.5, iou_thres=0.5,)
Chương trình sẽ gán đường dẫn file có đuôi onnx (ONNX Runtime) sau khi đã huấn luyện dữ liệu Sau khi hoàn tất gán, chương trình sẽ khởi tạo một đối tượng yolov8_detector từ class trong thư viện YOLOv8 đã được thiết lập trước đó.
Các tham số như là:
Giá trị conf_thres giúp loại bỏ các đối tượng có độ chính xác thấp hơn mức đã định Trong chương trình, nhóm sinh viên sẽ đặt mức này ở 50%.
Tác dụng của iou_thres là loại bỏ các hộp được vẽ có xác suất dự đoán dưới mức đã định sẵn Trong đoạn mã trên, nhóm sinh viên thực hiện đề tài đã thiết lập ngưỡng này ở mức 50%.
Tạo và gán tên cho cửa sổ window: cv2.namedWindow("DO AN TOT NGHIEP", cv2.WINDOW_NORMAL)
Chương trình sẽ tạo một cửa sổ window có tên là DO AN TOT NGHIEP, và có chất lượng độ phân giải là bình thường
Vòng lặp while True: Đọc các khung hình từ Camera:
# Read frame from the video frame = cap.read()
Chương trình sử dụng lệnh cap.read() để gán các khung hình, trong đó cap là đối tượng của class VideoCapture, cho phép đọc video từ luồng trực tuyến.
Tính toán và phát hiện đối tượng: boxes, scores, class_ids = yolov8_detector(frame)
Biến frame chứa một khung hình ảnh từ luồng video Khi sử dụng câu lệnh yolov8_detector(frame), khung hình đầu vào sẽ được xử lý bằng mô hình YOLOv8 để phát hiện các đối tượng trong đó.
Kết quả trả về của quá trình phát hiện đối tượng bao gồm ba thành phần chính:
Boxes là các hình hộp giới hạn dùng để xác định vị trí của các đối tượng được phát hiện trong khung hình Mỗi box được biểu diễn bằng các tọa độ cụ thể.
Điểm số là các chỉ số phần trăm thể hiện độ chính xác của các đối tượng được phát hiện trong khung hình, với mỗi điểm số được biểu diễn dưới dạng phần trăm.
Class_ids là các số đại diện cho từng đối tượng được phát hiện, với mỗi nhãn khác nhau tương ứng với một loại đối tượng cụ thể mà mô hình đã được huấn luyện để nhận diện.
Incorporate Firebase to update and display the results of detected objects using the code snippet: `combined_img = yolov8_detector.draw_detections(frame)` Finally, present the output with the command `cv2.imshow("DO AN TOT NGHIEP", combined_img)`.
Câu lệnh combined_img = yolov8_detector.draw_detections(frame) thực hiện việc gọi ra hàm draw_detections của đối tượng yolov8_detector Phương thức
Hàm 58 được sử dụng để vẽ các giá trị trả về từ việc tính toán các đối tượng đã được phát hiện trong khung hình Kết quả bao gồm các hộp (boxes), điểm số (scores), và mã lớp (class_ids), và được lưu trữ trong biến combined_img.
The integration of signal sending to Firebase has been incorporated into the library, specifically within the draw_detections and detect_objects functions The draw_detections function takes an image, bounding boxes, scores, and class IDs, and creates a copy of the image for detection visualization It calculates the image's height and width to determine an appropriate font size and text thickness for overlaying detection results Additionally, the function utilizes draw_masks to apply the detection masks to the image.
To draw bounding boxes and labels for detected objects, iterate through the class IDs, boxes, and scores For each detection, assign a color based on the class ID and use the `draw_box` function to render the box on the detection image Create a caption that includes the class name and the detection score, then use `draw_text` to overlay this caption on the image Additionally, a separate thread is initiated to update the Firebase database with the label of the detected object If the detected label is 'Tao Tot', specific database fields are set to zero, indicating a reset for the corresponding categories This process culminates in returning the annotated detection image.
The code snippet demonstrates how to set values in a database based on specific fruit labels When the label is 'Tao', the database sets the value for "Tao" to 1 If the label is 'Cam Tot', it resets the values for "Tao," "Chuoi," "Camhu," "Chuoihu," and "Taohu" to 0 while setting "Cam" to 1 Similarly, when the label is 'Chuoi Tot', it updates "Chuoi" to 1 and resets the others to 0 For 'Tao Hu', "Taohu" is set to 1, and all other fruit values are reset to 0 The same pattern follows for 'Cam Hu', where "Camhu" is set to 1, and for 'Chuoi Hu', where "Chuoihu" is set to 1 If the label is 0, no specific action is defined.
KẾT QUẢ
Kết quả mạch in
Hình 4.1: Sơ đồ toàn mạch
Hình 4.2: Lớp trên mạch in
Hình 4.3: Lớp dưới mạch in
Kích thước mạch in: Mạch in có kích thước 199.5x122.5mm
Hình 4.4: Kích thước mạch in
Bảng 4.1: Bảng linh kiện sử dụng Điện trở 4 điện trở 10k Ohm, 8 điện trở 1k Ohm, 4 điện trở 220 Ohm, 3 điện trở 150 Ohm/5W
Tụ điện 2 tụ 100nF, 1 tụ 220uF, 1 tụ 2200uF
Diode zener 2 cái 12V, 1 cái 5.6V, 3 cái 3.3V
Hệ thống sau khi thi công
Hình 4.5: Hệ thống sau khi thi công
Kết quả vận hành
Hình 4.6: Hệ thống phân loại quả cam
Hình 4.7: Hệ thống phân loại quả táo
Hình 4.8: Hệ thống phân loại quả chuối
Hiển thị hình ảnh của camera:
Hình 4.9: Hiển thị hình ảnh quả táo sau khi phân loại
Hình 4.10: Hiển thị hình ảnh quả cam sau khi phân loại
Hình 4.11: Hiển thị hình ảnh quả chuối sau khi phân loại
Hình 4.12: Hiển thị hình ảnh quả táo hư sau khi phân loại
Hình 4.13: Hiển thị hình ảnh quả chuối hư sau khi phân loại
Hình 4.14: Hiển thị hình ảnh quả cam hư sau khi phân loại
Hình 4.15: Hệ thống phân loại trái cam trong môi trường nhiều ánh sáng
Hình 4.16: Hệ thống phân loại trái táo trong môi trường nhiều ánh sáng
Hình 4.17: Hệ thống phân loại trái táo trong môi trường nhiều ánh sáng
Hình 4.18: Hệ thống phân loại trái táo trong môi trường nhiều ánh sáng
Hình 4.19: Hệ thống phân loại trái chuối táo trong môi trường nhiều ánh sáng
Hình 4.20: Hệ thống phân loại trái chuối trong môi trường nhiều ánh sáng
Hình 4.21: Hệ thống phân loại trái cam trong môi trường nhiều ánh sáng
Đánh giá và nhận xét
Bảng 4.2: Bảng thống kê độ chính xác của hệ thống
Số lần Táo tốt Táo hư Cam tốt
Dựa trên bảng số liệu thống kê, hệ thống phân loại không sai quá 3 loại quả trong một lần thử Quả táo có màu đỏ chiếm đa phần bề mặt, giúp hệ thống dễ dàng nhận biết, với xác suất phân loại táo tốt đạt 90% và táo hư 88% Quả cam cũng có màu vàng chiếm gần hết bề mặt, nhưng khi hư, vết hỏng không nổi bật như táo, dẫn đến xác suất phân loại cam tốt là 95% và cam hư 84% Đối với quả chuối, có nhiều mức độ màu sắc từ xanh, chín đến hỏng; vết ố đen trên chuối hỏng lớn hơn nhiều so với chuối chín, nhưng vẫn có thể gây nhầm lẫn cho hệ thống, với xác suất chuối hư là 90% và chuối chín 84% Tổng xác suất phân loại đúng cho các loại quả đạt 88%, cho thấy hệ thống hoạt động hiệu quả.
Kết quả hình ảnh cho thấy sự kết nối Wifi và giao tiếp giữa các thiết bị trong hệ thống hoạt động một cách ổn định.
Hệ thống vận hành hiệu quả bằng cách điều khiển piston để phân loại ba loại trái cây: táo, cam và chuối Kết quả cho thấy hệ thống hoạt động ổn định dựa trên các hình ảnh quan sát được.