2019年7月8日月曜日

My Painter for Android Released

TensorFlow Liteの習作として、掲題のアプリをリリースした。
これはちまたで有名な深層学習で、「画風」を学習させ、それを他の画像に「画風」を写像させるという、"Neural Style Transfer"技術を応用したものだ。
最初にGatysさんが提唱して後、様々な改良されたアルゴリズム(ネットワーク)が提案されて来ている。最初のアルゴリズムでは、元の「画風」は固定されていたが、今回このアプリで使われているアルゴリズムは、ネットワークの入力として「画風」データと元画像の二つから、リアルタイムに「画風」が加味された画像が出力されるというものだ。
ベースのアルゴリズムはAdaINと呼ばれるものを使った。
これをTensorflow Liteと呼ばれるAndroidなどのMobile Device用の推論専用のライブラリを用いてAndroidに実装した。学習に使うTensorflowと、推論に使うTensorflow Liteではサポートされる演算子が異なっているため、学習する時に注意をしないとLiteで使えないネットワークになってしまう。この二つのライブラリの差異は演算量の大きさからサポートしないと決定されたものと、まだ出来ていないだけのものから起きている。後者は待ってたりお願いしたりすると早まるが、前者は避けなければならない。日夜開発は進んでいるので、nightlyのパッケージを使うと最新のものが利用できる。
さて、今回のアプリはメモリをかなり使う方なので、新しいデバイスでしかサポートしないことにしているが、実際にはかなり古いAndroidでも、解像度が低くても良ければ動作する。

2019年6月27日木曜日

Tensorflow Lite GPU Experimental が動くAndroid Tablet

Tensorflow Liteはどんどん進化している。バグを申請すればあっという間にパッチが当てられ提供される。そして、知らなかったけど、Android GPUを用いた高速度版も存在する。これは多くのAndroid DeviceでサポートされるOpenGL ESの機能を用いたもので、どうもESL3.1以上が必要。残念ながら私のJ:Comのおまけのタブレットではちゃちすぎて使えない。同様にiPhone Metalにもサポートされていて、MobileNetV1を用いたデモプログラムがiPhone6Sでサクサク動いている。
さて、Android DeviceがESL3.1以上かどうかというのはパッケージには書いてないし、メーカーにも書いていない。OSとの兼ね合いかもしれないけど良くわからない。
そんな中、ベンチマークソフトベンダらしい、GFXBench.comというサイトを見つけた。ベンチマークソフトを提供する代わりにデータをもらってHardware Infoのデータベースを作っているらしい。すばらしい。

2019年5月24日金曜日

Python Spicy.misc.imread is obsoleted, but what the alternative?

とうとうScipyからimreadが消えてしまった。前々からアナウンスされていたらしいが、大して気にしていなかった。ついこないだまで、Google Colaboratoryでも動いていたので。
ところが昨日動かないことが判明し、一体何がどうすべきなのか調べたがガセばっかりだった。
で、結局ちゃんとScipyの1.2.0のドキュメントを読むと、ちゃんと書いてあった。
imageioを使えと。
さて、imageioを見てみるとimreadなどの関数が存在することは確認できたが、どうも引数が異なっている。なんも考えずに壊れた画像ファイルを見つけるスクリプトを動かしたら、全部消されてしまった。
imageio.imreadには、ドキュメントには無い引数がある。そして、Scipy.misc.imreadで使われていた、mode, flatten,はそれぞれ、pilmode, as_grayに変更されている。これらの引数はimageio.imreadのドキュメントには無く、個別の画像フォーマットに追補されるものであるらしい。例えば、PNGフォーマットのpilmodeには、L,P,RGB,RGBA,CMYKその他などがある。だから、
spicy.misc.imread("file.jpg",mode="RGB")
だったら、
image.imread("file.jpg", pilmode="RGB")
となる。

2019年4月29日月曜日

Table Tennis World Championships

