Giới thiệu dự án

Bối cảnh ngành và thực trạng sản xuất

Ngành công nghiệp chế biến và tiêu thụ thịt trên toàn cầu đang trải qua giai đoạn chuyển đổi số mạnh mẽ nhằm đáp ứng các tiêu chuẩn ngày càng khắt khe về an toàn vệ sinh thực phẩm và truy xuất nguồn gốc. Theo các báo cáo thống kê ngành nông nghiệp, thị trường thịt thương phẩm đòi hỏi quy trình phân loại minh bạch giữa thịt nuôi theo quy trình tự nhiên (hữu cơ, thả rông) và thịt lợn nuôi theo mô hình công nghiệp tập trung. Trong chăn nuôi thực tế, chiều dài đuôi lợn là một đặc điểm nhận dạng quan trọng: lợn nuôi công nghiệp thường bị bấm đuôi từ nhỏ để tránh hiện tượng cắn đuôi nhau do căng thẳng trong không gian hẹp, trong khi lợn nuôi thả tự nhiên giữ nguyên đuôi dài nguyên bản.

Vấn đề nghiên cứu (Problem Statement)

Việc phân loại chất lượng và nguồn gốc thịt lợn trên các dây chuyền giết mổ và pha lóc công nghiệp hiện nay gặp nhiều rào cản:

  • Phương pháp thủ công bằng mắt thường: Phụ thuộc vào cảm quan của chuyên viên kiểm định, dễ xảy ra sai số do mệt mỏi, tốc độ xử lý chậm và không đáp ứng được lưu lượng của băng chuyền tự động hóa.
  • Tiêu chuẩn truyền thống (USDA, EUROP): Chủ yếu tập trung vào độ dày lớp mỡ, tỉ lệ nạc và màu sắc sau mổ, đòi hỏi thiết bị đắt tiền hoặc can thiệp xâm lấn mô bào.
  • Rào cản về tự động hóa: Các giải pháp phân loại tự động cần một tiêu chí định lượng không xâm lấn, xử lý theo thời gian thực (real-time) với chi phí tính toán tối ưu.
[Camera thu nhận luồng video] 
       │
       ▼
[Giai đoạn 1: YOLOv5 phát hiện Vùng quan tâm (ROI - Đuôi)]
       │
       ▼
[Giai đoạn 2: Pipeline xử lý ảnh OpenCV (Trừ nền, Lọc nhiễu, Tách biên)]
       │
       ▼
[Giai đoạn 3: Tính toán Contour & Độ dài đuôi thực tế]
       │
       ▼
[Phân loại: Nuôi tự nhiên (Đuôi dài) vs Nuôi công nghiệp (Đuôi ngắn)]

Mục tiêu dự án

  1. Xây dựng tập dữ liệu video và hình ảnh dây chuyền chế biến thịt lợn với quy mô ban đầu 12.000 ảnh gốc và mở rộng lên đến 400.000 ảnh qua các kỹ thuật tăng cường dữ liệu (Data Augmentation).
  2. Huấn luyện mô hình học sâu YOLOv5 (You Only Look Once phiên bản 5) nhằm xác định chính xác vị trí vùng chứa đuôi lợn (Region of Interest - ROI) dưới dạng bounding box.
  3. Xây dựng pipeline xử lý ảnh số hóa kết hợp các hàm biến đổi hình thái học và tách biên của OpenCV để phân lập chính xác đường bao (Contour) của đuôi lợn.
  4. Tích hợp thuật toán đo chiều dài hình học để tự động phân loại lợn đuôi dài (nuôi tự nhiên) và lợn đuôi ngắn (nuôi công nghiệp) trực tiếp trên luồng video với độ trễ thấp.

Phương pháp tiếp cận và kết quả kỳ vọng

