Skip to content

Latest commit

 

History

History
133 lines (100 loc) · 6.4 KB

File metadata and controls

133 lines (100 loc) · 6.4 KB

識別性能の検証結果

概要

顔写真を8名に分類するタスクで分類モデルの精度と学習所要時間を検証した。
短時間で学習できること、少数の学習データでも高い精度で分類できることが確認された。

目次

問題設定

顔写真から人を特定するタスク

データセット

下記8名の写真をYahoo!画像検索で収集顔の部分を切り出して作成した、8クラス292枚の顔写真を用いる。データセットそのものは、肖像権と著作権の問題から公開しない。

0	武井咲
1	中越典子
2	ケンドーコバヤシ
3	伊原剛志
4	小蜜
5	照英
6	壇蜜
7	木村祐一

また、分類対象とする8名の画像は特徴量抽出器の学習に使ったデータセットには含まれていない。

検証対象モデル

分類器はノード50個の中間層を持つ多層パーセプトロンとする。
学習済みの画像特徴量抽出器を切り替えて検証を行う。

検証内容

  • 1
    • データセットを 訓練データ:評価データ = 7:3 の割合でランダムに振り分け、訓練データのみで学習させる。
    • 学習した識別モデルの、評価データに対する正答率を確認する。
    • 学習と評価を30epoch実施するのにかかった時間を計測する。
  • 2
    • 検証項目1の訓練データと評価データを逆転させて同様の検証を行い、訓練データが少ない場合の識別性能を確認する。

比較のため、v1のCNN再学習による精度と速度も掲載する。chainerのバージョンが変わったためv1モデルの精度も再計測したところ、v1作成時の報告よりも精度が向上した。chainer自体の改善によるものと思われるが、具体的な理由は不明。

実行環境

項目
CPU Ryzen 1700
Memory 16GB
Disk M.2 SSD 256GB
OS Ubuntu 16.04
Cuda 8.0
Python 3.5.2
chainer 3.2.0
cupy 2.2.0

CPUは8Core16Threadのモデルであるが、環境変数OMP_NUM_THREADS=1を設定して1Threadのみ使用した。

検証結果

検証1 訓練データが多い場合

特徴量抽出器 精度(%) 学習時間(秒)
V_10 96.2 11.4
V_12 92.5 11.6
V_16 98.7 12.6
V_20 98.7 13.7
V2_12 95.0 14.4
V2_16 96.2 16.8
V2_20 97.5 19.7
備考: v1 A_16再学習 86.1 120.3
備考: v1 I2_24再学習 83.3 148.1

検証2 訓練データが少ない場合

特徴量抽出器 精度(%) 学習時間(秒)
V_10 86.3 5.9
V_12 85.0 6.4
V_16 88.6 7.3
V_20 85.4 8.3
V2_12 84.0 8.8
V2_16 88.6 11.3
V2_20 91.8 14.1
備考: v1 A_16再学習 62.2 106.4
備考: v1 I2_24再学習 71.3 149.1

パラメータを増やすことは学習時間の増加に直結するが、必ずしも特徴量抽出器としての性能に繋がるわけではないことが分かった。
速度と精度のバランスを求めるならV_16を、精度を再優先するならV2_20を選択するのが良いと思われる。 v1と比べると精度・速度ともに大幅に改善している。

Raspberry Pi上での学習速度はまだ計測していない。v1時には1人あたり訓練画像9枚、評価画像なしでA_16を30epoch再学習するのに1人あたり50秒程度の所要時間だった。単純に比例計算すれば、今回のモデルでは1人あたり10秒以下で学習が完了することが期待できる。

特徴量抽出器のCNN分類モデルとしての性能

特徴量抽出器の学習(v1の事前学習)に用いた120クラス16576枚のデータを訓練8:評価2で分割し

  • 学習所要時間: 200epoch学習・評価するのにかかった時間
  • 精度: 評価データに対する識別精度の最高値
  • モデルサイズ: 学習結果としてに出力されるnpzファイルのサイズ

を比較した。また、評価データから10枚の画像をランダムに選び、1枚ずつ推論するのにかかった時間を計測し、平均値を推論所要時間とした。
なお、学習にはGPU(Geforce GTX 1070)を、推論にはCPUを1Coreのみ使用(環境変数OMP_NUM_THREADS=1を設定)した。

モデル 学習所要時間(秒) 精度(%) モデルサイズ(MB) 推論所要時間(ミリ秒/枚)
V_10 4166 85.7 0.19 9.28
V_12 4168 88.4 0.26 10.41
V_16 4140 90.5 0.43 13.56
V_20 4128 91.5 0.65 17.21
V2_12 4850 89.9 2.5 18.77
V2_16 4869 91.7 4.2 26.92
V2_20 4843 92.0 6.5 36.42
A_16(v1) 2761 56.3 0.66 6.29
I2_24(v1) 8102 58.1 1.2 9.85

v1のモデルと比較してv2のモデルは全体的に精度が向上した。基本的にはフィルタ数を増やしたほうが精度が高い。GPUを使用した学習時は並列処理ができるためフィルタ数を増やしても所要時間に変化はないが、CPUを用いた推論はフィルタ数に応じて所要時間が延びる。行列が小さいためか、CPUを複数Core使用しても逆に速度が遅くなり、1Coreに制限した時が最速だった。
Raspberry Pi上での推論速度はまだ計測していない。Raspberry Pi3上で A_16(v1) での推論速度が約0.2秒/枚であったことから、V_16なら0.4秒程度、V2_16でも1秒以内には推論できると期待される。

今回実装したモデルは、2つとも顔写真による人物分類以外のデータセットでも良い性能を示すことが確認されている