AISIA FlowerName


花の名前を教えてくれるAI

花の写真をアップしてみてね~

クリックして画像を選んでくださいね♫
当サイトにアップロードした画像は、AIの学習に使用される場合がありますよ♫
判定する(無料です)
判定できる花の種類  …AIは257種類の花を学習しました
(257種類以外の花は判定できないので大目に見てやってください)。
お手軽に試すなら、下のサンプル画像をクリックしてね♪
ゲームを楽しみながら花の名前をどんどん覚えるスマホアプリ「花の名前ダウト」でも遊んでみてね(無料です)。
ゲームを楽しみながら花の名前をどんどん覚えるスマホアプリ「花の名前ダウト」でも遊んでみてね(無料です)。
 

技術概要


「この花な~んだ」は、花の認識という難易度の高い課題をテーマに、最新のディープラーニング技術を使って少ない学習データで高い正解率を得ることを目指しています。学術研究目的のサイトなので、皆様に無料公開しています。現在、257種類のお花を学習させていますので、その中であれば名前を教えてくれます(学習していないお花の場合は、似たものを解答します)。

1.学習データの準備

・画像データのソース
花の画像は、イギリスのオックスフォード大学の研究チームより公開されている102種類の画像8,189枚をベースにしています。ただし、ここには日本で一般に知られる花がなかったりするので、ImageNetが元データとしているインターネット画像から155種類の日本の花を約10,000枚取得して追加しています。

・カテゴリー当たりの学習データ数
今回学習した花は合計257種類(カテゴリー)です。少ないデータで学習することをテーマにしているので、1種類当たりの画像は50枚程度としています。

・データクレンジング
オックスフォード大学が公開している画像は、整備されていてラベルも正しく付いているため、そのまま学習データとして使えます。追加で取得した日本の花の画像は、さまざまな品質のものがあるために、ラベル付けの誤った画像や人の目でも判断のつかない曖昧な画像などを取り除き、品質の良いものだけを厳選しています。また、サイズをそろえるなどのクレンジング処理は学習時に自動で行っています。

  2.少量データ、少ない回数で学習する

・ニューラルネットワークライブラリ
ニューラルネットワークのライブラリは、Microsoft社が提供しているCognitive toolkitを採用しています。アルゴリズムは、画像認識で一般に使われているCNN(Convolutional Neural Network:畳み込みニューラルネットワーク)です。

・転移学習(Transfer Learning)
少量データで学習できる転移学習を使っています。利用した学習済モデルは、2015年のILSVRCで優勝したResNet(152層)をベースとしたResNet18(18層)です。今回は、訓練された特徴抽出部(ニューラルネットワーク)をフリーズし、最後の分類層を切り捨てて新しい層で置き換えています。ResNet18がもともと学習している画像データセット(ILSVRC2017の1000カテゴリー)には、花のデータはデージーしかありません。そのため上記で用意した花のデータを分類層だけで高速に再学習させています。

・水増し(Data Augmentation)
今回は、少量データで学習できる転移学習で目的の精度が出たため「水増し」は行っていません。これから一般の方々がさまざまな品質の画像をアップすることが想定されますので、その結果でロバスト性を高める必要があると判断した場合には「水増し」を行って結果の比較を公開する予定です。

  3.汎化性能向上

・ミニバッチ学習法
過学習を防ぎ、汎化性能をアップするためのトレーニング技術としては、ミニバッチ確率的勾配降下法を使った「ミニバッチ学習法」と「K分割交差検証」があります。今回はこの2つのうちミニバッチ学習法を採用しています。具体的数値としては、約12,000枚の訓練データからバッチサイズ50、バッチ回数360、エポック回数20としています。つまり、12,000枚の訓練データからランダムに50枚を抽出して学習する作業を360回繰り返し、それを20セット行うわけです。転移学習技術を使っているため、わずか20回のトレーニングで求める精度に達しています。

・ホールドアウト法(HoldOut)
訓練データとは別に評価データを分けておくホールドアウト法を採用し、さらに汎化性能を確認するためのテストデータも別に確保しています。具体的数値としては、学習データ約17,837枚に対し、訓練データ11,877枚、評価データ3,905枚、テストデータ2,055枚といった割合です。

・正則化(Regularization)
回帰手法を使って特定の学習データに依存し過ぎないようにする正則化も使っています。正則化には、L1ノルム正則化(Losso回帰)とL2ノルム正則化(Ridge回帰)があり、それを組み合わせる場合もありますが、今回はL2ノルム正則化を採用し、少ない学習データでも過学習を起こしにくいようにしています。

・ドロップアウト(DropOut)
疑似的なアンサンブル学習により過学習を防止するドロップアウトというとても有効な技術がありますが、今回はそこまで行く前に目的の精度が達成できたので、ドロップアウトは使用していません。

・バリアンスとバイアス
汎化性能は厳密にいえば、正解率(Accuracy)、再現率(Recall)、精度(Presicion)という3つの尺度があります。再現率(Recall)と精度(Presicion)はトレードオフの関係にありますので、今回は、両方を統合して評価する調和平均(F値)を指標として性能アップを図っており、手元のテストデータ2,000件では約82%の正解率を実現しています。

  4.アクティブラーニング

このサイトは運用しながら追加学習するアクティブラーニングを行いますので、皆さまのアップロードした画像の中から、追加学習に利用させていただく場合があります。