基于PaddlePaddle得人脸情绪识别挑战赛介绍

简介: 基于PaddlePaddle得人脸情绪识别挑战赛介绍

一、人脸情绪识别挑战赛介绍


aistudio项目地址:aistudio.baidu.com/aistudio/pr…

链接 :challenge.xfyun.cn/h5/invite?i…

image.png


1.赛事背景


人脸表情是传播人类情感信息与协调人际关系的重要方式,表情识别是指从静态照片或视频序列中选择出表情状态,从而确定对人物的情绪与心理变化。在日常生活中人类习惯从面部表情中吸收非言语暗示,那么计算机可以完成类似任务吗?答案是肯定的,但是需要训练它学会识别情绪。


2.赛事任务


给定人脸照片完成具体的情绪识别,选手需要根据训练集数据构建情绪识别任务,并对测试集图像进行预测,识别人脸的7种情绪。


3. 数据说明


赛题数据由训练集和测试集组成,训练集数据集按照不同情绪的文件夹进行存放。其中:


训练集:2.8W张人脸图像;

测试集:7K张人脸图像;

为了简化任务赛题图像只包含单张人脸,所有图像的尺寸为48*48像素。数据集包括的情绪标签包括以下7类:

  • angry
  • disgusted
  • fearful
  • happy
  • neutral
  • sad
  • surprised


二、数据处理


1.paddlex环境准备


各版本如下所示:

  • (from versions: 0.1.0, 0.1.1, 0.1.2, 0.1.3, 0.1.4, 0.1.5, 0.1.6, 0.1.7, 0.1.8, 0.1.9, 0.2.0, 0.2.1, 0.3.0, 1.0.0, 1.0.1, 1.0.2, 1.0.3, 1.0.4, 1.0.5, 1.0.6, 1.0.7, 1.0.8, 1.1.0, 1.1.1, 1.1.5, 1.1.6, 1.2.0, 1.2.1, 1.2.2, 1.2.3, 1.2.4, 1.2.5, 1.2.6, 1.2.7, 1.2.8, 1.3.0, 1.3.1, 1.3.2, 1.3.3, 1.3.4, 1.3.5, 1.3.6, 1.3.7, 1.3.8, 1.3.9, 1.3.10, 1.3.11, 2.0.0rc0, 2.0.0rc3)
  • 在此使用2.0.0rc3,此版本和以前的api略有不同,一定要注意,不然会出现莫名的错误!
