Bạn vừa quay một buổi phỏng vấn hoặc một vlog ngoài đường và phát hiện có người lạ xuất hiện trong khung hình. Đăng nguyên file lên mạng sẽ phơi gương mặt người không đồng ý; ngồi làm mờ tay từng khung hình thì tốn cả buổi. deface là công cụ dòng lệnh mã nguồn mở chuyên làm mờ khuôn mặt trong video và ảnh: nó tự phát hiện mặt người rồi áp bộ lọc ẩn danh cho từng vùng mặt. Công cụ này hợp với nhà báo, giảng viên, quản trị viên cộng đồng đang cầm sẵn file media, muốn xử lý ngay trên máy mà không gửi dữ liệu lên đám mây. Điểm đáng chú ý nhất: mô hình phát hiện CenterFace dạng ONNX được đóng sẵn trong repo, cài bằng pip và dùng bằng một dòng lệnh.
Thank you for reading this post, don't forget to subscribe!Bạn quay cảnh phố, có người lạ lọt khung hình: deface giải quyết?

Giả sử bạn quay một buổi ghi hình ở quán cà phê đông người, về sau mới nhận ra có vài người lạ ngồi lọt vào hậu cảnh. Họ không ký giấy đồng ý sử dụng hình ảnh, và bạn cũng không muốn mất thời gian ngồi mask thủ công trong phần mềm dựng phim. deface giải quyết đúng tình huống đó: nó quét từng khung hình, tìm các vùng chứa mặt người, rồi phủ bộ lọc ngay tại vùng mặt. Bạn chỉ cần trỏ đường dẫn file video, không phải mở video trong bất kỳ trình chỉnh sửa nào.
Kết quả mặc định được ghi ra file mới có hậu tố _anonymized. Ví dụ lệnh deface myvideos/vid1.mp4 tạo ra myvideos/vid1_anonymized.mp4. README cũng nói rõ audio mặc định bị loại bỏ; nếu bạn cần tiếng trong video, phải thêm --keep-audio. deface không có giao diện đồ họa và tác giả không có kế hoạch làm GUI, nên bạn phải chấp nhận gõ lệnh.
Cài deface bằng pip: lệnh đầu tiên nên chạy

README ghi rõ deface chạy trên Linux, Windows, macOS nhưng phải dùng shell dòng lệnh. Điều kiện tiên quyết là Python 3.6 trở lên. Tác giả khuyên nên tạo virtual environment trước khi cài; nếu chưa có môi trường ảo, hãy tự tạo theo thói quen Python thông thường, vì README không đưa lệnh tạo môi trường cụ thể.
python3 -m pip install defacedeface myvideos/vid1.mp4
Nếu muốn bản mới nhất chưa phát hành, cài từ GitHub bằng python3 -m pip install 'git+https://github.com/ORB-HD/deface'. Bản cài mặc định chỉ gồm dependency tối thiểu để chạy; muốn tăng tốc phần cứng phải cài thêm package, phần bên dưới sẽ nói. Lệnh --output hoặc -o để đổi tên file đầu ra; nếu không, tên file tự động thêm _anonymized.
CenterFace và ONNX phát hiện mặt rồi chèn mặt nạ thế nào?

Phần lõi của deface là file centerface.py và model centerface.onnx đi kèm. README xác định model thuộc CenterFace, một mạng nơ-ron phát hiện mặt được huấn luyện trên WIDER FACE. CenterFace vốn nhận ảnh 2D, còn deface áp dụng cho video bằng cách phân tích từng khung hình độc lập. Với mỗi khung hình, mạng dự đoán bounding box của mặt; các box này được biến thành mask; mask quyết định vùng nào bị làm mờ hoặc thay thế.
Vì xử lý từng frame riêng lẻ, deface không theo dấu ai và cũng không cần biết danh tính. Nó không dùng thông tin chuyển động giữa các frame để dự đoán vị trí mặt ở frame tiếp theo. Phần centerface.py được phát triển từ repository Star-Clouds/centerface và phát hành theo MIT, còn model centerface.onnx là bản sao nguyên vẹn của centerface_bnmerged.onnx. README không công bố độ chính xác hay tốc độ suy luận trên video thực tế.
deface có mấy kiểu giấu mặt: blur, solid, none, img và mosaic?

Bộ lọc mặc định mà README dùng là gaussian blur mạnh, phủ lên vùng mặt có dạng ellipse. Nếu bạn muốn người xem không nhận ra ai nhưng vẫn giữ được cảnh quay, đừng vội hài lòng với một kiểu duy nhất. Trước khi render, hãy xem các chế độ do tham số --replacewith cung cấp.
| Chế độ | Cách gọi | Kết quả |
|---|---|---|
| blur | mặc định hoặc --replacewith blur |
làm mờ gaussian mạnh vùng mặt; mặc định bôi theo hình ellipse |
| solid | --replacewith solid |
bôi khối màu đen lên vùng mặt; kết hợp --boxes để có hình hộp rõ như demo |
| none | --replacewith none |
không thay đổi gì ở vùng mặt; hữu ích khi debug |
| img | --replacewith img --replaceimg path |
thay vùng mặt bằng ảnh tùy chọn; bắt buộc có --replaceimg |
| mosaic | --replacewith mosaic --mosaicsize 20 |
che mặt bằng các ô mosaic; mosaicsize tính bằng pixel |
Muốn vẽ hộp chữ nhật thay vì ellipse, dùng --boxes. Muốn vùng mask rộng hơn một chút để không sót mép tóc, tăng --mask-scale, mặc định là 1.3. Nếu muốn xem điểm số phát hiện để canh ngưỡng, bật --draw-scores. Các tham số này kết hợp được với nhau, ví dụ --replacewith solid --boxes cho cảm giác hộp đen như ảnh demo của README.
Ngưỡng –thresh nên chỉnh khi nào?

