2. Deblur応用: ナンバープレート/超解像

## はじめに
[ニューラルグループ株式会社](https://www.neural-group.com/)でインターンをしている酒井です。
この記事は、深層学習を用いたブレ除去法（Deblurring）シリーズの2項目です。

1. [Deblur概観: 古典〜2023最新の汎用手法](https://qiita.com/yusuke_s_yusuke/items/0878338e17616b83f388)
1. Deblur応用: ナンバープレート/超解像
1. [Deblur研究: ペアを必要としないDeblurGAN](https://qiita.com/yusuke_s_yusuke/items/b705cb7ab54b4d4773b0)

1項目の記事では、汎用的なブレ除去手法について取り上げてきました。本記事では、具体的な活用事例として、ナンバープレートのブレ除去について取り上げていきます。

ナンバープレート検出タスクは、様々なビジネス応用が見込まれるタスクです。例えば当社では、商業施設向けにお客様の車の移動・滞在時間データを算出してビジネス活用するソリューション「[デジスルー](https://digisolution.neural-group.com/digithru)」を展開していますが、車の識別にナンバープレートに書かれた車番情報を活用しています。ブレ除去モデルにより、ナンバープレートの被写体ブレを除くことで精度向上が期待できる他、同じブレ除去モデルで、同一ドメイン画像のブレを統一的に軽減してナンバープレート以外の被写体（車自体や、歩行者など）も精度よく解析できる可能性が出てきます。

本記事では、具体的な活用事例として、ナンバープレートのブレ除去に焦点を当てます。ナンバープレートの画像は通常低解像度で撮影されることが多いため、ブレ除去のみならず、超解像のタスクとも関連しています。そのため、ブレ除去と超解像を融合した手法について最初に紹介します。

さらに、後半では、ブレ除去における注意点や課題についても取り上げます。

## 超解像とブレ除去の融合手法
<table>
  <thead>
    <tr>
      <th rowspan="2">研究</th>
      <th rowspan="2">学習データの集めやすさ(⚪︎:同一シーン対必須、×:類似シーン対でOK)</th>
      <th colspan="2">画像のクオリティ</th>
      <th rowspan="2">学習時の画像枚数</th>
      <th rowspan="2">手法の引用数(※2023/08 時点)</th>
      <th rowspan="2">Codeの有無</th>
    </tr>
    <tr>
      <th>PSNR↑</th>
      <th>SSIM↑</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Learning to super-resolve blurry face and text images (2017)</td>
      <td>×</td>
      <td>25.70</td>
      <td>0.699</td>
      <td>~1,000</td>
      <td>233</td>
      <td>⚪︎</td>
    </tr>
    <tr>
      <td>A deep encoder-decoder networks for joint deblurring and super-resolution (2017)</td>
      <td>×</td>
      <td>25.70</td>
      <td>0.699</td>
      <td>~1,000</td>
      <td>47</td>
      <td>×</td>
    </tr>
    <tr>
      <td>Gated fusion network for joint image deblurring and super-resolution (2018)</td>
      <td>×</td>
      <td>27.74</td>
      <td>0.896</td>
      <td>~2,000</td>
      <td>80</td>
      <td>⚪︎</td>
    </tr>
  </tbody>
</table>


一般的なdelburringモデルは、ブレ除去のみにフォーカスしていますが、低解像度のブレ画像を想定してSuper resolution (SR)との研究の融合した研究もあります。
一見、deblurとSRは独立したタスクのように考え、deblurした後にSR、あるいはSRした後にdeblurすると上手くいくように思われますが、下図(c), (e)のように推定が困難なのがわかります。そのため、deblurとSRを内部的に融合したモデルが研究されています。ここでは、一枚の画像でのdeblur+SR手法の簡単な紹介に留めますが、複数画像を使った手法も研究されています (e.g., Video deblurring and super-resolution technique for multiple moving objects (2010), Joint Estimation of Camera Pose, Depth, Deblurring, and Super-Resolution from a Blurred Image Sequence(2017))。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1599258/a0254846-cc8b-7440-a9ff-11cc8cfd1ce6.png)
Learning to Super-Resolve Blurry Face and Text Images (2017)より引用

### A deep encoder-decoder networks for joint deblurring and super-resolution (2017)
Zhang et al. (2017)によって開発された、delburブランチとSRブランチを特徴空間を介して連結させたdeblur+SR手法です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1599258/99058478-04f9-0a3f-ec2a-727f9c2591ca.png)

deblurブランチにより、高周波数の詳細を持つ特徴マップを生成するように促すことが可能になり、超解像ブランチの性能を向上できます。さらに、ブレ除去した画像をSRブランチに使用しないため、deblurringの結果に完全に依存しないため、アーチファクトなどの影響を受けにくくなります。
loss関数は、低解像度のシャープ画像、ブレ除去画像間のCharbonnier loss、高解像度のシャープ画像、SR画像のL2 lossで構成されています。

### Gated fusion network for joint image deblurring and super-resolution (2018)

ブレ除去とSRの特徴量をGate moduleを介して融合して実装したdeblur+SR手法です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1599258/da5b4a53-5d79-f8a7-00d4-baa7c2c809ae.png)

## ナンバープレートへの応用

### CNN for license plate motion deblurring (2016)
ドメイン特化型の手法で、CNNベースで損失関数にはL2 lossを使った手法です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1599258/861604f5-e5bd-2983-f628-fb47b5542f32.png)