! pip install paddlex==2.0.0rc3 -i https://mirror.baidu.com/pypi/simple
Looking in indexes: https://mirror.baidu.com/pypi/simple
Requirement already satisfied: paddlex==2.0.0rc3 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (2.0.0rc3)
Requirement already satisfied: colorama in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlex==2.0.0rc3) (0.4.4)
Requirement already satisfied: shapely>=1.7.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlex==2.0.0rc3) (1.7.1)
Requirement already satisfied: visualdl>=2.1.1 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlex==2.0.0rc3) (2.2.0)
Requirement already satisfied: tqdm in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlex==2.0.0rc3) (4.36.1)
Requirement already satisfied: scikit-learn==0.23.2 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlex==2.0.0rc3) (0.23.2)
Requirement already satisfied: scipy in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlex==2.0.0rc3) (1.6.3)
Requirement already satisfied: motmetrics in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlex==2.0.0rc3) (1.2.0)
Requirement already satisfied: paddleslim==2.1.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlex==2.0.0rc3) (2.1.0)
Requirement already satisfied: lap in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlex==2.0.0rc3) (0.4.0)
Requirement already satisfied: opencv-python in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlex==2.0.0rc3) (4.1.1.26)
Requirement already satisfied: pycocotools; platform_system != "Windows" in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlex==2.0.0rc3) (2.0.2)
Requirement already satisfied: pyyaml in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlex==2.0.0rc3) (5.1.2)
Requirement already satisfied: pre-commit in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from visualdl>=2.1.1->paddlex==2.0.0rc3) (1.21.0)
Requirement already satisfied: requests in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from visualdl>=2.1.1->paddlex==2.0.0rc3) (2.22.0)
Requirement already satisfied: Flask-Babel>=1.0.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from visualdl>=2.1.1->paddlex==2.0.0rc3) (1.0.0)
Requirement already satisfied: pandas in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from visualdl>=2.1.1->paddlex==2.0.0rc3) (1.1.5)
Requirement already satisfied: Pillow>=7.0.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from visualdl>=2.1.1->paddlex==2.0.0rc3) (7.1.2)
Requirement already satisfied: matplotlib in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from visualdl>=2.1.1->paddlex==2.0.0rc3) (2.2.3)
Requirement already satisfied: flask>=1.1.1 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from visualdl>=2.1.1->paddlex==2.0.0rc3) (1.1.1)
Requirement already satisfied: bce-python-sdk in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from visualdl>=2.1.1->paddlex==2.0.0rc3) (0.8.53)
Requirement already satisfied: six>=1.14.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from visualdl>=2.1.1->paddlex==2.0.0rc3) (1.15.0)
Requirement already satisfied: shellcheck-py in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from visualdl>=2.1.1->paddlex==2.0.0rc3) (0.7.1.1)
Requirement already satisfied: protobuf>=3.11.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from visualdl>=2.1.1->paddlex==2.0.0rc3) (3.14.0)
Requirement already satisfied: numpy in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from visualdl>=2.1.1->paddlex==2.0.0rc3) (1.20.3)
Requirement already satisfied: flake8>=3.7.9 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from visualdl>=2.1.1->paddlex==2.0.0rc3) (3.8.2)
Requirement already satisfied: threadpoolctl>=2.0.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from scikit-learn==0.23.2->paddlex==2.0.0rc3) (2.1.0)
Requirement already satisfied: joblib>=0.11 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from scikit-learn==0.23.2->paddlex==2.0.0rc3) (0.14.1)
Requirement already satisfied: pytest in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from motmetrics->paddlex==2.0.0rc3) (6.2.4)
Requirement already satisfied: pytest-benchmark in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from motmetrics->paddlex==2.0.0rc3) (3.4.1)
Requirement already satisfied: xmltodict>=0.12.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from motmetrics->paddlex==2.0.0rc3) (0.12.0)
Requirement already satisfied: flake8-import-order in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from motmetrics->paddlex==2.0.0rc3) (0.18.1)
Requirement already satisfied: pyzmq in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddleslim==2.1.0->paddlex==2.0.0rc3) (18.1.1)
Requirement already satisfied: setuptools>=18.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from pycocotools; platform_system != "Windows"->paddlex==2.0.0rc3) (56.2.0)
Requirement already satisfied: cython>=0.27.3 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from pycocotools; platform_system != "Windows"->paddlex==2.0.0rc3) (0.29)
Requirement already satisfied: toml in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from pre-commit->visualdl>=2.1.1->paddlex==2.0.0rc3) (0.10.0)
Requirement already satisfied: virtualenv>=15.2 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from pre-commit->visualdl>=2.1.1->paddlex==2.0.0rc3) (16.7.9)
Requirement already satisfied: aspy.yaml in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from pre-commit->visualdl>=2.1.1->paddlex==2.0.0rc3) (1.3.0)
Requirement already satisfied: identify>=1.0.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from pre-commit->visualdl>=2.1.1->paddlex==2.0.0rc3) (1.4.10)
Requirement already satisfied: cfgv>=2.0.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from pre-commit->visualdl>=2.1.1->paddlex==2.0.0rc3) (2.0.1)
Requirement already satisfied: nodeenv>=0.11.1 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from pre-commit->visualdl>=2.1.1->paddlex==2.0.0rc3) (1.3.4)
Requirement already satisfied: importlib-metadata; python_version < "3.8" in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from pre-commit->visualdl>=2.1.1->paddlex==2.0.0rc3) (0.23)
Requirement already satisfied: certifi>=2017.4.17 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from requests->visualdl>=2.1.1->paddlex==2.0.0rc3) (2019.9.11)
Requirement already satisfied: idna<2.9,>=2.5 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from requests->visualdl>=2.1.1->paddlex==2.0.0rc3) (2.8)
Requirement already satisfied: chardet<3.1.0,>=3.0.2 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from requests->visualdl>=2.1.1->paddlex==2.0.0rc3) (3.0.4)
Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from requests->visualdl>=2.1.1->paddlex==2.0.0rc3) (1.25.6)
Requirement already satisfied: pytz in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from Flask-Babel>=1.0.0->visualdl>=2.1.1->paddlex==2.0.0rc3) (2019.3)
Requirement already satisfied: Jinja2>=2.5 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from Flask-Babel>=1.0.0->visualdl>=2.1.1->paddlex==2.0.0rc3) (2.10.1)
Requirement already satisfied: Babel>=2.3 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from Flask-Babel>=1.0.0->visualdl>=2.1.1->paddlex==2.0.0rc3) (2.8.0)
Requirement already satisfied: python-dateutil>=2.7.3 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from pandas->visualdl>=2.1.1->paddlex==2.0.0rc3) (2.8.0)
Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from matplotlib->visualdl>=2.1.1->paddlex==2.0.0rc3) (2.4.2)
Requirement already satisfied: kiwisolver>=1.0.1 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from matplotlib->visualdl>=2.1.1->paddlex==2.0.0rc3) (1.1.0)
Requirement already satisfied: cycler>=0.10 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from matplotlib->visualdl>=2.1.1->paddlex==2.0.0rc3) (0.10.0)
Requirement already satisfied: click>=5.1 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from flask>=1.1.1->visualdl>=2.1.1->paddlex==2.0.0rc3) (7.0)
Requirement already satisfied: Werkzeug>=0.15 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from flask>=1.1.1->visualdl>=2.1.1->paddlex==2.0.0rc3) (0.16.0)
Requirement already satisfied: itsdangerous>=0.24 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from flask>=1.1.1->visualdl>=2.1.1->paddlex==2.0.0rc3) (1.1.0)
Requirement already satisfied: future>=0.6.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from bce-python-sdk->visualdl>=2.1.1->paddlex==2.0.0rc3) (0.18.0)
Requirement already satisfied: pycryptodome>=3.8.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from bce-python-sdk->visualdl>=2.1.1->paddlex==2.0.0rc3) (3.9.9)
Requirement already satisfied: pyflakes<2.3.0,>=2.2.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from flake8>=3.7.9->visualdl>=2.1.1->paddlex==2.0.0rc3) (2.2.0)
Requirement already satisfied: mccabe<0.7.0,>=0.6.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from flake8>=3.7.9->visualdl>=2.1.1->paddlex==2.0.0rc3) (0.6.1)
Requirement already satisfied: pycodestyle<2.7.0,>=2.6.0a1 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from flake8>=3.7.9->visualdl>=2.1.1->paddlex==2.0.0rc3) (2.6.0)
Requirement already satisfied: packaging in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from pytest->motmetrics->paddlex==2.0.0rc3) (20.9)
Requirement already satisfied: pluggy<1.0.0a1,>=0.12 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from pytest->motmetrics->paddlex==2.0.0rc3) (0.13.1)
Requirement already satisfied: py>=1.8.2 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from pytest->motmetrics->paddlex==2.0.0rc3) (1.10.0)
Requirement already satisfied: attrs>=19.2.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from pytest->motmetrics->paddlex==2.0.0rc3) (19.2.0)
Requirement already satisfied: iniconfig in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from pytest->motmetrics->paddlex==2.0.0rc3) (1.1.1)
Requirement already satisfied: py-cpuinfo in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from pytest-benchmark->motmetrics->paddlex==2.0.0rc3) (8.0.0)
Requirement already satisfied: zipp>=0.5 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from importlib-metadata; python_version < "3.8"->pre-commit->visualdl>=2.1.1->paddlex==2.0.0rc3) (0.6.0)
Requirement already satisfied: MarkupSafe>=0.23 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from Jinja2>=2.5->Flask-Babel>=1.0.0->visualdl>=2.1.1->paddlex==2.0.0rc3) (1.1.1)
Requirement already satisfied: more-itertools in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from zipp>=0.5->importlib-metadata; python_version < "3.8"->pre-commit->visualdl>=2.1.1->paddlex==2.0.0rc3) (7.2.0)


