年齡性別識別&訓練

來源

下載

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

分類: AI

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *