FC2ブログ
2018/09/05

今までのコンピュータで量子コンピューティングの真似はできるか(画像拡大で実証)

量子コンピュータの足音が近づいてきた。
一方で量子コンピュータがまだ完全なものがないのに、それに対応するソフトウェアの研究が始まっているのだそうだ。
どうみても矛盾している。量子コンピュータは自然な熱ゆらぎから始まり、すっと最適値に落ちてゆくものだ。

量子コンピュータが自然に最適値に落ちても、それは最も最適な値ではないのだそうだ。
なんども繰り返すのだそうだ。
あれ?

俺はモンテカルロ法というアルゴリズムを思い出した。
なんてことはない、乱数発生器をもちいて、ダーツを投げて、それが正解ならよしなのだ。
ある答えが正解か、検算するアルゴリズムは結構簡単だ。本当の正解との差もわかる。
だからモンテカルロ法がいまでも有効な場合がある。大量にダーツを投げて正解を探す。これは基礎的なAIのひとつでもあるのだ。

さらにどうも誰もいわないことを思いついた。
正解との差が小さいのなら、次の乱数はその幅を小さくする。中心値は前の答えだ。これで収束が結構早くなるはずだ。
この2つを量子コンピューターは自然の法則で極めて高速に行っているのだ。

そして今、intelのx86_64 CPUにはRDRAND命令が搭載されている。乱数を返す命令になる。これは結構高速だ。
これが発生させる乱数は電子の勝手な振る舞いを基にしているので、量子プロセスが入っている。
どしどし使えるだろう。擬似乱数のseedにしたりしよう。これであなたのコンピューターも今までの限界を突破できるのだ!
また商取引や機密の裏で使う、本格的な暗号用途の乱数発生器もさらに高速だ。

この技術も是非、日本の企業にも「こっそり」やってほしいところだ。まだ量子コンピューターは完成していないし、
今までのアルゴリズムを工夫すれば、同じようなことができるのだ。コンピューターの可能性は無限大だ!

追記:早速当てずっぽうなプログラムを組んでみたが、確実で早い結果は
*途中まで今までの手続きコンピューティングで追い込んであげる
*パラメータの次元ごとに乱数の幅を追い込むこと
*検算プログラムはなんの目的のどんな計算なのかはっきりさせること
テストが十分すめばgithubで画像拡大アルゴリズム「quantum-resize」をリリースできるかもしれない。
追記:乱数も入力されるコンピューターはただのチューリングマシンではない
計算機科学では「ランダムオラクルつきのチューリングマシン」として認識されているはずだ

追記:psaudo-quantum-resize をリリースできた。
https://github.com/t-site/psaudo-quantum-resize
これをgccでコンパイルして、Linux環境で画像を2倍にしてみよう。画像処理のために使っているlibgdはPHPと相性が良くて、様々なwebサービスに連結できる。
MVNOがこれを使ってやらかすかもしれない。

qresize -i 入力画像 -o 出力画像 [ -t threshold ]


今までの画像拡大アルゴリズムは絵の具を薄くするような、顕微鏡で拡大するようなぼかしや雰囲気の薄まりがあるが、
これにはそういう効果がない。むしろ画像が大きい分だけインパクトは4倍になる。
ちょっとだけバイキュービックでできないことができるようになるだけかもしれない。でもできるとできないはちがう。
アルゴリズムからして意外だろうが、エッジがはっきりするのだ。本当だ。
なお泣き所として、直角、水平に近い緩やかな線やカーブでは、ジャギーが出ることがある。このため2次元の静止画像ではwaifu2xのほうをおすすめ。
本当はエッジ方向補間など、前プロセスでも相当進歩したアルゴリズムが必要みたいだ。
だがどうもアニメ動画キャプチャーには使えるみたいだ。
わざわざ今やった画像の走査線数を表示するが、これが途中で進みがつっかえるなら、粒子ノイズが出たり、まれに時間が猛烈にかかったりする。
そんなときは -t を 20より上の数値を指定して調整できる。
コミットff9db2cで-tがデフォルトで5になった。新たに指定するときは9がいいだろう。更に精度が良くなった。
もちろんカスケードで2倍の画像をさらに2倍にしても、いい結果が帰ってくるはずだ。
追記:qresizeは縮小で潰れてしまった模様や文字をカスケード拡大で再現できるみたいだ!
内部ではPSNRを計算しているが、評価は直感(えごころ)で行っている。そして三次元の画像では相当な効果があるだろう。
しかしフォトショップでいじりまくっているコスプレ画像は二次元の画像に近いために、ジャギーが出てしまうかもしれない。
そしてgithubなのでコミットできる。みんなで進化させよう。

