Kiểm tra lỗi bề mặt bằng camera line-scan
Mã nguồn riêng tư
Hệ thống phát hiện bất thường chỉ cần học từ ảnh đạt chuẩn, không cần ảnh lỗi. Mỗi ảnh trả về OK hoặc NOK, bản đồ bất thường, mask và khung quanh vùng nghi lỗi.
Kết quả
Kết quả trên tập kiểm thử 133 ảnh (26 lỗi, 107 tốt). README ghi các số độ trễ là kết quả lịch sử.
- Recall
- 24/26 (92,3%)
- 133 ảnh kiểm thử: 26 lỗi, 107 tốt
- Báo nhầm
- 3/107 (2,8%)
- cùng tập kiểm thử
- Độ trễ P50
- 43 ms
- RTX A4000, FP16, batch 15, 3.990 frame liên tục; P95 là 44 ms
- Trên CPU
- ≈ 683 ms
- OpenVINO FP32, 2 × Xeon Gold 6138
Bài toán
Lỗi quá hiếm và đa dạng để gom ảnh huấn luyện, trong khi dây chuyền cần quyết định cho mỗi ảnh trong khoảng 50 ms.
Cách làm
- PatchCore với MobileNetV3-Large (FP16), memory bank xây từ chỉ 10 ảnh đạt chuẩn.
- Mỗi ảnh 1024 × 1792 được cắt tile, chấm điểm, ghép thành một bản đồ bất thường và so ngưỡng hiệu chuẩn trên 50 ảnh đạt chuẩn khác.
Chi tiết triển khai
- Đặc trưng lấy ở blocks.4 và blocks.6. Tile 448 px, chồng lấn 0,20; memory bank dùng coreset 0,10.
- Điểm các tile được ghép bằng cửa sổ Hann, làm mượt Gaussian, chuẩn hóa theo thống kê của ảnh đạt chuẩn và giới hạn trong ROI.
- Dashboard vận hành bằng aiohttp và React 19 (TypeScript, Vite, shadcn/ui), lịch sử lưu SQLite, nhận ảnh từ camera Basler qua pypylon. Tab Train & Setup cho phép tạo sản phẩm mới, tải ảnh đạt chuẩn, huấn luyện và kích hoạt ngay trên trình duyệt.
Bài học triển khai
- 1.Camera line-scan kích hoạt theo encoder chỉ xuất ảnh khi bàn quay. Không có frame lúc motor đứng yên là hành vi đúng, không phải lỗi mạng.
- 2.Cáp camera cắm qua cổng PLC chỉ chạy 100 Mbps. Ở khoảng 64 Mbit/s thì ổn; tăng tốc độ bàn lên gần 98 Mbit/s là bắt đầu mất frame.
Phương pháp đánh giá
Các thí nghiệm few-shot trong ngân sách 10 hoặc 15 ảnh đạt chuẩn được chạy qua 8 seed, kiểm chứng lồng nhau (nested leave-one-out), cho ra 160 điểm vận hành.
Kết luận được ghi lại cả khi cấu hình mới không tốt hơn, ví dụ: chưa có cấu hình nào cải thiện đồng thời recall và tỉ lệ báo nhầm. Ghi cả kết quả âm giúp lần thử sau không lặp lại hướng đã thất bại.
Công nghệ
- PyTorch
- PatchCore
- MobileNetV3
- FP16
- OpenVINO
- aiohttp
- React 19
- TypeScript
- SQLite
- pypylon