学習データは、上図にあるような二つの画角から撮影した画像のナンバープレート周辺を切り出して使っています。L2 lossのため、ブレとシャープの同一シーンのペアが必要になり、任意の線形なPoint Spread Function (PSF)でシャープ画像を畳み込むことで用意しています。下図がそのイメージです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1599258/ae5023b5-e03e-4a91-b619-9242bec763d5.png)
http://www.fit.vutbr.cz/~ihradis/CNN-Deblur/#:~:text=CNN%20for%20License%20Plate%20Motion%20Deblurring より引用

実際にナンバープレートでブレ除去した結果が下図です。この手法では、trainデータとtestデータは、同じドメインで撮影された画像（ただし、testデータのブレ画像は露光時間を長くくして撮影した本物のブレ画像）を使っているため注意が必要ですが、ブレの大幅な改善が見られます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1599258/1fc6cd46-55b9-30ad-4810-06548be3a698.png)

### Robust Blur Kernel Estimation for License Plate Images from Fast Moving Vehicles (2016)
MAP推定をベースにした古典的手法です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1599258/677483fd-77c5-e48e-8354-c184bae1d809.png)
PSFは角度と長さの二つのパラメータを線形なカーネルを仮定し、独自に定義されたスパース表現係数、Liuの指標 (リファレンスなしの評価指標)、Steins unbiased risk estimate (SURE)の指標を用いて推定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1599258/165ee660-3d15-2488-c781-e78b84f7f064.png)

### Joint Image Deblurring and Binarization for License Plate Images using Deep Generative Adversarial Networks (2018)
ブレ画像と鮮明な2値化画像のペアを用いてGANで推定する手法です。
この手法の特色は、ブレ画像のみの情報でも人間が工夫すればナンバプレートの部分のマッピング（2値化）が可能であるという点です。ここで注意したいのが、この手法は人間が手でブレ画像のみを使い、シャープな画像のナンバープレートのマッピングをするので、シャープ画像を必要としない点です。
具体的には、複数の連続したブレ画像から、人間が目視でナンバープレートの情報を得て、その情報を基に鮮明な2値化画像を人工的に作成します。

以下は、訓練データとテスト画像での推論結果です。

訓練データ（ブレ画像とそれに対応する2値化マッピングした画像を人工的に作成）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1599258/1fa2e791-6f1c-3e62-4d4f-325d41550c38.png)

検証画像での推論結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1599258/b607a70b-ceaf-9c2b-b8fc-9e79cab9cd65.png)

### Intelligent Image Super‑Resolution for Vehicle License Plate in Surveillance Applications (2023)

こちらは、ブレ除去と超解像の二つのタスクを同時に実装したGANベースの手法になります。
学習データは、高解像度のナンバープレートの周辺で切り取られた画像を使います。ブレとシャープのペアには、高解像度なシャープ画像を低解像度に落とし適当なPSFで畳み込んだ低解像度ブレ画像として用意します。
このように、ナンバープレートは低解像度のデータが多く、そういったケースではブレ除去と超解像の複合的手法の需要があると思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1599258/77f77a74-24c6-1c5d-419e-a26a05596c74.png)

## DelburにおけるTips
最後に、画像の Deblurring モデル学習、推論タスクを実行する際に、押さえておくべき実践的なTipsを並べておきます。
### 擬似的なPSFを使う場合はアンチエイリアシングを使う
PSFを擬似的に作って学習データを用意するときは、PSFをサブピクセル化して作成したりしてエイリアシングが発生しないようにアンチエイリアシング処理が必要です。

<img width="40%" alt="none" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1599258/dde09b04-702e-83d2-b60b-d76a3a868503.png">

http://blog.livedoor.jp/take_z_ultima/archives/51374339.html より引用


