ということで、流行りの「深層学習」を使って何かやってみよう!と半年くらい色々と試行錯誤してましたが、ある程度形になったので、その時に困ったことなどの技術メモを残します。
これから同じようなことをやってみたい方の参考になれば幸いです。
なお、深層学習の専門家ではないので、用語などの間違いはご容赦下さい。
教えていただけると助かります m(_ _)m
テーマと結果
- テーマ: ツイッターに投稿されている画像の自動ラベル付け
- やりたいこと: ツイッターにクリエーターさんが投稿している作品(画像)を、自動で分類し、まとめサイトを作成する。
- やった結果(サイト): Tweets Imagelist ※ラベルは各ツイート内にあります。(表には出していません)
- コード: https://github.com/t-analyzers/tweet-analyzer
- 参考テキスト
- 「Pythonによるスクレイピング&機械学習」(ソシム株式会社)
- 「深層学習(機械学習プロフェッショナルシリーズ)」(講談社)
やったこと
やったことの流れと概要を以下に記載します。
- ツイートの収集: Twitter APIを使ってツイートを収集する。ツイートはmongoDBに保存。
- ツイート画像のダウンロード: 収集したツイートの中のentities.media.media_urlのURLから画像ファイルをローカルPCにダウンロードして保存。ツイートを見ると画像があるのにmedia_urlの存在しないツイートがあるため全ての画像が取れるわけではない。
※本当は全画像を分析したいのですが…誰かご存知の方、教えて下さい。 - 教師データの作成: 手作業で画像一つ一つにラベル付けを行う。ラベル付けのためのツールをnode.jsのアプリとして作成。(Google Cloud Vision APIを使って教師データを作る方法を考えたが、残念ながら自分の期待したラベルがつかなかった。教師データ作成は深層学習の課題になりそう。)
- トレーニング用データの作成: 学習モデルを作成するために、リサイズした画像データとラベルのペアにして一つのファイルにまとめる。「トレーニング用」と「テスト用」に分ける。ランダムで分けるコードにしているため、複数回実行すると毎回異なる(はず)。
オリジナル画像の縦横比は気にしないで全て1:1になるようにリサイズする(これでも上手くいっているように見えるのが不思議…) - 学習モデルの作成: 参考テキストの「第5章 深層学習に挑戦しよう」を参考にしてKeras(裏で動くライブラリはTensorFlow)を使ってコーディングし、学習モデルを作成。
- サンプル画像のラベリング(学習モデルの確認): 特徴的な画像をサンプルとして用意しておき、作成した学習モデルでのラベリング結果をみる。
- ツイート画像への適用: サンプル画像のラベリング結果でOKと判断した場合、ツイート画像へ適用する。
最初は「よい学習モデル」ができなかったため、工夫して3〜6を繰り返し、学習モデルの改善をしていきました。
この改善ノウハウついて次回説明します。
0 件のコメント:
コメントを投稿