プロの写真家のような写真へ!!構図を考慮した画像トリミング手法【CACNet】
3つの要点
✔️ プロの写真家の美的構成を自動化するトリミング技術
✔️ 写真の構図ルールを明示的にモデリングすることで、予測結果に解釈性を与えた!
✔️ パフォーマンスを大幅に向上し、最先端と同等の精度を達成
Composing Photos Like a Photographer
written by Chaoyi Hong, Shuaiyuan Du, Ke Xian, Hao Lu, Zhiguo Cao, Weicai Zhong
(Submitted on 2021)
Comments: Accepted by Conference on Computer Vision and Pattern Recognition (CVPR), 2021.
Subjects: Computer Vision and Pattern Recognition (cs.CV); Artificial Intelligence (cs.AI); Machine Learning (cs.LG)
code:
本記事で使用している画像は論文中のもの、またはそれを参考に作成したものを使用しております。
はじめに
美しい写真を撮影するには、様々な要素を考慮する必要があり、専門的な知識や豊富や経験が必要になります。そのため、そのような写真を手に入れたい場合には、プロの写真家に依頼することになります。
画像の自動トリミングは、一般の人が撮影した写真をプロの写真家のような写真にしてしまうという夢のような可能性を秘めた技術になります。ただし、写真の美しさという抽象的な概念を学習させる問題であり、予測結果の妥当性を判断することが困難な点があります。そこで著者らは、写真撮影において重要な要素である「構図」を画像から識別的に学習し、学習した構図の手がかりを明示的にモデルに組み込む手法を提案しています。これにより、予測結果が解釈可能な画像トリミングを実現しています。加えて、著者らの提案手法はパフォーマンスの面でも既存手法を大きく上回っています。次節から順次詳細を説明していきます。
写真の構図
構図は様々なものがありますが、例えば下図のようなものが代表的です。左から三分割構図、センター構図、水平線構図、シンメトリー構図と呼ばれています。プロの写真家はこういった構図を意識して撮影を行うことで、美しい写真にしています。
著者らはこれらの構図ルールを明示的にモデリングした画像トリミング技術を構築します。
従来手法
主に以下の二つのアプローチに大別して考えることができます。
- Attention-Guided Image Cropping
- Saliency Mapやenergy functionsによって推定する
- 顕著なオブジェクトや情報のある領域を残せることが良い画像切り出しであるという考え
- サムネイル画像などの用途でよく使われる
- Aesthetics-Informed Image Cropping
- 美しさに基づいた手法
- アノテーションされた美的ラベルで学習(クラス分類、ランキング学習など)
- モデルがラベルから美的構成について獲得できることを前提としている
また、これらの組み合わせの手法も提案されてきています。現在主流の方針は、下図のように、事前に画像から切り出し候補セットを用意し、それらについて美的スコアリングを行い、最もスコアの高いものを採用するという手法になると思われます。
ただし、こういった手法は切り出し画像の候補数分だけモデルによるスコアリング処理を行わなければならないため、パフォーマンスの面で課題があります。また、写真の美しさに起因する要素(例えば構図等)を明示的にモデリングしているわけではないため、予測結果の解釈が困難であるという課題もあります。写真の美しさという曖昧な概念を問うような問題において、解釈性は重要で、無ければ予測結果の妥当性を測ることが難しく、実験などでモデルが良くなったのかどうかの判断も難しくなってしまいます。
提案手法:CACNet
では著者らの提案手法の説明に入ります。著者らは良い写真において「構図」を重視し、構図ルールの識別を明示的にモデルに組み込んだ切り出し手法を提案しています。これにより、提案手法の切り出しは、下図のように一つ以上の識別された構図ルールに従って行われます。また、切り出し結果に使われた構図ルールを辿ることで予測結果についての解釈性も向上します。
著者らは上記を実現するためのネットワークとして、下図のCACNetを提案しています。
CACNetは、画像から特徴抽出を行うバックボーンネットワークと、9種類の構図ルールを識別するComposition Branch、画像の切り出し位置を予測するCropping Branchの3つの部分から構成されています。また、Composition BranchのClass Activation Mapを抽出し、あとで説明するKCMを作成しています。
CACNetは、構図の識別から、それを用いた画像切り出しをうまく統合したネットワークとなっており、一度のフィードフォワードで最終的な切り出し位置を得られるようになっています。それではそれぞれの要素の説明をしていきます。
Composition Branch
こちらでは、先ほど説明したように構図ルールを学習します。自分はそもそも構図が学習可能なものという認識がありませんでしたが、実は構図ルールを識別するためのデータセットは、KU-PCPデータセットというものがすでに提案されています。Composition Branchでもそちらを利用し、普通のクラス分類問題としてトレーニングを行います。データセットに含まれている構図ルールは下図に示す9種類があります。
なお、上二行はデータセットから選んだもので、下二行は実際にComposition Branchで予測された結果に成ります。これらを見る限りでは良く識別できていると言えます。
Key Composition Map (KCM)
KCMはCropping Branchへ構図の手がかりを伝える役割を持ちます。切り出しを行う際には、画像が従う複数の構図ルールと、それらの複合を考慮する必要があります。上図の例の画像では、三分割構図と水平線構図の二つの規則に従う可能性があると想定できますが、KCMはそれらをうまくマージしてCropping Branchに伝える働きをします。以下にKCMの作成手順を示します。
- 各構図ルールに対応するCAMを作成
- $M_n = \sum^{C}_{c=1} w_{c, n} \cdot F_c$
- 各CAMを結合してKCMを作成
- $KCM = \sum^{N}_{n=1} s_n \cdot \phi (M_n)$
- KCMを入力画像サイズにUpSumpling
Cropping Branch
最後にCropping Branch(CACNetアーキテクチャの図上段)ですが、こちらはアンカーポイント法を採用し、アンカーポイント回帰モデルを学習させます。画像上にK個のストライドでアンカーポイントを一様に設定し、この中で切り出し位置に該当するアンカーポイントを予測するように学習します。損失関数には一般的なsmooth l1 lossを使用します。なお、Composition Branchからの入力であるKCMは、アンカーポイントに重み付けする用途で使用されます。これにより、構図を意識した切り出しを実現します。
CACNetの解釈性
CACNetの要素の説明は以上になります。ここでCACNetの重要な利点をおさらいしますが、CACNetは入力画像が与えれられると、予測結果だけでなく、識別可能な構図を強調するKCMや、画像が従う1つ以上の構図ルールを出力してくれるなど、予測結果について解釈可能な多くの証拠を与えてくれます。これだけの根拠が与えられるので、予測に対する妥当性を測ることができ、モデルの改善や運用がやりやすくなると思います。
これを見ると、こういった曖昧な推論問題に取り組む上で、解釈性は非常に大事な役割を果たすものだなと感じました。
実験と評価
著者らは提案手法の有効性を示すために、一般的なimage-croppingの評価データセット(FCDB, FLMS)を用いてベンチマークと比較しています。それらについて簡単に説明していきます。
表は切り出しの精度に関する定量的な比較になります。評価指標としてはBDEとIoU、加えてパフォーマンスを測るためにFPSを使用しています。要約すると著者らの提案手法(CACNet)は、FCDB, FLMS両方のデータセットにおいて最先端と同等 or 以上の精度を記録し、パフォーマンス面は従来の高速化手法をも大幅に上回る処理速度(155 FPS)を示しています。この効率の良さは、CACNetが一段階の回帰方式になっていることに起因しており、その点で従来の候補Boxごとにスコアリングを行う手法と比べて大きなアドバンテージがあります。
下図に定性的な結果も示しておきます。CACNetの出力はGround Truthにかなり近い切り出しを行えていることがわかります。
一方で、FCDBについては表の通り最先端の性能を記録することができませんでした。その理由として、下図のようにCACNetはGrandTruthの切り出しBoxが比較的小さい場合に失敗しやすいことがわかっています(赤がGrandTruthで緑がCACNetの予測結果)。
CACNetは画像全体を見て一回の回帰で切り出し位置を求めるため、予め候補Box(小さなBoxも含む)を用意する従来手法と比べて、この点で劣勢になります。FCDBで最先端を記録できなかったのも、こういったGrandTruthが小さなものが比較的多かったことが原因であると述べられています。
これは現状の手法の限界を表している部分ではありますが、KCMにマージする前のCAMを利用したり、物体検出結果を組み合わせたりするなどにより改善が望めるのではないかと考えています。
応用
最後に、面白い実験として、カメラを固定した同じシーンにおいて、そこに映る物体(鉢植え)の位置だけを変えた3枚の写真をCACNetの推論処理にかけ、結果を比較しています。
上図から、鉢植えの位置の違いで認識している構図が大きく異なっており、同じシーンに惑わされず、構図の重要な要素を正確に認識していることがわかります。また、その構図を考慮して正確に切り出しを行えていることもわかります。
まとめ
image-croppingはあまりメジャーな研究ではない印象はありますが、「プロの写真家のような写真の美的構成を自動化する」という面白い研究テーマになっています。サムネイル生成のような情報のある部分を考慮するだけでなく、写真の美しさ・良さという観点まで拡張して考慮した切り出しはすごく難易度が上がると思われますが、ビジネス面では展開しているサービスの特性ごとに様々なやりようがありそうで面白そうな分野だと感じています。
また、今回のように美しさ・良さを判断するための根拠となるものを明示的にモデリングしていると、単に切り出しを行うだけでなく、良い写真のフィルタ、検索なども行える点も重要なメリットになるのではないかと感じています。
この記事に関するカテゴリー