ぴょこりんブログ

裏垢です。

続・円のオブジェクトだけで以下略

この記事は異世界行ったら本気だすぴょこりんクラスタ Advent Calendar 2021のためにかきました。

はじめに

先日こんな記事を書きました。 capp365.hateblo.jp

思ったよりよい近似が得られたなと思う反面、こう感じられた方も多いのではないでしょうか。

「もとの画像に似れば良いものではない」と。

オブジェクトの透明度とか、楕円だとか直方体だとか、そういうレベルの話ではない。もっと根本的にあの画像らしさ、あのいかにもランダムという感じの色使い、あぁいうのにどうやったら近づけられるか。

そのあたりをもう少し深堀してみようと思いました。今日はそんな話。

やったこと

1 背景画像のロス重みをゼロにする。
背景画像白でない画像にしろよって話なんですけど、白い部分は無情報ってことでランダムにいろんな色分布してるーくらいになったら良いなぁと思いました。もともと各ピクセルのRGBの二乗誤差を目的関数にしてるので、元画像のRGBの和が755以上(≒ほぼ白)の部分が0になるようにバイナリマスクをかけた目的関数を最小化するようにしました。マスクの画像は以下のような感じ。jpegなのでちょっと境界領域がふわふわしてるけどまぁ良いでしょ。

f:id:cappsLk:20211212192649p:plain

2. 目的関数に生成された画像の色の分布に制約をかける。
ランダムであることを、あの独特のカラフルさを、色のヒストグラムが一様分布に従うことと解釈しました。各ピクセルのRGB、256×256×256の空間を、nつのbinに分割し、それぞれのbinに含まれるピクセルの全体に対する割合をp_1,..., p_nとして、最小化する目的関数に∑p_k log p_k という項を追加しました。一様分布とのKLダイバージェンスと捉えてもいいし、エントロピーにマイナスをかけたもの、と解釈しても良い。つまり出現頻度に偏りをなくすための制約項になります。これでカラフルでビビッドな画像が出来上がるに違いありません。

結果

二つほど結果を紹介します。どちらも似たような感じですが。

f:id:cappsLk:20211212194922p:plain f:id:cappsLk:20211212194935p:plain

前述のやったこと、2つ目の狙いに関して言えば、かなり成功した気がしてるのですがいかがでしょうか。透明度が変数として加われば、かなり元のあの感じを彷彿とさせる色合いになってくるのではという期待を感じさせます。

一方で1つ目です。白い部分へのロスが無視された結果、あっても良いけどなくても良いみたいな感じになり、結局背景をランダムにカラフルに埋めることより、絵を構成するためにオブジェクトが使われているように見えます。もちろん効果が無いわけではなく、中心に近づかなかったオブジェクトはランダムにカラフルに着色されているわけですが・・・。

まとめ

ちょっと前に流行った遺伝的アルゴリズムで以下略っぽい画像生成アルゴリズムを模索、白色部のロス無視と画像の頻度分布の無情報化(≒一様分布に近づける)により、一層某遺伝的アルゴリズムで以下略に近づく画像が生成できそうなことを確認しました。結構いい感じだと思うんだけどどうですかね(?)。