下載
git clone https://github.com/jingkuan/Age-Gender-Pred
環境建置
Debian GNU/Linux 10
8 個 vCPU,30 GB 記憶體 (preprocess中align部分使用8 個 vCPU 花了頗多時家,建議多開幾個)
NVIDIA-SMI 418.87.01 Driver Version: 418.87.01 CUDA Version: 10.1
Tesla V100 16130MiB
conda create --name age python=3.6
conda env list
source /opt/conda/bin/activate
conda activate age
python -m pip install --upgrade pip && \
sudo apt-get install python-scipy && \
pip install opencv-python && \
pip install pandas && \
pip install dlib && \
pip install imutils && \
pip install scipy && \
# pip install skimage && \
conda install skimage
權重下載
mkdir models && \
cd models && \
wget http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2 && \
wget http://dlib.net/files/mmod_human_face_detector.dat.bz2 && \
bzip2 -d shape_predictor_68_face_landmarks.dat.bz2 && \
bzip2 -d mmod_human_face_detector.dat.bz2
訓練資料
mkdir pics && \
cd pics && \
wget https://data.vision.ee.ethz.ch/cvl/rrothe/imdb-wiki/static/imdb_crop.tar && \
tar xvf imdb_crop.tar
測試資料
wget https://data.vision.ee.ethz.ch/cvl/rrothe/imdb-wiki/static/wiki_crop.tar && \
tar xvf wiki_crop.tar
資料預處理
預處理前資料夾
pics
├── imdb_crop
│ ├── 00
│ ├── 01
│ ├── 02
│ ├── 03
│ ...
└── wiki_crop
├── 00
├── 01
├── 02
...
python preprocess.py
輸出
[convertMatlabDate] Failed to parse string 323
[convertMatlabDate] Failed to parse string 323
[convertMatlabDate] Failed to parse string 323
[convertMatlabDate] Failed to parse string 213
[convertMatlabDate] Failed to parse string 213
[convertMatlabDate] Failed to parse string 213
[convertMatlabDate] Failed to parse string 213
[convertMatlabDate] Failed to parse string 213
[convertMatlabDate] Failed to parse string 213
[convertMatlabDate] Failed to parse string 213
[convertMatlabDate] Failed to parse string 213
[convertMatlabDate] Failed to parse string 213
[convertMatlabDate] Failed to parse string 213
[convertMatlabDate] Failed to parse string 213
[convertMatlabDate] Failed to parse string 213
[convertMatlabDate] Failed to parse string 213
[convertMatlabDate] Failed to parse string 232
[convertMatlabDate] Failed to parse string 220
[convertMatlabDate] Failed to parse string 324
[convertMatlabDate] Failed to parse string 240
[convertMatlabDate] Failed to parse string 240
[convertMatlabDate] Failed to parse string 75
[convertMatlabDate] Failed to parse string 75
[convertMatlabDate] Failed to parse string 364
[convertMatlabDate] Failed to parse string 291
[convertMatlabDate] Failed to parse string 221
[convertMatlabDate] Failed to parse string 221
[convertMatlabDate] Failed to parse string 221
[convertMatlabDate] Failed to parse string 246
[convertMatlabDate] Failed to parse string 363
[convertMatlabDate] Failed to parse string 249
[convertMatlabDate] Failed to parse string 175
[convertMatlabDate] Failed to parse string 175
[convertMatlabDate] Failed to parse string 175
[convertMatlabDate] Failed to parse string 175
[convertMatlabDate] Failed to parse string 175
[convertMatlabDate] Failed to parse string 345
[convertMatlabDate] Failed to parse string 345
[convertMatlabDate] Failed to parse string 345
[convertMatlabDate] Failed to parse string 264
[convertMatlabDate] Failed to parse string 352
[convertMatlabDate] Failed to parse string 352
[convertMatlabDate] Failed to parse string 352
[convertMatlabDate] Failed to parse string 352
[convertMatlabDate] Failed to parse string 334
[convertMatlabDate] Failed to parse string 192
[convertMatlabDate] Failed to parse string 192
[convertMatlabDate] Failed to parse string 276
[convertMatlabDate] Failed to parse string 253
[convertMatlabDate] Failed to parse string 251
[convertMatlabDate] Failed to parse string 251
[convertMatlabDate] Failed to parse string 209
[convertMatlabDate] Failed to parse string 209
[convertMatlabDate] Failed to parse string 209
[convertMatlabDate] Failed to parse string 209
[convertMatlabDate] Failed to parse string 209
181484 Successful, 62302 no_face_image, 213797 multiple_face_image, 206 wrong_age, 2934 wrong_gender
aligning..
dividing..
預處理後資料夾
├── aligned
├── imdb_crop
│ ├── 00
│ ├── 01
│ ├── 02
│ ├── 03
│ ...
├── labeled
├── train
├── val
└── wiki_crop
├── 00
├── 01
├── 02
...
開始訓練
python train.py
修正
loss.cpu().data.numpy()[0]
改為
loss.cpu().data.numpy()
gender_loss_perc = 100 * (gender_loss / loss).cpu().data.numpy()[0]
age_cls_loss_perc = 100 * (age_cls_loss / loss).cpu().data.numpy()[0]
改為
gender_loss_perc = 100 * (gender_loss / loss).cpu().data.numpy()
age_cls_loss_perc = 100 * (age_cls_loss / loss).cpu().data.numpy()
錯誤
RuntimeError: CUDA out of memory. Tried to allocate 3.06 GiB (GPU 0; 15.75 GiB total capacity; 6.96 GiB already allocated; 1.62 GiB free; 13.03 GiB reserved in total by PyTorch)
修正
config.ini
batch_size = 256
Predicting images in val/ folder
python evaluate.py
其他錯誤
ModuleNotFoundError: No module named 'skimage'
sudo apt-get install python-matplotlib python-numpy python-pil python-scipy
sudo apt-get install build-essential cython
sudo apt-get install python-skimage
或者
pip install scikit-image --upgrade