緊急:ソニーなど日本のIT企業のパスワードが盗まれて無料でさらされたのだそうだ。
俺は悪いことはしていないつもりだが、量子コンピュータはすべてのコンピューターより強力であり、それが実装できるのは
暗号破りなど、コンピューターというのはやはり「武器」なのだと恐れ入る。
もはや全世界の国がこの技術の研究を始めるべきだ!!

更に:ここのところAIの記事や話題が乱れまくりだ。
AIに関する記事の殆どはなぜかAIが人間を超越することはないというものだ。
しかし乱数をもとにすると、AIも乱数を通じて、宇宙の揺らぎからインスピレーションを受ける。これはこわい。
また なんとGoogleのAI主幹研究員がクビになったらしい。
この2つはこの記事との関係性が全くわからない。
だが、乱数を用いたAIこそ、アルゴリズムの指定なく予想外にいい結果をもたらすことが可能だ。精度を追求するなら、ひょっとするとこのページの乱数幅を狭めるやり方で速度も上がり、もうアルゴリズムの研究は終わるのだ。これはこわい。
むしろ怖いのは機械そのものだ。ネットの一部の識者が言っているが、機械に任せ人間を追い出したことが、
人間が多すぎる、人間が自然の資源を食いつぶす、労働者の給料、管理教育など、いろいろな世界の問題を引き起こしているのだ。
それはおそらくブルドーザーからそうなのかもしれない。
だから人間が十分できることは逆に高性能AIであるところの人間をたくさん雇い、
人間ができないことだけをAIや機械にやらせればいい。
例えば、悪い事の解決(法律や医療診断、犯罪予測)にはAIがちょうどよく、良き方向に進めることは人間しかできない。
人間は空を飛べないから、飛行機やドローンがふさわしい。海を渡れないから、船も望ましい。新幹線も望ましいが、
現代社会の問題は自動車や通勤電車の周りに起きていないだろうか?馬は競馬だけか?
高山は観光だけの小さい田舎ではなく、精神基盤まで整った立派な社会があった。地産地消で機械を必要な数にできる。
庶民の間でインターネットはどんなところだろうか?人が直接会えばそれでいい事までネット越しでよかったのか?
放射能を浴びるのも良くないから、原発賛成するならそういった環境でもバルブを操作でき、ネジを締められるロボットも欲しいところだ。
更にいうと自閉症やADHDの人材は何ができるのだろうか?それこそAIがいらないのではないのか。完全な脳内物理シミュレーターを持つフォン・ノイマン博士を始め、人間自身がどんなことができるのか 未知だ。
スポンサーサイト
2018/04/14

LinuxはデュアルブートよりUSBブートのほうがいい

