やりたいこと
今回のやりたいことは、AIを使った画像認識をClearLinuxでやらせる。CLの一つの特徴は数値計算のパフォーマンスが高いということが歌われていますが、それじゃあAI画像認識処理を定番データセットと言われているImageNETを使ってやらせてみようと思いました。画像は例の別邸で定点観測を続けている映像です。
参考にしたリンク:
https://creepfablic.site/2020/09/30/python-image-recognition-ai/
https://creepfablic.site/2019/10/25/python-virtualenv/
https://clearlinux.org/software/bundle/python3-basic
バンドルをインストール
clear~ $ sudo swupd update
パスワード:
Update started
Version on server (35810) is not newer than system version (35810)
Update complete - System already up-to-date at version 35810
clear~ $ sudo swupd bundle-add virtualenv
Loading required manifests...
Warning: Bundle "virtualenv" is invalid, skipping it...
Failed to install 1 of 1 bundles
そんなBundleはないのですね、失礼しました。
clear~ $ sudo swupd bundle-add python3-basic
Loading required manifests...
Warning: Bundle "python3-basic" is already installed, skipping it...
1 bundle was already installed
すでにInstallされていました。これも失礼。
それではPython3の仮想環境を作ります。理由は、いろいろなライブラリをインストールしたりすることになるので、実環境でやっていろいろゴミが残ったりしているところに次のプロジェクトで作業を始めるとそれが悪さをして・・・ということが起きないようにというアドバイスを真摯に受け止め実行しました。
結果的に結うとこんなに簡単に、パフォーマンスのペナルティーもなく仮想環境で実行できてしまうんですね、と驚き。
実験用仮想Python環境
まずPython3の仮想環境を立ち上げて、機械学習向けのライブラリTensorFlowと画像ハンドリングためのPillowをインストール。
clear~ $ cd
clear~ $ mkdir work
clear~ $ cd work
clear~/work $ virtualenv -p python3 venv
created virtual environment CPython3.10.2.final.0-64 in 113ms
creator CPython3Posix(dest=/home/hoge/work/venv, clear=False, no_vcs_ignore=False, global=False)
seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/home/hoge/.local/share/virtualenv)
added seed packages: pip==22.0.3, setuptools==60.6.0, wheel==0.37.1
activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator
clear~/work $ source venv/bin/activate
(venv) clear~/work $ pip3 install tensorflow
Collecting tensorflow
Downloading tensorflow-2.8.0-cp310-cp310-manylinux2010_x86_64.whl (497.6 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 497.6/497.6 MB 10.5 MB/s eta 0:00:00
Collecting protobuf>=3.9.2
clear~/work $ pip3 install pillow
Collecting pillow
Downloading Pillow-9.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.3 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.3/4.3 MB 23.9 MB/s eta 0:00:00
Installing collected packages: pillow
Successfully installed pillow-9.0.1
仮想環境立ち上げ
clear~/work $ virtualenv -p python3 venv
created virtual environment CPython3.10.2.final.0-64 in 115ms
clear~/work $ source venv/bin/activate
(venv) hoge@clear~/work $
ここまであっという間。
参考リンクにあったimage_AI.pyというスクリプトを使って、画像をAIに判定させると・・・
clear~/work $ python3 image_AI.py /home/clear/share/image/2021-12-18/2021-12-18-1630S.jpg
2022-02-09 19:48:21.272982:
・・・いろいろあって・・・
lakeside 0.4026249
volcano 0.20730731
seashore 0.04408182
alp 0.031681754
balloon 0.029049806
(venv) hoge@clear~/work $
結果は
「湖畔」(Lakeside) 40%
「火山」(Volcano) 20%
「海岸」(4%)
まあ、当たらずとも遠からず、という感じ
所感
処理スピードが速いかどうかは比較するものがないので客観的な判断はできませんが、主観的には「おっ、ずいぶん早いな」という感じです。なんかもっといろいろな映像を判断させてみたくなりました。
image_AI.pyのソースはこちら
https://creepfablic.site/2020/09/30/python-image-recognition-ai/