Dự án kết hợp mô hình học sâu dạng One-Stage Object Detector (YOLOv5) để định vị đối tượng và các thuật toán xử lý ảnh hình thái học cổ điển (Classical Computer Vision) để trích xuất đường biên chi tiết. Cách tiếp cận này loại bỏ nhu cầu gán nhãn pixel-level phức tạp của các mô hình Instance Segmentation (như Mask R-CNN), giảm tải tài nguyên phần cứng nhưng vẫn duy trì tốc độ xử lý trên 45 FPS và độ chính xác phân loại cao trên dây chuyền sản xuất.


Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Phương pháp Ưu điểm Nhược điểm Tốc độ xử lý Chi phí triển khai
Đánh giá thủ công bằng mắt Không cần đầu tư công nghệ ban đầu, linh hoạt với nhiều loại thịt. Độ chính xác không đồng đều, phụ thuộc cảm quan, không đáp ứng dây chuyền lớn. < 5 sản phẩm/phút Chi phí nhân công cao
Hệ thống USDA / EUROP Chuẩn hóa cao, phản ánh chi tiết độ dày nạc/mỡ. Đòi hỏi thiết bị chuyên dụng, thao tác xâm lấn hoặc đo lường phức tạp. 10 - 20 sản phẩm/phút Rất cao
Mask R-CNN (Deep Segmentation) Vẽ trực tiếp mặt nạ đối tượng đuôi lợn ở cấp độ pixel. Chi phí gán nhãn cực lớn, tốc độ suy luận chậm (~10-15 FPS), đòi hỏi GPU đắt tiền. 10 - 15 FPS Cao
Giải pháp đề xuất (YOLOv5 + OpenCV) Tận dụng tốc độ của YOLOv5 và độ chính xác đo lường của OpenCV, gán nhãn hộp đơn giản. Phụ thuộc vào chất lượng ánh sáng và sự chuyển động tương đối của đối tượng. > 45 FPS Tối ưu (chạy trên GPU tầm trung)

Phân tích yêu cầu hệ thống theo mô hình MoSCoW

  • Must have (Bắt buộc có): Module nhận diện ROI đuôi lợn sử dụng YOLOv5; module xử lý ảnh trừ khung hình liền kề (absdiff) và tách biên (Canny); thuật toán tính chiều dài đường bao (arcLength); ngưỡng phân loại đuôi dài/ngắn.
  • Should have (Nên có): Khả năng lọc nhiễu qua phép toán hình thái học (morphologyEx Closing); giao diện theo dõi kết quả bounding box và đường bao thời gian thực trên video.
  • Could have (Có thể có): Cơ chế tự động điều chỉnh ngưỡng phân loại theo từng lô giống lợn; cảnh báo khi đối tượng bị che khuất.
  • Won't have (Chưa thực hiện ở giai đoạn này): Phân tích 3D đa góc quay hoặc đo lường hàm lượng nạc mỡ nội bào.

Thiết kế kiến trúc hệ thống

+───────────────────────────────────────────────────────────────────────────+
│                            INPUT VIDEO STREAM                             │
+─────────────────────────────────────┬─────────────────────────────────────+
                                      │
                                      ▼
+───────────────────────────────────────────────────────────────────────────+
│                       YOLOV5 DETECTION BACKBONE                           │
│  - Trích xuất đặc trưng: CSPDarknet53                                     │
│  - Tổng hợp đặc trưng đa quy mô: PANet Neck                               │
│  - Dự đoán Bounding Box ROI: [x_center, y_center, width, height]          │
+─────────────────────────────────────┬─────────────────────────────────────+
                                      │ (Cắt vùng ROI đối tượng)
                                      ▼
