LoginSignup
28
15

More than 3 years have passed since last update.

Neural Network Consoleを使って五等分の花嫁を学習してみた

Posted at

はじめに

機械学習を使って五等分の花嫁の予測をする記事はいくつかあるのですが、最新10巻までのデータを使ったもの、Neural Network Console(以下NNC)を使ったものが無かったので自分の練習がてら試してみました。
多少のネタバレを含みますので注意してください。
因みに私は三玖派です。
過程はいいから結果だけ見たい方はこちら

Neural Network Consoleとは?

Neural Network Consoleとは、SONYが開発したディープラーニング・ツールで、ドラッグ&ドロップでニューラルネットワークを編集できるため、数学やプログラミングの知識がない人でも簡単にディープラーニングを行うことができるツールです。また、学習にはクラウド上のGPUを使うので、頭もPCも低スペックな私でも簡単に学習モデルを作ることができます。
開発者である小林由幸氏自身による解説動画もあるので、そちらも参考にしてみるとわかりやすいです。

データセットの準備

画像収集

今回の労力の7割近く。
kindleからSnipping Toolを使い手動でデータを収集。手動で集めることがこんなに面倒だなんて思わなかった。
のちにリサイズするのでサイズは気にしなくともなるべく正方形に切り取りました。
変装時の扱いですが、顔を見て変装と判断出来ないものは省きました。

miku.jpg 三玖として学習 itsuki.jpg 五月として学習 

nino.jpg 学習させず   miku2.jpg 学習させず

収集できた画像として
一花 : 574枚
二乃 : 613枚
三玖 : 549枚
四葉 : 555枚
五月 : 500枚
計  : 2791枚
になりました。

また、データセットを作るときのために、ラベルごとに画像をフォルダ分けして保存しておきます。

image.png

image.png

画像のサイズを統一

NNCを使ってデータセットを作るには画像のサイズを均等にしなければいけないので、縮小専用を使い、すべての画像を50px四方に縮小します。

データセットの作成

アプリ版のNNCにてデータセットを作成します。
DATASETページ上部の「Create Dataset」ボタンをクリックします。

image.png

Source Dirにて画像フォルダの入っているフォルダを指定
Output Dirにて作成するcsvファイルの保存先を指定します。
Shaping Modeは、今回はなるべく正方形になるように切り取っているのでResizeを選択します。
モノクロ画像なので1(MonoChrome)を選択。
Outputのサイズは縦横ともに50px。
絵柄の移り変わりなども考えられるのでDataのシャッフルにチェックを入れます。
最後に学習データと評価データの割合とファイル名を入力します。今回は学習8:2評価の割合にしました。
最後にApplyをクリックすればcsvファイルを作成してくれます。

image.png

csvファイルのアップロード

nnc uploaderを使い、作成したcsvファイルをクラウド版NNCにアップロードします。
クラウド版NNCのDatasetページ上部の「Upload Dateset」をクリック。
現れたタブのhash codeをコピーします。

image.png

コピーしたhash codeをPasteし、アップロードするcsvファイルを選択した後にstartをクリックするとアップロードが始まります。

image.png

画像を学習させる

プロジェクトの準備

クラウド版NNCのプロジェクトページにて「+ New Project」をクリックし、新しいプロジェクトを作成します。

image.png

作成したプロジェクトページにて先程アップロードしたデータセットをリンクさせます。

image.png

image.png

Trainingの項目には学習用のデータセットを、Validationの項目には評価用のデータセットをそれぞれリンクさせます。

image.png

学習モデルの作成

EDITページにて学習モデルを作成→学習→評価→修正の繰り返しを行います。

しかしここで一つ問題が発生
五月の精度だけがどうにも上がらず… 
(インデックスの関係上ラベルの数字は-1になってます)

image.png

データセットの修正

過学習も多く見られたので、データの水増しをします。
画像一括リサイザーを使い、左右反転した画像を追加、データセットの再作成を行いました。
画像サイズも縦横100pxに変更。

一花 : 574枚 × 2 = 1148枚
二乃 : 613枚 × 2 = 1226枚
三玖 : 549枚 × 2 = 1098枚
四葉 : 555枚 × 2 = 1110枚
五月 : 500枚 × 2 = 1000枚
計  : 2791枚 × 2 = 5582枚

まで水増し。

学習モデルの再作成 

色々な記事を参考に試行錯誤してモデルを作成。
CONFIGページのOptimizerでWeight Decayなどもいじっています。

image.png

全体的な精度は約80%になりました。五等分の誤答率。
これ以上はどうにも中々あがらず…
5人の精度のバランスもいいこのモデルを使用します。

image.png

花嫁画像の判定

判定用のデータセットの作成

判定したい花嫁の画像のみのデータセットを改めて作ります。
ラベルについてはどの数値でも構いません。
学習・評価データと同じようにアップロードし、Validationのデータセットにリンクさせます。
使用したいモデルのTRAININGページにて、改めてRUNボタンを押すことで判定が始まります。

判定結果

今回は6枚の画像を判定しました。

image.png

判定は五月

image.png

判定は一花

image.png

判定は五月

image.png

判定は一花

image.png

判定は五月

image.png

判定は僅差で四葉

ということで大体一花五月との結果が出ました。

終わりに

精度があと一歩上がらなかったのは、愛が足りなかった切り取り時に吹き出しなどのノイズが多かったのかなと。
デフォルメだったり、顔だけか頭全体かなど、切り取り方が均等でなかったりと量を求めるあまりにノイズが多くなり質が下がってしまったのが一因かと思われます。勿論全体的な知識不足もありますが。

image.png

精度自体はあと一つになしましたが、試行錯誤等は楽しかったのでまた何かに挑戦できればと思います。
アルトリア顔やろうと思ったけど多分無理…

28
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
28
15