水凪工房

Feed Rss

マンガ向けネーム用紙を作成するウェブアプリ

02.25.2018, マンガ向けネーム用紙を作成するウェブアプリ はコメントを受け付けていません。, ソフトウェア, マンガ, 同人, by .

前回のウェブアプリの使い回しでネーム用紙を生成するウェブアプリを作成してみました。

 画面もほとんどそのまま。

http://www.mizunagi-works.com/gadgets/mangasheet/namesheet.html

.

同人マンガ原稿用紙を生成するウェブアプリ

02.20.2018, 同人マンガ原稿用紙を生成するウェブアプリ はコメントを受け付けていません。, ソフトウェア, マンガ, 同人, by .

微妙な便利さを求めて作成してみました。

 ウェブアプリである必要はあんまりなかったりして。

http://www.mizunagi-works.com/gadgets/mangasheet/mangasheet.html

.

600dpi, 300dpi, 150dpi, 96dpiの解像度でA4サイズのマンガ原稿用紙を生成します。

CLIP Studioなんかを使用している場合は、全く不要なアプリケーションだと思うのですが、自分が使用しているソフト(ArtRage)はマンガ作成向けでは無いため、微妙に便利な感じ…かも。

再びPSO2

02.18.2018, 再びPSO2 はコメントを受け付けていません。, ゲーム, by .

インストールさせてみたのはよいものの、なぜかPSO2だけ音が出ない…

ちゃんとDirectX Runtimeを入れてない為でした。Microsoftから再配布用インストーラを導入したらちゃんと音が再生されました。

ゲームパッドが認識してくれないない…

Bluetooth接続のPlayStation用のキーボードを使っていたのですが、このデバイスは「Keyboard」+「Mouse」+「Game Controller」という認識がされてしまう事で、後から接続したゲームパッドの優先順位が低く設定されてしまっていました。

優先順位を変更したら無事ゲームパッドで動作するようになりました。

.

というわけでゲームパッドで操作してみました。

 品質を最高にしてみました。

 まともに操作出来ないから、まずはお一人様プレイで練習をします。

 ゲームシステムが変わってる…?

 操作方法…

 …

 とりあえず自宅にひきこもる水凪工房であった。

久しぶりにPSO2にログインしました

02.18.2018, 久しぶりにPSO2にログインしました はコメントを受け付けていません。, ゲーム, by .

PSVitaで遊んでいてほとんどそれっきりだったPSO2のPC版をインストールしてみました。

Vitaで遊んでいた頃の自分のキャラクターは下のキャラクターだったのですが、

 使用していた自分のキャラクター(ELIE)

高解像度のPC版だと全然違うキャラクターになってました。

 え…誰…

 システムが随分と変わっていて、ついて行けないかも…

フォルダ内の重複画像を取り除きたい(2)

02.17.2018, フォルダ内の重複画像を取り除きたい(2) はコメントを受け付けていません。, ソフトウェア, by .

NNC Utilsで指定可能なハッシュ方法の説明を追記しておきます。

Hash方法

Average hash

画像を縮小した後に全画素の平均値を取得します。縮小画像の画素が求めた平均値よりも明るい(1)か暗い(0)かを元にハッシュ値を生成します。

画像の全体的な輝度や若干の色調補正が加わっていても、同じ画像と見なすことが出来ますが、縮小した結果が似たような画像だと適切な区別ができなくなります。

Perceptual hash

画像を縮小した後にDCT(離散コサイン変換)をかけます。求めた結果から低周波成分を取り出し、中央値を取得します。高周波成分を取り除くという事は、画像からノイズ(小さな差異)を取り除くという事になります。

求めた低周波成分領域から中央値よりも大きい(1)か小さい(0)かを元にハッシュ値を求めます。

一旦周波数に変換すると、直接の画素的な位置情報が失われてしまいますが、全体的に似ている(同じ様な周波数を含んでいるか)かどうかを区別する際に使用します。

Perceptual hash (simple)

Perceptual hashと同じですが、DCTの計算を一回、中央値を使わずに平均値を使用しています。

Difference hash

画像を縮小した後に、左右の画素同士を比較して、どちらが明るいかを求めます。

Average hashは画素全体の輝度から平均を求めるため、細かな差異が埋もれてしまう場合がありますが、こちらを使用するとうまく拾い出せる場合があります。