+───────────────────────────────────────────────────────────────────────────+
│                        OPENCV VISION PIPELINE                             │
│  1. cv2.cvtColor()        -> Chuyển đổi RGB sang Không gian Grayscale     │
│  2. cv2.absdiff()         -> Trừ sai phân giữa 2 khung hình liên tiếp     │
│  3. cv2.addWeighted()     -> Trộn trọng số làm nổi bật vùng chuyển động   │
│  4. cv2.morphologyEx()    -> Lọc nhiễu & Đóng lỗ hổng (Morphology Closing)│
│  5. cv2.Canny()           -> Dò tìm đường biên sắc nét trong ROI          │
│  6. cv2.threshold()       -> Nhị phân hóa (Binary Inversion)              │
│  7. cv2.findContours()    -> Trích xuất chuỗi điểm đường bao              │
+─────────────────────────────────────┬─────────────────────────────────────+
                                      │
                                      ▼
+───────────────────────────────────────────────────────────────────────────+
│                     DECISION & CLASSIFICATION MODULE                      │
│  - Tính khoảng cách Euclid / Chiều dài đường bao lớn nhất                 │
│  - Ngưỡng quyết định Lth: L > Lth => Tự nhiên | L <= Lth => Công nghiệp   │
+───────────────────────────────────────────────────────────────────────────+

Technology Stack

  • Ngôn ngữ lập trình: Python 3.9.16
  • Deep Learning Framework: PyTorch 1.13.1 + torchvision 0.14.1 (Tối ưu hóa với CUDA 11.8 và cuDNN v8.7)
  • Object Detection Architecture: YOLOv5 v7.0 (Sử dụng kiến trúc CSPDarknet53 Backbone, PANet Neck, YOLO Head)
  • Computer Vision Library: OpenCV-Python 4.8.0.76
  • Data Management & Annotation Tool: Roboflow Platform
  • Môi trường tính toán: Ubuntu 22.04 LTS, GPU NVIDIA RTX 3060 12GB VRAM / Google Colab Pro

Implementation và kết quả

Quy trình phát triển và Tiền xử lý dữ liệu

  1. Thu thập dữ liệu: Thu nhận 12.000 ảnh trích xuất trực tiếp từ các video quay dây chuyền vận chuyển lợn trong nhà máy chế biến.
  2. Tăng cường dữ liệu (Data Augmentation): Nhằm nâng cao khả năng tổng quát hóa của mạng nơ-ron, quy trình tăng cường dữ liệu áp dụng các phép biến đổi: chuyển ảnh mức xám (Grayscale), làm mờ Gaussian (Blur), thay đổi tỷ lệ khung hình (Resize), xoay góc từ $-15^\circ$ đến $+15^\circ$, điều chỉnh độ sáng ngẫu nhiên $\pm 20%$. Tập dữ liệu sau tăng cường đạt xấp xỉ 400.000 ảnh.
  3. Gán nhãn: Dữ liệu được gán nhãn thông qua Roboflow dưới định dạng chuẩn YOLO: $$\text{Label} = \left[ c, x_{\text{center}}, y_{\text{center}}, w, h \right]$$ Trong đó $c$ là chỉ số lớp (Class 0: Tail), $(x, y)$ là tọa độ tâm chuẩn hóa, $(w, h)$ là chiều rộng và chiều cao chuẩn hóa theo kích thước ảnh gốc.

Pipeline thuật toán xử lý ảnh chi tiết

Sau khi mô hình YOLOv5 định vị và trả về Bounding Box của vùng đuôi lợn, vùng ROI được trích xuất và đưa vào pipeline xử lý ảnh qua các bước toán học:

1. Chuyển đổi mức xám (Grayscaling)

Giảm chiều dữ liệu từ không gian 3 kênh RGB về 1 kênh cường độ sáng: $$Y = 0.299 \cdot R + 0.587 \cdot G + 0.114 \cdot B$$

2. Tính sai phân khung hình liền kề (cv2.absdiff)

Phát hiện chuyển động tương đối của phần đuôi trên băng chuyền: $$dst(I) = \text{saturate}\left( |src_1(I) - src_2(I)| \right)$$

3. Tích hợp sai phân và tăng cường tương phản (cv2.addWeighted)

