Hệ thống AI tự động gắn nhãn kiểm duyệt và đề xuất độ tuổi phù hợp cho phim dựa trên trailer và metadata.
Dự án xây dựng hệ thống gồm hai thành phần chính:
- Violence (bạo lực)
- Nudity (cảnh khỏa thân / nhạy cảm)
- Crime (hành vi phạm pháp)
→ Giúp backbone học được “ý thức kiểm duyệt”.
- Sử dụng trailer (vision branch)
- Sử dụng metadata (metadata branch)
Kết hợp kết quả từ hai nhánh để đưa ra phân loại cuối cùng chính xác hơn.
Input: các clip ngắn đã được cắt từ dataset:
- Violence: https://www.kaggle.com/datasets/frostedpilot/violence-clips-extracted
- Nudity: https://www.kaggle.com/datasets/trouho/porn-dataset
- Crime: https://www.kaggle.com/datasets/frostedpilot/ucf-crime-extracted
Model:
- Backbone:
VideoMAE - 3 classification heads tương ứng với 3 hành vi
Output:
- Checkpoint harm-aware VideoMAE đã biết nhận dạng hành vi gây hại
Gồm hai nhánh độc lập:
- Input: Trailer phim, cắt thành nhiều clips
- Sử dụng backbone từ Phase 1
- Trích xuất vector đại diện cho trailer
- Dự đoán nhãn độ tuổi (P, T13, T16, T18…)
- Input: CSV metadata của từng phim (thể loại, quốc gia, keywords…)
- Model: MLP hoặc mô hình tabular (XGBoost, Logistic Regression…)
- Dự đoán độ tuổi dựa trên đặc trưng phi hình ảnh
p_final = α * p_vision + (1 - α) * p_metadataTrong đó α được tinh chỉnh trên validation set.
Chỉ chứa dữ liệu local, không commit.
data/README.md hướng dẫn cấu trúc folder và format clip.
Các file chạy trực tiếp bằng terminal (train / evaluate / inference).
train_phase1_vision.py→ train VideoMAE multitasktrain_phase2_vision.py→ train age rating từ trailertrain_metadata.py→ train meta_model từ CSVeval_fusion.py→ evaluate late fusioninfer_single_movie.py→ chạy demo 1 phimsplit_dataset_clips.py→ script tách clip (đã có sẵn)
Toàn bộ logic liên quan đến video.
datasets.py
- Load clip dataset phase 1
- Load trailer dataset phase 2
videomae_backbone.py
- Load VideoMAE pretrained
- Chuẩn hoá input và xử lý tensor
Code cho nhánh metadata.
dataset.py→ Load CSV, xử lý one-hot / normalizationmodel.py→ Meta-model đơn giản (MLP hoặc sklearn)
late_fusion.py→ implement công thức:
p = α * p_vision + (1-α) * p_meta
Lưu cấu hình .yaml để training reproducible:
- Learning rate
- Batch size
- Đường dẫn data
- Checkpoint để load