Recall
Recall, hay độ nhạy, là tỷ lệ các trường hợp dương tính thực tế được model tìm thấy: TP / (TP + FN). Tìm hiểu cách ngưỡng tạo ra sự đánh đổi với precision và cách detector tính toán.
Recall là tỷ lệ các trường hợp dương tính thực tế được model nhận diện chính xác. Recall trả lời câu hỏi “trong tất cả những gì cần tìm, model đã tìm được bao nhiêu?” và được tính bằng số dương tính thật chia cho tổng số trường hợp dương tính thực tế: recall = TP / (TP + FN), trong đó âm tính giả (FN) là trường hợp dương tính bị model bỏ sót. Recall nằm trong khoảng từ 0 đến 1; recall 0.90 nghĩa là model bỏ sót 1 trong 10 trường hợp dương tính. Độ nhạy, tỷ lệ dương tính thật (TPR) và tỷ lệ phát hiện trúng là các thuật ngữ đồng nghĩa; tỷ lệ bỏ sót, hay tỷ lệ âm tính giả, bằng 1 trừ recall. Recall quan trọng nhất khi việc bỏ sót gây hậu quả nghiêm trọng, chẳng hạn khối u không được phát hiện trên ảnh chụp sàng lọc hoặc kẻ xâm nhập mà hệ thống báo động không cảnh báo.
Cách tính recall#
Recall sử dụng hai ô trong ma trận nhầm lẫn: dương tính thật và âm tính giả; hai ô này cùng bao quát mọi trường hợp dương tính thực tế. Dương tính giả và âm tính thật không xuất hiện trong công thức, vì vậy model gán mọi thứ là dương tính có thể đạt recall hoàn hảo 1.0 nhưng không hữu ích. Do đó, recall được báo cáo cùng với precision, TP / (TP + FP), vốn phạt chính các cảnh báo giả đó. Ví dụ, model sàng lọc đánh dấu 90 trong số 100 khối u trong tập kiểm thử có recall 0.90 bất kể model có đánh dấu bao nhiêu ảnh chụp khỏe mạnh; precision cho biết có bao nhiêu trong số các trường hợp được đánh dấu là thực sự có bệnh.
Với hơn hai lớp, recall được tính riêng cho từng lớp bằng cách xem lớp đó là dương tính và mọi lớp khác là âm tính, rồi lấy trung bình. Recall macro gán trọng số ngang nhau cho mọi lớp, qua đó làm lộ rõ hiệu suất kém ở các lớp hiếm; trong các tác vụ đa lớp đơn nhãn, recall trung bình micro bằng accuracy.
Sự đánh đổi giữa precision và recall#
Hầu hết model xuất ra một điểm số, và ngưỡng quyết định chuyển điểm số đó thành kết quả có hoặc không. Hạ ngưỡng sẽ gắn cờ nhiều trường hợp hơn, làm tăng recall và thường giảm precision. Script scikit-learn bên dưới chấm điểm 15 bộ phận, trong đó có 5 bộ phận bị lỗi, tại ba ngưỡng:
import numpy as np
from sklearn.metrics import precision_score, recall_score
# 5 defective parts (1) and 10 good parts (0), with the model's defect score for each
y_true = np.array([1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
scores = np.array([0.95, 0.80, 0.55, 0.40, 0.20, 0.60, 0.35, 0.30, 0.15, 0.10, 0.10, 0.05, 0.05, 0.05, 0.02])
# Lowering the decision threshold flags more parts as defective
for threshold in (0.7, 0.5, 0.3):
y_pred = scores >= threshold
recall = recall_score(y_true, y_pred)
precision = precision_score(y_true, y_pred)
print(f"threshold {threshold}: recall {recall:.2f}, precision {precision:.2f}")Ở ngưỡng 0.7, model tìm được 2 trong 5 lỗi mà không có cảnh báo giả, đạt recall 0.40 và precision 1.00. Hạ ngưỡng xuống 0.3 giúp phát hiện 4 lỗi, đạt recall 0.80, nhưng 3 trong 7 trường hợp được đánh dấu là bộ phận tốt, khiến precision giảm còn 0.57. Vẽ biểu đồ theo mọi ngưỡng sẽ tạo thành đường cong precision-recall; điểm F1 hoặc điểm F2 ưu tiên recall sẽ chọn một điểm vận hành trên đường cong đó. Trong YOLO26, ngưỡng conf của dự đoán thiết lập sự đánh đổi này, mặc định là 0.25: hạ ngưỡng, chẳng hạn xuống conf=0.1, giúp phát hiện lại các vật thể mờ hơn, nhỏ hơn và bị che khuất một phần, nhưng đổi lại có nhiều detection sai hơn.
Recall trong phát hiện đối tượng#
Trong phát hiện đối tượng, các trường hợp dương tính là những đối tượng được gán nhãn trong mỗi ảnh. Một đối tượng được gán nhãn chỉ được tính là tìm thấy khi một dự đoán cùng lớp chồng lấp với đối tượng đó ở mức giao trên hợp (IoU) bằng hoặc cao hơn ngưỡng, thường là 0.5. Mỗi dự đoán chỉ có thể ghép với một đối tượng; vì vậy, một box duy nhất bao trùm hai người trong đám đông chỉ tìm được một người, còn người kia trở thành âm tính giả.
Do đó, recall của detector phụ thuộc vào ngưỡng confidence, ngưỡng IoU và bước hậu xử lý. Ngưỡng IoU nghiêm ngặt hơn, chẳng hạn 0.75, làm giảm recall đối với các box đặt chưa khớp chặt; loại bỏ phi cực đại (NMS) có thể xóa các box chính xác trên những đối tượng chồng lấp nhiều, còn giới hạn số detection trên mỗi ảnh làm giảm recall trong cảnh dày đặc. Mean average precision (mAP) tích phân precision trên mọi mức recall, nên mọi đối tượng model không tìm thấy đều làm giảm mAP. Đánh giá COCO cũng báo cáo average recall (AR), tức recall tối đa đạt được với số detection cố định trên mỗi ảnh, lấy trung bình qua các ngưỡng IoU từ 0.50 đến 0.95, dưới dạng AR@1, AR@10 và AR@100.
Cải thiện recall#
- Hạ ngưỡng confidence: Cách khắc phục nhanh nhất, đổi lại precision thấp hơn.
- Thu thập và gán nhãn các trường hợp bỏ sót: Bổ sung ví dụ huấn luyện về những tình huống model thất bại, chẳng hạn đối tượng nhỏ, bị che khuất hoặc xuất hiện ban đêm. Rà soát âm tính giả trên dữ liệu validation sẽ cho biết những trường hợp cần bổ sung.
- Tăng độ phân giải đầu vào: Đối tượng nhỏ chỉ còn vài pixel ở độ phân giải thấp có thể được phát hiện khi dùng độ phân giải cao hơn.
- Khắc phục mất cân bằng lớp: Các hàm loss như focal loss và phương pháp lấy mẫu lại các lớp hiếm giúp model không bỏ qua lớp thiểu số.
Recall và các thuật ngữ liên quan#
- Precision: Tỷ lệ dự đoán dương tính chính xác. Recall cho biết model tìm thấy bao nhiêu phần của mục tiêu, còn precision cho biết bao nhiêu phần trong số những gì model tìm thấy là chính xác.
- Specificity: Tỷ lệ âm tính thật, TN / (TN + FP), tức tỷ lệ mẫu âm tính được loại đúng. Các xét nghiệm y tế báo cáo cặp chỉ số độ nhạy và độ đặc hiệu.
- Đường cong đặc trưng hoạt động của bộ thu (ROC): Biểu đồ thể hiện recall, tức tỷ lệ dương tính thật, theo tỷ lệ dương tính giả ở các ngưỡng khác nhau. Diện tích dưới đường cong (AUC) tóm tắt đường cong bằng một con số.
- Accuracy: Tỷ lệ chính xác trong tổng số dự đoán. Khi tỷ lệ mẫu dương tính là 1%, model luôn dự đoán âm tính vẫn đạt accuracy 99% và recall 0%.