$$dst(I) = \text{saturate}\left( src_1(I) \cdot \alpha + src_2(I) \cdot \beta + \gamma \right)$$ Với tham số thực nghiệm: $\alpha = 0.7$, $\beta = 0.3$, $\gamma = 0$.

4. Phép toán hình thái học đóng (Morphological Closing)

Sử dụng hàm cv2.morphologyEx với Kernel hình chữ nhật kích thước $5 \times 5$: $$A \bullet B = (A \oplus B) \ominus B$$ Quá trình Dilation ($\oplus$) kết hợp Erosion ($\ominus$) giúp lấp đầy các khe hở và kết nối các đoạn đứt gãy trên thân đuôi.

5. Trích xuất biên Canny và nhị phân hóa

Hàm cv2.Canny() áp dụng lọc gradient đa hướng với 2 ngưỡng $T_{\text{lower}} = 50$ và $T_{\text{upper}} = 150$, sau đó tiến hành phân ngưỡng nghịch đảo cv2.THRESH_BINARY_INV: $$dst(x, y) = \begin{cases} 0 & \text{nếu } src(x, y) > \text{thresh} \ \text{maxval} & \text{nếu } src(x, y) \le \text{thresh} \end{cases}$$

Mã nguồn triển khai Pipeline tích hợp (Code Snippet)

import cv2
import numpy as np
import torch

class MeatQualityClassifier:
    def __init__(self, model_weights_path: str, length_threshold_px: float = 120.0):
        # Nạp mô hình YOLOv5 sử dụng PyTorch Hub hoặc TorchScript
        self.device = 'cuda' if torch.cuda.is_available() else 'cpu'
        self.model = torch.hub.load('ultralytics/yolov5', 'custom', path=model_weights_path)
        self.model.to(self.device).eval()
        self.length_threshold = length_threshold_px

    def process_tail_roi(self, frame_prev: np.ndarray, frame_curr: np.ndarray, bbox: list) -> tuple:
        x1, y1, x2, y2 = map(int, bbox)
        roi_prev = frame_prev[y1:y2, x1:x2]
        roi_curr = frame_curr[y1:y2, x1:x2]

        if roi_prev.size == 0 or roi_curr.size == 0:
            return None, 0.0

        # Bước 1: Grayscale
        gray_prev = cv2.cvtColor(roi_prev, cv2.COLOR_BGR2GRAY)
        gray_curr = cv2.cvtColor(roi_curr, cv2.COLOR_BGR2GRAY)

        # Bước 2 & 3: Tính toán sai phân và kết hợp trọng số
        diff = cv2.absdiff(gray_prev, gray_curr)
        enhanced = cv2.addWeighted(gray_curr, 0.7, diff, 0.3, 0)

        # Bước 4: Lọc nhiễu Morphological Closing
        kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
        closed = cv2.morphologyEx(enhanced, cv2.MORPH_CLOSE, kernel)

        # Bước 5: Phát hiện cạnh Canny & Tách ngưỡng
        edges = cv2.Canny(closed, threshold1=50, threshold2=150)
        _, thresh = cv2.threshold(edges, 127, 255, cv2.THRESH_BINARY)

        # Bước 6: Tìm Contours và đo chiều dài hình học
        contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
        max_length = 0.0
        best_contour = None

        for cnt in contours:
            # Tính toán chiều dài xấp xỉ qua đường bao đa giác
            length = cv2.arcLength(cnt, closed=False)
            if length > max_length:
                max_length = length
                best_contour = cnt

        return best_contour, max_length

    def classify_frame(self, frame_prev: np.ndarray, frame_curr: np.ndarray):
        results = self.model(frame_curr)
        detections = results.xyxy[0].cpu().numpy()

        classifications = []
        for det in detections:
            x1, y1, x2, y2, conf, cls_id = det
            if conf >= 0.5 and int(cls_id) == 0:  # Class 'Tail'
                contour, tail_len = self.process_tail_roi(frame_prev, frame_curr, [x1, y1, x2, y2])
                
                # Phân loại dựa trên ngưỡng chiều dài
                quality = "Natural (Long Tail)" if tail_len >= self.length_threshold else "Industrial (Short Tail)"
                classifications.append({
                    "bbox": [x1, y1, x2, y2],
                    "confidence": float(conf),
                    "tail_length_px": tail_len,
                    "quality": quality
                })
        return classifications

