学部時代の研究

この記事は学部時代の研究についてです。 学部4年から研究室に配属されるため、その学部4年の時にやったことです。共同研究先が1年で契約終了した(コロナの影響)ため、今年はやっていないタスクではあります。

テーマは「画像の最適な自動クロッピング」です

自動クロッピングってマイナーですよね。何をやりたいかと言いますと、適当に広めに撮影した写真を、機械学習にクロッピングさせてさらに「良い」写真を出力させたいというのがモチベーションです。例えば、運動会の写真では子供が走っているシーンを撮影したいといます。子供は動きますから、「何を背景にして」とか「写真の右半分に写るように」とか調整してると子供は走り去っていってしまいます。そこで、大量に連写で広めに撮影をしておいてくれれば、そこからいい感じの写真を提案できるよって感じのことがやりたいことです。

さて、ここでこんなことを考えないといけません。 「良い写真って何?」 という問題です。画像の自動クロッピングではこの問題はずっとまとわりつきます。 実は論文によってこの良さを定義するようなデータセットを載せた論文が毎年でてたりするんですよね。

簡単な発想ですが、地味に良さそうなのがGrid anchor based image croppingという論文です。簡単な説明は[qiitaの記事]にまとめています。 クロッピングの特性から微小な拡大や移動は、結果そのものに影響しないことに注目すると、そもそもクロップの候補の数が100個以下に削減できるとした上で、100個程度ならその全てに「クロップの良さ」をアノテーションしてしまおうというアイディアです。シンプルなアイディアですが、意外とですね、この問題について考えていると良いものに思えてきます。

ただ、このタスクって全ての種類の画像でやってますが、自然画像では、どうクロップしても「それっぽい」みたいに感じちゃうんですよね。それはそれでありな気がする的な感じです。

なので、人物のいる画像のみでやったのが学部の研究です。

自分がやったことは、3分割構図をとりいれた新しい手法です。3分割構図というのは、人物などメインとなる被写体は中心に置かず、3分割交点上に配置することで、バランスのとれた良い写真が撮れますというセオリーです。

これを用いて、おおよそ3分割構図に人物がいれば良い写真とみなせると考えました

では、どのように3分割構図を用いるかという話ですが、まず人物検出器を用意します。これはとても高速なものです。 次にこの検出してきた人マスクが、事前に決められた候補クロップ内の3分割点上にいるかいないか、どれくらい3分割構図に載っているかをスコア化します。このとき、3分割構図フィルタというフィルタを設計し、そのフィルタと人マスクの輝度値の積の平均をスコアとします。

ただ、どのくらい3分割交点に載っているかという判定では、格段に拡大した場合に重なっていることが多くなります。言い換えると、人が見切れるくらい拡大したものが、高い評価になってしまう可能性が高いです。 そこで、人が見切れることを防止するために、減点幅を3分割構図フィルタに用意します。減点幅とはその名の通り、そのエリアに人マスクがある場合に負のスコアを出力します。つまり、人が見切れている場合は、相対的に他のクロップ候補よりも小さいスコアを出すことができます。

このような仕組みでCPUでさくっとクロッピング結果を出力するようなモデルを作りました。

ちなみに、先方の関係でデータは個人情報で非公開です。

Select Texture

Hide

You can use the showPicker property in _config.yml to hide this picker permanently.

You can use the texture property in _config.yml to apply a texture permanently.