Google Colaboratory及び学習済みモデルを用いたpythonによる画像説明文書の自動生成

python活用 python

手軽に画像認識を試してみたいです。

このような要望にお応えします。

今回は、画像キャプション生成をしてみます。

画像キャプション生成では、入力画像に対してその内容を説明する文書を出力します。

ざっくりと、画像キャプション生成をするための技術について整理すると、CNNとLSTMを合わせたモデルで実現します。
この仕組みにより、CNN(Convolutional neural network)に基づき画像から抽出した特徴ベクトルとLSTM(Long short-term memory)による文書生成モデルを組み合わせ、画像の特徴から文書生成を実現することができます。すなわち、画像に対する説明文書を生成することができます。

今回は、以下のページで公開されている学習済みモデルを使用させていただき
画像キャプションを行います。また、実行環境として、Google Colaboratoryを使用します。また、実行環境の構築手順については、下記のページでも紹介されています。

yunjey/pytorch-tutorial
PyTorch Tutorial for Deep Learning Researchers. Contribute to yunjey/pytorch-tutorial development by creating an account on GitHub.

Google Colaboratoryは、Googleの仮想マシン上で動くPython環境です。
Googleアカウントがあれば無料で利用することができる機械学習等を行う上での最高の環境だと思います。

Google Colaboratoryの準備

・Googleのアカウントを作成します。


・Googleドライブにアクセスし、「新規」→「その他」から「Google Colaboratory」の順でクリックします。そうすると、Colaboratoryが起動します。

・Colaboratoryが起動したら、以下のコマンドをCoalboratoryのセルに入力し実行します。
そうすることで、Googleドライブをマウントします。

・実行後、認証コードの入力が促されます。このとき、「Go to this URL in a browser」が指しているURLにアクセスしgoogleアカウントを選択すると、認証コードが表示されますので、それをコピーしenterを押します。これでGoogleドライブのマウントが完了します。

Gitからツールを導入

・cdコマンドでMy Driveまで移動します。

ここで、ツールのインストールをします。

次に、coco/PythonAPIまで移動します。

makeコマンドを実行します。

pythonのセットアップをします。

cdコマンドでMy Driveまで戻ります。

・gitから画像キャプチャに必要なツールをインストールします。

インストールしたツールのimage_captioningフォルダまで移動します。

ツール実行に必要なpythonライブラリをインストールします。

データの準備

Google ChromeのGoogleドライブにて、modelsフォルダ、pngフォルダ、dataフォルダを新規作成します。すでに存在する場合は、フォルダ新規作成する必要はありません。

学習済みモデルデータなどをダウンロードします。
以下のページにある2つのモデルデータをダウンロードします。

pretrained_model.zip
Shared with Dropbox

・encoder-5-3000.pkl
・decoder-5-3000.pkl

これらを先程作成したmodelsフォルダに保存します。

次に、テキストデータをダウンロードします。
以下のページにあるテキストデータをダウンロードします。

vocap.zip
Shared with Dropbox

・vocab.pkl

このファイルを先程作成したdataフォルダーに保存します。これで準備完了です。

sample.pyを実行することで、動作確認をすることができます。

sample.pyでは、単一の画像ファイルのみの指定ができるようになっています。そのため、複数画像を扱えるように、pngフォルダ内のすべての画像データを対象に、そのファイルを読み込んで画像キャプチャを行い、その結果をgoogletransを使用して日本語に変換する処理を追加したプログラムを作成しました。

以下がソースコードになります。

出力結果

出力結果としては、以下のようになりました。
画像データは、以下のwebページの素材を使用しました。
フリー素材ぱくたそ(www.pakutaso.com)

出力結果は、入力画像を完全に説明できているかというと疑問が残りますが、男性、女性、猫、鳥等の判断や人物の姿勢等の細かな情報まで読み取れているような気がします。

このように、Google Colaboratory等のリソースを活用することで手軽に画像認識を試すことができますので是非活用してみてはいかがでしょうか。

タイトルとURLをコピーしました