Kiểm nghiệm thực nghiệm và Đánh giá mô hình

Quá trình huấn luyện mô hình YOLOv5 được thiết lập với các siêu tham số (Hyperparameters):

  • Số lượng Epochs: 40
  • Tốc độ học khởi tạo (Initial Learning Rate $\eta$): 0.01 (sử dụng Cosine Annealing scheduler)
  • Kích thước Batch (Batch Size): 32
  • Tổng số lượng tham số mô hình: 20.871.318 tham số
  • Bộ tối ưu hóa: SGD kết hợp Momentum 0.937 và Weight Decay 0.0005
Training Loss Curves:
  Epoch 01/40 | Box_Loss: 0.0842 | Obj_Loss: 0.0612 | mAP@0.5: 0.624
  Epoch 10/40 | Box_Loss: 0.0415 | Obj_Loss: 0.0321 | mAP@0.5: 0.812
  Epoch 25/40 | Box_Loss: 0.0210 | Obj_Loss: 0.0154 | mAP@0.5: 0.925
  Epoch 40/40 | Box_Loss: 0.0112 | Obj_Loss: 0.0078 | mAP@0.5: 0.968
Chỉ số đánh giá Giá trị đạt được Ghi chú kỹ thuật
mAP@0.5 (Mean Average Precision) 96.8% Độ chính xác định vị ROI đuôi
Precision (Độ chuẩn xác) 95.4% Giảm thiểu dương tính giả trên nền thịt nạc/mỡ
Recall (Độ bao phủ) 94.1% Bắt trọn vẹn các góc quay đuôi lợn
Độ trễ suy luận (Inference Latency) 21.5 ms/frame Đo lường trên NVIDIA RTX 3060 (Tương đương 46.5 FPS)
Sai số đo chiều dài Contour $\le 4.2%$ So sánh với đo đạc thủ công qua thước mẫu

Đổi mới và đóng góp

  1. Kiến trúc phân tầng kết hợp (Hybrid Decoupled Pipeline): Giải quyết triệt để sự đánh đổi giữa tốc độ và độ chính xác phân đoạn. Thay vì sử dụng Mask R-CNN nặng nề đòi hỏi phần cứng cao cấp, phương pháp phân tách thành: YOLOv5 đảm nhiệm trích xuất ROI và OpenCV xử lý hình thái học giúp tiết kiệm 85% thời gian gán nhãn dữ liệu và giảm 70% chi phí phần cứng suy luận.
  2. Kỹ thuật sai phân tích hợp đa khung hình: Khắc phục tình trạng đuôi lợn bị đồng màu với thân thịt hoặc vết máu trên băng chuyền bằng cách tận dụng sai phân chuyển động động học (cv2.absdiff + cv2.addWeighted).
  3. Mô hình định lượng hóa nguồn gốc chăn nuôi: Chuyển hóa tiêu chí cảm quan của doanh nghiệp thành hệ thống số hóa với độ chính xác đạt trên 96%, tạo tiền đề cho hệ thống kiểm định tự động không tiếp xúc trong công nghiệp thực phẩm.

Ứng dụng thực tế và triển khai

Kịch bản triển khai trong nhà máy giết mổ

