以前の記事で本体のセットアップが完了したので、Jetson AGX orinでいよいよプログラムをインストールして動かしてみたいと思います。 AIと言えばとりあえず画像認識かなという個人的な見解により画像認識を試してみたいと思います。
目次
①今日のコンセプト
Jetsonによる画像認識の記事をいくつか参考にさせて頂いています。 NVIDIAのJetson Nanoで「ディープ・ラーニングによる画像分類」をやってみた Hello AI World 今回はDockerを使ったやり方ではなく、ローカルにインストールして実行しました。 その中からImageNetによる画像分類を試していきます。
ImageNetは、物体認識ソフトウェアの研究で用いるために設計された大規模な画像データベースである。(Wikipedia参照)
②インストール
Building the Project from Sourceのページに設定方法を書いてくれているためそのまま実行していきます。 Quick Referenceの手法でも問題なさそうですが、不安なのでひとつずつ手順を実行していきます。
Cloning the Repo
sudo apt-get update
sudo apt-get install git cmake
git clone https://github.com/dusty-nv/jetson-inference
cd jetson-inference
git submodule update --init
Python Development Packages
sudo apt-get install libpython3-dev python3-numpy
自分の環境ではすでにインストール済みでした。
Configuring with CMake
cd jetson-inference # omit if working directory is already jetson-inference/ from above
mkdir build
cd build
cmake ../
もし違うディレクトリに移動しているようであればjetson-inferenceディレクトリに移動し実行します。途中、以下の画像のようなダイアログが出ましたが、選択してもすでにインストール済みでした。 このインストールは少し時間がかかりました。
cd jetson-inference/build
./install-pytorch.sh
また、もしインストールをSKIPしてしまった場合でも上記のコマンドで再度インストールの実行が可能です。
Compiling the Project
cd jetson-inference/build # omit if working directory is already build/ from above
make
sudo make install
sudo ldconfig
もし違うディレクトリに移動しているようであればjetson-inference/buildディレクトリに移動し実行します。 ここも少し時間がかかりました。これでインストールは完了です。
③画像分類の実行
③-01. 作業を行うディレクトリに移動する
cd build/aarch64/bin
③-02. ImageNetの実行方法
作業フォルダ内を見てみると以下のようになっている。
まずはフォルダ内に置かれているサンプル画像を実行することにします。記述の方法としては以下の通り、
./imagenet.py images/orange_0.jpg images/test/orange_0_output.jpg
imagenet.pyを実行する imageフォルダ内のorange_0.jpgを識別する imagesフォルダ内のtestフォルダにorange_0_output.jpgという名前で出力する という書き方になっています。 実際に実行した元画像と出力された画像は以下となります。
サンプル画像の左上に分類された内容が記載されています。orangeとなっており、正しそうです。
③-03. 自前の画像などを使って画像分類をやってみる
サンプルの画像ですと信頼度が怪しいため、自前の画像やフリー素材などをいくつか用意して分類してみたいと思います。手元にあったマウスなどの写真や、ヘリコプターの写真など5枚ほど用意しました。
元画像 | 分類後画像 |
---|---|
結果としては以下の通り、 ・33.79% mouse, computer mouce ・99.46% remote control, remote ・30.49% barometer ・41.89% parachute, chute ・89.40% mouse, computer mouce となりました。腕時計とヘリコプターは外れてしまいました。マウスは、一度目に実行した際に33%と自信なさげだったので、背景が白い写真にしたらうまく認識してくれるかもと思い試してみました。 無事%が上昇しています。
④別のモデルで画像分類を行う
先ほどはヘリコプターやマウスの分類の際に少し怪しい部分がありました。 ではModelを変更してみるとどのように変わってくるのか、試してみたいと思います。 ちなみに、先ほどまではデフォルトのモデルを使用していたため、GoogleNetを使用していました。
④-01. モデルのダウンロード
まずはモデルをダウンロードしていきます。 /jetson-inference/toolsに移動し、download-models.shを実行します。
cd <jetson-inference>/tools
./download-models.sh
どれがいいのかわからないので、今回はとりあえずすべてダウンロードすることにします。1にチャックを入れ、OKをクリック。以上でダウンロードが始まるので少し待ちます。
④-02. 実行するモデルの選定
正直どのモデルを使用するべきかなんとも言えません、、、 今回はお試しでもあるので適当に選んでみたいと思います。 そして選ばれたのがこちらのモデルたちです。 ・AlexNet ・ResNet-152 ・VGG-19 ・Inception-v4
④-03. モデル別画像分類の実行
AlexNet
スクロールできます
ResNet-152
スクロールできます
VGG-19
スクロールできます
Inception-v4
スクロールできます
結果一覧
モデル | マウス | リモコン | 腕時計 | ヘリコプター | マウス(白背景) |
---|---|---|---|---|---|
AlexNet | 68.16% mouse, computer mouse | 88.29% remote control, remote | 19.14% pole | 50.93% hip, rose hip, rosehip | 84.96% lens cap, lens cover |
ResNet-152 | 91.31% mouse, computer mouse | 99.41% remote control, remote | 54.69% stopwatch, stop watch | 27.17% warplane, military plane | 98.58% mouse, computer mouse |
VGG-19 | 69.48% mouse, computer mouse | 99.12% remote control, remote | 18.84% banjo | 58.35% wing | 49.78% mouse, computer mouse |
Inception-v4 | 92.04% mouse, computer mouse | 93.55% remote control, remote | 29.96% magnetic compass | 22.36% warplane, military plane | 91.65% mouse, computer mouse |
それぞれの結果を一覧にするとこのような形になりました。的中率としてはResNet-152とInception-v4が高めですが、大体間違えるところは同じような感じでした。もっと動物や植物といったものを入れてみたら結果は変わったかもしれません。
まとめ
画像分類のImageNetを試してみました。 モデル変更によっても結果が変わることが確認できました。 画像処理はもっといろいろなプログラムを試してみたいと思います。
コメント