Linuxのデュアルブートは難しく、設定を間違えると起動しなくなったり、Windowsが使えないというのはいまだに一大事です。
しかしUSBハードディスクやUSBケースに入れたSSDは、Linuxに手を出しそうな人は持っている人が結構多いでしょう。
USBハードディスクのデータをどっかに移して、インストーラーでそのハードディスクを指定するだけです。
さらにLinuxディストリビューションによってはリロケータブルカーネルとinitrdとGRUB2によって、別のパソコンに移せるので、
たぶん有名なディストリビューションならほとんど対応しているんじゃないかな。別のパソコンでもUSBから起動できます。
起動メニューはBIOSの起動セレクト画面を使えばいいです。HPならF9キー ASUSならESCキーです。
UEFIブートをやろうとするとWindowsにブートローダーを上書きされるので注意!
USBは2.0のほうが確実に起動します。
正しいハードディスクを指定さえすれば、ひやひやする必要はありません。

なお当然ですがWindows側の時計をUTCで管理するレジストリー設定が必要です。
もうひとつ、Windowsの高速スタートアップを無効にする必要があるかもしれません。そうしないとBIOSの起動セレクト画面が出ないことがあります。
2018/03/29

新たな画像拡大方式 DCCI

非常に高速で、人工知能ではないのに非常に図形認識に優れた
方向性キュービック畳み込み補間 Directional Cubic Convolution Interpolation
を試してみましょう。
これは2倍づつ拡大出来ます
ピクセル列の連続、エッジ方向を検出することで、縞模様だってお手の物です。
https://github.com/revent-studio/organa_hqx
このアメリカのウェブデザイナーのpython2実装がおすすめ
opencv2とnumpyも必要
ダウンロード、解凍してから、packages/にenum.pyを入れる必要がある。
https://github.com/OnoArnaldo/PythonEnum
こんなpythonスクリプトで簡単にやってみよう
dcci-2x.py
import cv2
import numpy as np
import packages.dcci as dcci
import img_resources as imr
import sys

N = 1

imgT = cv2.imread(sys.argv[1], cv2.IMREAD_COLOR)
img = dcci.Dcci(imgT,N)
cv2.imwrite(sys.argv[2],img)

$ python2 dcci-2x.py input.jpg output.png


なんと、森の中を走る電車のパンタグラフがちゃんとなめらかな、かつはっきりした線に見えるし、
N = 1 を増やして、N²のサイズに拡大しても、そうおかしくはならないです。わずかにぼやけているだけです。
DCCIのアルゴリズムはまだRGBカラーの統合が決まっていないのですが、 さすが ウェブデザイナーの実装はセンスが光りますね。
元の画像:© 2016 Jee & Rani Nature Photography. Creative Commons Attribution-ShareAlike 4.0 International License. Wikimedia Commons, the free media repository: https://commons.wikimedia.org/wiki/File:Orthetrum_luzonicum-Kadavoor-2016-09-08-001.jpg.
元の写真

2倍に拡大で品質を見比べよう

GIMP標準のlanzcos3
GIMPのlanzcos3で拡大

以前このブログでべた褒めしたAVIRで拡大
AVIRで拡大
なおいわゆるオープンソースではない。

リククーブログ開発(ライフハッカーのパクリ+自動化)のリフレックスリサイズで5倍のバイキュービックで縮小
reflex-resizeで拡大
ボケすぎている。遠目で見たらこんなモノ、そのぐらいの出来。

waifu2xで拡大
waifu2xで拡大

DCCIで拡大
DCCIで拡大

なんと!DCCIはトンボの羽の、あの繊細な細さを、JPEGノイズまでとって表現できている❢
waifu2xに一見匹敵する画質ですが、そうwaifu2xにやらせると全部二次元っぽく絵の具で塗ったみたいになるので、これはDCCIのほうが上手でしょう。
なお二次元画像の品質はDCCIはwaifu2xに負けました。人間が描いた二次元画像は、人間の作った人工知能で十分に学習できるのですが、
自然界の画像は学習しきれないので、従来の手続きプログラミングを進化させて表現するべきです。
数百年展示されるような本物の芸術の画像も人工知能は理解できているとは思えません。

なおAVIRは手に入る画像拡大方式としてコテコテにx86_64に最適化されているので、出力は結構速いです。

