Hard Negative Mining
Hard negative mining tìm các mẫu âm mà model dễ nhầm nhất với mẫu dương, rồi tập trung huấn luyện vào chúng để giảm false positive trong phát hiện và tìm kiếm.
Hard negative mining là chiến lược huấn luyện tìm các mẫu âm mà model phân loại sai nhiều nhất rồi tập trung quá trình học vào các mẫu đó. Mẫu âm không thuộc lớp mục tiêu; hard negative là mẫu mà model vẫn chấm điểm như mẫu dương: chẳng hạn một vùng nền mà detector đóng khung như đối tượng, hoặc một ảnh không liên quan mà model embedding đặt gần truy vấn. Hầu hết mẫu âm đều dễ; khi model đã xử lý được chúng, các mẫu này hầu như không còn cung cấp tín hiệu học, vì vậy chọn các mẫu âm khó giúp làm sắc nét ranh giới quyết định và giảm false positive.
Cách khai thác mẫu âm khó hoạt động#
Mẫu nào được xem là khó tùy thuộc vào tác vụ:
- Trong phát hiện đối tượng, một vùng nền là mẫu khó khi detector chấm điểm vùng đó như một đối tượng.
- Trong phân loại, hard negative là mẫu thuộc lớp khác nhưng được gán độ tin cậy cao cho lớp mục tiêu.
- Trong truy xuất và hệ thống gợi ý, hard negative là mục không liên quan nhưng được xếp hạng gần truy vấn; các mẫu âm có điểm cao ảnh hưởng nhiều nhất đến gradient.
- Trong học metric, hard negative là mẫu âm nằm gần anchor hơn mẫu dương tương ứng; hàm mất mát biên bộ ba sẽ phạt trường hợp này.
Quá trình mining có thể thực hiện offline hoặc online. Mining offline chạy model đã huấn luyện trên một tập dữ liệu lớn chỉ chứa mẫu âm, thu thập false positive của model, thêm chúng vào tập huấn luyện rồi huấn luyện lại. Các detector người đi bộ dùng cửa sổ trượt đời đầu được huấn luyện theo cách này: quét ảnh không có người để tìm cảnh báo sai rồi huấn luyện lại trên những mẫu đó. Mining online chọn mẫu khó ngay trong mỗi batch huấn luyện. SSD xếp hạng các default box âm theo loss phân loại và chỉ giữ lại những box có loss cao nhất, tối đa 3 mẫu âm cho mỗi mẫu dương; khai thác mẫu khó online (OHEM) áp dụng cùng ý tưởng cho các region proposal của detector hai giai đoạn. Việc chọn mẫu của SSD chỉ cần vài dòng:
import torch
import torch.nn.functional as F
torch.manual_seed(0)
# Simulated objectness logits for 8,400 candidate boxes: 20 cover an object, the rest are background
logits = torch.randn(8400) - 3
labels = torch.zeros(8400)
labels[:20] = 1
loss = F.binary_cross_entropy_with_logits(logits, labels, reduction="none")
# Keep every positive plus only the highest-loss negatives, at most 3 per positive
positives = labels == 1
negative_loss = loss.masked_fill(positives, 0)
hard_negatives = negative_loss.topk(3 * int(positives.sum())).indices
kept = torch.cat([positives.nonzero().squeeze(1), hard_negatives])
print(f"boxes in the loss: {len(kept)} of {len(loss)}")
print(f"mean negative loss: all {loss[~positives].mean():.3f}, mined {loss[hard_negatives].mean():.3f}")Loss chỉ giữ lại 80 trong số 8.400 box: 20 mẫu dương và 60 mẫu âm mà model chấm điểm giống đối tượng nhất. Loss trung bình của 60 mẫu âm được khai thác này là 0.648, so với 0.075 của toàn bộ 8.380 mẫu âm; nhờ đó, gradient tập trung vào phần nền mà model thực sự nhầm lẫn.
Hard negative mining và các kỹ thuật liên quan#
- Lấy mẫu âm: Chọn một tập con có kích thước phù hợp từ tất cả mẫu âm, thường bằng cách chọn ngẫu nhiên. Hard negative mining chọn những mẫu gây nhầm lẫn nhiều nhất.
- Focal loss: Giữ mọi mẫu trong loss nhưng giảm trọng số của các mẫu được phân loại chính xác; nhờ đó, detector một giai đoạn như RetinaNet có thể huấn luyện trên toàn bộ box ứng viên mà không cần lấy mẫu tường minh.
- Học chủ động: Chọn các mẫu chưa gán nhãn có độ bất định cao để con người gán nhãn, bao gồm cả các mẫu dương tiềm năng. Hard negative mining tập trung vào các mẫu đã được xác nhận là mẫu âm.
- Cân bằng lại lớp: Khắc phục tần suất lớp không đồng đều bằng cách lấy mẫu giảm và tăng trọng số. Một lớp âm xuất hiện thường xuyên không nhất thiết là lớp khó.
- Tăng cường dữ liệu: Tạo các biến thể từ mẫu hiện có nhưng không thể bổ sung một đối tượng gây nhầm lẫn mà dataset chưa từng có.
Ứng dụng thực tế#
- Phát hiện an toàn trong kho hàng: Detector xe nâng liên tục nhận diện nhầm xe nâng pallet, phản chiếu trên kệ và xe nâng người dạng cắt kéo sẽ làm suy giảm niềm tin của người vận hành do các cảnh báo sai. Thu thập những cảnh đó thành ảnh âm rồi huấn luyện lại giúp detector học được các đặc trưng phân biệt xe nâng với thiết bị tương tự.
- Tìm kiếm sản phẩm bằng hình ảnh: Khi tìm một đôi giày chạy bộ màu đen cụ thể nhưng kết quả xếp hạng quá cao những đôi tương tự thuộc dòng sản phẩm khác, các sản phẩm đó trở thành hard negative. Huấn luyện trên các mẫu này, chẳng hạn dùng chúng làm mẫu âm trong bộ ba anchor-positive-negative của mạng Siamese, giúp model embedding giữ được những khác biệt nhỏ như hình dáng đế, vị trí logo và chất liệu.
Quy trình mining offline#
Mỗi vòng mining offline chạy model hiện tại, xác minh những gì model đánh dấu rồi đưa các trường hợp đã xác nhận trở lại quá trình huấn luyện:
Bước rà soát rất quan trọng vì một "false positive" thường là đối tượng có thật mà người gán nhãn đã bỏ sót; thêm đối tượng đó làm mẫu âm sẽ khiến model học cách loại bỏ các lượt phát hiện đúng. Ultralytics YOLO xem ảnh huấn luyện có tệp nhãn bị thiếu hoặc rỗng là ảnh nền, vì vậy mỗi điểm neo trên ảnh nhận điểm mục tiêu bằng 0 và mọi dự đoán có độ tin cậy cao tại đó đều bị phạt; do đó, để thêm mẫu âm đã khai thác vào dataset YOLO26, chỉ cần sao chép ảnh vào mà không kèm nhãn. Tiến độ thể hiện qua precision cao hơn ở cùng mức recall, được theo dõi trên toàn bộ tập kiểm tra và một phần dữ liệu riêng dành cho hard negative.
Huấn luyện chỉ trên những mẫu âm khó nhất có thể phản tác dụng. Trong quá trình huấn luyện face embedding cho FaceNet, việc chọn hard negative khó nhất từ sớm có thể khiến model sụp đổ và ánh xạ mọi khuôn mặt về cùng một điểm; vì vậy, các tác giả huấn luyện bằng mẫu âm bán khó, nằm xa anchor hơn mẫu dương nhưng vẫn ở bên trong biên bộ ba.










