公開されている学習済みのモデルを使うと簡単にAIで便利機能を作ることができます。
今回は、IBMが公開しているモデルを利用して、低解像度の画像→高解像度の画像への変換を行います。
IBMのサイト: Models – IBM Developer
全くコードを書かないのに「プログラミング」カテゴリーに入れてよいのかどうか。。。
詐欺だと思う
うまく動かなかったケースを2件ほど後半に書いておきます。(どちらもハードウェアが理由なので参考ならないかもしれませんが)
成功ケース
動いたのは、ミニPCのIntel NUC i5-8259U NUC8i5BEK でセットアップした時でした。
OS: Ubuntu 20.04.1 LTS
セットアップ
今回はIBMのサイトの中にあるモデルの中で画像の解像度変換をしてくれる以下のものを使います。
web Image Resolution Enhancer – IBM Developer
dockerイメージが用意されているので簡単に導入できます。
早速やってみましょう。(docker入れてなかったのでdocker入れるところからです)
~$ sudo addgroup --system docker
~$ sudo adduser $USER docker
~$ newgrp docker
~$ sudo snap install docker
~$ newgrp heisaku
ここまでdockerインストール(heisakuは僕のUser名)
~$ docker run -it -p 5000:5000 codait/max-image-resolution-enhancer
Unable to find image 'codait/max-image-resolution-enhancer:latest' locally
latest: Pulling from codait/max-image-resolution-enhancer
...
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
動きました!
web apiとして立ち上がってくれるのでこのままイメージを処理させることができます。
~$ curl -F "image=@./test.png" -XPOST http://localhost:5000/model/predict > enhanced.png
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2208k 100 2053k 100 155k 510k 39484 0:00:04 0:00:04 --:--:-- 548k
~$ ls
-rw-rw-r-- 1 heisaku heisaku 158777 2月 2 15:32 test.png
-rw-rw-r-- 1 heisaku heisaku 2102912 2月 2 16:00 enhanced.png
ここで使用する画像は解像度が100x100~500x500ピクセルくらいまでのものが良いようです。
今回は225x300ピクセルのものを使い、出来上がりサイズは900x1200ピクセルでした。
比較してみましょう!
細部がはっきりして、ギザギザがなめらかになってますね!
失敗ケース
Jetson Nanoでのセットアップ
IBMのイメージがx86向けのようで、armプロセッサーでは動かないようです。
jetson1:~$ sudo docker run -it -p 5000:5000 codait/max-image-resolution-enhancer
Unable to find image 'codait/max-image-resolution-enhancer:latest' locally
latest: Pulling from codait/max-image-resolution-enhancer
b8f262c62ec6: Pull complete
..
Status: Downloaded newer image for codait/max-image-resolution-enhancer:latest
standard_init_linux.go:211: exec user process caused "exec format error"
arm向けtensorflowとかビルドしてやればできるのかな?面倒なのでやらないけど。
heroboxでのセットアップ
こちらの方は一応intel cpu(model name: Intel(R) Celeron(R) N4100 CPU @ 1.10GHz)
hero:~$ docker run -it -p 5000:5000 codait/max-image-resolution-enhancer
Unable to find image 'codait/max-image-resolution-enhancer:latest' locally
latest: Pulling from codait/max-image-resolution-enhancer
b8f262c62ec6: Downloading [=> ] 556kB/27.09MB
..
Status: Downloaded newer image for codait/max-image-resolution-enhancer:latest
Illegal instruction (core dumped)
Jetsonのときとはエラーメッセージが違いますね。CPUでサポートしてないインストラクションが使われたっぽい?
確かにcat /proc/cpuinfo
で見るとflagsの中身がCeleron N4100とCore(TM) i5-8259Uで異なっています。
ということでこちらも調査が面倒なので諦めました。
諦めすぎじゃない?
新し目のCPUのIntelマシンなら動きます!
このIBMのサイトには他にもいろいろ学習済みモデルが転がってるので試してみると面白いと思いますよ!
enjoy!