これからの4Kディスプレイであんな画像がより綺麗に見えるのだから Windows版の実装もだれかやるべきでしょう。
なお、アセンブラでDCCIを究極に最適化すると、720x512の画像が0.33秒で拡大できるといいます。
計算機アーキテクチャを考慮した高能率画像処理プログラミング Norishige Fukushima, Associate Professor - Nagoya Institute of Technology
DCCIは実はかなり高速だというわけです。
# 実はDCCIは中国の大学で中国人によって発明された。日本では4Kテレビに導入されそうだ。日本はこれから何で世界と勝負するべきか。技ですらない、心ではないのか。
2018/02/21

日本はIT後進国、だが・・・

日本はIT後進国で、ソフトウェア開発はデスマーチに3次4次下請けに納期駆動開発にパッケージでなく特注ソフトに
大企業や行政になるほど動きが遅くなる。まあ色々叫ばれてきました。
なんだかんだ日本初で優秀なソフト、優秀なWebサービスは世界にどれだけ進出できたのでしょうか。

・・・しかし、絶対に忘れてはいけないことはある。
それはゲーム開発では世界の第一線にあると言うこと。

つまり、人生はゲームだという説まであるぐらいだし、だったら仕事もゲーム、業務ソフトの操作もゲーム、
ゲームを作る感覚で業務ソフトを作ってもいいんじゃないの?
ゲームの開発を参考にすればきっと内製で素晴らしいソフトを作れるのが日本だし、
Nintendo Switchの設計もおそらく日本のインテリジェントシステムズあたりが関わっているから、この辺、
組み込みコンピューターもきっと日本には作り方のノウハウがあるはず。

またゲームというのはソフトウェアのありとあらゆる要素が入っている。
だから、ゲームエンジンで業務ソフトを作るのも、不可能ではないし、ゲームエンジンなら特殊なUIもさくっとできてしまうはず。
ゲームエンジンを使えばGUIの悩みは吹き飛ぶと思います。オープンソースのGodot Engineなども使えます。

ゲーム業界のやる気や仕組みを真似して、日本を本当のIT大国にできる。まあアメリカに怒られないように慎重に力を蓄えていこう。
2018/02/13

コンピューターの計算量を減らす?

北朝鮮はついにいろいろな外国からコンピューターの供給が止められているようです。
しかし、というか、昔から、少ない処理能力で大きな計算をやる研究って、なんかあった気がするんです。
あの輝かしいSFの未来がまだきていないなんて怪しいじゃないですか。

だがその前に、まず自閉症の人を雇うことをおすすめします。人間の言葉がわかるが、
結構コンピューターみたいなことができるんですよ。能力はそれぞれ全く違うのですが。
いやそうでなくともLinuxが使えたりして、コンピューターのことが得意な人も結構います。
だから職場のITレベルがいきなり上がるかもしれないというわけです。
ただコンピューターに本当に自信のある人って、金をつまないとこないんです。でも一人で何人分もの働きをします。だから海外に逃げてしまう。


かつて、詐欺を働くような怪しい科学者が言ったんです。自称ロシアの学会にいると。
それで、因数分解で計算量を落とせると言っているんです。
ところが当方が試したところ、二進数がすでに2の累乗で因数分解されているのでこれ以上の符号化は難しい。
だが素因数分解した形なら素数は別として劇的に計算量を減らせるはずです。
素因数分解自体は非常に負荷がかかるが、逆に大きな数は小さな数の幾らかの掛け算だけで作れるので、小さな数をいくつもデータとして手に入れることが肝心。

もうひとつは、暗号ブロック計算を「圧縮ファイル」に適用することだと思われます。
暗号化したまま計算できるのなら、言えるのは圧縮したまま計算できて、計算量が減るという事です。
繰り返しの多いデータにはかなりの効果があるでしょう。

ここまで言っておいてなんだが、実は私は数学ができないので、この妄言の証明ができない。これからはまかせます。