画像の一部分部分だけが異なっているものを区別したい場合に有効ですが、比率が異なる画像を違うものとみなしてしまう場合や、ノイズを有効な画素と見なしてしまう場合があります。

ある画像と同じ画像をJPEGで圧縮して劣化させた画像を同じものと見なしたい場合には良い結果が得られません。

Difference hash (vertical)

Difference hashと同じですが、画像比較を上下で行います。

Wavelet hash

画像を縮小した後に輝度情報を0.0〜1.0の範囲に変換し、wavelet変換(haar)を行います。変換結果から低周波成分の結果を取得し、中央値を求めます。

求めた低周波成分領域から中央値よりも大きい(1)か小さい(0)かを元にハッシュ値を求めます。

Perceptual hashと似たような処理ですが、waveletはDCTに比べてより適切な分解を行うことが出来るため、Perceptualよりも適切な区別が期待できます。

imagehashが使用できるアルゴリズムで最も重い処理となります。

.

フォルダ内の重複画像を取り除きたい(1)

02.16.2018, フォルダ内の重複画像を取り除きたい(1) はコメントを受け付けていません。, ソフトウェア, by .

「あるフォルダ内に保存されている画像が重複しているかを確認する」といった用途の場合、sha1等のハッシュを計算する事で重複を除外する事が出来ます。

この方法はどの様なファイルに対しても上手く動作してくれるのですが、ファイルのバイナリが完全に一致していなければ同一ファイルと認識されません。

特に画像ファイルの場合ですと、

  • 画像自体は完全に同じだがEXIF等のタグ情報が異なる。
  • 画像としては同じように見えるが、解像度が異なる。

といった画像は「同じ(似ている)」だと認識して欲しい時があります。

imagehash

そんな要求に対応するためにimagehashというものがあります。

Pythonではimagehashというモジュールがあり、Pillowと組み合わせることで容易にimagehashを計算する事が出来ます。

実際にハッシュを取得してみる

 いろんなフーちゃん

わりとうまくいっているみたい。

NNC Utils

まだ完成していない部分もありますが、ひとまずGitHubで公開しました。

ついでにGUIもつけてみたりして。

 PyQt5(画像はMac版)を使用しています。

.

Windows用バイナリ

NNC Utils

OneDriveからGitHubに移動させました。

簡単な使用方法

インストール方法

圧縮されたファイルをデスクトップ以外の場所に展開してください。

実行方法

実行は以下の三通りの方法があります。

なお、どちらの方法を使用してもファイルの自動削除等は行いませんので、結果が保存されたファイルを頼りに処理を行ってください。

(使用方法1)

コマンドプロントからchk_image_dup.exeを引数付きで実行します。

結果はchk_image_dup.exeが置かれている場所にimage_dc_result.tsvという名称で保存されます。

(使用方法2)

同梱されているimage_dc.batのショートカットを好きな場所(例えばデスクトップ)に作成します。

作成したショートカットに検索したいファイルをドロップすると、そのフォルダ以下に対して重複確認を行ってくれます。

結果はchk_image_dup.exeが置かれている場所にimage_dc_result.tsvという名称で保存されます。

(使用方法3)

nnc_utils.exeを実行するとGUIモードで立ち上がります。

結果は、ウィンドウ内のテキストボックスとnn_utils.exeが置かれている場所にimage_dc_result.tsvという名称で保存されます。

image_dc_result.tsvについて

重複ファイルが見つかるとimage_dc_result.tsvに重複したファイル名が保存されます。

ファイルはタブ区切りのテキストファイルで、それぞれのカラムは以下の内容となっています。

  • イメージハッシュ値(値が同じ物は同じ(或いは似ている)内容の画像ファイル)
  • ファイル名称
  • 画像の幅
  • 画像の高さ
  • 画像形式
  • ファイルフォーマット

対応している画像形式はPillowがサポートしているものとなります。(こちらで動作確認をしているわけではありません)

アンインストール方法

設定ファイル等は生成しませんので、展開したファイルを全て削除してください。

.

MacOSX Install Diskの作成

02.13.2018, MacOSX Install Diskの作成 はコメントを受け付けていません。, Mac, ソフトウェア, by .

 

shellをfishにしてみました

02.12.2018, shellをfishにしてみました はコメントを受け付けていません。, ソフトウェア, by .