Hệ thống được tích hợp tại trạm kiểm định trước khu vực cấp đông hoặc đóng gói pha lóc:

  • Cấu hình phần cứng tối thiểu: 01 Camera công nghiệp chuẩn IP67 (độ phân giải Full HD 1080p, 60 FPS, ống kính chống biến dạng), 01 máy tính tính toán biên (Edge IPC) trang bị GPU NVIDIA RTX 3060 hoặc Jetson Orin.
  • Tích hợp phần mềm: Module AI giao tiếp trực tiếp với bộ điều khiển lập trình logic (PLC) của băng chuyền qua giao thức TCP/IP hoặc Modbus để kích hoạt cánh tay cơ khí gạt phân luồng sản phẩm tự động.
+------------------+      RTSP Stream      +-----------------------+
|  Camera IP67     | ────────────────────> | Edge AI System        |
|  (1080p @ 60fps) |                       | (YOLOv5 + OpenCV)     |
+------------------+                       +-----------┬-----------+
                                                       │
                                     Modbus / TCP/IP   │ Tín hiệu kích hoạt
                                                       ▼
                                           +-----------------------+
                                           | PLC & Cánh tay gạt    |
                                           | Phân luồng sản phẩm   |
                                           +-----------------------+

Ưu thế kinh tế và Lộ trình nhân rộng (ROI Analysis)

  • Tối ưu chi phí: Giảm thiểu 2 - 3 nhân sự kiểm định tại mỗi dây chuyền, loại bỏ 100% thời gian chết do sai sót cảm quan.
  • Thời gian hoàn vốn (ROI): Ước tính từ 6 đến 9 tháng cho một nhà máy có công suất giết mổ 1.000 con/ngày.
  • Lộ trình nâng cấp: Mở rộng phát hiện thêm các khuyết tật bề mặt (áp xe, tụ máu, vết xước) trên thân thịt trong các giai đoạn tiếp theo.

Hạn chế và hướng phát triển

Hạn chế kỹ thuật hiện tại

  • Phụ thuộc vào chuyển động băng chuyền: Kỹ thuật trừ sai phân yêu cầu đối tượng phải có chuyển động tương đối so với camera; khi băng chuyền dừng đột ngột, chất lượng tách đường bao có thể suy giảm.
  • Biến dạng góc nhìn 2D: Thuật toán hiện tại trích xuất độ dài pixel trên không gian 2D, có thể chịu sai số nếu đuôi bị xoăn hoặc gập khúc theo trục sâu (chiều Z).

Hướng nghiên cứu và phát triển tiếp theo

  • Ứng dụng mô hình Keypoint Estimation: Chuyển dịch sang mô hình YOLOv8-Pose hoặc YOLOv9-Pose để dự đoán các điểm mốc (Keypoints) dọc theo xương đuôi, cho phép tính toán chiều dài cong 3D chính xác bất kể hình dạng xoăn.
  • Hệ thống Stereo Camera 3D: Tích hợp camera đo chiều sâu (Depth Camera) để tái tạo đám mây điểm (Point Cloud) bề mặt, loại bỏ hoàn toàn sai số quang sai 2D.

Đối tượng hưởng lợi

  • Sinh viên & Học viên: Cung cấp ca nghiên cứu thực tế về cách kết hợp giữa Deep Learning hiện đại và Computer Vision cổ điển để giải quyết bài toán kỹ thuật tối ưu tài nguyên.
  • Kỹ sư AI / Lập trình viên: Tham khảo mô hình pipeline triển khai suy luận video thời gian thực, kỹ thuật tiền xử lý dữ liệu lớn (400.000 mẫu) và phương pháp tối ưu hóa Bounding Box ROI.
  • Doanh nghiệp chế biến thực phẩm: Sở hữu giải pháp tự động hóa có tính khả thi cao, chi phí lắp đặt hợp lý, nâng cao tỷ lệ chuẩn hóa sản phẩm đầu ra.
  • Nhà nghiên cứu khoa học dữ liệu: Tài liệu tham khảo có giá trị về bài toán ứng dụng học sâu trong nông nghiệp thông minh và quản lý chuỗi cung ứng thực phẩm 4.0.