Tham số --thresh quyết định mức tự tin tối thiểu để một vùng được coi là mặt. Mặc định là 0.2, và README cho rằng giá trị này hoạt động tốt trên nhiều video. Nếu ngưỡng quá thấp, bạn sẽ thấy false positive kiểu bôi nhầm vào bàn tay hoặc vật thể; nếu quá cao, bạn sẽ bỏ sót những mặt bị che khuất hoặc quay nghiêng.
Mẹo được README gợi ý là xem điểm faceness bằng --draw-scores, sau đó đặt ngưỡng dựa trên điểm thực tế của từng cảnh quay. Khi tinh chỉnh, hãy thử --thresh 0.02 để xem false positive xuất hiện ở đâu và thử --thresh 0.7 để xem những mặt nào bị bỏ sót. Từ đó chọn mức cân bằng cho video của bạn.
Có cần GPU không? Cài onnxruntime-gpu hay DirectML khi nào?

GPU không bắt buộc. Bản cài mặc định chạy được trên CPU, nhưng nếu video dài hoặc độ phân giải cao, bạn nên cài thêm backend tăng tốc. README không nêu con số tốc độ cụ thể, cũng không nêu mức RAM hay VRAM tối thiểu; bạn cần tự đo trên máy thật.
Trên máy Nvidia, cài python3 -m pip install onnx onnxruntime-gpu. Trên Windows với GPU không phải Nvidia, dùng python3 -m pip install onnx onnxruntime-directml. Nếu chỉ có CPU, OpenVINO có thể cải thiện vài phần trăm so với OpenCV và ONNX Runtime, nhưng README ghi OpenVINO chưa hỗ trợ Python 3.11 tính đến tháng 7/2023. Backend mặc định là auto, ưu tiên onnxrt nếu có; bạn có thể ép execution provider bằng --execution-provider.
Với video trên 720p, README khuyên dùng --scale để giảm độ phân giải đầu vào của mạng phát hiện. Ví dụ video 16:9 có thể chạy --scale 640x360; nếu kết quả chưa đủ tốt, tăng lên --scale 1280x720. Quan trọng là phải giữ nguyên tỉ lệ khung hình, vì ảnh méo sẽ làm giảm độ chính xác. --scale chỉ ảnh hưởng tới bước phát hiện, file đầu ra vẫn giữ độ phân giải gốc.
deface trong Rails, deface attack và repo deface này khác gì nhau?

Nếu bạn tìm hai chữ deface trên Google, phần lớn kết quả không nói về ẩn danh video. Rails Deface là một gem phổ biến trong hệ sinh thái Rails, dùng để thay đổi view HTML/ERB/Haml/Slim mà không cần sửa file gốc; nó từng được dùng nhiều trong các project thương mại điện tử xây trên Spree. Deface attack lại là kỹ thuật tấn công thay nội dung website. Nghĩa từ điển của deface là làm xấu đi.
ORB-HD/deface không thuộc nhóm nào trong số đó. Nó dùng đúng ý tưởng làm mất hình dạng khuôn mặt để bảo vệ danh tính, chứ không đụng tới Rails, HTML hay máy chủ web. Nếu bạn cần tùy biến giao diện Rails, hãy tìm gem Deface; nếu bạn cần ẩn khuôn mặt trong file media, hãy dùng repo ORB-HD/deface.
Câu hỏi thường gặp
deface có xử lý ảnh tĩnh không?
Có. README hướng dẫn chạy trên file examples/city.jpg và xuất ra file mới bằng --output. Lệnh dùng cho ảnh tương tự video, chỉ khác phần mở rộng của file đầu vào.
Video đầu ra bị mất tiếng thì phải làm sao?
Mặc định deface loại bỏ toàn bộ audio track khi xử lý video. Nếu bạn cần tiếng trong file đầu ra, thêm --keep-audio; README ghi rõ tùy chọn này chỉ áp dụng cho video.
deface cam và –preview dùng để làm gì?
deface cam là lối tắt cho deface --preview '<video0>' để chạy thử với webcam. Nếu có nhiều camera, đổi số 0 thành 1, 2… theo thứ tự imageio-ffmpeg nhận diện.
deface có nhận diện được nhiều người trong một khung hình không?
Được. Ý tưởng của CenterFace là phát hiện toàn bộ khuôn mặt người trong mỗi khung hình, không giới hạn một người. Tuy nhiên, khi nhiều mặt nhỏ hoặc bị che khuất, bạn nên cân chỉnh thêm --thresh và --scale.
Khi nào nên cài deface, khi nào nên tìm công cụ khác?
Hãy cài deface nếu bạn có một hoặc nhiều file video cần ẩn danh, thích dùng dòng lệnh và muốn công việc hoàn tất trong vài phút. Công cụ này đặc biệt hợp với ai cần xử lý cục bộ, không muốn đưa video nhạy cảm lên dịch vụ đám mây. Mô hình được đóng sẵn, cú pháp ngắn và bạn có thể bắt đầu bằng chính lệnh mặc định mà không cần đọc quá nhiều tài liệu.
Ngược lại, đừng cài deface nếu bạn cần theo dõi danh tính xuyên suốt video, cần xử lý real-time với giao diện đồ họa, hoặc cần giữ audio mặc định mà không muốn nhớ thêm tham số. Đây không phải công cụ làm phim chuyên nghiệp, cũng không phải thư viện để xây hệ thống giám sát. Với đúng nhu cầu làm mờ khuôn mặt trong video và ảnh, deface là một lựa chọn đáng thử trước khi nghĩ tới phần mềm trả phí.

