(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022172981
(43)【公開日】2022-11-17
(54)【発明の名称】画像処理方法、画像処理装置、コンピュータプログラム、および、訓練方法
(51)【国際特許分類】
G06T 1/00 20060101AFI20221110BHJP
G06T 1/40 20060101ALI20221110BHJP
【FI】
G06T1/00 510
G06T1/40
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2021079368
(22)【出願日】2021-05-07
(71)【出願人】
【識別番号】000005267
【氏名又は名称】ブラザー工業株式会社
(74)【代理人】
【識別番号】110001058
【氏名又は名称】鳳国際弁理士法人
(72)【発明者】
【氏名】渡邉 航平
【テーマコード(参考)】
5B057
【Fターム(参考)】
5B057CA02
5B057CA08
5B057CB01
5B057CB08
5B057CC01
5B057CE16
5B057DB05
5B057DC40
(57)【要約】
【課題】適切なカラー画像を表す画像データを生成する。
【解決手段】
対象画像を1色成分で表す第1画像データを使用して対象画像のカラー画像を表す第2画像データを生成する着色処理を実行する。着色処理は、訓練画像を1色成分で表すモノクロ訓練画像データから訓練画像のカラー画像を表すカラー生成画像データを生成するように調整された複数のパラメータを有する着色モデルを使用して、第1画像データから第2画像データを生成する生成処理を含む。参考色データが提供される場合には、参考色データと第1画像データとを含む第1種入力データセットを着色モデルに入力することによって、第2画像データを生成する。参考色データが提供されない場合には、参考色データを含まずに第1画像データを含む第2種入力データセットを着色モデルに入力することによって、第2画像データを生成する。
【選択図】
図13
【特許請求の範囲】
【請求項1】
画像処理方法であって、
対象画像を1色成分で表す第1画像データを使用して前記対象画像のカラー画像を表す第2画像データを生成する着色処理を実行する着色工程と、
前記第2画像データを記憶装置に格納する格納工程と、
を備え、
前記着色処理は、訓練画像を1色成分で表すモノクロ訓練画像データから前記訓練画像のカラー画像を表すカラー生成画像データを生成するように調整された複数のパラメータを有する着色モデルを使用して、前記第1画像データから前記第2画像データを生成する生成処理を含み、
前記生成処理は、
前記対象画像内のN個(Nは1以上の整数)の位置と前記N個の位置にそれぞれ対応付けられたN個の色とを示す参考色データが提供される場合には、前記参考色データと前記第1画像データとを含む第1種入力データセットを前記着色モデルに入力することによって、前記第2画像データを生成し、
前記参考色データが提供されない場合には、前記参考色データを含まずに前記第1画像データを含む第2種入力データセットを前記着色モデルに入力することによって、前記第2画像データを生成する、
ように構成されており、
前記着色モデルの前記複数のパラメータは、前記モノクロ訓練画像データに対する物体検出処理によって検出される物体に関する第1損失が小さくなるように調整されており、前記第1損失は、前記着色モデルによって生成される第1種生成画像データによって表される前記物体の生成カラー画像と、前記モノクロ訓練画像データに予め対応付けられる正解カラー画像データによって表される前記物体の正解カラー画像と、の間の差を示し、前記第1種生成画像データは、前記モノクロ訓練画像データのうちの前記物体を表す部分と訓練用の参考色データとを含む第1種訓練データセットを前記着色モデルに入力することによって生成される画像データであり、
前記着色モデルの前記複数のパラメータは、前記着色モデルによって生成される第2種生成画像データに関する第2損失が小さくなるように調整されており、前記第2損失は、第2種生成画像データによって表される前記訓練画像の生成カラー画像と、前記正解カラー画像データによって表される前記訓練画像の正解カラー画像と、の間の差を示す画像損失を含み、前記第2種生成画像データは、前記モノクロ訓練画像データと前記訓練用の参考色データとを含む第2種訓練データセットを前記着色モデルに入力することによって生成される画像データである、
画像処理方法。
【請求項2】
請求項1に記載の画像処理方法であって、
前記物体検出処理は、前記訓練画像内の前記物体の領域を画素単位で検出する処理を含む、
画像処理方法。
【請求項3】
請求項1または2に記載の画像処理方法であって、
前記第1損失は、前記物体の前記生成カラー画像と前記物体の正解カラー画像との間の複数の画素のそれぞれの色値の差を使用して算出される画素色損失を含む、
画像処理方法。
【請求項4】
請求項3に記載の画像処理方法であって、
前記画素色損失は、前記複数の画素のそれぞれの前記色値の前記差が大きいほど、大きい、
画像処理方法。
【請求項5】
請求項1から4のいずれかに記載の画像処理方法であって、
前記第2損失は、前記正解カラー画像データによって表される前記訓練画像の前記正解カラー画像に含まれる画素におけるエッジ量に対する、前記第2種生成画像データによって表される前記訓練画像の前記生成カラー画像中の同じ画素のエッジ量の比率と相関を有するエッジ損失を含む、
画像処理方法。
【請求項6】
請求項1から5のいずれかに記載の画像処理方法であって、
前記第2種入力データセットは、前記参考色データに代えて、前記対象画像内の位置と前記位置に対応付けられた色とを示さない代替データを含む、
画像処理方法。
【請求項7】
画像処理装置であって、
対象画像を1色成分で表す第1画像データを使用して前記対象画像のカラー画像を表す第2画像データを生成する着色処理を実行する着色部と、
前記第2画像データを記憶装置に格納する格納部と、
を備え、
前記着色処理は、訓練画像を1色成分で表すモノクロ訓練画像データから前記訓練画像のカラー画像を表すカラー生成画像データを生成するように調整された複数のパラメータを有する着色モデルを使用して、前記第1画像データから前記第2画像データを生成する生成処理を含み、
前記生成処理は、
前記対象画像内のN個(Nは1以上の整数)の位置と前記N個の位置にそれぞれ対応付けられたN個の色とを示す参考色データが提供される場合には、前記参考色データと前記第1画像データとを含む第1種入力データセットを前記着色モデルに入力することによって、前記第2画像データを生成し、
前記参考色データが提供されない場合には、前記参考色データを含まずに前記第1画像データを含む第2種入力データセットを前記着色モデルに入力することによって、前記第2画像データを生成する、
ように構成されており、
前記着色モデルの前記複数のパラメータは、前記モノクロ訓練画像データに対する物体検出処理によって検出される物体に関する第1損失が小さくなるように調整されており、前記第1損失は、前記着色モデルによって生成される第1種生成画像データによって表される前記物体の生成カラー画像と、前記モノクロ訓練画像データに予め対応付けられる正解カラー画像データによって表される前記物体の正解カラー画像と、の間の差を示し、前記第1種生成画像データは、前記モノクロ訓練画像データのうちの前記物体を表す部分と訓練用の参考色データとを含む第1種訓練データセットを前記着色モデルに入力することによって生成される画像データであり、
前記着色モデルの前記複数のパラメータは、前記着色モデルによって生成される第2種生成画像データに関する第2損失が小さくなるように調整されており、前記第2損失は、第2種生成画像データによって表される前記訓練画像の生成カラー画像と、前記正解カラー画像データによって表される前記訓練画像の正解カラー画像と、の間の差を示す画像損失を含み、前記第2種生成画像データは、前記モノクロ訓練画像データと前記訓練用の参考色データとを含む第2種訓練データセットを前記着色モデルに入力することによって生成される画像データである、
画像処理装置。
【請求項8】
画像処理を実行するコンピュータのためのコンピュータプログラムであって、
対象画像を1色成分で表す第1画像データを使用して前記対象画像のカラー画像を表す第2画像データを生成する着色処理を実行する着色機能と、
前記第2画像データを記憶装置に格納する格納機能と、
をコンピュータに実現させ、
前記着色処理は、訓練画像を1色成分で表すモノクロ訓練画像データから前記訓練画像のカラー画像を表すカラー生成画像データを生成するように調整された複数のパラメータを有する着色モデルを使用して、前記第1画像データから前記第2画像データを生成する生成処理を含み、
前記生成処理は、
前記対象画像内のN個(Nは1以上の整数)の位置と前記N個の位置にそれぞれ対応付けられたN個の色とを示す参考色データが提供される場合には、前記参考色データと前記第1画像データとを含む第1種入力データセットを前記着色モデルに入力することによって、前記第2画像データを生成し、
前記参考色データが提供されない場合には、前記参考色データを含まずに前記第1画像データを含む第2種入力データセットを前記着色モデルに入力することによって、前記第2画像データを生成する、
ように構成されており、
前記着色モデルの前記複数のパラメータは、前記モノクロ訓練画像データに対する物体検出処理によって検出される物体に関する第1損失が小さくなるように調整されており、前記第1損失は、前記着色モデルによって生成される第1種生成画像データによって表される前記物体の生成カラー画像と、前記モノクロ訓練画像データに予め対応付けられる正解カラー画像データによって表される前記物体の正解カラー画像と、の間の差を示し、前記第1種生成画像データは、前記モノクロ訓練画像データのうちの前記物体を表す部分と訓練用の参考色データとを含む第1種訓練データセットを前記着色モデルに入力することによって生成される画像データであり、
前記着色モデルの前記複数のパラメータは、前記着色モデルによって生成される第2種生成画像データに関する第2損失が小さくなるように調整されており、前記第2損失は、第2種生成画像データによって表される前記訓練画像の生成カラー画像と、前記正解カラー画像データによって表される前記訓練画像の正解カラー画像と、の間の差を示す画像損失を含み、前記第2種生成画像データは、前記モノクロ訓練画像データと前記訓練用の参考色データとを含む第2種訓練データセットを前記着色モデルに入力することによって生成される画像データである、
コンピュータプログラム。
【請求項9】
複数のパラメータを有する着色モデルの訓練方法であって、
訓練画像を1色成分で表すモノクロ訓練画像データに対する物体検出処理によって物体を検出する検出工程と、
前記モノクロ訓練画像データのうちの前記物体を表す部分と、前記訓練画像内のN個(Nは1以上の整数)の位置と前記N個の位置にそれぞれ対応付けられたN個の色とを示す訓練用の参考色データと、を含む第1種訓練データセットを前記着色モデルに入力することによって第1種生成画像データを生成する第1生成工程と、
前記第1種生成画像データによって表される前記物体の生成カラー画像と、前記モノクロ訓練画像データに予め対応付けられる正解カラー画像データによって表される前記物体の正解カラー画像と、の間の差を示す第1損失が小さくなるように、前記着色モデルの複数のパラメータを調整する第1調整工程と、
前記モノクロ訓練画像データと前記訓練用の参考色データとを含む第2種訓練データセットを前記着色モデルに入力することによって、第2種生成画像データを生成する第2生成工程と、
前記第2種生成画像データによって表される前記訓練画像の生成カラー画像と、前記正解カラー画像データによって表される前記訓練画像の正解カラー画像と、の間の差を示す画像損失を含む第2損失が小さくなるように、前記着色モデルの前記複数のパラメータを調整する第2調整工程と、
を備える訓練方法。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書は、画像を1色成分で表す画像データからカラー画像データを生成する技術に関する。
【背景技術】
【0002】
グレースケールの画像を着色するニューラルネットワークが提案されている。例えば、非特許文献1は、ユーザによる色のヒントを使用して着色を行う技術を提案している。非特許文献2は、物体検出によって画像から検出された物体の画像を着色するネットワークによって抽出される特徴と、画像全体を着色するネットワークによって抽出される特徴とに、融合モジュールを適用することによって、最終的な色を予測する技術を提案している。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】Richard Zhang, Jun-Yan Zhu, Phillip Isola, Xinyang Geng, Angela S. Lin, Tianhe Yu, Alexei A. Efros, "Real-Time User-Guided Image Colorization with Learned Deep Priors", arXiv:1705.02999, https://arxiv.org/abs/1705.02999, 投稿日8 May 2017
【非特許文献2】Jheng-Wei Su, Hung-Kuo Chu, Jia-Bin Huang, "Instance-aware Image Colorization", arXiv:2005.10825, https://arxiv.org/abs/2005.10825, 投稿日21 May 2020
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところが、ユーザによる色のヒントを使用して着色を行う場合、画像内の意図しない部分がヒントに従って着色される場合がある。例えば、画像内の葉っぱを示す部分に対応付けられた緑色を示すヒントが入力される場合に、画像内の他の部分(例えば、川や空を示す部分)が、緑色に着色される場合がある。多数のヒントを入力する場合、このような不具合を抑制され得るが、多数のヒントの入力は、ユーザにとって大きな負担である。また、物体を着色するネットワークと画像全体を着色するネットワークとに融合モジュールを適用する場合、ネットワークのアーキテクチャが複雑である。従って、着色結果が不自然である場合に、ユーザは色を修正できなかった。
【0005】
本明細書は、適切なカラー画像を表す画像データを生成する技術を開示する。
【課題を解決するための手段】
【0006】
本明細書に開示された技術は、以下の適用例として実現することが可能である。
【0007】
[適用例1]画像処理方法であって、対象画像を1色成分で表す第1画像データを使用して前記対象画像のカラー画像を表す第2画像データを生成する着色処理を実行する着色工程と、前記第2画像データを記憶装置に格納する格納工程と、を備え、前記着色処理は、訓練画像を1色成分で表すモノクロ訓練画像データから前記訓練画像のカラー画像を表すカラー生成画像データを生成するように調整された複数のパラメータを有する着色モデルを使用して、前記第1画像データから前記第2画像データを生成する生成処理を含み、前記生成処理は、前記対象画像内のN個(Nは1以上の整数)の位置と前記N個の位置にそれぞれ対応付けられたN個の色とを示す参考色データが提供される場合には、前記参考色データと前記第1画像データとを含む第1種入力データセットを前記着色モデルに入力することによって、前記第2画像データを生成し、前記参考色データが提供されない場合には、前記参考色データを含まずに前記第1画像データを含む第2種入力データセットを前記着色モデルに入力することによって、前記第2画像データを生成する、ように構成されており、前記着色モデルの前記複数のパラメータは、前記モノクロ訓練画像データに対する物体検出処理によって検出される物体に関する第1損失が小さくなるように調整されており、前記第1損失は、前記着色モデルによって生成される第1種生成画像データによって表される前記物体の生成カラー画像と、前記モノクロ訓練画像データに予め対応付けられる正解カラー画像データによって表される前記物体の正解カラー画像と、の間の差を示し、前記第1種生成画像データは、前記モノクロ訓練画像データのうちの前記物体を表す部分と訓練用の参考色データとを含む第1種訓練データセットを前記着色モデルに入力することによって生成される画像データであり、前記着色モデルの前記複数のパラメータは、前記着色モデルによって生成される第2種生成画像データに関する第2損失が小さくなるように調整されており、前記第2損失は、第2種生成画像データによって表される前記訓練画像の生成カラー画像と、前記正解カラー画像データによって表される前記訓練画像の正解カラー画像と、の間の差を示す画像損失を含み、前記第2種生成画像データは、前記モノクロ訓練画像データと前記訓練用の参考色データとを含む第2種訓練データセットを前記着色モデルに入力することによって生成される画像データである、画像処理方法。
【0008】
この構成によれば、物体の生成カラー画像と物体の正解カラー画像との間の差を示す第1損失と、訓練画像の生成カラー画像と訓練画像の正解カラー画像との間の差を示す画像損失を含む第2損失と、が小さくなるように着色モデルの複数のパラメータが調整されており、そして、着色モデルを使用して第1画像データから第2画像データが生成されるので、着色モデルは、物体の適切なカラー画像を表す第2画像データを生成できる。また、訓練用の参考色データを使用して着色モデルの複数のパラメータが調整されているので、参考色データが提供される場合には、参考色データと第1画像データとを含む第1種入力データセットが着色モデルに入力されることによって、着色モデルは、適切な第2画像データを生成できる。
【0009】
[適用例2]複数のパラメータを有する着色モデルの訓練方法であって、訓練画像を1色成分で表すモノクロ訓練画像データに対する物体検出処理によって物体を検出する検出工程と、前記モノクロ訓練画像データのうちの前記物体を表す部分と、前記訓練画像内のN個(Nは1以上の整数)の位置と前記N個の位置にそれぞれ対応付けられたN個の色とを示す訓練用の参考色データと、を含む第1種訓練データセットを前記着色モデルに入力することによって第1種生成画像データを生成する第1生成工程と、前記第1種生成画像データによって表される前記物体の生成カラー画像と、前記モノクロ訓練画像データに予め対応付けられる正解カラー画像データによって表される前記物体の正解カラー画像と、の間の差を示す第1損失が小さくなるように、前記着色モデルの複数のパラメータを調整する第1調整工程と、前記モノクロ訓練画像データと前記訓練用の参考色データとを含む第2種訓練データセットを前記着色モデルに入力することによって、第2種生成画像データを生成する第2生成工程と、前記第2種生成画像データによって表される前記訓練画像の生成カラー画像と、前記正解カラー画像データによって表される前記訓練画像の正解カラー画像と、の間の差を示す画像損失を含む第2損失が小さくなるように、前記着色モデルの前記複数のパラメータを調整する第2調整工程と、を備える訓練方法。
【0010】
この構成によれば、物体の生成カラー画像と物体の正解カラー画像との間の差を示す第1損失が小さくなるように、着色モデルの複数のパラメータが調整され、訓練画像の生成カラー画像と訓練画像の正解カラー画像との間の差を示す画像損失を含む第2損失が小さくなるように着色モデルの複数のパラメータが調整されるので、着色モデルは、物体の適切なカラー画像を表す画像データを生成できる。また、訓練用の参考色データを使用して着色モデルの複数のパラメータが調整されるので、着色モデルは、参考色データを使用することによって、適切な画像データを生成できる。
【0011】
なお、本明細書に開示の技術は、種々の態様で実現することが可能であり、例えば、画像処理方法および画像処理装置、着色モデルの訓練方法および訓練装置、それらの方法または装置の機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体(例えば、一時的ではない記録媒体)、訓練された着色モデル、等の形態で実現することができる。
【図面の簡単な説明】
【0012】
【
図1】システム1000の構成を示すブロック図である。
【
図3】着色モデル600の構成例を示すブロック図である。
【
図4】着色モデル600の訓練処理の例を示すフローチャートである。
【
図5】(A)、(B)は、訓練用の参考色データの説明図である。
【
図6】マスク訓練処理の例を示すフローチャートである。
【
図8】(A)は、物体損失LS1iの計算式の例を示す説明図である。(B)は、第1損失LS1の算出式の例を示す説明図である。
【
図9】全体訓練処理の例を示すフローチャートである。
【
図11】(A)は、第2損失LS2の例の説明図である。(B)は、全体着色誤差LSsの例の説明図である。(C)は、平滑化誤差LStの例の説明図である。(D)は、エッジ変化量誤差LSeの例の説明図である。
【
図12】(A)は、エッジ変化量誤差LSeの説明図である。(B)は、画素ラインLNと比率RE(Pw、Ph、c)との説明図である。
【
図14】(A)-(D)は、着色処理の概略図である。
【発明を実施するための形態】
【0013】
A.第1実施例:
A-1.システム1000の構成:
図1は、実施例のシステム1000の構成を示すブロック図である。このシステム1000は、ユーザ端末300と、画像処理サーバ500と、を備えている。ユーザ端末300と画像処理サーバ500とは、インターネットITに接続されており、互いに通信可能である。
【0014】
画像処理サーバ500は、後述する種々の画像処理を実行する。画像処理サーバ500は、プロセッサ510と、記憶装置515と、表示部540と、操作部550と、通信インタフェース580と、を備えている。これらの要素は、バスを介して互いに接続されている。記憶装置515は、揮発性記憶装置520と、不揮発性記憶装置530と、を含んでいる。
【0015】
表示部540は、液晶ディスプレイ、有機ELディスプレイなどの、画像を表示するように構成された装置である。操作部550は、ボタン、レバー、表示部540上に重ねて配置されたタッチパネルなどの、ユーザによる操作を受け取るように構成された装置である。ユーザは、操作部550を操作することによって、種々の指示を画像処理サーバ500に入力可能である。通信インタフェース580は、他の装置と通信するためのインタフェースである(例えば、USBインタフェース、有線LANインタフェース、IEEE802.11の無線インタフェース)。本実施例では、通信インタフェース580は、インターネットITに接続されている。
【0016】
プロセッサ510は、データ処理を行うように構成された装置であり、例えば、CPUである。揮発性記憶装置520は、例えば、DRAMであり、不揮発性記憶装置530は、例えば、フラッシュメモリである。不揮発性記憶装置530は、プログラム531、532、533と、着色モデル600と、訓練データ690と、物体検出モデル700と、を格納している。モデル600、700は、それぞれ、人工ニューラルネットワークを有する予測モデルである。着色モデル600は、モノクロ画像の画像データからカラー画像の画像データを生成する。物体検出モデル700は、画像データによって表される画像から、物体の領域を検出する。訓練データ690と物体検出モデル700とは、着色モデル600のトレーニングのために使用される。これらのモデル600、700の詳細については、後述する。
【0017】
ユーザ端末300は、画像処理サーバ500にカラー画像データの生成を要求する装置である(例えば、スマートフォン、タブレットコンピュータ等)。ユーザ端末300は、プロセッサ310と、記憶装置315と、表示部340と、操作部350と、通信インタフェース380と、を備えている。これらの要素は、バスを介して互いに接続されている。記憶装置315は、揮発性記憶装置320と、不揮発性記憶装置330と、を含んでいる。
【0018】
表示部340は、画像を表示する装置であり、例えば、液晶ディスプレイである。操作部350は、ユーザによる操作を受け取る装置であり、例えば、表示部340上に重ねて配置されたタッチパネルを含んでいる。ユーザは、操作部350を操作することによって、種々の指示をユーザ端末300に入力可能である。通信インタフェース380は、他の装置と通信するためのインタフェースである(例えば、有線LANインタフェース、IEEE802.11の無線インタフェース)。本実施例では、通信インタフェース380は、インターネットITに接続されている。
【0019】
プロセッサ310は、データ処理を行うように構成された装置であり、例えば、CPUである。揮発性記憶装置320は、例えば、DRAMであり、不揮発性記憶装置330は、例えば、フラッシュメモリである。不揮発性記憶装置330は、プログラム331を格納している。プロセッサ310は、プログラム331を実行することによって、画像処理サーバ500による着色処理のための種々の処理を実行する(詳細は、後述)。
【0020】
プロセッサ310は、プログラム331の実行に使用される種々の中間データを、記憶装置(例えば、揮発性記憶装置320、または、不揮発性記憶装置330)に、一時的に格納する。なお、本実施例では、プログラム331は、図示しないサーバによって提供される。これに代えて、プログラム331は、メモリカードなどの携帯型の記録媒体によって提供されてよい。
【0021】
A2.着色モデル600の構成:
図2は、着色モデル600の例を示す概略図である。着色モデル600は、第1入力処理層611と、第2入力処理層612と、前段連結部620と、エンコーダ630と、デコーダ650と、出力処理層660と、後段連結部670と、を有している。
【0022】
第1入力処理層611には、モノクロの第1画像I1を表す第1画像データI1dが入力される。第1画像I1は、高さHと幅W(単位は、画素数)を有する矩形状の画像である(本実施例では、H=256、W=256)。本実施例では、第1画像データI1dの各画素の色値は、CIELAB色空間のL*値を示している。第1画像データI1dの要素数(ここでは、高さ*幅*チャンネル数)は、256*256*1である。
【0023】
第2入力処理層612には、参考色マップIUを表す参考色データIUdが入力される。参考色マップIUは、第1画像I1内のN個(Nは1以上の整数)の位置とN個の位置にそれぞれ対応付けられたN個の好ましい色(参考色とも呼ぶ)との対応関係を示している。参考色は、着色のためのヒントを示している。本実施例では、参考色マップIUは、高さHと幅W(単位は、画素数)を有する矩形状の画像である。各画素には、参考色を示すa*値とb*値と、マスクビットBtとの3個の成分が対応付けられている。a*値とb*値とは、CIELAB色空間のa*値とb*値をそれぞれ示している。後述するように、参考色は、ユーザによって指定される。マスクビットBtは、ユーザによって参考色が指定された画素を示す二値の成分である。「1」のマスクビットBtは、参考色が指定された画素を示し、「ゼロ」のマスクビットBtは、参考色が指定されていない画素を示している。参考色データIUdの要素数(ここでは、高さ*幅*チャンネル数)は、256*256*3である。
【0024】
図3は、着色モデル600の構成例を示すブロック図である。本実施例では、第1入力処理層611は、1個の畳込層を有している。この畳込層は、2以上のストライド(本実施例では、2)を使用して、高さに相当する要素数と幅に相当する要素数とを削減する(チャンネル数に相当する要素数は、増大する)。活性化関数は、LeakyReLUである。本実施例では、この畳込層は、データの要素数を、「256*256*1」から、「128*128*64」に変化させる。
【0025】
第2入力処理層612は、1個の畳込層を有している。この畳込層は、2以上のストライド(本実施例では、2)を使用して、高さに相当する要素数と幅に相当する要素数とを削減する(チャンネル数に相当する要素数は、増大する)。活性化関数は、LeakyReLUである。本実施例では、この畳込層は、データの要素数を、「256*256*3」から、「128*128*64」に変化させる。
【0026】
前段連結部620は、第1入力処理層611からの第1出力データ611oと、第2入力処理層612からの第2出力データ612oとを連結する。2個の出力データ611o、612oの連結は、連結された出力データが2個の出力データ611o、612oのそれぞれのチャンネルを示すように、行われる。本実施例では、前段連結部620は、第1出力データ611o(128*128*64)と第2出力データ612o(128*128*64)とを使用して、128*128*128の要素を有する連結データ620oを生成する。
【0027】
エンコーダ630は、連結データ620oに対して次元削減処理を実行して、連結データ620oの特徴を示す特徴データ640を生成する。本実施例では、エンコーダ630は、上流側から順に並ぶ、5個の畳込層631-635を有している。各畳込層631-635は、2以上のストライド(本実施例では、2)を使用して、高さに相当する要素数と幅に相当する要素数とを削減する。図示を省略するが、2番目から5番目までの各畳込層632-635には、バッチノーマライゼーションが適用されている(本実施例では、各畳込層632-635は、畳込の処理に続いて、バッチノーマライゼーションの処理を行う)。各畳込層631-635の活性化関数は、LeakyReLUである。5個の畳込層631-635は、データの要素数を、「128*128*128」から、「64*64*64」、「32*32*128」、「16*16*256」、「8*8*512」、「4*4*512」の順に、変化させる。特徴データ640の要素数は、4*4*512である。
【0028】
デコーダ650は、特徴データ640に対して次元復元処理を実行して、第3出力データ650oを生成する。本実施例では、デコーダ650は、5個の転置畳込層651-655と、5個の連結部651c-655cと、を有している。転置畳込層と連結部とは、転置畳込層の後ろに連結部が続くように、交互に並んでいる。連結部の符号は、連結部の前の転置畳込層の符号の末尾に「c」を追加したものである。各転置畳込層651-655は、2以上のストライド(本実施例では、2)を使用して、高さに相当する要素数と幅に相当する要素数とを増大する。図示を省略するが、5個の転置畳込層651-655には、バッチノーマライゼーションが適用されている(本実施例では、各転置畳込層651-655は、転置畳込の処理に続いて、バッチノーマライゼーションの処理を行う)。また、訓練時に、1番目から2番目までの2個の転置畳込層651、652には、ドロップアウトが適用される。各転置畳込層651-655の活性化関数は、ReLUである。
【0029】
本実施例では、エンコーダ630とデコーダ650とは、いわゆるU-Netと同様のアーキテクチャを有している。エンコーダ630とデコーダ650との間には、5個のコネクション619a-619eが設けられている。第1コネクション619a(すなわち、第1連結部651c)は、第1畳込層631に入力される連結データ620oを、第5転置畳込層655の活性化関数からの出力データに連結する。第2コネクション619b(すなわち、第2連結部652c)は、第1畳込層631の活性化関数からの出力データを、第4転置畳込層654の活性化関数からの出力データに連結する。同様に、コネクション619c-619e(すなわち、連結部653c-655c)は、第2畳込層632と第3転置畳込層653のペアと、第3畳込層633と第2転置畳込層652とのペアと、第4畳込層634と第1転置畳込層651とのペアと、に関して、畳込層の活性化関数からの出力データを、転置畳込層の活性化関数からの出力データに連結する。2個の出力データの連結は、連結された出力データが2個の出力データのそれぞれのチャンネルを示すように、行われる。例えば、32*32*256の要素を有する出力データと、32*32*128の要素を有する出力データと、が連結される場合、32*32*384の要素を有するデータが生成される。
【0030】
5個の転置畳込層651-655による転置畳込と5個の連結部651c-655cによる連結とによって、データの要素数は、「4*4*512」から、「8*8*512(転置畳込)」、「8*8*1024(連結)」、「16*16*256(転置畳込)」、「16*16*512(連結)」、「32*32*256(転置畳込)」、「32*32*384(連結)」、「64*64*128(転置畳込)」、「64*64*192(連結)」、「128*128*128(転置畳込)」、「128*128*256(連結)」の順に変化する。5個のコネクション619a-619eは、位置に関する情報を、エンコーダ630からデコーダ650へ伝達する。これにより、デコーダ650は、詳細な形状を表す第3出力データ650oを生成できる。このようなコネクション619a-619eは、スキップコネクションとも呼ばれる。
【0031】
出力処理層660は、1個の転置畳込層を有している。この転置畳込層は、2以上のストライド(本実施例では、2)を使用して、高さに相当する要素数と幅に相当する要素数とを増大する(チャンネル数に相当する要素数は、低減する)。本実施例では、この転置畳込層は、データの要素数を、「128*128*256」から、「256*256*2」に変化させる。2個のチャンネルは、a*値とb*値とを示している。出力処理層660によって生成されるデータ660oは、高さHと幅Wを有する矩形状の画像の画像データである(各画素には、a*値と、b*値とが対応付けられている)。活性化関数としては、画像データ660oの生成に適した関数(本実施例では、シグモイド関数)が使用される。なお、シグモイド関数に代えて、他の関数(例えば、Tanh関数)が使用されてもよい。
【0032】
後段連結部670は、画像データ660oと第1画像データI1dとを連結することによって、第2画像I2の第2画像データI2d(
図2)を生成する。第2画像I2は、高さHと幅Wを有する矩形状のカラー画像であり、各画素には、L*値、a*値、b*値、が対応付けられている(L*値は、第1画像データI1dによって定められ、a*値、b*値は、画像データ660oによって定められている)。
【0033】
着色モデル600(
図3)は、畳込フィルタの複数の重みと複数のバイアスなどの複数の演算パラメータ600Pを有している。複数の演算パラメータ600Pは、後述する訓練処理によって、調整される。
【0034】
A3.着色モデル600の訓練:
図4は、着色モデル600の訓練処理の例を示すフローチャートである。プロセッサ510(
図1)は、第1プログラム531に従って、
図4の処理を実行する。
【0035】
S110では、プロセッサ510は、訓練データセットを生成する。本実施例では、訓練用の複数のカラー画像を表す複数の基準カラー画像データが、予め準備されている(図示省略)。訓練用のカラー画像は、人、傘、自動車、自転車、椅子、テーブル、皿やカップなどの食器、リンゴやバナナなどの果物、などの種々の物体を表すカラー写真の画像である。プロセッサ510は、基準カラー画像データを使用して、訓練データペアを生成する。訓練データペアは、1色成分(本実施例では、L*)で画像を表すモノクロ訓練画像データと、3色成分(本実施例では、L*、a*、b*)で画像を表すカラー訓練画像データと、で構成される。カラー訓練画像データは、着色のための正解のカラー画像を示している。以下、カラー訓練画像データを、正解カラー画像データとも呼ぶ。基準カラー画像データの色空間がCIELAB色空間とは異なる色空間(例えば、RGB色空間)である場合、プロセッサ510は、色変換を行って、訓練データペアを生成する。プロセッサ510は、基準カラー画像データを使用して、複数組の訓練データペアを生成する。そして、プロセッサ510は、各訓練データペアに関して、モノクロ訓練画像データとカラー訓練画像データ(すなわち、正解カラー画像データ)とを対応付けて記憶装置515(本実施例では、不揮発性記憶装置530)に格納する。格納された複数組の訓練データペアは、訓練データ690(
図1)を構成する。なお、モノクロ訓練画像データと正解カラー画像データとのそれぞれによって表される画像は、高さHと幅Wを有する矩形状の画像である。
【0036】
S120では、プロセッサ510は、着色モデル600(
図2、
図3)の複数の演算パラメータ600Pを、初期化する。例えば、各演算パラメータは、乱数値に設定される。
【0037】
S130では、プロセッサ510は、訓練データ690に含まれる複数組の訓練データペアから、処理対象の複数組の訓練データペアで構成される注目訓練データセットを取得する。注目訓練データセットとしては、未処理の複数組の訓練データペアが選択される。また、注目訓練データセットの訓練データペアの総数は、予め決められている。
【0038】
S140では、プロセッサ510は、注目訓練データセットの複数組の訓練データペアのそれぞれに関して、訓練用の参考色データを生成する。
図5(A)、
図5(B)は、訓練用の参考色データの説明図である。
図5(A)の画像Yは、正解カラー画像データYdによって表される正解カラー画像の例である。正解カラー画像Yは、人物O1と、他の人物O2と、傘O3と、の3個の物体を表している。プロセッサ510は、正解カラー画像Yの色を使用して、訓練用の参考色データを生成する。具体的には、プロセッサ510は、参考色を指定すべき指定画素の数Nを、乱数を使用してランダムに決定する(Nは、ゼロ以上の整数)。そして、プロセッサ510は、正解カラー画像Yの複数の画素から、N個の指定画素を、乱数を使用してランダムに選択する。プロセッサ510は、N個の指定画素のそれぞれの参考色(ここでは、a*値とb*値)を、正解カラー画像Yの同じ画素の色に設定する。また、プロセッサ510は、指定画素のマスクビットBtを1に設定し、指定画素ではない画素のマスクビットBtをゼロに設定する。プロセッサ510は、指定画素ではない画素に関しては、a*とb*のそれぞれをゼロに設定する。
【0039】
図5(A)の参考色マップU1、U2、U3は、正解カラー画像Yから生成され得る訓練用の参考色マップの例を示している。図中の画素CPは、指定画素を示している。第1参考色マップU1は、N=3の場合を示し、第2参考色マップU2は、N=4の場合を示し、第3参考色マップU3は、N=ゼロの場合を示している。
【0040】
図5(B)は、数Nの確率分布の例を示している。横軸は、数Nを示し、縦軸は、数Nが選択される確率Pnを示している。本実施例では、プロセッサ510は、ユーザによって参考色が指定されることを想定して、訓練用の参考色データを生成する。ユーザは、ゼロ以上の任意の数の指定画素を選択し、各指定画素に参考色を指定する。ここで、ユーザは、なるべく少ない数の指定画素を選択すると推定される。そこで、プロセッサ510は、数Nの増大に伴って単調減少する確率分布に従って、数Nを決定する。本実施例では、確率Pnは、指数分布に基づいて決められている(Pn=M*exp(-M*N)、Mは係数(例えば、M=0.1))。
【0041】
S150(
図4)では、プロセッサ510は、マスク訓練処理を実行する。マスク訓練処理は、物体毎に適切な着色を行うように着色モデル600を訓練する処理である。プロセッサ510は、注目訓練データセットの複数組の訓練データペアのそれぞれに関して、マスク訓練処理を実行する。
図6は、マスク訓練処理の例を示すフローチャートである。
図7は、マスク訓練処理の概略図である。図中の画像Xは、モノクロ訓練画像データXdによって表されるモノクロ訓練画像の例を示している。画像Yは、
図5(A)の正解カラー画像Yと同じである。ここで、モノクロ訓練画像Xと正解カラー画像Yとが、処理対象の訓練データペアによって表されることとする。
【0042】
S210(
図6)では、プロセッサ510は、モノクロ訓練画像データXdに対する物体検出処理を実行して、K個(Kは1以上の整数)のマスクデータZdj(jは、1以上、K以下の整数)を生成する。本実施例では、プロセッサ510は、訓練済の物体検出モデル700を使用して、モノクロ訓練画像データXdからK個の物体の領域を検出する。物体検出モデル700は、画像から物体の領域と物体の種類とを検出する任意のモデルであってよい。本実施例では、物体検出モデル700として、「instance segmentation」と呼ばれる領域分割を行うモデルが使用される。この領域分割は、物体毎に、物体の領域と物体の種類(クラス)とを検出する。1枚の画像が同じ種類の複数の物体(例えば、複数の人物)を表す場合、この領域分割は、複数の物体を、互いに異なる物体として検出する。また、この領域分割は、画素がどの物体領域に含まれるのかを、画素毎に決定する。このような領域分割を行うモデルとして、「Mask R-CNN」と呼ばれる物体検出モデルを使用することとする。「Mask R-CNN」は、プレプリント「Kaiming He, Georgia Gkioxari, Piotr Dollar(「a」は、アキュートアクセントを有する), Ross Girshick, "Mask R-CNN", arXiv:1703.06870, https://arxiv.org/abs/1703.06870」に開示されている。本実施例では、物体検出モデル700は、種々の種類の物体を検出するように、予め訓練される。物体検出モデル700の訓練方法としては、例えば、上記のプレプリントに記載の方法が使用される。
【0043】
プロセッサ510は、モノクロ訓練画像データXdを物体検出モデル700に入力することによって、K個の物体領域と物体領域に対応付けられた物体の種類とを取得する。そして、プロセッサ510は、K個の物体領域をそれぞれ示すK個のマスクデータZdjを生成する。マスクデータZdjは、物体領域に含まれる画素を示す二値データである(1は、物体領域に含まれる画素を示し、ゼロは、物体領域に含まれない画素を示す)。
図7のモノクロ訓練画像Xからは、3個の物体O1-O3が検出され、3個のマスクデータZdj(j=1、2、3)が生成される。
図7には、マスクデータZdjによって表されるマスクZjの例が示されている。第1マスクZ1は、第1物体O1の領域を示し、第2マスクZ2は、第2物体O2の領域を示している(第3物体O3のマスクZ3の図示は、省略されている)。
【0044】
S215(
図6)では、プロセッサ510は、モノクロ訓練画像データXdとマスクデータZdjとを使用して、モノクロ物体画像データXMdjを生成する(jは、1以上、K以下の整数)。モノクロ物体画像データXMdjは、j番の物体のみを表すモノクロ画像XMjを表している(モノクロ物体画像XMjとも呼ぶ)。j番の物体の領域に含まれない画素の色値は、ゼロに設定される。
図7には、モノクロ物体画像XMjの例が示されている。第1モノクロ物体画像XM1は、第1物体O1を示し、第2モノクロ物体画像XM2は、第2物体O2を示している。プロセッサ510は、モノクロ訓練画像データXdとマスクデータZdjとのアダマール積を算出ことによって、モノクロ物体画像データXMdjを生成する。
【0045】
S220(
図6)では、プロセッサ510は、正解カラー画像データYdとマスクデータZdjとを使用して、正解物体画像データYMdjを生成する(jは、1以上、K以下の整数)。正解物体画像データYMdjは、j番の物体のみを表すカラー画像YMjを表している(正解物体画像YMjとも呼ぶ)。j番の物体の領域に含まれない画素に関しては、色値は、予め決められた色値に設定される(例えば、a*=b*=L*=0)。
図7には、正解物体画像YMjの例が示されている。第1正解物体画像YM1は、第1物体O1を示し、第2正解物体画像YM2は、第2物体O2を示している。プロセッサ510は、正解カラー画像データYdとマスクデータZdjとのアダマール積を算出ことによって、正解物体画像データYMdjを生成する。プロセッサ510は、チャンネル毎に(すなわち、a*、b*、L*のそれぞれに関して)、アダマール積を算出する。
【0046】
S225では、プロセッサ510は、注目物体の番号iを、1に初期化する。
【0047】
S230では、プロセッサ510は、モノクロ物体画像データXMdiと参考色データUdとを着色モデル600に入力することによって、第1種生成画像データGMdiを生成する。参考色データUdは、
図4のS140で、処理対象の訓練データペアから生成された訓練用の参考色データである。プロセッサ510は、モノクロ物体画像データXMdiを、着色モデル600の第1入力処理層611に入力し、参考色データUdを、第2入力処理層612に入力する。そして、プロセッサ510は、着色モデル600の複数の演算パラメータ600Pを使用して、着色モデル600の各処理部(畳込層、転置畳込層など)の演算を行うことによって、第1種生成画像データGMdiを算出する。
図7に示すように、第1種生成画像データGMdiによって表される第1種生成画像GMiは、i番の物体のカラー画像を表し得る(
図7では、i=1である)。なお、モノクロ物体画像データXMdiと参考色データUdとの全体は、訓練のために着色モデル600に入力される第1種訓練データセットTDS1の例である。
【0048】
S235では、プロセッサ510は、第1種生成画像データGMdiと正解物体画像データYMdiとを使用して、物体損失LS1iを算出する。物体損失LS1iは、第1種生成画像GMiと正解物体画像YMiとの間の差分を表す種々の値であってよい。
図8(A)は、物体損失LS1iの計算式の例を示す説明図である。Pwは、幅方向の画素位置を示し(Pwは、1以上、W以下)、Phは、高さ方向の画素位置を示している(Phは、1以上、H以下)。GMi(Pw,Ph)は、第1種生成画像GMi中の位置(Pw,Ph)の画素の色値であり、YMi(Pw,Ph)は、正解物体画像YMi中の位置(Pw,Ph)の画素の色値である。色値差分Dcは、これらの色値GMi(Pw,Ph)、YMi(Pw,Ph)の差分を示している。本実施例では色値差分Dcとして、3個の色成分(L*、a*、b*)のそれぞれの差分を使用するL1ノルムが使用される。重みwt(i)は、i番の物体の種類に対応付けられた重みである。重みwt(i)は、人、傘、自動車などの物体の種類毎に、予め決められている。同じ種類の複数の物体には、その種類に対応付けられた同じ重みが使用される。i番の物体の種類は、
図6のS210で、物体検出モデル700によって決定される。なお、重みwt(i)は、種々の種類の物体の適切な着色結果が得られるように、予め実験的に決定される。物体損失LS1iは、H*W個の画素に関する「-wt(i)*log(1-Dc)」の合計値である。本実施例では、物体損失LS1iが対数を用いて算出される。従って、第1種生成画像GMiと正解物体画像YMiとの間の色の差が大きいほど、物体損失LS1iは、大きくなる。
【0049】
S240(
図6)では、プロセッサ510は、全ての物体の処理が終了したか否かを判断する。未処理の物体が残っている場合(S240:No)、プロセッサ510は、S245で注目物体の番号iに1を加算し、S230へ移行する。そして、プロセッサ510は、新たな注目物体の処理を行う。
【0050】
全ての物体の処理が終了した場合(S240:Yes)、S250で、プロセッサ510は、K個の物体損失LS1i(iは、1以上、K以下の整数)を使用して、第1損失LS1を算出する。
図8(B)は、第1損失LS1の算出式の例を示す説明図である。本実施例では、第1損失LS1は、K個の物体損失LS1iの合計値である。
【0051】
S255では、プロセッサ510は、第1損失LS1が小さくなるように、予め決められたアルゴリズムに従って、着色モデル600の複数の演算パラメータ600Pを調整する。アルゴリズムとしては、例えば、誤差逆伝播法と勾配降下法とを使用したアルゴリズムが採用されてよい。また、プロセッサ510は、いわゆるAdamの最適化を行ってよい。
【0052】
プロセッサ510は、第1損失LS1が小さくなるように、着色モデル600を訓練する。第1損失LS1は、モノクロ訓練画像Xから検出されたK個の物体の物体損失LS1iの合計値である。従って、訓練済の着色モデル600は、モノクロ訓練画像Xから検出されたK個の物体のK個の領域の全ての画素の色を、正解カラー画像Yの対応する画素の色に近づけることができる。すなわち、訓練済の着色モデル600は、検出されたK個の物体のそれぞれの領域の全体を、適切に着色できる。
【0053】
また、参考色データUdによって表される参考色マップUは、
図4のS140で説明したように、正解カラー画像Yによって表される画素の色を示している。参考色マップUの指定画素が物体の領域に含まれる場合、着色モデル600は、その物体の領域の着色された画素の色が、正解カラー画像Yの色、すなわち、指定画素の参考色に近づくように、訓練される。従って、訓練済の着色モデル600は、参考色データによって色が指定される場合に、その色で物体の領域を着色できる。
【0054】
S255(
図6)が終了した場合、プロセッサ510は、
図6の処理、すなわち、
図4のS150の処理を、終了する。
【0055】
S160(
図4)では、プロセッサ510は、全体訓練処理を実行する。全体訓練処理は、画像全体を適切に着色するように着色モデル600を訓練する処理である。プロセッサ510は、注目訓練データセットの複数組の訓練データペアのそれぞれに関して、全体訓練処理を実行する。
図9は、全体訓練処理の例を示すフローチャートである。
図10は、全体訓練処理の概略図である。図中のモノクロ訓練画像Xと正解カラー画像Yと参考色マップUとは、
図7のものと同じである。
【0056】
S310では、プロセッサ510は、モノクロ訓練画像データXdと参考色データUdとを着色モデル600に入力することによって、第2種生成画像データGdを生成する。プロセッサ510は、モノクロ訓練画像データXdを第1入力処理層611に入力し、参考色データUdを、第2入力処理層612に入力する。そして、プロセッサ510は、着色モデル600の複数の演算パラメータ600Pを使用して、着色モデル600の各処理部の演算を行うことによって、第2種生成画像データGdを算出する。
図10に示すように、第2種生成画像データGdによって表される第2種生成画像Gは、モノクロ訓練画像Xのカラー画像を表し得る。なお、モノクロ訓練画像データXdと参考色データUdとの全体は、訓練のために着色モデル600に入力される第2種訓練データセットTDS2の例である。
【0057】
S320では、プロセッサ510は、第2種生成画像データGdと正解カラー画像データYdとを使用して、第2損失LS2を算出する。第2損失LS2は、第2種生成画像Gと正解カラー画像Yとの間の差分を表す種々の値であってよい。
【0058】
図11(A)は、第2損失LS2の例の説明図である。本実施例では、第2損失LS2は、全体着色誤差LSsと、平滑化誤差LStと、エッジ変化量誤差LSeとの、重み付き合計値である。誤差LSs、LSt、LSeのそれぞれの重みCs、Ct、Ceは、種々の画像の適切な着色結果が得られるように、予め実験的に決定される。
【0059】
図11(B)は、全体着色誤差LSsの例の説明図である。全体着色誤差LSsは、第2種生成画像Gと正解カラー画像Yとの間の差分を示している。本実施例では、全体着色誤差LSsは、「L1-smooth Loss」とも呼ばれる誤差である。全体着色誤差LSsは、例えば、以下のように算出される。本実施例では、プロセッサ510は、第2種生成画像Gと正解カラー画像Yとの間の差分として、2個の画像の間の「H*W*3」個の値のそれぞれの差分を使用するL1ノルムを算出する。そして、L1ノルムが1未満である場合、プロセッサ510は、全体着色誤差LSsとして、2個の画像の間の各画素の各色成分の差分(すなわち、「H*W*3」個の差分)の二乗和に係数(ここでは、0.5)を乗じた値を算出する。L1ノルムが1以上である場合、プロセッサ510は、全体着色誤差LSsとして、L1ノルムから0.5を減算した値を採用する。このような全体着色誤差LSsが小さくなるように着色モデル600が訓練される場合、訓練済の着色モデル600は、画像の全体を適切に着色できる。
【0060】
図11(C)は、平滑化誤差LStの例の説明図である。平滑化誤差LStは、第2種生成画像Gに含まれるノイズの大きさを示している。本実施例では、平滑化誤差LStは、「Total variation loss」とも呼ばれる誤差である。平滑化誤差LStは、例えば、以下のように算出される。平滑化誤差LStは、第1項T1と第2項T2との合計値である。第1項T1は、第2種生成画像Gと、第2種生成画像Gを幅方向に1画素ずらして得られる第1シフト画像と、の間の差分を示している。差分の算出方法としては、例えば、2個の画像の間の各画素の各色成分の差分(すなわち、「H*W*3」個の差分)を使用するL1ノルムの算出方法を採用可能である。なお、1画素のシフトにより、第1シフト画像は、色値を決定できない画素ラインを含んでいる。この画素ラインに関しては、差分の算出から省略されてよい。第2項T2は、第2種生成画像Gと、第2種生成画像Gを高さ方向に1画素ずらして得られる第2シフト画像と、の間の差分を示している。これら2個の画像の間の差分は、第1項T1の差分と同様に、算出される。このような平滑化誤差LStは、第2種生成画像Gに含まれるノイズが大きい場合に、大きくなる。平滑化誤差LStが小さくなるように着色モデル600が訓練される場合、訓練済の着色モデル600は、画像の全体を滑らかに着色できる。
【0061】
図11(D)は、エッジ変化量誤差LSeの例の説明図である。図中の比率RE(Pw、Ph、c)は、正解カラー画像Yに含まれる画素(Pw、Ph)におけるエッジ量Feg(Y(Pw、Ph、c))に対する、第2種生成画像Gの同じ画素(Pw、Ph)のエッジ量Feg(G(Pw、Ph、c))の比率である。ここで、Pw、Phは、上述したように、画素の位置を示している。パラメータcは、色成分を示しており、本実施例では、a*、または、b*である。本実施例では、エッジ変化量誤差LSeは、H*W個の画素のa*値の比率RE(Pw、Ph、a*)の絶対値とb*値の比率RE(Pw、Ph、b*)の絶対値との合計値である。エッジ量は、画像内の画素位置の変化に対する色の変化の大きさを示す任意の値であってよい。本実施例では、エッジ量として、ソーベルフィルタを使用して算出されるエッジ量が、使用される(具体的には、幅方向の微分値の二乗と高さ方向の微分値の二乗との和の平方根)。なお、エッジ検出フィルタとしては、ソーベルフィルタに代えて、ロバーツフィルタ、プレウィットフィルタなど、他のフィルタが使用されてよい。
【0062】
図12(A)は、エッジ変化量誤差LSeの説明図である。図中には、正解カラー画像Yの一部と、2個の第2種生成画像Ga、Gbのそれぞれの同じ部分と、が示されている。図示された部分は、動物の目を示している。中央の第2種生成画像Ga(第1生成画像Gaと呼ぶ)では、目の着色の範囲が、目のエッジの外にはみ出ている。右側の第2種生成画像Gb(第2生成画像Gbと呼ぶ)では、目の着色の範囲は、目のエッジの外にはみ出ずに、目のエッジまで目が着色されている。第1生成画像Gaのように物体の要素(例えば、目)の着色の範囲がその要素のエッジの外にはみ出る場合、正解カラー画像Yのうちのエッジでは無い部分に、着色によるエッジが形成される。このような着色によるエッジは、着色の品質を低下させ得る(例えば、画像の観察者は、ノイズを認識し得る)。
【0063】
図12(A)には、各画像Y、Ga、Gbから取得される比率RE(Pw、Ph、c)のパターンYe、Gae、Gbeの例が示されている(cは、例えば、a*)。太い線は、大きい比率RE(Pw、Ph、c)を示している。中央のパターンGaeが示すように、着色がエッジの外にはみ出る場合、正解カラー画像YのパターンYeと比べて、大きい比率を有する画素が多くなる。右側のパターンGbeが示すように、着色がエッジまで行われる場合、大きい比率を有する画素の増大は、抑制される。
【0064】
図12(B)は、画素ラインLNと比率RE(Pw、Ph、c)との説明図である。図中の左部には、画像Y、Ga、Gbの一部が重ねて示されている。また、画像Y、Ga、Gb上に、画素ラインLNが示されている。画素ラインLN上では、高さ方向の画素位置Phは固定されており、幅方向の画素位置Pwが変化する。図中の右部には、比率RE(Pw、Ph、c)のグラフが示されている(cは、例えば、a*)。横軸は、画素ラインLN上の画素位置Pwを示し、縦軸は、比率RE(Pw、Ph、c)を示している。実線のグラフは、第1生成画像Gaから得られる比率RE(Pw、Ph、c)を示し、点線のグラフは、第2生成画像Gbから得られる比率RE(Pw、Ph、c)を示している。図示するように、比率RE(Pw、Ph、c)は、画素位置(ここでは、幅方向の位置Pw)に応じて、変化する。また、実線のグラフの比率RE(Pw、Ph、c)の最大値は、点線のグラフの比率RE(Pw、Ph、c)の最大値よりも、大きい。このように、物体の要素の着色の範囲がその要素のエッジの外にはみ出る場合には、要素の着色がその要素のエッジまで行われる場合と比べて、比率RE(Pw、Ph、c)の最大値が大きくなる。この結果、エッジ変化量誤差LSeが大きくなる。
【0065】
図示を省略するが、物体の要素の着色がその要素のエッジから内側に離れた位置まで行われる場合、すなわち、要素の領域のうちのその要素のエッジの近傍の部分が適切に着色されない場合、同様に、正解カラー画像Yのうちのエッジでは無い部分に、着色によるエッジが形成される。このように、物体の要素の着色される範囲のエッジがその要素のエッジから離れている場合に、エッジ変化量誤差LSeが大きくなる。
【0066】
このようなエッジ変化量誤差LSeが小さくなるように着色モデル600が訓練される場合、訓練済の着色モデル600は、物体の要素を、その要素のエッジに合わせて適切に着色できる。
【0067】
S320(
図9)では、プロセッサ510は、誤差LSs、LSt、LSeのそれぞれを算出し、第2損失LS2を算出する。
【0068】
S330では、プロセッサ510は、第2損失LS2が小さくなるように、予め決められたアルゴリズムに従って、着色モデル600の複数の演算パラメータ600Pを調整する。アルゴリズムとしては、例えば、誤差逆伝播法と勾配降下法とを使用したアルゴリズムが採用されてよい。また、プロセッサ510は、いわゆるAdamの最適化を行ってよい。
【0069】
このように、プロセッサ510は、第2損失LS2(
図11(A)-
図11(D))が小さくなるように、着色モデル600を訓練する。すなわち、プロセッサ510は、誤差LSs、LSt、LSeのそれぞれが小さくなるように、着色モデル600を訓練する。従って、訓練済の着色モデル600は、画像の全体を適切に着色でき(全体着色誤差LSs)、画像の全体を滑らかに着色でき(平滑化誤差LSt)、物体の要素を要素のエッジに合わせて適切に着色できる(エッジ変化量誤差LSe)。
【0070】
S330(
図9)が終了した場合、プロセッサ510は、
図9の処理、すなわち、
図4のS160の処理を、終了する。
【0071】
S170では、プロセッサ510は、訓練の終了条件が満たされるか否かを判断する。終了条件は、着色モデル600が適切に訓練されたことを示す任意の条件であってよい。本実施例では、終了条件は、作業者からの終了指示が入力されることである。プロセッサ510は、訓練データ690(
図1)中の訓練に使用されていない複数組の訓練データペアから、所定数の訓練データペアをランダムに取得する。プロセッサ510は、取得した複数組の訓練データペアのそれぞれのモノクロ訓練画像データXdと、参考色データUdとを、着色モデル600に入力し、着色モデル600から複数の第2種生成画像データGdを取得する。ここで、プロセッサ510は、参考色データUdとしては、指定画素の数Nがゼロである場合の参考色データUd(すなわち、画像内の位置と位置に対応つけられた参考色とを示さないデータ)を、使用する。これに代えて、プロセッサ510は、S140(
図4)と同様の方法に従って、参考色データUdを生成してよい。そして、プロセッサ510は、第2種生成画像Gと正解カラー画像Yとの複数のペアを、表示部540に表示する。作業者は、表示部540を観察して、第2種生成画像Gが正解カラー画像Yを適切に表しているか否かを確認する。作業者は、確認結果に応じて、操作部550を操作して、訓練の終了指示、または、継続指示を入力する。
【0072】
なお、訓練の終了条件は、他の条件であってよい。例えば、終了条件は、訓練に使用されていない所定数の訓練データペアを使用して算出される第1損失LS1と第2損失LS2とが、それぞれに対応する所定の閾値以下であることであってよい。
【0073】
訓練が終了していないと判断される場合(S170:No)、プロセッサ510は、S130へ移行し、新たな注目訓練データセットの処理を実行する。訓練が終了したと判断される場合(S170:Yes)、S180で、プロセッサ510は、訓練済の着色モデル600を、記憶装置515(ここでは、不揮発性記憶装置530)に格納する。そして、プロセッサ510は、
図4の処理を終了する。
【0074】
A4.着色処理:
図13は、着色処理の例を示すシーケンス図である。本実施例では、画像処理サーバ500(
図1)は、訓練済の着色モデル600を使用する着色サービスを提供する。画像処理サーバ500のプロセッサ510は、プログラム532、533を実行することによって、ウェブ処理部591と制御部592としての処理を、それぞれ実行する。ウェブ処理部591は、着色処理のためのデータの受信と送信とを、ネットワーク(例えば、インターネットIT)を介して行う。制御部592は、着色モデル600にカラー画像データを生成させるための処理を実行する。以下、ユーザ端末300が、画像処理サーバ500に、着色処理を要求することとする。また、ウェブ処理部591としてプロセッサ510が処理を実行することを、ウェブ処理部591が処理を実行する、とも表現する。制御部592としてプロセッサ510が処理を実行することを、制御部592が処理を実行する、とも表現する。
【0075】
S410では、ユーザ端末300のプロセッサ310は、ユーザの指示に応じて、グレースケールの第1画像データI11dを、画像処理サーバ500に送信する。
図14(A)-
図14(D)は、着色処理の概略図である。
図14(A)は、第1画像データI11dによって表される第1画像I11の例を示している。第1画像I11は、人物O11と、他の人物O12と、傘O13と、の3個の物体を表している。第1画像データI11dは、1色成分で、第1画像I11を表している。この1色成分は、明るさを示す種々の色成分であってよい。本実施例では、第1画像データI11dは、CIELAB色空間のL*値で第1画像I11を表している。これに代えて、第1画像I11は、他の色成分(例えば、YCbCr色空間のY値)で表されてもよい。
【0076】
S415では、ウェブ処理部591は、ユーザ端末300から受信した第1画像データI11dを、制御部592に供給する。
【0077】
S420では、制御部592は、第1画像データI11dと代替データUxdとを、着色モデル600に入力する。代替データUxdは、参考色データが提供されない場合に参考色データの代わりに使用されるデータであり、指定画素の数Nがゼロである場合の参考色データ(すなわち、画像内の位置と位置に対応つけられた参考色とを示さないデータ)である。また、第1画像I11の高さと幅とが着色モデル600に受け入れられる画像の高さと幅と異なる場合、制御部592は、第1画像データI11dの解像度変換処理を実行して、第1画像I11の高さと幅とを着色モデル600に適した高さと幅とに調整する。また、第1画像データI11dの色成分が着色モデル600に受け入れられる色成分(ここでは、L*)とは異なる場合、制御部592は、第1画像データI11dの色変換処理を実行して、第1画像データI11dの色成分を着色モデル600に適した色成分に変換する。以下、S420で着色モデル600に入力されるデータセット(本実施例では、第1画像データI11dと代替データUxdとの全体)を、第2種入力データセットDS2とも呼ぶ。
【0078】
S425では、プロセッサ510は、第1画像データI11dと代替データUxdとを使用して着色モデル600の演算を行うことによって、カラー画像を表す第2画像データI21dを生成する(第1生成データI21dとも呼ぶ)。
図14(B)は、第1生成データI21dによって表される第2画像I21(第1生成画像I21とも呼ぶ)の例を示している。第1生成画像I21は、第1画像I11(
図14(A))の着色によって得られるカラー画像である。S427(
図13)では、プロセッサ510は、生成した第1生成データI21dを、記憶装置515(ここでは、不揮発性記憶装置530)に格納する。
【0079】
S430では、制御部592は、第1生成データI21dを取得する。S435では、制御部592は、第1生成データI21dをウェブ処理部591に供給する。S440では、ウェブ処理部591は、第1生成データI21dをユーザ端末300に送信する。
【0080】
S445では、ユーザ端末300のプロセッサ310は、第1生成データI21dを使用して第1生成画像I21を表示部340に表示する。ユーザは、表示部340に表示されたカラーの第1生成画像I21を観察し、操作部350を操作して、修正指示、または、終了指示を入力する。
【0081】
終了指示が入力された場合(S450:No)、S455で、プロセッサ310は、第1生成データI21dを記憶装置315(例えば、不揮発性記憶装置330)に格納する。そして、
図13の処理は、終了する。
【0082】
修正指示が入力された場合(S450:Yes)、S460で、プロセッサ310は、ユーザに、位置と参考色とを指定させる。本実施例では、プロセッサ310は、設定画面を表示部340に表示する。
図14(C)は、設定画面の例を示す概略図である。設定画面DSは、第1画像I11と、第1生成画像I21と、色設定領域ACと、OKボタンBTと、を表している。第1画像I11中には、指定画素を示す画素マークPMが、表示されている。ユーザは、操作部350を操作することによって、第1画像I11上の任意の画素位置に、画素マークPMを追加できる。色設定領域ACは、色値を示すグラフを表している。横軸は、a*値を示し、縦軸は、b*値を示している。色設定領域ACは、a*値とb*値とによって表現可能な色域GMTを示している。色域GMTに含まれる部分は、その部分に対応するa*値とb*値とによって示される色で、表されている。色設定領域AC中には、参考色を示す色マークCMが、表示されている。ユーザは、操作部350を操作することによって、色マークCMを任意の色の位置に移動させることができる。ユーザは、第1画像I11中の1個の画素マークPMを選択した状態で、色マークCMを移動させることによって、指定画素と参考色との対応関係を決定できる。例えば、ユーザは、第1生成画像I21を観察することによって、色を修正すべき領域を確認する。そして、ユーザは、その領域に含まれる画素に画素マークPMを追加し、好ましい色を示すように色マークCMを移動させる。これにより、ユーザは、色を修正すべき領域の好ましい色を示す参考色を設定できる。ユーザは、このような操作を行うことによって、指定画素と参考色とのN個の対応関係を、入力できる(Nは、1以上の整数)。ユーザは、操作部350を介してOKボタンBTを操作することによって、参考色の指定を終了する。
【0083】
S465(
図13)では、プロセッサ310は、S460で入力された画素マークPMと色マークCMとのN個の対応関係に従って、指定画素と参考色とのN個の対応関係を示す参考色データIU1dを生成する。そして、プロセッサ310は、参考色データIU1dを、画像処理サーバ500に送信する。
【0084】
S470では、ウェブ処理部591は、ユーザ端末300から受信した参考色データIU1dを、制御部592に供給する。S475では、制御部592は、第1画像データI11dと参考色データIU1dとを、着色モデル600に入力する。以下、S475で着色モデル600に入力されるデータセット(本実施例では、第1画像データI11dと参考色データIU1dとの全体)を、第1種入力データセットDS1とも呼ぶ。
【0085】
S480では、プロセッサ510は、第1画像データI11dと参考色データIU1dとを使用して着色モデル600の演算を行うことによって、新たなカラー画像を表す第2画像データI22dを生成する(第2生成データI22dとも呼ぶ)。
図14(D)は、第2生成データI22dによって表される第2画像I22(第2生成画像I22とも呼ぶ)の例を示している。第2生成画像I22は、第1画像I11(
図14(A))の着色によって得られるカラー画像である。第1生成画像I21(
図14(B))とは異なり、参考色データIU1dによって示される指定画素と参考色とのN個の対応関係が、第2生成画像I22の生成に使用されている。第2生成画像I22では、指定画素を含む領域が、参考色を考慮して着色されている。このように、第2生成画像I22は、第1生成画像I21と比べて、ユーザにとって好ましい着色結果を示している。S482(
図13)では、プロセッサ510は、生成した第2生成データI22dを、記憶装置515(ここでは、不揮発性記憶装置530)に格納する。
【0086】
S485では、制御部592は、第2生成データI22dを取得する。S490では、制御部592は、第2生成データI22dをウェブ処理部591に供給する。S495では、ウェブ処理部591は、第2生成データI22dをユーザ端末300に送信する。
【0087】
S500では、ユーザ端末300のプロセッサ310は、第2生成データI22dを使用して第2生成画像I22を表示部340に表示する。S505では、プロセッサ310は、第2生成データI22dを、記憶装置315(例えば、不揮発性記憶装置330)に格納する。そして、
図13の処理は、終了する。
【0088】
以上のように、本実施例では、画像処理サーバ500のプロセッサ510は、以下の画像処理を実行する。
図13のS415-S425、S470-S480では、プロセッサ510は、第1画像I11を1色成分で表す第1画像データI11dを使用して、第2画像I21、I22を表す第2画像データI21d、I22dを生成する着色処理を実行する。
図14(A)で説明したように、第1画像I11は、種々の物体を含むモノクロ画像である。すなわち、第1画像データI11dは、種々の物体を含む画像である対象画像TIを1色成分(ここでは、L*値)で表している。
図14(B)、
図14(D)で説明したように、第2画像I21、I22は、第1画像I11の着色によって得られるカラー画像である。すなわち、第2画像データI21d、I22dは、対象画像TIのカラー画像を表している。
図13のS427、S482では、プロセッサ510は、生成した第2画像データI21d、I22dを、記憶装置515(ここでは、不揮発性記憶装置530)に格納する。
【0089】
着色処理(S415-S425、S470-S480)は、着色モデル600を使用して、第1画像データI11dから第2画像データI21d、I22dを生成する生成処理(S415-S425、S470-S480)を含んでいる。
図4、
図6、
図9、
図10で説明したように、着色モデル600は、訓練画像TRIを1色成分で表すモノクロ訓練画像データXdから、訓練画像TRIのカラー画像を表すカラー生成画像データである第2種生成画像データGdを生成するように調整された複数のパラメータを有している。
【0090】
S470-S480で説明したように、プロセッサ510は、参考色データIU1dが提供される場合には、参考色データIU1dと第1画像データI11dとを含む第1種入力データセットDS1を着色モデル600に入力することによって、第2画像データI22dを生成する。
図14(C)で説明したように、参考色データIU1dは、対象画像TI内のN個(Nは1以上の整数)の画素マークPMとN個の画素マークPMにそれぞれ対応付けられたN個の色マークCMとを示している。画素マークPMは、対象画像TI内の位置を示している。色マークCMは、色(ここでは、a*値とb*値)を示している。
【0091】
S415-S425で説明したように、プロセッサ510は、参考色データが提供されない場合には、参考色データを含まずに第1画像データI11dを含む第2種入力データセットDS2を着色モデル600に入力することによって、第2画像データI21dを生成する。
【0092】
図6で説明したように、着色モデル600の訓練には、モノクロ訓練画像データXdと正解カラー画像データYdとが使用される。
図7に示すように、モノクロ訓練画像Xは、種々の物体を含むモノクロ画像である。すなわち、モノクロ訓練画像データXdは、種々の物体を含む画像である訓練画像TRIを1色成分(ここでは、L*値)で表している。
図4のS110で説明したように、互いに対応付けられたモノクロ訓練画像データXdと正解カラー画像データYdとは、同じ基準カラー画像データから生成される。すなわち、正解カラー画像Yは、訓練画像TRIのカラー画像を表している。
【0093】
図6で説明したように、着色モデル600の複数のパラメータは、モノクロ訓練画像データXdに対する物体検出処理(S210)によって検出される物体に関する第1損失LS1が小さくなるように調整されている。S235、S250、
図8(A)、
図8(B)で説明したように、第1損失LS1は、第1種生成画像GMiと正解物体画像YMiとの間の差分を示す物体損失LS1iの合計値である。このように、第1損失LS1は、第1種生成画像GMiと正解物体画像YMiとの間の差を示している。ここで、第1種生成画像GMiは、着色モデル600によって生成される第1種生成画像データGMdiによって表される物体の生成カラー画像である。正解物体画像YMiは、モノクロ訓練画像データXdに予め対応付けられる正解カラー画像データYdによって表される物体の正解カラー画像である。第1種生成画像データGMdiは、モノクロ訓練画像データXdのうちの物体を表す部分であるモノクロ物体画像データXMdiと、訓練用の参考色データUdと、を含む第1種訓練データセットTDS1を着色モデル600に入力することによって生成される画像データである。
【0094】
図9、
図10で説明したように、着色モデル600の複数のパラメータは、着色モデル600によって生成される第2種生成画像データGdに関する第2損失LS2が小さくなるように調整されている。
図11(A)に示すように、第2損失LS2は、全体着色誤差LSsを含んでいる。全体着色誤差LSs(
図11(B))は、第2種生成画像Gと正解カラー画像Yとの間の差を示す画像損失の例である。
図10に示すように、第2種生成画像Gは、第2種生成画像データGdによって表される画像である。第2種生成画像Gは、モノクロ訓練画像Xの着色によって得られるカラー画像である。すなわち、第2種生成画像Gは、訓練画像TRIの生成カラー画像を表している。正解カラー画像Yは、正解カラー画像データYdによって表される画像であり、訓練画像TRIの正解カラー画像である。第2種生成画像データGdは、モノクロ訓練画像データXdと訓練用の参考色データUdとを含む第2種訓練データセットTDS2を着色モデル600に入力することによって生成される画像データである。
【0095】
以上により、プロセッサ510は、着色モデル600を使用することによって、物体の適切なカラー画像を表す第2画像データを生成できる。第1画像I11(
図14(A))が複数の物体を表す場合に、物体に関する第1損失LS1が小さくなるように訓練された着色モデル600は、各物体を適切に着色できる。例えば、物体の領域の一部分の不自然な着色は、抑制される。そして、物体の領域の全体が、適切に着色される。そして、その着色モデル600が、全体着色誤差LSsを含む第2損失LS2が小さくなるように訓練されているので、着色モデル600は、画像の全体に対する物体の不自然な着色を、抑制できる。
【0096】
また、着色モデル600の訓練処理(
図4)では、訓練用の参考色データUdを使用して着色モデル600の複数のパラメータが調整されている。従って、参考色データIU1d(
図13)が提供される場合には、参考色データIU1dと第1画像データI11dとを含む第1種入力データセットDS1が着色モデル600に入力されることによって、着色モデル600は、適切な第2画像データI22dを生成できる。例えば、物体の領域が指定画素を含む場合に、その物体の領域は、その指定画素に対応付けられた参考色に近い色に着色され得る。
【0097】
また、
図6で説明したように、本実施例では、S210の物体検出処理は、訓練画像内の物体の領域を画素単位で検出する処理を含んでいる。従って、S210では、プロセッサ510は、物体の領域を画素単位で検出する。そして、
図6、
図7で説明したように、第1損失LS1が小さくなるように、着色モデル600の複数のパラメータは、調整されている。第1損失LS1は、上述したように、着色モデル600によって生成される第1種生成画像GMi(すなわち、物体のカラー画像)と、正解物体画像YMi(すなわち、物体の正解カラー画像)との間の差を示している。着色モデル600がこのように訓練されているので、着色モデル600は、適切に着色された物体を表す第2画像データI21d、I22d(
図13)を生成できる。
【0098】
また、
図8(A)、
図8(B)で説明した物体損失LS1iは、第1種生成画像GMi(すなわち、物体の生成カラー画像)と正解物体画像YMi(すなわち、物体の正解カラー画像)との間の複数の画素のそれぞれの色値の差を使用して算出される画素色損失の例である。このような物体損失LS1iを含む第1損失LS1が小さくなるように、着色モデル600の複数のパラメータは、
図6のマスク訓練処理で調整されている。従って、着色モデル600は、適切に着色された物体を表す第2画像データI21d、I22d(
図13)を生成できる。
【0099】
また、
図8(A)で説明したように、画素色損失の例である物体損失LS1iは、複数の画素のそれぞれの色値の差が大きいほど、大きい。従って、物体損失LS1iを含む第1損失LS1が小さくなるように着色モデル600が訓練されている場合、着色モデル600は、物体の複数の画素のそれぞれを、適切に着色することができる。
【0100】
また、
図11(A)、
図11(D)で説明したように、第2損失LS2は、エッジ変化量誤差LSeを含んでいる。エッジ変化量誤差LSeは、H*W個の全ての画素のa*値の比率RE(Pw、Ph、a*)の絶対値とb*値の比率RE(Pw、Ph、b*)の絶対値との合計値である。このように、エッジ変化量誤差LSeは、比率RE(Pw、Ph、c)と相関を有している。比率RE(Pw、Ph、c)は、エッジ量Feg(Y(Pw、Ph、c))に対する、エッジ量Feg(G(Pw、Ph、c))の比率である。エッジ量Feg(Y(Pw、Ph、c))は、正解カラー画像データYdによって表される訓練画像TRIの正解カラー画像Yに含まれる画素Y(Pw、Ph)におけるc色成分(本実施例では、a*、または、b*)のエッジ量である。エッジ量Feg(G(Pw、Ph、c))は、第2種生成画像データGdによって表される訓練画像TRIの生成カラー画像である第2種生成画像G中の同じ画素のc色成分のエッジ量である。着色モデル600は、
図9の全体訓練処理で、エッジ変化量誤差LSeを含む第2損失LS2が小さくなるように、訓練されている。従って、
図12(A)、
図12(B)で説明したように、着色モデル600は、物体の要素を、その要素のエッジに合わせて適切に着色できる。
【0101】
また、
図13のS420で説明したように、参考色データが提供されない場合には、プロセッサ510は、第2種入力データセットDS2を着色モデル600に入力する。第2種入力データセットDS2は、参考色データに代えて、対象画像TI内の位置と位置に対応付けられた色とを示さない代替データUxdを含んでいる。
図2等に示すように、着色モデル600は、参考色データを使用するように、構成されている。このような着色モデル600が使用される場合であっても、参考色データが提供されない場合には、代替データUxdが着色モデル600に入力されるので、着色モデル600は、参考色データが入力される場合と同じ処理によって、適切な第2画像データI21dを生成できる。
【0102】
また、
図4、
図6、
図9の訓練処理では、複数のパラメータを有する着色モデル600は、以下のように訓練される。S210(
図6)では、プロセッサ510は、訓練画像TRIを1色成分で表すモノクロ訓練画像データXdに対する物体検出処理によって物体を検出する。S230(
図6)では、
図7にも示されるように、プロセッサ510は、モノクロ物体画像データXMdiと、訓練用の参考色データUdと、を含む第1種訓練データセットTDS1を着色モデル600に入力することによって、第1種生成画像データGMdiを生成する。モノクロ物体画像データXMdiは、モノクロ訓練画像データXdのうちの物体を表す部分である。訓練用の参考色データUdは、訓練画像TRI内のN個(Nは1以上の整数)の位置とN個の位置にそれぞれ対応付けられたN個の色とを示している。S255(
図6)では、プロセッサ510は、第1種生成画像GMiと、正解物体画像データYMdiと、の間の差を示す第1損失LS1が小さくなるように、着色モデル600の複数のパラメータを調整する。第1種生成画像GMiは、第1種生成画像データGMdiによって表される物体の生成カラー画像である。正解物体画像データYMdiは、モノクロ訓練画像データXdに予め対応付けられる正解カラー画像データYdによって表される物体の正解カラー画像である。S310(
図9)では、
図10にも示されるように、プロセッサ510は、モノクロ訓練画像データXdと訓練用の参考色データUdとを含む第2種訓練データセットTDS2を着色モデル600に入力することによって、第2種生成画像データGdを生成する。S330(
図9)では、プロセッサ510は、第2種生成画像Gと、正解カラー画像Yと、の間の差を示す画像損失の例である全体着色誤差LSsを含む第2損失LS2が小さくなるように、着色モデル600の複数のパラメータを調整する。第2種生成画像Gは、第2種生成画像データGdによって表される訓練画像TRIの生成カラー画像である。正解カラー画像Yは、正解カラー画像データYdによって表される訓練画像TRIの正解カラー画像である。
【0103】
このように訓練される着色モデル600は、適切なカラー画像を表す画像データを生成できる。例えば、入力される画像(例えば、第1画像I11(
図14(A)))が複数の物体を表す場合に、着色モデル600は、各物体を適切に着色できる。そして、着色モデル600は、画像の全体に対する物体の不自然な着色を、抑制できる。
【0104】
B.変形例:
(1)S210(
図6)で使用される物体検出モデル700は、画像中の物体の領域を検出する任意のモデルであってよい。例えば、物体検出モデル700は、「semantic segmentation」と呼ばれる領域分割を行うモデルであってよい。この領域分割は、物体の種類毎に、物体の領域と物体の種類(クラス)とを検出する。1枚の画像が同じ種類の複数の物体(例えば、複数の人物)を表す場合、この領域分割は、同じ種類の複数の物体の領域の全体を、1個の物体領域として検出する。また、この領域分割は、画素がどの物体領域に含まれるのかを、画素毎に決定する。このような領域分割を行うモデルとしては、例えば「SegNet」と呼ばれる物体検出モデルが使用されてよい。「SegNet」は、プレプリント「Vijay Badrinarayanan, Alex Kendall, Roberto Cipolla, "SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation", arXiv:1511.00561, https://arxiv.org/abs/1511.00561」に開示されている。
【0105】
また、物体検出モデル700は、画像中の物体を囲む矩形状のバウンディングボックスを検出するモデルであってよい。この場合、検出されたバウンディングボックス内の全ての画素が、物体の領域の画素として使用されてよい。バウンディングボックスを検出するモデルとしては、例えば、「YOLOv4 (You only look once)」と呼ばれる物体検出モデルが使用されてよい。また、物体検出モデル700は、SSD (Single Shot MultiBox Detector)、R-CNN (Region Based Convolutional Neural Networks) など、他の種々のモデルであってよい。
【0106】
また、S210(
図6)で実行される物体検出処理は、物体検出モデルを使用する処理に限らず、画像中の物体の領域を検出する任意の処理であってよい。例えば、プロセッサ510は、予め準備された基準物体画像を使用するパターンマッチングによって、画像内の物体の領域を検出してよい。
【0107】
(2)訓練用の参考色データ(
図4:S140)の決定処理は、
図5(A)、
図5(B)で説明した方法に代えて、画像内の位置と参考色との対応関係を決定する任意の方法であってよい。例えば、数Nが選択される確率Pn(
図5(B))は、ゼロ以上、所定の上限値以下の数Nの範囲内の一様分布に従って、決定されてよい。また、数Nは、予め決められてよい。また、指定画素は、予め決められた位置の画素であってよい。
【0108】
(3)参考色(
図5(A)、
図14(C))に対応付けられる画像内の位置は、1個の画素に代えて、連続する複数の画素で構成される領域によって示されてよい。ユーザは、参考色に対応付けられる領域の形状と大きさとを、任意に決定してよい。これに代えて、参考色に対応付けられる領域の形状と大きさとは、予め決められてもよい。
【0109】
(4)
図8(A)に示す物体損失LS1iは、第1種生成画像GMiと正解物体画像YMiとの間の差を示す種々の値であってよい。例えば、重みwt(i)は、省略されてよい。物体損失LS1iは、予め決められた値Qを底とする色値差分Dcの指数関数(Qは、1より大きい実数)を使用して算出されてよい。例えば、物体損失LS1iは、H*W個の全ての画素に関する「Q
Dc」の合計値であってよい。色値差分Dcは、2個の色値の間の差を示す種々の値であってよい。例えば、色値差分Dcは、L2ノルムであってよい。いずれの場合も、物体損失LS1iは、色値差分Dcが増大する場合に単調増加することが好ましい。
【0110】
(5)
図11(B)の全体着色誤差LSsは、第2種生成画像Gと正解カラー画像Yとの間の差を示す種々の値であってよい。例えば、全体着色誤差LSsは、2個の画像の間の各画素の各色成分の差分(すなわち、「H*W*3」個の差分)を使用するノルム(例えば、L1ノルム、または、L2ノルム)であってよい。
【0111】
(6)
図11(D)のエッジ変化量誤差LSeは、エッジ量の比率RE(Pw、Ph、c)と相関を有する種々の値であってよい。例えば、エッジ変化量誤差LSeは、H*W個の画素のa*値の比率RE(Pw、Ph、a*)とb*値の比率RE(Pw、Ph、b*)とに関する「-log(1-RE(Pw、Ph、c))」の合計値であってよい。いずれの場合も、エッジ変化量誤差LSeは、「a*値とb*値」、「色相と彩度」など、明るさとは異なる2個の色成分のそれぞれのエッジ量の比率と相関を有することが好ましい。ただし、エッジ変化量誤差LSeは、明るさとは異なる1個の色成分のエッジ量の比率を使用して、算出されてもよい。いずれの場合も、エッジ変化量誤差LSeは、エッジ量の比率が増大する場合に、増大することが好ましい。
【0112】
(7)S320(
図9)で算出される第2損失LS2は、第2種生成画像Gと正解カラー画像Yとの間の差分を表す種々の値であってよい。例えば、誤差LSs、LSt、LSe(
図11(A)-
図11(D))から任意に選択された1以上の誤差が、省略されてよい。第2損失LS2は、2個の画像G、Yの間の差分を表す誤差であって、誤差LSs、LSt、LSeとは異なる他の種類の誤差を含んでよい。第2損失LS2は、全体着色誤差LSs(
図11(B))のように、第2種生成画像Gと正解カラー画像Yとの間の各画素の色の差と相関を有する誤差を含むことが好ましい。
【0113】
(8)着色モデル600の訓練に使用される種々の誤差(すなわち、損失)は、上述した実施例、または、変形例の算出式に代えて、他の種々の算出式に従って算出されてよい。また、誤差の算出に使用される2個のデータの間の差を示す値は、2個のデータの間の差が大きいほど大きくなる種々の値であってよい(例えば、L1ノルム、L2ノルム、二乗和など)。
【0114】
(9)着色モデル600の構成は、
図2、
図3の構成に代えて、参考色データとモノクロ画像の画像データとを使用してカラー画像の画像データを生成する任意の構成であってよい。例えば、第1入力処理層611と第2入力処理層612とは、2個以上の畳込層を有してよい。第1入力処理層611と第2入力処理層612とは、全結合層を含んでよい。一般的には、着色モデル600は、モノクロ画像の画像データを使用して第1データを取得し、参考色データを使用して第2データを取得し、そして、第1データと第2データとを連結するように構成された連結処理部を有することが好ましい。
図2の実施例では、第1入力処理層611と第2入力処理層612と前段連結部620との全体が、連結処理部620cに相当する。ここで、第1入力処理層611と第2入力処理層612とは、省略されてよい。この場合、連結処理部620c(すなわち、前段連結部620)は、モノクロ画像の画像データと参考色データとを連結してよい。このように、第1データは、モノクロ画像の画像データであってよく、第2データは、参考色データであってよい。なお、第1データと第2データとの間では、高さに相当する要素数が同じであり、かつ、幅に相当する要素数が同じであることが好ましい。そして、連結処理部は、第1データのチャンネルと第2データのチャンネルとを示す連結データを生成することが好ましい。
【0115】
エンコーダ630の構成は、
図3で説明した構成に代えて、他の種々の構成であってよい。例えば、畳込層の総数は、1以上の任意の数であってよい。各畳込層のフィルタのサイズは、種々のサイズであってよい。エンコーダ630は、全結合層を含んでよい。エンコーダ630からは、畳込層が、省略されてよい。同様に、デコーダ650の構成は、
図3で説明した構成に代えて、他の種々の構成であってよい。例えば、転置畳込層の総数は、1以上の任意の数であってよい。各転置畳込層のフィルタのサイズは、種々のサイズであってよい。デコーダ650は、全結合層を含んでよい。デコーダ650からは、転置畳込層が、省略されてよい。出力処理層660は、省略されてよい。この場合、デコーダ650が、a*値とb*値とを示す画像データを生成してよい。
【0116】
着色モデル600の構成は、上記の連結処理部と、連結処理部からのデータを使用する次元削減処理を実行するエンコーダと、エンコーダからのデータを使用する次元復元処理を実行するデコーダと、を含む種々の構成であってよい。バッチノーマライゼーションは、着色モデル600の種々の層に適用されてよい。ドロップアウトは、着色モデル600の種々の層に適用されてよい。
【0117】
(10)モノクロ画像を表す1色成分は、L*値に限らず、「YCbCr色空間のY値」、「明度、色相、彩度のうちの明度」など、明るさを示す任意の色成分であってよい。また、カラー画像を表す3色成分は、「L*、a*、b*」に限らず、「YCbCr色空間の3色成分」、「明度、色相、彩度」など、任意の3色成分であってよい。そして、着色モデル600は、カラー画像を表す3色成分のうち、明るさを示す色成分を除いた残りの2色成分を、参考色データとモノクロ画像の画像データとを使用して算出することが好ましい。
【0118】
(11)着色処理は、
図13の処理に代えて、種々の処理であってよい。例えば、S410で、プロセッサ310は、参考色データを生成するか否かをユーザに選択させてよい。そして、ユーザが参考色データの生成を指示する場合、プロセッサ310は、S460と同じ処理を実行して参考色データを生成し、S410では、参考色データと第1画像データI11dとを画像処理サーバ500に送信してよい。この場合、カラーの画像I21が生成されるよりも前に、設定画面DS(
図14(C))が表示される。設定画面DSでは、カラーの画像I21の表示は、省略される。画像処理サーバ500のプロセッサ510は、第1画像データI11dに加えて参考色データを受信した場合には、S415-S425の処理に代えて、S470-S480を実行することによって、第2画像データを生成してよい。
【0119】
(12)訓練処理(例えば、
図4、
図6、
図9)と着色処理(例えば、
図13)とは、互いに異なる画像処理装置によって実行されてよい。いずれの画像処理装置も、ネットワークを介して互いに通信可能な複数の装置(例えば、コンピュータ)が、画像処理装置による画像処理の機能を一部ずつ分担して、全体として、画像処理の機能を提供してもよい(これらの装置を備えるシステムが画像処理装置に対応する)。
【0120】
上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。例えば、
図1の着色モデル600は、専用のハードウェア回路によって実現されてよい。
【0121】
また、本発明の機能の一部または全部がコンピュータプログラムで実現される場合には、そのプログラムは、コンピュータ読み取り可能な記録媒体(例えば、一時的ではない記録媒体)に格納された形で提供することができる。プログラムは、提供時と同一または異なる記録媒体(コンピュータ読み取り可能な記録媒体)に格納された状態で、使用され得る。「コンピュータ読み取り可能な記録媒体」は、メモリカードやCD-ROMのような携帯型の記録媒体に限らず、各種ROM等のコンピュータ内の内部記憶装置や、ハードディスクドライブ等のコンピュータに接続されている外部記憶装置も含み得る。
【0122】
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。
【符号の説明】
【0123】
300…ユーザ端末、310…プロセッサ、315…記憶装置、320…揮発性記憶装置、330…不揮発性記憶装置、331…プログラム、340…表示部、350…操作部、380…通信インタフェース、500…画像処理サーバ、510…プロセッサ、515…記憶装置、520…揮発性記憶装置、530…不揮発性記憶装置、531、532、533…プログラム、540…表示部、550…操作部、580…通信インタフェース、591…ウェブ処理部、592…制御部、600…着色モデル、611…第1入力処理層、612…第2入力処理層、619a-619e…コネクション、620…第1連結部、620c…連結処理部、630…エンコーダ、631-635…畳込層、650…デコーダ、651-655…転置畳込層、651c-655c…連結部、660…出力処理層、670…第2連結部、700…物体検出モデル、1000…システム