Dream Driven Development。夢を形にしよう!

学習済みモデルを利用して 画像の解像度を上げる

学習済みモデルを利用して
画像の解像度を上げる


公開されている学習済みのモデルを使うと簡単に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!

|

お気に入りサイト