# Tài Liệu Chuẩn Bị Phỏng Vấn — Các Dự Án AI/Computer Vision --- ## 1. Robot Arm Phone Gripping System (01/2025 – Present) ### Bài toán là gì? Trên dây chuyền sản xuất, robot arm cần **gắp đúng điện thoại** trong số nhiều vật thể trên băng chuyền. Để robot biết đâu là điện thoại cần gắp, người ta dán một **sticker (nhãn dán)** lên điện thoại đó, và hệ thống AI phải **phát hiện (detect)** được vị trí sticker này bằng camera, từ đó tính toán tọa độ để robot arm di chuyển tới gắp. ### Vì sao khó? - Ánh sáng nhà máy không ổn định, sticker có thể bị lóa, mờ, hoặc bị che một phần. - Điện thoại có nhiều góc xoay, nhiều model khác nhau (hình dạng, màu sắc khác nhau). - Cần độ chính xác cao vì nếu robot gắp sai vị trí → rơi hàng, hỏng sản phẩm. ### Bạn đã làm gì (quy trình kỹ thuật)? 1. **Thu thập & gán nhãn dữ liệu**: phối hợp với team Data Engineering để chụp ảnh thực tế trên dây chuyền, gán nhãn (annotation) vị trí sticker trên ảnh (bounding box hoặc keypoint). 2. **Data Augmentation**: xoay ảnh, thay đổi độ sáng/tương phản, thêm nhiễu (noise), crop ngẫu nhiên... để mô hình học được nhiều tình huống ánh sáng, góc chụp khác nhau → tránh overfitting. 3. **Xây dựng training pipeline**: - Dùng **TensorFlow** và **PyTorch** (2 framework phổ biến để train deep learning). - Áp dụng **Cross-validation**: chia dữ liệu thành nhiều phần (folds), train nhiều lần trên các phần khác nhau để đánh giá mô hình khách quan hơn, tránh việc mô hình "học tủ" một tập dữ liệu. - Áp dụng **Early stopping**: theo dõi loss trên tập validation, nếu loss không giảm nữa sau vài epoch thì dừng train sớm → tránh overfitting, tiết kiệm thời gian. 4. **Đánh giá mô hình**: đạt độ chính xác **96%** trong việc phát hiện sticker. 5. **Xử lý ảnh với OpenCV**: tiền xử lý ảnh đầu vào (resize, chuẩn hóa màu sắc...) trước khi đưa vào model. ### Kết quả & giá trị mang lại - Giúp robot arm gắp đúng điện thoại tự động, giảm phụ thuộc vào công nhân, tăng tốc độ và độ chính xác trên dây chuyền. ### Câu hỏi phỏng vấn thường gặp + gợi ý trả lời **Q: Vì sao dùng cả TensorFlow lẫn PyTorch, không chọn 1 cái?** > A: Giai đoạn nghiên cứu/thử nghiệm nhanh dùng PyTorch (linh hoạt, dễ debug), còn khi cần tối ưu deploy production có thể dùng TensorFlow (hệ sinh thái serving mạnh, TensorFlow Lite/Serving). Tùy bài toán cụ thể mà chọn công cụ phù hợp. **Q: Early stopping và Cross-validation khác nhau thế nào, tại sao dùng chung?** > A: Cross-validation giúp đánh giá mô hình có ổn định không qua nhiều tập dữ liệu con. Early stopping là kỹ thuật trong lúc train để dừng đúng lúc, tránh overfit. Hai cái bổ trợ nhau: một cái đánh giá tổng thể, một cái kiểm soát quá trình train. **Q: Nếu độ chính xác không đạt 96% ngay từ đầu, bạn debug thế nào?** > A: Kiểm tra chất lượng dữ liệu gán nhãn trước (nhãn sai là nguyên nhân phổ biến nhất), sau đó xem confusion matrix để biết model nhầm ở trường hợp nào (ánh sáng yếu, góc nghiêng...), rồi bổ sung augmentation hoặc dữ liệu cho đúng trường hợp đó. --- ## 2. Automated Component ID Extraction System ### Bài toán là gì? Trên các linh kiện (component) trong nhà máy, có in **số serial** (mã định danh) để truy xuất nguồn gốc, quản lý chất lượng. Hệ thống cần **tự động đọc (OCR)** số serial này từ ảnh chụp, thay vì công nhân đọc bằng mắt và nhập tay. ### Vì sao khó? - Bề mặt linh kiện phức tạp (có thể cong, phản chiếu ánh sáng, có vân kim loại). - Ánh sáng trong nhà máy không ổn định → chữ số dễ bị mờ, lóa, thiếu tương phản. - Cần tốc độ xử lý nhanh (real-time) để không làm chậm dây chuyền. ### Bạn đã làm gì (quy trình kỹ thuật)? 1. **Nghiên cứu giải pháp OCR phù hợp**: so sánh các thư viện/mô hình OCR (ví dụ Tesseract, EasyOCR, hoặc mô hình OCR chuyên biệt) để chọn ra giải pháp phù hợp với bài toán bề mặt phức tạp. 2. **Xây dựng pipeline tiền xử lý ảnh bằng OpenCV** — đây là phần quan trọng nhất vì OCR chỉ hoạt động tốt khi ảnh đầu vào "sạch": - **Denoising** (khử nhiễu): loại bỏ hạt nhiễu do ánh sáng yếu hoặc bề mặt kim loại gây ra. - **Contrast balancing** (cân bằng tương phản): làm nổi bật chữ số so với nền, ví dụ dùng kỹ thuật CLAHE (Adaptive Histogram Equalization). - **Text region segmentation** (phân vùng vùng chứa chữ): xác định chính xác khu vực có in số serial để cắt ra, tránh OCR đọc nhầm các vùng khác. 3. **Tối ưu tốc độ inference**: giảm thời gian xử lý để đạt real-time, ví dụ giảm kích thước ảnh đầu vào hợp lý, tối ưu thuật toán. 4. **Đóng gói thành REST API** phối hợp với team Embedded — để các hệ thống khác (như PLC, máy trạm) có thể gọi API này và nhận kết quả số serial ngay lập tức. ### Kết quả & giá trị mang lại - Tự động hóa việc đọc mã số linh kiện, giảm sai sót do con người, tăng tốc độ truy xuất nguồn gốc sản phẩm. ### Câu hỏi phỏng vấn thường gặp + gợi ý trả lời **Q: Vì sao tiền xử lý ảnh lại quan trọng hơn cả việc chọn mô hình OCR?** > A: Vì các mô hình OCR (kể cả mô hình mạnh) đều được train trên dữ liệu tương đối "sạch". Với ảnh công nghiệp có nhiễu, phản chiếu, độ tương phản kém, nếu không tiền xử lý thì OCR sẽ đọc sai dù mô hình tốt đến đâu. "Garbage in, garbage out." **Q: Bạn đo lường "real-time" như thế nào, ngưỡng thời gian là bao nhiêu?** > A: Cần nêu cụ thể theo dự án thực tế của bạn (ví dụ: dưới 200-500ms/ảnh tùy tốc độ băng chuyền) — đo bằng thời gian từ lúc nhận ảnh đến lúc trả kết quả qua API. **Q: Nếu OCR đọc sai một vài ký tự, bạn xử lý thế nào?** > A: Có thể áp dụng thêm bước hậu xử lý (post-processing) như kiểm tra định dạng mã serial (checksum, độ dài cố định) để phát hiện và cảnh báo khi kết quả không hợp lệ, thay vì tin tuyệt đối vào OCR. --- ## 3. Automated Visual Defect Inspection System (Glass/Phone Casing) ### Bài toán là gì? Kiểm tra lỗi bề mặt (như **vết xước siêu nhỏ - micro-scratch**) trên mặt kính hoặc vỏ điện thoại bằng camera, thay vì công nhân soi bằng mắt (chậm, dễ bỏ sót, mỏi mắt). Đây là dự án **phức tạp nhất** trong danh sách vì kết hợp cả AI, xử lý ảnh, tối ưu tốc độ và tích hợp phần cứng (robot arm khí nén). ### Vì sao khó? - Vết xước rất nhỏ, khó phát hiện, đặc biệt trên bề mặt phản chiếu ánh sáng (kính bóng). - Dữ liệu bị **mất cân bằng (imbalanced)**: số lượng ảnh "lỗi" ít hơn nhiều so với ảnh "bình thường". - Cần tốc độ cực nhanh (**<15ms/frame**) để bắt kịp tốc độ băng chuyền. - Cần tích hợp với hệ thống cơ khí (cánh tay khí nén - pneumatic arm) để tự động gạt bỏ sản phẩm lỗi. ### Bạn đã làm gì (quy trình kỹ thuật)? 1. **Xây dựng mô hình phát hiện lỗi**: - **YOLOv8-seg**: mô hình vừa detect (xác định vị trí) vừa segment (phân vùng chính xác pixel nào là vết xước) — nhanh, phù hợp real-time. - **Mask R-CNN**: mô hình segmentation chính xác cao hơn, dùng để đối chiếu/kiểm chứng hoặc cho các trường hợp cần độ chính xác cao hơn tốc độ. - Đạt độ chính xác **97.5%**. 2. **Xử lý vấn đề mất cân bằng dữ liệu (imbalanced dataset)**: - **Albumentations**: thư viện augmentation mạnh, tạo thêm biến thể ảnh lỗi (xoay, crop, thay đổi ánh sáng) để tăng số lượng mẫu lỗi. - **Mixup**: kỹ thuật trộn 2 ảnh với nhau theo tỷ lệ để tạo mẫu huấn luyện mới, giúp mô hình tổng quát hóa tốt hơn, giảm overfitting với lớp thiểu số. 3. **Xây dựng pipeline OpenCV để làm nổi bật lỗi dưới ánh sáng phản chiếu**: - **Gabor filters**: bộ lọc chuyên phát hiện các đường nét, kết cấu (texture) có hướng nhất định — rất hiệu quả để làm nổi vết xước theo các hướng khác nhau trên bề mặt kính. - **Morphological transforms** (biến đổi hình thái học): các phép toán như erosion, dilation để loại bỏ nhiễu nhỏ và làm rõ hình dạng vết xước sau khi lọc. 4. **Tối ưu tốc độ inference**: - **TensorRT** (của NVIDIA) và **ONNX**: chuyển đổi mô hình đã train sang định dạng tối ưu hóa cho phần cứng, giúp giảm độ trễ đáng kể — đạt được **<15ms/frame** (tương đương hơn 60 khung hình/giây). 5. **Tích hợp hệ thống thực tế**: - Phối hợp với team **PLC** (Programmable Logic Controller — bộ điều khiển công nghiệp) để đóng gói mô hình thành API. - Khi phát hiện lỗi, hệ thống gửi tín hiệu kích hoạt **cánh tay khí nén (pneumatic arm)** để gạt sản phẩm lỗi ra khỏi dây chuyền tự động. 6. **Công cụ gán nhãn**: dùng **CVAT** (Computer Vision Annotation Tool) để gán nhãn dữ liệu ảnh lỗi cho việc train. ### Kết quả & giá trị mang lại - Tự động hóa hoàn toàn khâu kiểm tra chất lượng bề mặt, tốc độ real-time, độ chính xác cao, giảm phụ thuộc nhân công và tăng năng suất. ### Câu hỏi phỏng vấn thường gặp + gợi ý trả lời **Q: Sự khác biệt giữa YOLOv8-seg và Mask R-CNN, vì sao dùng cả 2?** > A: YOLOv8-seg ưu tiên tốc độ, phù hợp real-time trên dây chuyền. Mask R-CNN chính xác hơn nhưng chậm hơn, có thể dùng để tạo pseudo-label, kiểm chứng chéo (cross-check), hoặc cho các trạm kiểm tra không yêu cầu tốc độ cao. Việc kết hợp giúp cân bằng giữa tốc độ và độ chính xác. **Q: Tại sao lại dùng Gabor filter thay vì chỉ dùng deep learning?** > A: Gabor filter là kỹ thuật xử lý ảnh cổ điển, giúp làm nổi bật đặc trưng texture có hướng (như vết xước) một cách nhanh và ổn định, dùng làm bước tiền xử lý trước khi đưa vào model deep learning giúp mô hình "nhìn rõ" hơn — kết hợp cả kỹ thuật cổ điển và AI hiện đại thường cho kết quả tốt hơn chỉ dùng riêng một loại. **Q: TensorRT và ONNX khác nhau thế nào?** > A: ONNX là định dạng trung gian (Open Neural Network Exchange) giúp chuyển đổi mô hình giữa các framework khác nhau (PyTorch → ONNX → TensorRT). TensorRT là công cụ của NVIDIA tối ưu hóa mô hình để chạy nhanh nhất có thể trên GPU NVIDIA (dùng kỹ thuật như giảm độ chính xác số học - quantization, hợp nhất layer...). **Q: Xử lý imbalanced dataset còn cách nào khác ngoài augmentation?** > A: Có thể dùng thêm: class weighting (tăng trọng số loss cho lớp thiểu số), oversampling lớp thiểu số/undersampling lớp đa số, hoặc dùng Focal Loss để mô hình tập trung học các mẫu khó/hiếm. --- ## 4. Smart Camera Workplace Safety Monitoring System ### Bài toán là gì? Giám sát an toàn lao động tự động bằng camera: phát hiện công nhân có đội **mũ bảo hộ (helmet)**, mặc **áo phản quang (vest)** hay không, và cảnh báo khi có người xâm nhập vào **khu vực nguy hiểm** (ví dụ gần máy móc, khu vực cấm). ### Vì sao khó? - Cần **theo dõi (tracking)** người qua nhiều khung hình, không chỉ detect từng frame riêng lẻ (để biết đây là cùng 1 người đang di chuyển). - Cần xử lý **nhiều luồng camera cùng lúc (multi-stream)** trên phần cứng nhỏ gọn (Edge device), không phải server mạnh. - Cần cảnh báo **real-time** để kịp thời ngăn tai nạn lao động. ### Bạn đã làm gì (quy trình kỹ thuật)? 1. **Xây dựng mô hình detection + tracking**: - **YOLOv11**: mô hình detect object mới nhất, phát hiện người, mũ bảo hộ, áo vest trong từng khung hình. - **ByteTrack**: thuật toán tracking giúp gán ID cố định cho từng người qua các frame liên tiếp, biết được người này đang di chuyển từ đâu đến đâu (không bị nhầm lẫn giữa các frame). - Đạt độ chính xác **98%**. 2. **Xây dựng vùng ROI ảo (Region of Interest) bằng OpenCV**: - Vẽ và định nghĩa các **vùng nguy hiểm ảo** trên khung hình camera (ví dụ khu vực quanh máy móc). - Khi tọa độ của người (bounding box) chồng lấn hoặc đi vào vùng ROI này → hệ thống tự động phát hiện xâm nhập và kích hoạt cảnh báo. 3. **Tối ưu mô hình để chạy trên thiết bị Edge (NVIDIA Jetson)**: - **Pruning** (cắt tỉa): loại bỏ các trọng số/kết nối không quan trọng trong mạng neural, giúp mô hình nhẹ hơn mà vẫn giữ độ chính xác. - **Quantization** (lượng tử hóa): giảm độ chính xác số học của trọng số (ví dụ từ float32 xuống int8), giúp giảm dung lượng và tăng tốc độ tính toán, phù hợp với phần cứng Edge có tài nguyên hạn chế. - Nhờ đó xử lý được **nhiều luồng camera cùng lúc (multi-stream)** trên cùng một thiết bị Jetson. 4. **Đóng gói triển khai**: - Đóng gói toàn bộ hệ thống vào **Docker Container** để dễ triển khai, di chuyển giữa các môi trường, đảm bảo tính nhất quán. - Dùng **WebSocket/gRPC** để gửi cảnh báo real-time đến hệ thống giám sát trung tâm (dashboard, app cảnh báo) ngay khi phát hiện vi phạm. ### Kết quả & giá trị mang lại - Giám sát an toàn lao động 24/7 tự động, cảnh báo tức thời, giảm thiểu tai nạn lao động, giảm chi phí thuê người giám sát thủ công. ### Câu hỏi phỏng vấn thường gặp + gợi ý trả lời **Q: Vì sao cần Tracking (ByteTrack) mà không chỉ Detection thôi?** > A: Detection chỉ cho biết "có người ở đây trong frame này", không biết đây có phải cùng một người ở frame trước không. Tracking giúp duy trì ID xuyên suốt, cần thiết để phân tích hành vi theo thời gian (ví dụ: người này đứng trong vùng nguy hiểm bao lâu, tránh cảnh báo giả do nhiễu ở 1 frame đơn lẻ). **Q: Sự khác nhau giữa Pruning và Quantization?** > A: Pruning là loại bỏ bớt các neuron/kết nối "không cần thiết" trong mô hình (giảm kích thước mô hình về mặt kiến trúc). Quantization là giảm độ chính xác của các con số biểu diễn trọng số (ví dụ float32 → int8), giúp tính toán nhanh hơn, tốn ít bộ nhớ hơn nhưng cấu trúc mô hình giữ nguyên. Cả 2 thường dùng kết hợp để tối ưu cho Edge device. **Q: Vì sao chọn WebSocket/gRPC thay vì REST API thông thường?** > A: REST API phù hợp cho các request đơn lẻ, không phù hợp cho việc gửi cảnh báo liên tục, real-time. WebSocket cho phép giao tiếp 2 chiều liên tục (giữ kết nối mở) — phù hợp để đẩy cảnh báo ngay khi phát hiện. gRPC nhanh và hiệu quả hơn REST khi giao tiếp giữa các service nội bộ (microservices) nhờ dùng Protocol Buffers. **Q: Jetson Edge GPU là gì, vì sao không dùng server thông thường?** > A: Jetson là dòng thiết bị nhúng (embedded) của NVIDIA, tích hợp GPU nhỏ gọn, tiết kiệm điện, đặt trực tiếp tại hiện trường (camera/nhà máy) — giúp xử lý ngay tại chỗ (edge computing) mà không cần gửi dữ liệu về server trung tâm, giảm độ trễ và chi phí băng thông, đồng thời đảm bảo hệ thống vẫn hoạt động khi mất kết nối internet. --- ## Mẹo chung khi trình bày các dự án này trong phỏng vấn 1. **Dùng công thức STAR**: Situation (bối cảnh) → Task (nhiệm vụ) → Action (bạn đã làm gì) → Result (kết quả đo lường được). 2. **Luôn gắn con số cụ thể**: 96%, 97.5%, 98%, <15ms/frame — nhà tuyển dụng rất thích số liệu cụ thể, hãy chuẩn bị sẵn cách bạn đo các con số này. 3. **Chuẩn bị trả lời "vì sao chọn công nghệ X mà không phải Y"** cho từng công cụ (TensorFlow vs PyTorch, YOLO vs Mask R-CNN, ONNX vs TensorRT...) — đây là câu hỏi rất hay gặp để kiểm tra độ hiểu sâu. 4. **Nhấn mạnh khả năng làm việc nhóm liên phòng ban**: bạn đã phối hợp với Data Engineering, Embedded, PLC team — đây là điểm cộng lớn cho vị trí có tính ứng dụng thực tế cao. 5. **Chuẩn bị 1-2 câu chuyện về khó khăn thực tế đã gặp** (ví dụ: dữ liệu mất cân bằng, ánh sáng không ổn định) và cách bạn giải quyết — nhà tuyển dụng muốn thấy tư duy giải quyết vấn đề, không chỉ là liệt kê công nghệ.