Du an nay huan luyen va danh gia mo hinh nhan dien thuoc tinh nguoi di bo tren bo du lieu PA-100K. Pipeline hien tai gom 2 buoc chinh:
- Dung YOLO de phat hien nguoi va crop vung chinh trong anh goc.
- Huan luyen mo hinh ResNet50 da nhan de du doan 7 thuoc tinh.
PA-100K/
|-- annotation.mat
|-- best.pt
|-- best_attr_model.pt
|-- README.txt
|-- reporting.py
|-- train.py
|-- train.csv
|-- val.csv
|-- test.csv
|-- data/ # Can bo sung thu muc anh PA-100K tai day
|-- cropped/ # Tu dong tao sau khi crop
`-- report_output/ # File danh gia sinh ra boi reporting.py
Thu muc data/ phai chua anh goc cua bo du lieu PA-100K. Ten file anh trong data/ phai khop voi cot Image trong cac file CSV:
train.csvval.csvtest.csv
CSV hien tai su dung cac cot sau:
Imagegenderis_malehas_baghas_backpackhas_hathas_longsleeveshas_longpantshas_coat_jacket
Mo hinh hien tai huan luyen tren 7 nhan:
is_malehas_baghas_backpackhas_hathas_longsleeveshas_longpantshas_coat_jacket
File annotation.mat la metadata goc cua PA-100K. File README.txt la mo ta ngan cua bo du lieu goc.
- Windows hoac Linux
- Python 3.10+
- CUDA la tuy chon. Script tu dong dung
cudaneu co, neu khong se chay bang CPU.
Tao moi truong ao va cai thu vien:
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install --upgrade pip
pip install torch torchvision ultralytics opencv-python pandas numpy pillow tqdm matplotlib scikit-learn scipyNeu dang dung GPU, can cai phien ban torch phu hop voi CUDA tren may.
Trong train.py, day la trong so YOLO dung de phat hien nguoi trong anh truoc khi crop.
La trong so tot nhat cua mo hinh phan loai thuoc tinh. File nay:
- se duoc ghi de sau moi lan train neu validation loss tot hon
- duoc
reporting.pynap de danh gia tren tapvalvatest
Chay:
python train.pyScript train.py se tu dong thuc hien:
- Doc
train.csv,val.csv,test.csv. - Dung
best.ptde phat hien nguoi chinh trong moi anh cua thu mucdata/. - Resize crop ve kich thuoc
128 x 256. - Luu anh crop vao:
cropped/train/cropped/val/cropped/test/
- Tao lai cac file:
cropped/train.csvcropped/val.csvcropped/test.csv
- Huan luyen ResNet50 cho bai toan da nhan.
- Luu mo hinh tot nhat thanh
best_attr_model.pt.
- Batch size:
32 - Epochs:
20 - Learning rate:
1e-4 - Kich thuoc anh:
128 x 256 - Backbone:
ResNet50
Neu can thay doi hyperparameter, sua truc tiep phan CONFIG trong train.py.
Sau khi co best_attr_model.pt, chay:
python reporting.pyScript nay se:
- Nap mo hinh tu
best_attr_model.pt. - Danh gia tren
cropped/val.csvvacropped/test.csv. - Ap dung nguong du doan mac dinh
0.5. - Sinh bao cao vao thu muc
report_output/.
Voi moi split val va test, script sinh:
*_per_attribute_metrics.csv: accuracy, precision, recall, F1, ROC-AUC theo tung thuoc tinh*_summary.csv: loss, mean accuracy (mA), mean F1*_classification_report.txt: classification report chi tiet theo tung thuoc tinh*_confusion_matrix_<attribute>.png: confusion matrix cho moi thuoc tinh*_roc_curve_<attribute>.png: ROC curve cho moi thuoc tinh neu tinh duoc AUC
Neu ton tai metrics.csv tai thu muc goc va file nay co cac cot phu hop, reporting.py con co the sinh them:
loss_curve.pngf1_curve.png
Neu day la lan dau su dung repo:
- Dat anh PA-100K vao thu muc
data/. - Cai cac phu thuoc Python.
- Chay
python train.pyde tao crop va huan luyen. - Chay
python reporting.pyde tao bao cao danh gia.
Neu chi muon danh gia mo hinh da co san:
- Dam bao da co
best_attr_model.pt. - Dam bao da co
cropped/val.csv,cropped/test.csvva cac anh trongcropped/val,cropped/test. - Chay
python reporting.py.
- Repo hien tai khong kem thu muc
data/, vi vay can tu them bo du lieu truoc khi train. - Moi lan chay
train.py, pipeline se crop lai du lieu va co the mat nhieu thoi gian. train.pybo qua anh khong phat hien duoc nguoi.- Neu file
best_attr_model.ptkhong ton tai,reporting.pyse bao loi.
Thu muc report_output/ da chua san mot so file tong hop va classification report cho val va test. Co the mo thu muc nay de xem nhanh ket qua danh gia gan nhat.