日本の選手たちは、中国の壁に阻まれた。中国以前に負けてしまった選手もいたが、その壁は大きい。
いままで、平野や伊藤がするすると優勝していたけど、その後全然勝てなくなってしまう。伊藤のボールの回転を自在にする様を見て、こんなん対応できるの?と思っていたけど、その後の中国の選手との履歴を見ると、対応しているようだ。
この差は思うに、コーチの差だと思う。ここまで追いついてきたのは日本の育成と、それに答えた選手たちの頑張りだったと思う。でも、これ以上引き上げるのは卓球の暗黒時代にいたコーチ陣では無理なのでは。
天才が現れてその対抗策が練られないうちになら勝つことは出来るが、卓球頭脳の粋が対策を練ってしまうと、勝てなくなってしまう。
テニスの錦織はチャンをコーチにして、クレーで強くなったし、4位にまで成った。バドミントンでは、素晴らしいコーチを外から入れて、現在王国となりつつある。そんなことが必要なんじゃ無いだろうか。

2019年4月25日木曜日

Tensorflow Lite

Tensorflowは有名なNeural Net用のTraining/Inferation  フレームワークだ。
名前の通りテンソルの計算をパイプラインのように繋げていくことが簡単にできる。
学習には科学技術計算並の計算が必要で、GPUありきで開発されている。余りCPU/SIMDでは高速には成っていないようだ。GPUだとメモリネックになってしまうが、Google Colaboratoryを使うことで大分解消される。
さて、学習されたあとのネットを使って推論するのはたいした計算量では無いので、Mobile Devicesに使うことを考えるのは自然だし、実際GoogleからもMobileとかLiteとか出ていた。
最近、Liteに集約することに決めた後、開発がすごい勢いで進められてきた。TensorflowとTensorflowliteの間では、使えるオペレーションが異なっていて、単純にTensorflowで学習したネットをtflite_convertすることは出来ないことが多かった。それでもどんどん対応するオペレーションが増え、対応されていない物も元のTensorflowの学習する時のオペレーションをPython Nativeにするとかして対応できるようになった。
今日、Tensorflow Liteのサイトを見たら大分変わっていた。
IT Yearとか言うけど、ホントに速いなあ。

2019年4月16日火曜日

ALPS MD-5500 on Windows XP

今更ながらだが、Alps電気のMD-5500プリンタを所有している。溶融型のプリンタで、子供たちのアイロンプリントに活用していた。
先日、専用マシンのPowerBook G4 Titaniumが壊れた。ヒンジ部分が壊れたのだ。
仕方が無いので、Virtual BoxにWindows XPをのせてそこで動かそうと考えた。
Windows XP 32bit用に設定して、Virtual BoxにWindows XP SP2 Home Editionをインストールして認証させようとしたら、繋がらないとのこと。
ググって、SP3のアップデータをWindows 7マシンからダウンロードして、インストールしたところ、認証された。しかしながら、デフォルトのExplorerのHTTPSの認証データが古すぎてHTTPSでは接続できない。またもや、しかたなしにFirefox 52.9 esrをダウンロードしてインストールしたところ、またもや、繋がるようになった。
プリンタは幸いにも生きていてちゃんと印刷してくれた。やれやれ。でも、何に使おうか。まだ一杯インクフィルムがあるし。

2019年4月1日月曜日

Printer Repair Fees

三大プリンタメーカの複合プリンタ修理代金のうち、送料について調べてみた。修理なんか普通しないけどね。
canon : 3,240 (税込み)
brother : 2,500 (税抜き)
epson : 1,500 (税抜き)
いわゆる引き取りサービス(梱包材込み)のお値段。プリンタはむちゃくちゃやすいぶん、あちこちでサービスを省略しているのが分かる。最初に付いてくるインクも量が少なくなっているし、USBケーブルも付いていない。
しかし、あんな値段で良くビジネスが成り立つものだ。すごい。