LoginSignup
1
0

More than 1 year has passed since last update.

MacbookでDenseCapのLua実装コードを動かしてみた(成功)

Last updated at Posted at 2021-08-08

今回、出力された画像

スクリーンショット 2021-08-08 22.52.53.png

やったこと

画像の説明文を自動生成するImage captioningモデルの一つに、画像全体の内容を説明する文章を生成するだけでなく、画像内の各物体(オブジェクト)に、その物体が何なのかを記述した「形容詞+名詞」形式の説明語句を重ねて表示してくれるDenseCapモデルがあります。

画像全体の内容を説明する文も出力されるのですが、その文を構成する複数の単語が、それぞれ画像内のどの(検出された)オブジェクトに対応しているのかを、色で対応づけして視覚的に表示してくれます。

具体的には、検出されたオブジェクトを囲んだ矩形線の「色」と、画像全体の内容を説明したキャプション文を構成する各単語の「色」を揃える、という見せ方が採用されています。

( スタンフォード大学のDenseCap研究チームの公式サイトより )
スクリーンショット 2021-08-08 23.23.47.png

今回、GitHubに公開されているDensCapモデルのLua実装コードを、Macbook(macOS Catalina)のCPU環境で動かしてみました。

解析対象の画像ファイルを用意

imgsディレクトリ直下に、DenseCapに食わせたい画像ファイルを入れます。

Terminal
electron@diynoMacBook-Pro densecap % ls ./imgs
chrome_ssl_screen.png   resultsfig.png      test003.jpg     test007.jpeg        test010.jpg
elephant.jpg        test001.png     test005.jpg     test008.jpeg        unidentified_guy.png
electron@diynoMacBook-Pro densecap % 
Terminal
electron@diynoMacBook-Pro densecap % open ./imgs/test001.png

test001.png

学習済みモデルで、好きな画像を指定して、推論を実行

デフォルトではGPUで推論が行われるので、CPU環境で実行する場合は、コマンドライン引数として、-gpu -1を付けないといけない。

to run in CPU only mode, simply add the flag -gpu -1.

Terminal
electron@diynoMacBook-Pro densecap % th run_model.lua -input_image imgs/test001.png -gpu -1
1/1 processing image imgs/test001.png   
electron@diynoMacBook-Pro densecap % 

実行が終わると、visディレクトリにファイルが出力されると書いてある。
jsonファイルと画像ファイルが吐かれていた。

jsonファイルをwc -lで行数カウントすると、何と0行。
そして、画像ファイルをopenコマンドで開くと、入力したのと同じ画像が・・・

こりゃ、実行失敗したか?(エラーは吐かれなかった)と肩を落としていたところ、
python -m SimpleHTTPServer 8181でサーバを立てて、結果を見ておく気力を奮い立たせました。

This command will write results into the folder vis/data. We have provided a web-based visualizer to view these results; to use it, change to the vis directory and start a local HTTP server:

cd vis
python -m SimpleHTTPServer 8181

ブラウザ(Google Chrome)のURL窓に、以下のローカルホストのポート8181番の/view_resultsを開くと、なんと、ちゃんと解析処理がされていました(安堵)

Then point your web browser to http://localhost:8181/view_results.html.

スクリーンショット 2021-08-08 22.51.33.png

Terminal
electron@diynoMacBook-Pro densecap % cd vis                                                         
electron@diynoMacBook-Pro vis % python -m SimpleHTTPServer 8181                                
Serving HTTP on 0.0.0.0 port 8181 ...
127.0.0.1 - - [08/Aug/2021 22:50:59] "GET /view_results.html HTTP/1.1" 200 -
127.0.0.1 - - [08/Aug/2021 22:50:59] "GET /utils.js HTTP/1.1" 200 -
127.0.0.1 - - [08/Aug/2021 22:50:59] "GET /jquery-1.8.3.min.js HTTP/1.1" 200 -
127.0.0.1 - - [08/Aug/2021 22:50:59] "GET /d3.min.js HTTP/1.1" 200 -
127.0.0.1 - - [08/Aug/2021 22:50:59] "GET /style.css HTTP/1.1" 200 -
127.0.0.1 - - [08/Aug/2021 22:50:59] "GET /data/results.json?sigh=25948 HTTP/1.1" 200 -
127.0.0.1 - - [08/Aug/2021 22:50:59] "GET /data/test001.png HTTP/1.1" 200 -

Toggleボタンを押すと、各オブジェクトの矩形線上に、オブジェクト単位のキャプション文が表示されました。

スクリーンショット 2021-08-08 22.51.46.png

( 拡大 )

スクリーンショット 2021-08-08 22.51.56.png

More detectionsボタンを押すと、検出された他のオブジェクトについても、矩形線と、オブジェクト単位のキャプション文の表示が、1つずつ増えていく。

スクリーンショット 2021-08-08 22.52.16.png

スクリーンショット 2021-08-08 22.52.43.png

スクリーンショット 2021-08-08 22.52.53.png

他の画像も試してみる

( 入力画像 )

( 出力画像 )

More detectionsボタンを押すと、検出された他のオブジェクトについても、矩形線と、オブジェクト単位のキャプション文の表示が、1つずつ増えていく。

環境構築

(1) Luaを入れる

MacbookにLuaとluarocksを入れる。

(2)luarocks installでライブラリを入れる

MacbookにLuaとluarocksを入れたあと、必要なライブラリを入れます。
ここで、luarocks install torchにハマりポイントがあったので、出くわした問題を解決したやり方を下の記事に記録しました。

luarocks install torch
luarocks install nn
luarocks install image
luarocks install lua-cjson
luarocks install https://raw.githubusercontent.com/qassemoquab/stnbhwd/master/stnbhwd-scm-1.rockspec
luarocks install https://raw.githubusercontent.com/jcjohnson/torch-rnn/master/torch-rnn-scm-1.rockspec

(3)DenseCapの学習済みモデルを入れる

sh scripts/download_pretrained_model.shを実行する。

Pretrained model
You can download a pretrained DenseCap model by running the following script:

sh scripts/download_pretrained_model.sh

(飛ばしてもOK) Luaの対話型インタプリタ環境が立ち上がるか確認

Luaが、このMacbookで問題なく動くことを確認します。

Terminal
electron@diynoMacBook-Pro densecap % pwd                                                            
/Users/electron/Desktop/densecap
electron@diynoMacBook-Pro densecap % 
electron@diynoMacBook-Pro densecap % th                                                             

  ______             __   |  Torch7 
 /_  __/__  ________/ /   |  Scientific computing for Lua. 
  / / / _ \/ __/ __/ _ \  |  Type ? for help 
 /_/  \___/_/  \__/_//_/  |  https://github.com/torch 
                          |  http://torch.ch 

th> 
                                                                      [0.0000s] 
th> quit
                                                                      [0.0003s] 
th> exit
Do you really want to exit ([y]/n)? y
electron@diynoMacBook-Pro densecap % 

問題ないみたいです。

1
0
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
1
0