Câu hỏi thường gặp

1. Yêu cầu phần cứng tối thiểu để triển khai hệ thống là gì?

Hệ thống yêu cầu máy tính trang bị vi xử lý tối thiểu Intel Core i5 thế hệ 10 hoặc AMD Ryzen 5, 16GB RAM và card đồ họa chuyên dụng NVIDIA GTX 1660 Super (6GB VRAM) hoặc RTX 3060 (12GB VRAM) để đảm bảo tốc độ suy luận ổn định trên 45 FPS. Trên các thiết bị nhúng công nghiệp, dòng NVIDIA Jetson Orin Nano / Xavier NX hoàn toàn đáp ứng được.

2. Khi lợn bị che khuất hoặc đuôi bị gập, thuật toán xử lý thế nào?

Mô hình YOLOv5 được gán nhãn với các trường hợp góc nhìn đa dạng thông qua Data Augmentation. Khi độ tin cậy (Confidence Score) của Bounding Box dưới 0.5 hoặc chiều dài Contour tính toán được bất thường so với tỷ lệ thân thịt, hệ thống sẽ đánh dấu cờ cảnh báo (Flagged) để điều hướng sản phẩm sang nhánh kiểm tra thủ công.

3. Hệ thống kết nối với PLC của nhà máy như thế nào?

Module ứng dụng chạy một tiến trình ngầm (Background Worker) đóng vai trò Modbus TCP Client. Sau khi tính toán độ dài và phân loại, tín hiệu số (0x01 cho tự nhiên, 0x02 cho công nghiệp) được ghi trực tiếp vào thanh ghi (Register) của PLC để điều khiển xi lanh khí nén gạt sản phẩm vào đúng khay phân loại.

4. Chi phí bảo trì và hiện tượng Data Drift được quản lý ra sao?

Camera cần được vệ sinh ống kính định kỳ theo ca làm việc do môi trường nhà máy có độ ẩm cao. Để chống hiện tượng Data Drift (thay đổi góc đèn, giống lợn mới), hệ thống hỗ trợ cơ chế Active Learning: tự động lưu lại các mẫu nhận diện có độ tin cậy thấp ($0.5 \le \text{conf} \le 0.65$) để kỹ sư gán nhãn bổ sung và huấn luyện Fine-tune định kỳ hàng quý.

5. Tại sao không sử dụng trực tiếp mô hình phân đoạn Mask R-CNN?

Mask R-CNN đòi hỏi gán nhãn đa giác (Polygon) cho hàng chục nghìn ảnh, tốn gấp 10 lần thời gian so với gán nhãn Bounding Box của YOLO. Ngoài ra, tốc độ suy luận của Mask R-CNN chỉ đạt 10 - 15 FPS trên GPU thông thường, không đáp ứng được yêu cầu thời gian thực của băng chuyền công nghiệp tốc độ cao.


Kết luận

Đồ án tốt nghiệp "Ứng dụng học sâu cho bài toán phân loại chất lượng thịt" của tác giả Trịnh Tuấn Anh dưới sự hướng dẫn của TS. Phạm Tiến Lâm đã giải quyết bài toán phân loại chất lượng và nguồn gốc thịt lợn trong dây chuyền công nghiệp. Bằng việc kết hợp kiến trúc mạng học sâu YOLOv5 để phát hiện vùng quan tâm với pipeline xử lý ảnh hình thái học OpenCV để đo lường chiều dài đường bao, hệ thống đạt độ chính xác mAP 96.8% và tốc độ suy luận vượt trội trên 45 FPS. Giải pháp không chỉ chứng minh tính ưu việt về mặt kỹ thuật mà còn mở ra tiềm năng thương mại hóa mạnh mẽ, thúc đẩy quá trình chuyển đổi số và tự động hóa trong ngành công nghệ thực phẩm tại Việt Nam.