2.数据解压缩


# %cd ~
# !unzip data/data100671/Datawhale_人脸情绪识别_数据集.zip -d data
# !unzip -oq /home/aistudio/data/Datawhale_人脸情绪识别_数据集/test.zip
# !unzip -oq /home/aistudio/data/Datawhale_人脸情绪识别_数据集/train.zip
# !cp data/Datawhale_人脸情绪识别_数据集/sample_submit.csv .


3.数据均衡


disgusted仅仅只有436,数据极其不均衡,计划均衡下

/home/aistudio/train/angry
3995
/home/aistudio/train/disgusted
436
/home/aistudio/train/fearful
4097
/home/aistudio/train/neutral
4965
/home/aistudio/train/sad
4830
/home/aistudio/train/surprised
3171
%cd ~/train/angry
!ls -lR | grep "^-"| wc -l
%cd ~/train/disgusted/
!ls -lR | grep "^-"| wc -l
%cd ~/train/fearful/
!ls -lR | grep "^-"| wc -l
%cd ~/train/neutral/
!ls -lR | grep "^-"| wc -l
%cd ~/train/sad/
!ls -lR | grep "^-"| wc -l
%cd ~/train/surprised/
!ls -lR | grep "^-"| wc -l
/home/aistudio/train/angry
4965
/home/aistudio/train/disgusted
4965
/home/aistudio/train/fearful
4965
/home/aistudio/train/neutral
4965
/home/aistudio/train/sad
4965
/home/aistudio/train/surprised
4965
# # 数据均衡到4965,仅执行一次
# import os
# import shutil
# def get_file_list(target_path):
#     img_list = os.listdir(target_path)
#     img_list=[os.path.join(target_path, item) for item in img_list]
#     return img_list
# def cpfile(file_list, max_num):
#     current_num=len(file_list)
#     while(current_num<max_num):
#         i=current_num%current_num
#         current_path= '/'.join(file_list[i].split('/')[:-1])
#         filename=file_list[i].split('/')[-1]
#         new_path = os.path.join(str(current_path), 'new_' + str(current_num) + filename)
#         shutil.copy(file_list[i], new_path)
#         current_num=current_num+1
# train_dir=os.listdir('/home/aistudio/train')
# train_dir.remove('.DS_Store')
# img_paths=[os.path.join('/home/aistudio/train', item) for item in train_dir]
# print(img_paths)
# for item in img_paths:
#     img_list=get_file_list(item)
#     cpfile(img_list, 4965)
# print("数据以均衡,各分类均为4965张!")
%cd ~/train/angry
!ls -lR | grep "^-"| wc -l
%cd ~/train/disgusted/
!ls -lR | grep "^-"| wc -l
%cd ~/train/fearful/
!ls -lR | grep "^-"| wc -l
%cd ~/train/neutral/
!ls -lR | grep "^-"| wc -l
%cd ~/train/sad/
!ls -lR | grep "^-"| wc -l
%cd ~/train/surprised/
!ls -lR | grep "^-"| wc -l
/home/aistudio/train/angry
4965
/home/aistudio/train/disgusted
4965
/home/aistudio/train/fearful
4965
/home/aistudio/train/neutral
4965
/home/aistudio/train/sad
4965
/home/aistudio/train/surprised
4965


