こんにちは。DS統括本部で画像処理エンジニアをしている上野です。LINEヤフー株式会社の企業ロゴやサービスロゴなどのブランドロゴには、ブランドガイドラインと呼ばれるロゴ使用時に守らなくてはならないルールが定められています。ロゴを使用する際にロゴが変形してしまったり、変色してしまったりすると問題となるため、細心の注意を払って使用しております。今まではロゴが使用されている画像を担当デザイナーがすべて目視確認でチェックすることで、ガイドラインを遵守してきました。ブランド価値を守るためにとても大切な作業です。これらの作業を画像処理で自動化できないかと考え、ブラン ドロゴチェックツールを作成しました。
※載せている画像は、今回のブログ用に用意したテスト画像です。
この記事では、社内のデザイナーから寄せられた目視確認の作業に工数がかかってしまっているという課題を画像処理技術で解決した事例について、紹介します。
ブランドロゴチェックツールとは
ブランドロゴチェックツールとは、ブランドロゴの使われ方に問題がないかを自動でチェックするツールです。
ツールを使って自動でチェックすることで、工数削減ができました。具体的には、以前は広告画像などのクリエイティブのチェックに30分ほどかかっていた作業が、ツールを利用することで約10分に短縮されました。さらに、目視確認による見落としを減らすこともできました。
具体的なチェック項目は
- クリアスペースが十分か
- 画像の縦横比に問題がないか
- ロゴサイズが小さすぎないか
- ロゴが変色していないか
- 背景とロゴの明度差が十分か
- 背景とロゴの色差が十分か
の6つです。
すべてのチェック項目で問題のないロゴを以下のロゴとします。
また、以下は6つのチェック項目それぞれに違反した画像の例です。
(※それぞれのロゴに特有の使用ルールが定められているケースもあります。ツールでは上記の6項目をチェックに対応しました)
以下の図は、ツールの使い方です。
処理の流れとしては
-
チェックしたい画像をアップロードし、写っているロゴの枚数を入力。認識実行ボタンを押す
-
ロゴ領域の抽出と、ロゴに問題がないかの判定処理が行われる
-
処理が終わり次第、結果を確認
-
まれにロゴ領域の抽出が失敗している場合があるので、その場合ペイントツールでロゴ領域を囲み、再認識を実行(2,3の処理を再度行う)
です。
使用技術
ロゴチェックは、大きく分けて2つの処理から構成されています。1つ目の処理では、テンプレートマッチングと呼ばれる古典的な技術でロゴが使われている領域を特定します。2つ目の処理では、ロゴ領域を特定後、6つの判定項目をチェックするための処理が走ります。順番に見ていきましょう。
テンプレートマッチングでロゴ領域を特定する
テンプレートマッチングとは、クリエイティブ画像などの大きな入力画像からテンプレート画像と一致する部分を探す手法です。簡単に説明すると、テンプレート画像を少しずつ入力画像に重ねながらスライドさせていき、マッチ度合いが最大となる領域を探す処理です。以下にイメージ図を紹介します。
テンプレート画像とどの程度クリエイティブ側の領域とマッチしたかを、「相互相関係数」(つまり類似度)を用いてヒートマップで示しました。テンプレート画像の左上の角を基点として、どの程度クリエイティブ側の領域がマッチしているかを赤色で示しています。明るい色ほど類似度が高く、黒に近い色ほど類似度が低いです。(画像をクリエイティブ画像内でスライドさせていくので、ヒートマップの画像はクリエイティブより小さくなります)
特徴点マッチングなど、テンプレートマッチング以外の手法を用いても良かったのですが、こちらの手法で十分な精度が出たのに加え、複雑な手法とシンプルな手法で迷ったときは、極力シンプルな手法を選ぶべきだと考え、今回はテンプレートマッチングを採用しました。
また、大ざっぱにロゴがある領域を抽出し、その領域の中で精密にロゴがある領域を探すという2段階のテンプレートマッチングの手法を採用しました。Coarse-to-Fineなテンプレートマッチングであるこの手法で、通常のテンプレートマッチングと比べて処理を高速化することができました。
テンプレートマッチングの処理は、Pythonのmultiprocessingを用いることで高速化しています。
6つの判定項目をチェックする処理
ロゴ領域の 抽出が完了したら、次にロゴがガイドラインを遵守しているかをチェックする6つの判定処理を行います。
クリアスペースが十分か
以下は、クリアスペースがきちんと確保されているかを判定する処理です。
テンプレートマッチングで正しいクリアスペースを確保した上でロゴ領域を抽出し、そのロゴのクリアスペースがきちんと確保されているかどうかをチェックします。
通常、ロゴは白背景など単色背景に配置されているので、単純にロゴの左上、左下、右上、右下の4カ所に余白があるか(=背景色とは異なる色が存在するかどうか)をチェックすれば、判定できます。
しかしながら、グラデーション背景上に模様が描かれている場合や、薄い模様が背景に存在する例外的なロゴも一定数あります。たとえば、以下の画像のケースです。
このようなケースですと、ロゴ本体と背景部分を画像処理で見分ける必要があり、一筋縄ではいきません。ディープラーニングを使って解決する方法もありますが、今回は古典的な手法であるエッジ検出処理を行い、グラデーションや薄い模様を除去してクリアスペース判定を行いやすくなるようにしました。上記の画像に対してエッジ検出処理を適用し、クリアスペースを水色で示したのが以下の画像です。
エッジ検出処理をグラデーション上にあるロゴに適用した場合、グラデーションなどの隣り合う画素同士の輝度の差が小さい場合はエッジが検出されず上記の画像では黒色で表されます。それに対して、「IMAGE processing」のような文字のロゴ本体は、背景色との輝度の差が大きくなり、上記の画像ではくっきりと表示されます。(薄い模様が背景として使われている場合も、同様に処理できます) この画像を用いて通常のクリアスペースチェック処理を行い、例外的なロゴも対応可能になりました。
クリアスペースが足りていない画像の例を以下に示します。こちらの画像の場合、「待望の」と「シリーズ」の文字がクリアスペースを狭めています。
こちらの画像に、エッジ検出処理を適用し、クリアスペースを水色で示したのが以下の画像です。
「待望の」と「シリーズ」の文字について、エッジが検出されています。よって、水色で示されるクリアスペース判定の結果も「クリアスペースが不十分」と判定されます。