DeblurGAN: Blind Motion Deblurring Using Conditional Adversarial Networks (2018)やCNN for license plate motion deblurring (2016)などでもアンチエイリアシング処理が使われています。


### Ringing artifactsによる劣化に注意
Ringing artifacts（Gibbs phenomenon）は、古典的な手法やGANモデルで多く見られ、推定される画像のエッジ付近に起こるアーチファクトです。このアーチファクトを抑えるために、正則化項を加える手法などが研究されています(e.g., Image Deblurring with Blurred/Noisy Image Pairs (2007))。下図は古典的手法による典型的なそのアーチファクトによる劣化を表したものになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1599258/f4f0025d-592c-e8ef-b891-4e0c620c164c.png)

High-quality Motion Deblurring from a Single Image (2008)より引用

### シャープ画像には圧縮のない鮮明な画像を使用の有効性
シャープ画像 (Ground truth, GT)には、できるだけ圧縮などを含まないクリーンな画像を使う必要があります。以下の例は、一番左の正解の画像にblocking artifactsが含まれているのがわかると思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1599258/6b72698f-0d52-5448-ff1f-3f488dc65fb2.png)

Deep Semantic Face Deblurring (2018)より引用

この問題を解決するために、Progressive Semantic Face Deblurring (2020)では、新しくデータを作っています。このように、GT画像は、モデルの性能にも密接に関わるので、クリーンな画像を使うことが望ましいです。

### ノイズ除去の前処理による影響
ブレとノイズが入った画像を前処理にノイズを軽減するガウシアンフィルタやバイラテラルフィルタなどの適用は、アーチファクトなどを生む可能性があるので注意が必要です。

下図は、古典的なブレ除去手法によるカーネルを推定した結果で、前処理による影響を示しています。特に、バイラテラルフィルタのように複雑なフィルタの場合、推定されるPSFにアーチファクトが出ることが確認できると思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1599258/709d37bd-67a0-9ad8-69da-4a80e7df1aef.png)
Handling noise in single image deblurring using directional filters (2013)より引用

### RAWデータによるブレ画像の有効性
「1. Deblur概観: 古典〜2023最新の汎用手法」で紹介された同一シーンのブレ画像とシャープ画像の学習データを用意する方法として、高速フレームで撮った連続シャープ画像を平均化してブレ画像を作る方法がありました。しかし、この方法では、実世界のブレを再現できないという課題があり、以下でその問題の概要を示します。

カメラでの撮像の時、RAW画像をImage Signal Processor（ISP）によってRGBに変換されますが、一般的にISPパイプラインは、ホワイトバランス、デモザイキング、ノイズ除去、色空間変換などを含む非線形プロセスです。しかし、RGB画像を平均化することはISPを線形として扱うことになり、実世界のブレを厳密には再現できないです。

先行研究では、RGB画像をRAW画像に変換したものを使った上で、平均化によるブレ画像を作った方が良い結果が得られたことが示されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1599258/0b5ab349-a344-76a4-b7eb-f795bb6342b7.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1599258/9e84fb9b-a2af-b6e7-f453-001dd97f965d.png)

Rethinking Blur Synthesis for Deep Real-World Image Deblurring (2022)より引用

Realistic Blur Synthesis for Learning Image Deblurring (2022)、Towards Real-World Video Deblurring by Exploring Blur Formation Process (2023)もこの課題を扱っています。

### ハードウェアを工夫したブレ除去手法
#### Coded exposureカメラの利用
長時間の露光はノイズの影響を軽減するために重要であるがブレが発生します。長時間露光中に意図的にシャッターを閉じている時間があると、高周波数成分が残り、delburの性能を上げることができます。その両立をしようと考えたのが、Coded exposureです。Coded exposureでは、さまざまな高周波数成分を残しつつノイズを抑えるため、シャッターの開閉を制御したブレ画像を扱っています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1599258/3a3d05fd-a1b1-c3b3-baf0-e8cf5d56cc4e.png)
Coded Exposure Photography: Motion Deblurring using Fluttered Shutter (2006)より引用

#### ステレオカメラの利用
ステレオカメラを利用することで、2つの画像から奥行方向の情報を取得することが可能です。一般に、3次元の特徴を考慮することでより高確度にモーションブラーの推定が可能になります。ここでは説明は割愛しますが、以下がその研究の一例です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1599258/066d945f-8d21-ed5a-089a-6dcb2e130ede.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1599258/6d1c2e5b-d626-627a-91af-f86780571a55.png)
DAVANet: Stereo Deblurring with View Aggregation (2019)より引用

## [謝辞](https://qiita.com/yusuke_s_yusuke/items/b705cb7ab54b4d4773b0#%E8%AC%9D%E8%BE%9E)