3.生成数据列表


切分为train、eval数据集

2021-07-18 21:53:18 [INFO]  Dataset split starts...
2021-07-18 21:53:18 [INFO]  Dataset split done.
2021-07-18 21:53:18 [INFO]  Train samples: 22968
2021-07-18 21:53:18 [INFO]  Eval samples: 5741
2021-07-18 21:53:18 [INFO]  Test samples: 0
2021-07-18 21:53:18 [INFO]  Split files saved in ./train
%cd ~/
!paddlex --split_dataset --format ImageNet --dataset_dir ./train --val_value 0.2


4.定义transforms


import matplotlib
matplotlib.use('Agg') 
import os
os.environ['CUDA_VISIBLE_DEVICES'] = '0'
import paddlex as pdx
from paddlex import transforms as T
dir(T)
['ArrangeClassifier', 'ArrangeDetector', 'ArrangeSegmenter', 'BatchRandomResize', 'BatchRandomResizeByShort', 'CenterCrop', 'Compose', 'Decode', 'MixupImage', 'Normalize', 'Padding', 'RandomBlur', 'RandomCrop', 'RandomDistort', 'RandomExpand', 'RandomHorizontalFlip', 'RandomResize', 'RandomResizeByShort', 'RandomScaleAspect', 'RandomVerticalFlip', 'Resize', 'ResizeByLong', 'ResizeByShort', 'T', '_BatchPadding', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', 'arrange_transforms', 'batch_operators', 'box_utils', 'build_transforms', 'functions', 'operators']
from paddlex import transforms as T
train_transforms = T.Compose([T.RandomBlur(), 
                            T.RandomHorizontalFlip(), T.Normalize()])
# train_transforms = T.Compose([T.RandomBlur(), T.RandomDistort(brightness_range=0.9, brightness_prob=0.4, contrast_range=0.4, contrast_prob=0.5, saturation_range=0.4),
#                             T.RandomHorizontalFlip(), T.Normalize()])                            
eval_transforms = T.Compose([T.Normalize()])


4.定义dataset


train_dataset = pdx.datasets.ImageNet(
    data_dir='train',
    file_list='train/train_list.txt',
    label_list='train/labels.txt',
    transforms=train_transforms,
    shuffle=True)
eval_dataset = pdx.datasets.ImageNet(
    data_dir='train',
    file_list='train/val_list.txt',
    label_list='train/labels.txt',
    transforms=eval_transforms)
2021-07-19 21:37:07 [INFO]  Starting to read file list from dataset...
2021-07-19 21:37:08 [INFO]  29604 samples in file train/train_list.txt
2021-07-19 21:37:08 [INFO]  Starting to read file list from dataset...
2021-07-19 21:37:08 [INFO]  7401 samples in file train/val_list.txt


三、选PaddleX模型并训练


1.模型选择 && 训练


num_classes = len(train_dataset.labels)
model = pdx.cls.ResNet101_vd_ssld(num_classes=num_classes)
model.train(num_epochs=10,
            train_dataset=train_dataset,
            train_batch_size=128,
            eval_dataset=eval_dataset,
            lr_decay_epochs=[4, 6, 8],
            save_interval_epochs=1,
            learning_rate=0.025,
            save_dir='output/ResNet101_vd_ssld',
            use_vdl=True)


2.训练日志


image.png

2021-07-18 22:01:55 [INFO]  [TRAIN] Epoch=10/10, Step=7/57, loss=0.612496, acc1=0.797500, acc5=1.000000, lr=0.000063, time_each_step=0.13s, eta=0:0:6
2021-07-18 22:01:56 [INFO]  [TRAIN] Epoch=10/10, Step=17/57, loss=0.707318, acc1=0.740000, acc5=0.997500, lr=0.000063, time_each_step=0.08s, eta=0:0:3
2021-07-18 22:01:57 [INFO]  [TRAIN] Epoch=10/10, Step=27/57, loss=0.733735, acc1=0.735000, acc5=0.997500, lr=0.000063, time_each_step=0.07s, eta=0:0:2
2021-07-18 22:01:57 [INFO]  [TRAIN] Epoch=10/10, Step=37/57, loss=0.822799, acc1=0.682500, acc5=0.992500, lr=0.000063, time_each_step=0.07s, eta=0:0:1
2021-07-18 22:01:58 [INFO]  [TRAIN] Epoch=10/10, Step=47/57, loss=0.722330, acc1=0.722500, acc5=0.997500, lr=0.000063, time_each_step=0.07s, eta=0:0:0
2021-07-18 22:01:59 [INFO]  [TRAIN] Epoch=10/10, Step=57/57, loss=0.781480, acc1=0.730000, acc5=0.985000, lr=0.000063, time_each_step=0.07s, eta=0:0:0
2021-07-18 22:01:59 [INFO]  [TRAIN] Epoch 10 finished, loss=0.72172904, acc1=0.74149126, acc5=0.99293864 .
2021-07-18 22:01:59 [INFO]  Start to evaluate(total_samples=5741, total_steps=15)...
2021-07-18 22:02:01 [INFO]  [EVAL] Finished, Epoch=10, acc1=0.554805, acc5=0.973047 .
2021-07-18 22:02:01 [INFO]  Current evaluated best model on eval_dataset is epoch_8, acc1=0.5554988384246826
2021-07-18 22:02:01 [INFO]  Model saved in output/mobilenetv3_large_ssld/epoch_10.


四、预测


1.生成预测列表


import pandas as pd
test=pd.read_csv('sample_submit.csv')
test.head()
.dataframe tbody tr th:only-of-type {         vertical-align: middle;     } .dataframe tbody tr th {     vertical-align: top; } .dataframe thead th {     text-align: right; }

name label
0 00001.png sad
1 00002.png sad
2 00003.png sad
3 00004.png sad
4 00005.png sad
test.info


2.预测


import paddlex as pdx
import os
model = pdx.load_model('0.7377796769142151/')
labels=[]
for index, item in test.iterrows():  
    image_name = os.path.join('test', item['name'])
    label = model.predict(image_name)
    labels.append(label)
print("Predict Done:", len(labels))
2021-07-19 21:47:03 [INFO]  Model[ResNet101_vd_ssld] loaded.
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/tensor/creation.py:125: DeprecationWarning: `np.object` is a deprecated alias for the builtin `object`. To silence this warning, use `object` by itself. Doing this will not modify any behavior and is safe. 
Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
  if data.dtype == np.object:
Predict Done: 7178


3.保存并提交


test['label']=labels
for i in range(len(labels)):
    test['label'][i]=test['label'][i][0]['category']
print(test['label'][0])
angry
# 不要index
test.to_csv('result.csv', index=False)
!zip result.zip result.csv
adding: result.csv (deflated 82%)


4.结果


返回分数  0.65534 result.csv    livingbody  2021-07-19 01:52:09


目录
相关文章
|
6月前
|
数据采集 数据挖掘
基于PaddlePaddle的酒驾风险行为分析预测
基于PaddlePaddle的酒驾风险行为分析预测
59 0
|
9月前
|
机器学习/深度学习 存储 数据采集
SqueezeNet算法解析—鸟类识别—Paddle实战
SqueezeNet算法,顾名思义,Squeeze的中文意思是压缩和挤压的意思,所以我们通过算法的名字就可以猜想到,该算法一定是通过解压模型来降低模型参数量的。当然任何算法的改进都是在原先的基础上提升精度或者降低模型参数,因此该算法的主要目的就是在于降低模型参数量的同时保持模型精度。随着CNN卷积神经网络的研究发展,越来越多的模型被研发出来,而为了提高模型的精度,深层次的模型例如AlexNet和ResNet等得到了大家的广泛认可。
122 0
SqueezeNet算法解析—鸟类识别—Paddle实战
|
8月前
|
C++ 计算机视觉 Python
Python+Yolov5人脸表情特征识别
这篇博客针对Python+Yolov5人脸表情特征识别编写代码,代码整洁,规则,易读。 学习与应用推荐首选。
130 0
Python+Yolov5人脸表情特征识别
|
10月前
|
机器学习/深度学习 数据采集 人工智能
Xception算法解析-鸟类识别实战-Paddle实战
今天详解以下Xception算法,同时应用它做一个鸟类识别。由于Xception模型在极大的减少了网络参数量和计算复杂度的同时,可以保持卓越的性能表现。因此,Xception模型已经被广泛地应用与图像分类、目标检测等任务中。 本次实战案例就是一个典型的图像分类。
129 0
|
机器学习/深度学习 传感器 算法
【人脸识别】基于PCA结合SVM和adaboost实现人脸识别附GUI界面
【人脸识别】基于PCA结合SVM和adaboost实现人脸识别附GUI界面
|
机器学习/深度学习 数据采集 XML
PyTorch 深度学习实战 | 基于 YOLO V3 的安全帽佩戴检测
本期将提供一个利用深度学习检测是否佩戴安全帽的案例,从而展示计算机视觉中的目标识别问题的一般流程。目标检测是基于图片分类的计算机视觉任务,既包含了分类,又包含了定位。给出一张图片,目标检测系统要能够识别出图片的目标并给出其位置。由于图片中目标数是不确定的,且要给出目标的精确位置,目标检测相比分类任务更复杂,所以也有更多的使用场景,如无人驾驶、智慧安防、工业安全、医学图像等方面。而本案例就是工业安全领域的一个应用,也可移植到其他的目标检测任务。
353 0
PyTorch 深度学习实战 | 基于 YOLO V3 的安全帽佩戴检测
|
机器学习/深度学习 Linux TensorFlow
基于TensorFlow训练识别自己的脸
基于TensorFlow训练识别自己的脸,cnn训练自己的模型
|
机器学习/深度学习 并行计算 数据可视化
|
API 异构计算
基于OpenVINO的PaddlePaddle的鲜花识别模型预测部署(下)
基于OpenVINO的PaddlePaddle的鲜花识别模型预测部署(下)
170 0
基于OpenVINO的PaddlePaddle的鲜花识别模型预测部署(下)
|
人工智能 数据可视化 数据挖掘
基于OpenVINO的PaddlePaddle的鲜花识别模型预测部署(上)
基于OpenVINO的PaddlePaddle的鲜花识别模型预测部署(上)
184 0
基于OpenVINO的PaddlePaddle的鲜花识别模型预测部署(上)