長年使用していた(デフォルトだけど)bashからfishへと環境を切り替えてみました。

OSX環境でfishを呼び出すと、conda activateが出来なくなりましたが、 ~/.config/fish/config.fish に

と、一行追加すると使用できるようになります。

ニューラルネットワークで要素抽出

02.11.2018, ニューラルネットワークで要素抽出 はコメントを受け付けていません。, ソフトウェア, by .

Autoencoder

ニューラルネットワークは画像を認識させる際に、元情報よりも低次元で表現するようにネットワークを構成することが出来ます。

そのような低次元で表現された空間には、学習に使用した情報の要素が詰まっているとも言えます。

要素が詰まっているのですから、その情報を抜き出して再び画像にすれば、ニューラルネットワークが思っている物の片鱗を見ることが出来る…かもしれません。

技法的にはオートエンコーダと呼ばれるものなのですが、画像認識に使用しているヴィヴィオ達の画像を使用して計算させてみました。

Autoencoderを通したヴィヴィオ達

結果は以下のような感じです。

   

多分、リリカルなのはVividをよく知っている人であれば、誰か答えられるのではないかと思います。

今回は100次元で表現してみましたが、多分もっと少ない要素で表現出来そうで、ヴィヴィオ達は見た目だけでもかなり分類しやすそうに感じます。(…ってプロの方がそうなる様にデザインされているわけですから、そりゃそうなりますね。)

次元数を下げるほどぼやけた画像になっていき、極端に下げると「黄色っぽい」「みどりっぽい」だけの画像になります。

学習結果の応用

この学習は、

  • 「ヴィヴィオの絵」 + 「ヴィヴィオ」
  • 「アインハルトの絵」 + 「アインハルト」
  • 「リオの絵」 + 「リオ」
  • 「コロナの絵」 + 「コロナ」

という入力で学習させましたので、以下の様な入力を受け付けます。

  • 「ヴィヴィオの絵」 + 「アインハルト」
  • 「写真」 + 「ヴィヴィオ」

これを使えば、入力された画像をヴィヴィオっぽくしたり、アインハルトっぽくしたりする事が出来そうです。

試しに自分の絵を使って実行してみたものがこちら。

  •  =  + ヴィヴィオ
  •  =  + アインハルト
  •  =  + リオ
  •  =  + コロナ

…心の目で見ればなっているような、なっていないような。

今回やったことを図にすると、以下の様になります。

 学習させます。

 学習結果とヒントを使い、絵を加工。

Azure上でnnablaを動かしてみました

02.03.2018, Azure上でnnablaを動かしてみました はコメントを受け付けていません。, ソフトウェア, by .

現在使用しているAzure環境にnnablaをインストールして、ウェブアプリを作成してみました。

nnablaはSONY Neural Network Consoleでも使用されているもので、比較的簡単にニューラルネットワークを利用出来るのですけど、学習した結果をどう使うかがなかったので、サンプルを兼ねて作ってみました。

VE Detect

https://www.mizunagi-works.com/gadgets/ve_detect/index.html

 しょっぱなから誤判定するデータを与えていたりして

言い訳っぽいのですけど、これは学習データが少ないのと「アインハルトかヴィヴィオのどちらか」を判定させるように学習させた結果となります。

例えばおにぎりの画像を与えたときでも必ずどちらかという判定します。(どちらでもないという回答を出すようには学習させていません)

Azureへの導入

ニューラルネットワークというと、強力なGPUを使用する負荷の高いアプリケーションに感じられるかもしれません。

確かに計算量は多いのですが、処理が重たいのは学習をする時で、学習済み結果を利用するのはそんなに重くありません。

(今回作成したニューラルネットワークの構成が単純というのもあります)

自分が使用しているAzure上のVMはA1 Basicでかなり非力(下から2番目)なのですが、学習結果を利用するにあたってはそこまで負荷はありませんでした。

SONY NNCによるネットワークの作成と学習

こんなネットワークにしてみました。

10,000回ほど学習させました。

プログラムの作成

学習が完了すると、学習結果が保存されたフォルダにparameters.h5というファイルが生成されています。

学習済みモデルを利用するにはこのh5ファイルと、NNCからエクスポートしたPythonスクリプトが必要となります。

スクリプトはちょっと長めですのでGitHubに置いておきました。

bottleを使用していますので、ローカルでこっそり楽しむことが可能です。

.