未分類

PythonBeginners沖縄で話す予定だった、初歩的なディープラーニングによる画像分類の話

顛末

普段ディープラーニングは使わないんだけど、画像の判別をするシステムが必要になったのでそのための簡単なプロトタイプを作った。

もともとはPythonBeginners沖縄で、分類問題の評価方法と交えてLTを行う予定だったんだけど、台風10号で開催されなかったので、ここで記す。

実はLT発表する前に、同PythonBeginners沖縄のFacebookで、分類問題の評価方法について話題があがってて、それともネタがかぶってたんですがね。

 

ネタ

コンビニで販売している商品の画像をインターネットから拾って、整理する作業があったのですが、画像元がECサイトだと、商品画像がそのECサイトに特化したテキストが記載されていたりして、あんまりおもしろくなかった。

同じくネットで拾った”いろはす”を例にすると、私は、公式画像ぽい商品だけが写っている画像(GOOD)が必要で、ECサイト独自の”送料無料”だとか”いくら安い”が記載された画像(BAD)は必要ない。

数万枚の画像から手作業でBAD画像を間引くのは手間なので、自動で判定したい。

good_bad

なので、この2パターンを判別したいからディープラーニングする。

classification.png

手順

  1. ネットから画像を拾ってくる
  2. 手動でラベリング付けする
  3. KerasのCNNのサンプルをQiitaあたりからコピペする
  4. 学習
  5. 判別

とっても簡単。いい時代です。

GoogleやMicrosoftのSaaSを利用することも考えたけど、今回はプロトタイプだが、今後精度あげるうえで、いろいろモデルを作り変えたかったので、自前でつくりAPI化することにした。

ラベリングが一番しんどかった。半日かけて正例(BAD)が1000枚、負例(GOOD)が19000枚ぐらい。

BADの画像が割合もう少し多いかとおもったけど、少なかった。

結果

しきい値を0.5に置いた場合は概ね下記の精度になった。サンプルコピペでここまで精度がでれば、めっちゃよくないですか?

  • 再現率:85.3%
  • 適合率:72.3%

ちなみに再現率と適合率というのは。。

  • 再現率:正例のうち判定で網羅できた割合、今回の場合は14.7%(100%−85.3%)のBAD画像を見逃している
  • 適合率:正しいと判定したうち正例だった割合、今回の場合は27.7%(100%-27.7%)が間違って判定されている

今回の分類問題の場合は、GOODがBADと誤って判定されるのは許容してもよかったので、適合率よりも再現率の精度を重視して精度をあげていきたいなというのが今後の展望です。

この再現率と適合率の話を中心にLTする予定だったのだけど叶わず。。

confusion.png

前職の同僚が、お客様に説明するときに使ってたキャッチーなフレーズも広めたかった。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中