(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024007789
(43)【公開日】2024-01-19
(54)【発明の名称】コンピュータプログラム、および、画像処理装置
(51)【国際特許分類】
G06T 11/80 20060101AFI20240112BHJP
【FI】
G06T11/80 A
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2022109116
(22)【出願日】2022-07-06
(71)【出願人】
【識別番号】000005267
【氏名又は名称】ブラザー工業株式会社
(74)【代理人】
【識別番号】110001058
【氏名又は名称】鳳国際弁理士法人
(72)【発明者】
【氏名】渡邉 航平
【テーマコード(参考)】
5B050
【Fターム(参考)】
5B050AA09
5B050BA06
5B050BA11
5B050BA12
5B050CA01
5B050DA04
5B050EA09
5B050EA12
5B050EA13
5B050EA19
5B050FA02
5B050FA05
(57)【要約】
【課題】顔を考慮して画像のスタイル変換を行う
【解決手段】
生物の顔を表す第1領域を検出する検出処理を、入力画像を使用して実行する。入力画像の第1領域の第1画像を使用して第1画像処理を実行することによって、第1処理済画像を生成する。第1画像処理は、第1スタイル変換処理を含む。入力画像の第2領域の第2画像を使用して第2画像処理を実行することによって、第2処理済画像を生成する。第2領域は、第1領域を除いた残りの領域の少なくとも一部を含む領域である。第2画像処理は、第2スタイル変換処理を含む。第1画像処理と第2画像処理とのうちの一方である第1特定処理は、第1画像処理と第2画像処理とのうちの第1特定処理とは異なる第2特定処理には含まれない処理を含む。第1処理済画像と第2処理済画像との合成処理を実行することによって、出力画像を生成する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
コンピュータプログラムであって、
生物の顔を表す第1領域を検出する検出処理を、入力画像を使用して実行する検出機能と、
前記入力画像の前記第1領域の第1画像を使用して第1画像処理を実行することによって、第1処理済画像を生成する第1生成機能であって、前記第1画像処理は、第1スタイル変換処理を含む、前記第1生成機能と、
前記入力画像の第2領域の第2画像を使用して第2画像処理を実行することによって、第2処理済画像を生成する第2生成機能であって、前記第2領域は、前記第1領域を除いた残りの領域の少なくとも一部を含む領域であり、前記第2画像処理は、第2スタイル変換処理を含み、前記第1画像処理と前記第2画像処理とのうちの一方である第1特定処理は、前記第1画像処理と前記第2画像処理とのうちの前記第1特定処理とは異なる第2特定処理には含まれない処理を含む、前記第2生成機能と、
前記第1処理済画像と前記第2処理済画像との合成処理を実行することによって、出力画像を生成する第3生成機能と、
をコンピュータに実現させる、コンピュータプログラム。
【請求項2】
請求項1に記載のコンピュータプログラムであって、
前記第1画像処理は、高解像度化処理を含み、
前記第1スタイル変換処理は、前記入力画像上の前記第1領域の前記第1画像の解像度よりも高い解像度の画像のスタイル変換処理を含む、
コンピュータプログラム。
【請求項3】
請求項1または2に記載のコンピュータプログラムであって、
前記第2スタイル変換処理は、訓練済のスタイル変換モデルによるスタイル変換処理を含み、
前記訓練済のスタイル変換モデルは、損失が小さくなるように、訓練されており、
前記損失は、スタイル変換モデルに入力される画像から検出される顔の数と、前記スタイル変換モデルによるスタイル変換済の画像から検出される顔の数と、の間の差に関連する第1項を含む、
コンピュータプログラム。
【請求項4】
請求項1または2に記載のコンピュータプログラムであって、
前記第1スタイル変換処理は、訓練済のスタイル変換モデルによるスタイル変換処理を含み、
前記訓練済のスタイル変換モデルは、損失が小さくなるように、訓練されており、
前記損失は、スタイル変換モデルに入力される画像に含まれる第1顔から検出される第1顔ランドマークの位置と、前記スタイル変換モデルによるスタイル変換済の画像に含まれる第2顔から検出される第2顔ランドマークの位置と、の間の差に関連する第2項を含む、
コンピュータプログラム。
【請求項5】
請求項4に記載のコンピュータプログラムであって、
前記第1顔は、N個(Nは2以上の整数)の顔を表す入力訓練画像を使用して前記検出処理を実行することによって検出される顔であり、
前記第2顔は、前記検出処理と前記第1画像処理と前記第2画像処理と前記合成処理とを含む処理を前記入力訓練画像を使用して実行することによって生成される出力訓練画像から検出される1以上の顔のうち、前記第1顔と同じ個体の顔である、
コンピュータプログラム。
【請求項6】
請求項5に記載のコンピュータプログラムであって、
前記第2顔は、前記出力訓練画像から検出される前記1以上の顔のうち、前記第1顔を囲む第1矩形と前記出力訓練画像から検出される顔を囲む第2矩形との間の位置の差が小さいことを示す位置条件を満たす顔である、
コンピュータプログラム。
【請求項7】
画像処理装置であって、
生物の顔を表す第1領域を検出する検出処理を、入力画像を使用して実行する検出部と、
前記入力画像の前記第1領域の第1画像を使用して第1画像処理を実行することによって、第1処理済画像を生成する第1生成部であって、前記第1画像処理は、第1スタイル変換処理を含む、前記第1生成部と、
前記入力画像の第2領域の第2画像を使用して第2画像処理を実行することによって、第2処理済画像を生成する第2生成部であって、前記第2領域は、前記第1領域を除いた残りの領域の少なくとも一部を含む領域であり、前記第2画像処理は、第2スタイル変換処理を含み、前記第1画像処理と前記第2画像処理とのうちの一方である第1特定処理は、前記第1画像処理と前記第2画像処理とのうちの前記第1特定処理とは異なる第2特定処理には含まれない処理を含む、前記第2生成部と、
前記第1処理済画像と前記第2処理済画像との合成処理を実行することによって、出力画像を生成する第3生成部と、
を備える、画像処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書は、画像のスタイル変換に関する。
【背景技術】
【0002】
機械学習モデルを使用して画像のスタイル変換を行う技術が知られている。例えば、以下の論文は、画像のスタイルを他の画像に転写するニューラルネットワークを開示している。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】Leon A. Gatys, Alexander S. Ecker and Matthias Bethge. "Image Style Transfer Using Convolutional Neural Networks." 2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR) (2016), DOI:10.1109/CVPR.2016.265
【発明の概要】
【発明が解決しようとする課題】
【0004】
画像は、種々の被写体を表し得る。例えば、画像は、人やペット(例えば、犬、猫)など、顔を有する種々の生物を表し得る。ところが、従来のスタイル変換では、顔は考慮されていなかった。
【0005】
本明細書は、顔を考慮して画像のスタイル変換を行う技術を開示する。
【課題を解決するための手段】
【0006】
本明細書に開示された技術は、以下の適用例として実現することが可能である。
【0007】
[適用例1]コンピュータプログラムであって、生物の顔を表す第1領域を検出する検出処理を、入力画像を使用して実行する検出機能と、前記入力画像の前記第1領域の第1画像を使用して第1画像処理を実行することによって、第1処理済画像を生成する第1生成機能であって、前記第1画像処理は、第1スタイル変換処理を含む、前記第1生成機能と、前記入力画像の第2領域の第2画像を使用して第2画像処理を実行することによって、第2処理済画像を生成する第2生成機能であって、前記第2領域は、前記第1領域を除いた残りの領域の少なくとも一部を含む領域であり、前記第2画像処理は、第2スタイル変換処理を含み、前記第1画像処理と前記第2画像処理とのうちの一方である第1特定処理は、前記第1画像処理と前記第2画像処理とのうちの前記第1特定処理とは異なる第2特定処理には含まれない処理を含む、前記第2生成機能と、前記第1処理済画像と前記第2処理済画像との合成処理を実行することによって、出力画像を生成する第3生成機能と、をコンピュータに実現させる、コンピュータプログラム。
【0008】
この構成によれば、生物の顔を表す第1領域の第1画像を使用して、第1スタイル変換処理を含む第1画像処理が実行され、第1領域を除いた残りの領域の少なくとも一部を含む第2領域の第2画像を使用して、第2スタイル変換処理を含む第2画像処理が実行されるので、顔を考慮して画像のスタイル変換を行うことができる。
【0009】
なお、本明細書に開示の技術は、種々の態様で実現することが可能であり、例えば、画像処理方法および画像処理装置、それらの方法または装置の機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体(例えば、一時的ではない記録媒体)、等の形態で実現することができる。
【図面の簡単な説明】
【0010】
【
図1】一実施例としての画像処理装置を示す図である。
【
図2】スタイル変換モデルM2の例を示す図である。
【
図4】(A)は、調整済特徴マップtzの計算式の例の図である。(B)は、対象特徴マップtの計算式の図である。
【
図6】スタイル変換モデルM2の訓練処理の例を示すフローチャートの図である。
【
図7】スタイル変換モデルM2の訓練処理の例を示すフローチャートの図である。
【
図8】(A)-(D)は、訓練処理で処理される画像の例を示す図である。
【
図9】(A)、(B)は、ランドマークセットの例を示す図である。
【
図11】(A)は、顔の領域と顔のランドマークとの例を示す図である。(B)は、対応関係の例を示す図である。
【
図12】対応関係の決定処理の例を示すフローチャートである。
【
図13】(A)は、顔の領域と顔のランドマークとの別の例を示す図である。(B)は、対応関係の例を示す図である。
【
図14】(A)-(C)は、損失の計算式の例を示す図である。
【
図15】訓練済のスタイル変換モデルM2を使用する画像処理の例を示すフローチャートである。
【
図16】訓練済のスタイル変換モデルM2を使用する画像処理の例を示すフローチャートである。
【
図17】(A)-(D)は、画像処理で処理される画像の例を示す図である。
【発明を実施するための形態】
【0011】
A.第1実施例:
A1.装置構成:
図1は、一実施例としての画像処理装置を示す図である。本実施例では、画像処理装置200は、例えば、パーソナルコンピュータである。画像処理装置200は、生物の顔を表す画像のスタイル変換を行う画像処理装置の例である。
【0012】
画像処理装置200は、プロセッサ210と、記憶装置215と、表示部240と、操作部250と、通信インタフェース270と、を備えている。これらの要素は、バスを介して互いに接続されている。記憶装置215は、揮発性記憶装置220と、不揮発性記憶装置230と、を含んでいる。
【0013】
プロセッサ210は、データ処理を行うように構成された装置であり、例えば、CPUである。揮発性記憶装置220は、例えば、DRAMであり、不揮発性記憶装置230は、例えば、フラッシュメモリである。不揮発性記憶装置230は、プログラム231、232と、顔処理モデルM1と、スタイル変換モデルM2と、超解像モデルM3と、分割モデルM4と、を格納している。顔処理モデルM1は、顔検出モデルM1aと、ランドマーク検出モデルM1bと、を含んでいる。本実施例では、モデルM1-M4は、それぞれ、プログラムモジュールである。モデルM1-M4は、それぞれ、いわゆる機械学習モデルである。プログラム231、232とモデルM1-M4との詳細については、後述する。
【0014】
表示部240は、液晶ディスプレイ、有機ELディスプレイなどの、画像を表示するように構成された装置である。操作部250は、ボタン、レバー、表示部240上に重ねて配置されたタッチパネルなどの、ユーザによる操作を受け取るように構成された装置である。ユーザは、操作部250を操作することによって、種々の指示を画像処理装置200に入力可能である。通信インタフェース270は、他の装置と通信するためのインタフェースである。通信インタフェース270は、例えば、USBインタフェース、有線LANインタフェース、IEEE802.11の無線インタフェースのうちの1種以上を含む。
【0015】
A2.スタイル変換モデル:
図2は、スタイル変換モデルM2の例を示す図である。スタイル変換モデルM2は、スタイル画像sのスタイルでコンテンツ画像cをレンダリングすることによって、スタイル画像sのスタイルで表現される変換済コンテンツ画像g(tz)を生成する。このように、スタイル変換モデルM2は、スタイル画像sのスタイルをコンテンツ画像cに適用する。スタイル変換モデルM2は、コンテンツ画像の被写体の形状(例えば、エッジの形状)の変化を抑制しつつ、コンテンツ画像のスタイル変換を行う。本実施例では、スタイル変換モデルM2は、以下の論文に開示されるスタイル変換モデルである。この論文の技術は、adaptive instance normalization(AdaIN)と呼ばれる正規化を使用する。
Xun Huang and Serge Belongie, "Arbitrary Style Transfer in Real-time with Adaptive Instance Normalization", arXiv:1703.06868, 30 Jul. 2017, http://arxiv.org/abs/1703.06868
【0016】
スタイル変換モデルM2は、2個の入力層Li1、Li2と、エンコーダECと、正規化層NLと、デコーダDCと、を有している。各処理部Li1、Li2、EC、NL、DCには、「input」の欄と「output」の欄とが記されている。「input」の欄の括弧で挟まれる3個の数値の組み合わせは、入力されるデータのサイズを示している。「output」の欄の括弧で挟まれる3個の数値の組み合わせは、出力されるデータのサイズを示している。データのサイズは、(幅、高さ、チャンネル数)で表される。例えば、入力層Li1、Li2に入力される画像c、sは、それぞれ、256*256*3で表される。3個のチャンネルは、赤、緑、青の3色の成分を示している。データのサイズの左に記される「None」は、スタイル変換モデルM2の訓練のためのバッチサイズが任意に設定可能であることを、示している。
【0017】
エンコーダECは、256*256*3で表される画像を使用して、32*32*512で表される特徴マップを出力する。特徴マップは、エンコーダECに入力される画像の特徴を表している。コンテンツ特徴マップf(c)は、コンテンツ画像cを使用して出力される特徴マップであり、スタイル特徴マップf(s)は、スタイル画像sを使用して出力される特徴マップである。
【0018】
図3は、エンコーダECの例を示す図である。本実施例では、エンコーダECは、VGG-19と呼ばれる畳込ニューラルネットワーク(Convolution Neural Network)のうちの先頭からrelu4_1層までの部分と同じである(relu4_1層は、第4ブロックの第1畳込層からデータを出力するための活性化関数(ここでは、ReLU(Rectified Linear Unit))を示している)。ImageNetと呼ばれる画像データベースに登録された画像データを用いて訓練されたVGG-19の演算パラメータは、一般公開されている。本実施例では、エンコーダECの演算パラメータとして、公開された訓練済の演算パラメータが、使用される。これに代えて、エンコーダECは、スタイル変換モデルM2の訓練処理で訓練されてよい。
【0019】
エンコーダECは、上流側から順に並ぶ、入力層EL01、畳込層EL02、EL03、プーリング層EL04、畳込層EL05、EL06、プーリング層EL07、畳込層EL08、EL09、EL10、EL11、プーリング層EL12、畳込層EL13を有している。
【0020】
畳込層EL02、EL03、EL05、EL06、EL08、EL09、EL10、EL11、EL13のそれぞれの構成は、種々の構成であってよい。本実施例では、以下の構成が、共通に適用される。畳み込みのカーネル(フィルタとも呼ばれる)の幅*高さは、3*3である。ストライドは、1*1である。パディングの方法は、いわゆるゼロパディングである。本実施例では、畳込層からの出力マップ(画像、または、特徴マップ)の幅*高さが、畳込層に入力される入力マップ(画像、または、特徴マップ)の幅*高さと同じとなるように、パディングが行われる。具体的には、入力マップの境界(すなわち、輪郭)の周囲に、ゼロを示す1画素幅の領域が、補足される。活性化関数は、ReLUである。
【0021】
プーリング層EL04、EL07、EL12のそれぞれの構成は、特徴マップの幅と高さの一方または両方を低減する種々の構成であってよい。本実施例では、以下の構成が、共通に適用される。プーリングの方法は、いわゆる最大値プーリングである。プーリングのカーネル(フィルタとも呼ばれる)の幅*高さは、2*2である。ストライドは、2*2である。このようなプーリング層EL04、EL07、EL12は、幅と高さとを、それぞれ、半分に低減する。
【0022】
データの幅と高さとは、エンコーダECによって低減する。本実施例では、幅と高さとは、それぞれ、256から32に低減する。データのチャンネル数は、エンコーダECによって増大する。本実施例では、チャンネル数は、3から512に増大する。
【0023】
正規化層NL(
図2)は、コンテンツ特徴マップf(c)とスタイル特徴マップf(s)とを使用して、調整済特徴マップtzを出力する。
図4(A)は、調整済特徴マップtzの計算式の例の図である。調整済特徴マップtzは、対象特徴マップt(詳細は、後述)とコンテンツ特徴マップf(c)との荷重合計である。重みαは、対象特徴マップtの重みである。コンテンツ特徴マップf(c)の重みは、1-αである。重みαは、ゼロより大きく、1以下の値に、設定される。
【0024】
図4(B)は、対象特徴マップtの計算式の図である。対象特徴マップtの計算式は、AdaINの上記の論文のAdaIN層の計算式と同じである。計算式において、σは、標準偏差を示し、μは、平均を示している。標準偏差と平均とは、空間的な位置の全体で算出される。標準偏差と平均とは、チャンネル毎に、算出される。
【0025】
対象特徴マップtは、コンテンツ特徴マップf(c)の標準偏差と平均とを、スタイル特徴マップf(s)の標準偏差と平均とに合せることによって、生成される。このように、AdaINは、スタイル特徴マップf(s)のチャンネル毎の標準偏差と平均とをコンテンツ特徴マップf(c)に適用することによって、特徴空間におけるスタイル変換を行う。
【0026】
図4(A)に示すように、重みαが大きいほど、調整済特徴マップtzのうちの対象特徴マップtの割合が大きい。重みαが大きいほど、変換済コンテンツ画像g(tz)(
図2)のスタイルは、スタイル画像sのスタイルに近づく。このように、重みαは、スタイル変換の度合いを示している。重みαは、スタイル変換モデルM2の訓練時には、1に設定される。この場合、調整済特徴マップtz=対象特徴マップtである。訓練後の画像処理では、重みαは、ゼロより大きく、かつ、1以下の種々の値に設定されてよい。
【0027】
正規化層NL(
図2)は、コンテンツ特徴マップf(c)とスタイル特徴マップf(s)を使用して、対象特徴マップtを算出する(
図4(B))。そして、正規化層NLは、対象特徴マップtと、コンテンツ特徴マップf(c)と、重みαと、を使用して、調整済特徴マップtzを算出する(
図4(A))。対象特徴マップtと調整済特徴マップtzとのそれぞれのサイズは、特徴マップf(c)のサイズと同じである(本実施例では、32*32*512)。
【0028】
デコーダDCは、32*32*512で表される調整済特徴マップtzを使用して、256*256*3で表される変換済コンテンツ画像g(tz)を出力する。3個のチャンネルは、赤、緑、青の3色の成分を示している。
【0029】
図5は、デコーダDCの例を示す図である。デコーダDCのアーキテクチャは、エンコーダECのアーキテクチャをミラーリングしたものに、以下の修正したものである。
(1)畳込の前のゼロパディングは、リフレクションパディングに置換される。
(2)プーリングは、アップサンプリングに置換される。
【0030】
具体的には、デコーダDCは、上流側から順に並ぶ、入力層DL01、パディング層DL02、畳込層DL03、アップサンプリング層DL04、パディング層DL05、畳込層DL06、パディング層DL07、畳込層DL08、パディング層DL09、畳込層DL10、パディング層DL11、畳込層DL12、アップサンプリング層DL13、パディング層DL14、畳込層DL15、パディング層DL16、畳込層DL17、アップサンプリング層DL18、パディング層DL19、畳込層DL20、パディング層DL21、畳込層DL22を有している。
【0031】
パディング層DL02、DL05、DL07、DL09、DL11、DL14、DL16、DL19、DL21のそれぞれの構成は、種々の構成であってよい。本実施例では、以下の構成が、共通に適用される。パディングの方法は、いわゆるリフレクションパディングである。リフレクションパディングは、パディング層に入力される入力マップ(画像、または、特徴マップ)の境界の周りで内側の部分を外側に反射させることによって、境界の外側の部分の各画素の値を決定する。
【0032】
畳込層DL03、DL06、DL08、DL10、DL12、DL15、DL17、DL20、DL22のそれぞれの構成は、種々の構成であってよい。本実施例では、以下の構成が、共通に適用される。畳み込みのカーネル(フィルタとも呼ばれる)の幅*高さは、3*3である。ストライドは、1*1である。活性化関数は、ReLUである。畳込層DL03、DL06、DL08、DL10、DL12、DL15、DL17、DL20、DL22には、直前のパディング層DL02、DL05、DL07、DL09、DL11、DL14、DL16、DL19、DL21からの出力データが、それぞれ、入力される。
【0033】
本実施例では、畳込層からの出力マップ(画像、または、特徴マップ)の幅*高さが、畳込層の前のパディング層に入力される入力マップ(画像、または、特徴マップ)の幅*高さと同じとなるように、パディングが行われる。具体的には、入力マップの境界の周囲に、1画素幅の領域が、補足される。
【0034】
3個のアップサンプリング層DL04、DL13、DL18のそれぞれの構成は、特徴マップの幅と高さの一方または両方を増大する種々の構成であってよい。本実施例では、以下の構成が、共通に適用される。アップサンプリングの方法は、いわゆるニアレストアップサンプリング(nearest up sampling)である。アップサンプリング層DL04、DL13、DL18は、幅と高さとを、それぞれ、2倍に増大する。
【0035】
データの幅と高さとは、デコーダDCによって増大する。本実施例では、幅と高さとは、それぞれ、32から256に増大する。データのチャンネル数は、デコーダDCによって低減する。本実施例では、チャンネル数は、512から3に低減する。
【0036】
A3.スタイル変換モデルの訓練処理:
図6、
図7は、スタイル変換モデルM2の訓練処理の例を示すフローチャートである。
図7は、
図6の続きを示している。第1プログラム231(
図1)は、スタイル変換モデルM2の訓練処理のためのプログラムである。作業者は、訓練処理の開始指示を、操作部250を操作することによって、画像処理装置200に入力する。プロセッサ210は、開始指示に従って、スタイル変換モデルM2の訓練処理を開始する。
【0037】
S105では、プロセッサ210は、スタイル変換モデルM2(
図2)の複数の演算パラメータを初期化する。本実施例では、プロセッサ210は、各演算パラメータを、乱数を使用して、決定する。なお、エンコーダECの演算パラメータは、訓練済のVGG-19の対応する演算パラメータに設定される。
【0038】
S110では、プロセッサ210は、入力画像とスタイル画像とのペアのデータを取得する。
【0039】
図8(A)-
図8(D)は、訓練処理で処理される画像の例を示す図である。
図8(A)は、入力画像の例を示している。入力画像IM1は、第1方向Dx(ここでは、横方向)に平行な2辺と、第1方向Dxに垂直な第2方向Dy(ここでは、縦方向)に平行な2辺と、を有する矩形状の画像である。入力画像IM1は、第1方向Dxと第2方向Dyとに沿ってマトリクス状に並ぶ複数の画素のそれぞれの色値によって、表されている。本実施例では、色値は、R(赤)、G(緑)、B(青)の3個の成分値で表されている。各成分値は、例えば、0から255までの256段階で表されている。
【0040】
入力画像IM1は、5人の人物PR1-PR5の撮影画像である。入力画像IM1は、5人の人物PR1-PR5の5個の顔F1-F5の画像を、含んでいる。
【0041】
スタイル画像は、入力画像IM1のスタイルとは異なるスタイルを有する種々の画像であってよい。例えば、
図2のスタイル画像sと、
図8(A)の入力画像IM1とが、ペアを形成してよい。
【0042】
図示を省略するが、本実施例では、複数の入力画像のデータと複数のスタイル画像のデータとが、予め不揮発性記憶装置230に格納されている。複数の入力画像は、N人(Nはゼロ以上の整数)の人物のN個の顔を表す種々の画像を含んでいる。複数の入力画像は、複数の撮影画像を含んでよい。複数の入力画像の間で、人物の数Nは、異なってよい。なお、Nは、2以上の値に設定されてよい。複数のスタイル画像は、互いに異なるスタイルを有する複数の画像を含んでいる。スタイルは、筆跡、明るさの分布、色相の分布など、画像の表現に関する種々の観点から識別されてよい。
【0043】
S110(
図6)では、プロセッサ210は、予め決められたバッチサイズBS分のペアのデータを、不揮発性記憶装置230から取得する。バッチサイズBSは、任意の数であってよい(例えば、1、2、4、8、16のいずれか)。後述するS120からS250(
図7)までの処理は、取得された全てのペアのそれぞれに対して、実行される。なお、スタイル画像は、入力画像とは独立に、ランダムに選択されてよい。これに代えて、入力画像とスタイル画像との間の対応関係は、予め決められてよい。なお、同じスタイル画像が、複数のペアに含まれてよい。
【0044】
S120では、プロセッサ210は、入力画像から、顔の領域と顔のランドマークとを検出する。顔の領域の検出方法は、種々の方法であってよい。本実施例では、プロセッサ210は、訓練済の顔検出モデルM1a(
図1)を使用して、顔の領域を検出する。顔検出モデルM1aは、顔の領域を検出する種々のモデルであってよい。本実施例では、顔検出モデルM1aは、以下の論文に開示される「BlazeFace」と呼ばれる物体検出モデルである。
Valentin Bazarevsky, Yury Kartynnik, Andrey Vakunov, Karthik Raveendran and Matthias Grundmann, "BlazeFace: Sub-millisecond Neural Face Detection on Mobile GPUs", arXiv:1907.05047, 14 Jul. 2019, http://arxiv.org/abs/1907.05047
【0045】
図8(B)は、入力画像IM1から検出される顔の領域の例を示している。顔検出モデルM1aは、顔を囲む矩形の枠(バウンディングボックスと呼ばれる)を検出する。顔検出モデルM1aは、顔の画像から顔を示す適切なバウンディングボックスを検出するように、BlazeFaceの論文に記載の訓練方法によって、予め訓練される。プロセッサ210は、入力画像IM1を使用して顔検出モデルM1aの演算を実行することによって、5個の顔F1-F5に対応する5個のバウンディングボックスBp1-Bp5を検出し得る。
【0046】
以下、プロセッサ210は、検出されるバウンディングボックスに、1から始まる昇順の識別番号を付与することとする。バウンディングボックスの符号の「Bp」に続く数は、識別番号を示していることとする。
【0047】
プロセッサ210は、顔検出モデルM1aの演算を実行するために、入力画像のサイズ(具体的には、幅*高さ)を、顔検出モデルM1aによって受付可能なサイズに調整するサイズ調整を行う。サイズ調整は、例えば、解像度を変換する処理(リサイズ処理とも呼ばれる)を含んでよい(例えば、バイキュービック法やバイリニア法など)。また、入力画像のアスペクト比が、顔検出モデルM1aによって受付可能なアスペクト比と異なる場合、サイズ調整は、アスペクト比を調整する処理を含んでよい。プロセッサ210は、例えば、適切なアスペクト比に対して足りない領域に、所定の色(例えば、白、黒など)を有する画素を補足するパディング処理を実行してよい。
【0048】
顔のランドマークは、顎、鼻、目、眉、口など、顔の部分を示す点である。顔のランドマークの検出方法は、種々の方法であってよい。本実施例では、プロセッサ210は、ランドマーク検出モデルM1b(
図1)を使用して、ランドマークを検出する。ランドマーク検出モデルM1bは、顔のランドマークを検出する種々のモデルであってよい。本実施例では、ランドマーク検出モデルM1bは、以下の論文に開示される「Attention Mesh」と呼ばれる検出モデルである。
Ivan Grishchenko, Artsiom Ablavatski, Yury Kartynnik, Karthik Raveendra and Matthias Grundmann, "Attention Mesh: High-fidelity Face Mesh Prediction in Real-time", arXiv:2006.10962, 19 Jun. 2020, http://arxiv.org/abs/2006.10962
【0049】
Attention Meshモデルは、顔の複数の部分を示す複数の点のそれぞれの三次元座標を、二次元の画像から推定する。複数の点は、顔の三次元の形状を示す顔メッシュを形成する。ランドマーク検出モデルM1bは、顔の画像から適切な顔メッシュを推定するように、Attention Meshの論文に記載の訓練方法によって、予め訓練される。本実施例では、プロセッサ210は、顔メッシュを形成する複数の点のうち、顔の予め決められた複数の部分を示す複数の点のセットを、ランドマークセットとして採用する。
【0050】
図9(A)、
図9(B)は、ランドマークセットの例を示す図である。
図9(A)には、人物の顔Fhの画像IMhが示されている。本実施例では、68個の点P1-P68が、ランドマークセットLMとして使用される。点P1-P17の第1点セットPS1は、顎を示している。点P18-P22の第2点セットPS2は、右の眉を示している。点P23-P27の第3点セットPS3は、左の眉を示している。点P28-P36の第4点セットPS4は、鼻を示している。点P37-P42の第5点セットPS5は、右の目を示している。点P43-P48の第6点セットPS6は、左の目を示している。点P49-P68の第7点セットPS7は、口を示している。
【0051】
図9(B)は、ランドマークセットLMを示すデータの例を示している。数nPは、ランドマークセットLMに含まれる点の総数である(本実施例では、nP=68)。変数Pux、Puy(番号uは、1以上、nP以下の整数)は、u番目の点Puの第1方向Dxの座標と第2方向Dyの座標を示している。例えば、P3x、P3yは、3番の点P3の第1方向Dxの座標と第2方向Dyの座標を、それぞれ、示している。ランドマークセットLMは、nP個の点のそれぞれの第1方向Dxの座標と第2方向Dyの座標とを順に示すベクトルで表される。
【0052】
図8(B)は、入力画像IM1から検出される顔のランドマークの例を示している。ランドマークの検出は、バウンディングボックス毎に行われる。プロセッサ210は、第1バウンディングボックスBp1の画像を使用してランドマーク検出モデルM1bの演算を実行することによって、第1顔F1のランドマークセットLMp1を検出する。ランドマークセットLMp1は、68個の点P1-P68(
図9)を示している。他のバウンディングボックスBp2-Bp5からも、同様に、ランドマークセットLMp2-LMp5が検出される。ランドマークセットには、対応するバウンディングボックスのものと同じ識別番号が付与されることとする。ランドマークセットの符号の「LMp」に続く数は、識別番号を示していることとする。以下、入力画像から検出されるランドマークセットを、入力ランドマークセットとも呼ぶ。
【0053】
「BlazeFace」と「Attention Mesh」とによる顔の領域と顔のランドマークとの検出には、Google社の「MediaPipe」と呼ばれるライブラリが使用されてよい。顔検出モデルM1aとランドマーク検出モデルM1bとを含む顔処理モデルM1は、「MediaPipe」を使用して構成されてよい。
【0054】
S130(
図6)では、プロセッサ210は、入力画像とスタイル画像とのペアを使用して、スタイル変換モデルM2の演算を実行することによって、スタイル変換済の画像である処理済画像を生成する。スタイル変換モデルM2の訓練処理では、重みα(
図4(A))は、1に設定される。なお、プロセッサ210は、スタイル変換モデルM2に入力される画像のサイズ調整を行う。サイズ調整は、S120(
図6)で説明したサイズ調整と同様に、解像度変換処理と、アスペクト比を調整するためのパディング処理と、を含んでよい。
【0055】
図8(C)は、処理済画像の例を示している。処理済画像IM2は、入力画像IM1(
図8(A))から生成される画像を示している。図示するように、処理済画像IM2は、人物PR1-PR5を表している。人物PR1-PR5の顔Fs1-Fs5は、入力画像IM1のスタイルとは異なるスタイル(ここでは、スタイル画像のスタイル)で、表されている。以下、S130(
図6)で生成される処理済画像を、全体処理済画像とも呼ぶ。
【0056】
図8(C)の処理済画像IM2では、第2人物PR2の顔Fs2に含まれる部分(例えば、目など)の形状が、入力画像IM1(
図8(A))の顔F2の対応する部分の形状から、大幅に変化している。このような形状の変化は、種々の原因によって、引き起こされ得る。例えば、入力画像IM1内で、顔F2の大きさが小さい場合に、顔F2に含まれる部分の形状が、スタイル変換によって大きく変化し得る。
【0057】
S140(
図6)では、プロセッサ210は、S120で検出されるバウンディングボックスの総数Nfpがゼロよりも大きいか否かを判断する。総数Nfpがゼロよりも大きい場合(S140:Yes)、S150で、プロセッサ210は、Nfp個のバウンディングボックスから、未処理のボックスを、注目ボックスとして選択する。
【0058】
S160では、プロセッサ210は、入力画像から注目ボックスの画像である注目画像を抽出する。
【0059】
図10は、注目画像の処理の例を示す図である。図中には、注目ボックスBpkの画像である注目画像FIkが示されている。この注目画像FIkは、人物PRkの顔Fkを表している。
【0060】
S170(
図6)では、プロセッサ210は、注目画像の高解像度化処理を実行する。高解像度化処理は、画像の解像度(すなわち、画素密度)を大きくする種々の処理であってよい。本実施例では、プロセッサ210は、訓練済の超解像モデルM3(
図1)を使用して、高解像度の画像を生成する。超解像モデルM3は、高解像度の画像を生成する種々のモデルであってよい。本実施例では、超解像モデルM3は、以下の論文に開示される画像生成モデルである。この論文は、「PULSE」と呼ばれる技術を開示する。
Sachit Menon, Alexandru Damian, Shijia Hu, Nikhil Ravi and Cynthia Rudin, "PULSE: Self-Supervised Photo Upsampling via Latent Space Exploration of Generative Models", arXiv:2003.03808, 20 Jul. 2020, http://arxiv.org/abs/2003.03808
【0061】
この論文に記載の技術では、顔の自然な高解像度画像を生成するように訓練済の画像生成モデル(論文では、StyleGAN)を使用して、高解像度画像が生成される。生成された高解像度画像のダウンスケール(論文では、バイキュービック)によって得られる低解像度画像と、元の低解像度画像と、の間の差が小さくなるように、画像生成モデルに入力すべき潜在変数が探索される。探索された潜在変数を使用して画像生成モデルによって生成される高解像度画像が、低解像度画像に対応する高解像度画像として採用される。潜在変数の探索は、ロスが小さくなるように、行われる。ここで、ダウンスケールによって得られる低解像度画像と元の低解像度画像との間の差を示すダウンスケーリングロスと、自然な画像を生成する潜在変数を探索するためのクロスロス(geodesic cross lossとも呼ばれる)と、が使用される。
【0062】
本実施例では、超解像モデルM3は、顔の自然な高解像度画像を生成するように訓練済のStyleGANである。StyleGANの構成としては、例えば、以下の論文に開示の構成が採用される。
Tero Karras, Samuli Laine and Timo Aila, "A Style-Based Generator Architecture for Generative Adversarial Networks", arXiv:1812.04948, 29 Mar. 2019, http://arxiv.org/abs/1812.04948
超解像モデルM3は、この論文に記載の訓練方法によって、予め訓練される。
【0063】
プロセッサ210は、訓練済の超解像モデルM3を使用して、注目画像FIk(
図10)に対応する高解像度画像FIkaを生成する。高解像度画像FIkaの生成方法としては、PULSEの上記の論文に記載の方法が採用される。高解像度化処理による倍率は、1よりも大きい任意の値であってよい。例えば、幅と高さとのそれぞれが、4倍に増大されてよい。
【0064】
S180(
図6)では、プロセッサ210は、高解像度画像FIkaとスタイル画像とを使用して、スタイル変換済の画像である変換済画像を生成する。
図10の画像FIkbは、高解像度画像FIkaから生成される変換済画像の例を示している。変換済画像FIkbは、人物PRkを表している。人物PRkの顔Fzkは、入力画像IM1のスタイルとは異なるスタイル(ここでは、スタイル画像のスタイル)で、表されている。
【0065】
S180(
図6)のスタイル変換の方法は、S130のスタイル変換の方法と同じである。プロセッサ210は、高解像度画像FIkaとスタイル画像とを使用して、スタイル変換モデルM2の演算を実行することによって、変換済画像FIkbを生成する。スタイル画像としては、注目画像FIkを含む入力画像に対応するスタイル画像が使用される。プロセッサ210は、スタイル変換モデルM2に入力される画像のサイズ調整を行う。サイズ調整は、S120(
図6)で説明したサイズ調整と同様に、解像度変換処理と、アスペクト比を調整するためのパディング処理と、を含んでよい。本実施例では、スタイル変換モデルM2に入力される画像の幅と高さとは、注目画像FIk(
図10)の幅と高さよりも、それぞれ大きい。
【0066】
S180(
図6)でスタイル変換モデルM2に入力される画像中の顔のサイズ(例えば、幅と高さ)は、S130でスタイル変換モデルM2に入力される画像中の顔のサイズよりも、大きい。従って、S180では、S130と比べて、顔に含まれる部分(例えば、目など)の変形の可能性は、小さい。
【0067】
S190(
図6)では、プロセッサ210は、変換済画像FIkb(
図10)のセグメンテーション処理を実行する。本実施例では、S190のセグメンテーション処理は、顔を表す領域とその他の領域とを分割する。領域を分割する方法は、種々の方法であってよい。本実施例では、プロセッサ210は、訓練済の分割モデルM4(
図1)を使用して、顔の領域とその他の領域とを分割する。分割モデルM4は、領域を分割する種々のモデルであってよい。本実施例では、分割モデルM4は、以下の論文に開示される「FCN(fully convolutional network)」と呼ばれるモデルである。
Yuval Nirkin, Iacopo Masi, Anh Tuan Tran, Tal Hassner and Gerard Medioni, "On Face Segmentation, Face Swapping, and Face Perception", arXiv:1704.06729, 22 Apr. 2017, http://arxiv.org/abs/1704.06729
【0068】
この論文は、FCN-8s-VGGと呼ばれるアーキテクチャを提案している。本実施例では、分割モデルM4は、このアーキテクチャを有している。このモデルは、顔の見える部分を示す領域を、分割する。分割モデルM4は、この論文に記載の訓練方法によって、予め訓練される。
【0069】
プロセッサ210は、変換済画像FIkb(
図10)を使用して、分割モデルM4の演算を実行することによって、顔を表す領域と他の領域を分割する。
図10の画像SGIは、変換済画像FIkbから分割される2個の領域SG1、SG2を示している。第1領域SG1は、顔を表す領域であり、第2領域SG2は、その他の領域である。なお、本実施例では、分割モデルM4によって受付可能な画像のサイズは、スタイル変換モデルM2によって生成される画像(例えば、変換済画像FIkb)のサイズと同じである。
【0070】
S200(
図6)では、プロセッサ210は、変換済画像FIkbのマスキング処理を実行する。プロセッサ210は、S190で分割された第2領域SG2をマスクする。
図10の画像FIkcは、マスク済画像の例を示している。マスク済画像FIkcは、第1領域SG1の画像(すなわち、顔の画像)を表している。第2領域SG2は、マスクされている。
【0071】
S210(
図6)では、プロセッサ210は、マスク済の画像、すなわち、スタイル変換済の顔の画像の低解像度化処理を実行する。
図10の画像FIkdは、低解像度化処理によって生成される画像である処理済画像の例を示している(以下、顔処理済画像と呼ぶ)。この顔処理済画像FIkdは、マスク済画像FIkcから生成される画像を示している。顔処理済画像FIkdのサイズ(すなわち、幅と高さ)は、注目画像FIkのサイズと同じである。低解像度化処理(ダウンスケールとも呼ばれる)は、解像度を低減する種々の処理であってよい(例えば、ニアレストネイバ、バイリニア、バイキュービックなど)。
【0072】
マスク済画像FIkcのアスペクト比は、注目画像FIkのアスペクト比と異なり得る。例えば、マスク済画像FIkcは、S180でのサイズ調整のパディング処理によって補足された部分を含み得る。プロセッサ210は、補足された部分を削除することによって、顔処理済画像FIkdを生成する。顔処理済画像FIkd内の顔の位置と大きさは、注目画像FIk内の顔の位置と大きさと、それぞれ、実質的に同じである。
【0073】
S220(
図6)では、プロセッサ210は、全てのバウンディングボックスの処理が完了したか否かを判断する。未処理のバウンディングボックスが残っている場合(S220:No)、プロセッサ210は、S150へ移行して、未処理のバウンディングボックスを処理する。
【0074】
全てのバウンディングボックスの処理が完了した場合(S220:Yes)、S230(
図7)で、プロセッサ210は、スタイル変換済の顔の画像を、スタイル変換済の入力画像(例えば、全体処理済画像IM2(
図8(C))の対応する位置に重畳することによって、出力画像を生成する。すなわち、プロセッサ210は、スタイル変換済の顔の画像とスタイル変換済の入力画像とを合成することによって、出力画像を生成する。
【0075】
図8(D)は、出力画像の例を示している。出力画像IM3は、S130(
図6)で生成される全体処理済画像IM2(
図8(C))の顔Fs1-Fs5の領域に、S210で生成される顔Fz1-Fz5の画像を、それぞれ、重畳することによって、生成される。例えば、
図10の処理済画像FIkdが、入力画像IM1(
図8(B))の第2バウンディングボックスBp2に対応すると仮定する。この場合、プロセッサ210は、処理済画像FIkdのうちの第1領域SG1の画像(すなわち、顔Fzkの画像)を、処理済画像IM2(
図8(C))のバウンディングボックスBp2内の第1領域SG1に対応する領域に、重畳する。S180(
図6)で説明したように、S180では、S130と比べて、顔に含まれる部分(目など)の変形の可能性は小さい。従って、
図8(C)の顔Fs2のように、全体処理済画像IM2内の顔に含まれる部分が大きく変形している場合であっても、プロセッサ210は、顔の変形が小さい出力画像IM3を生成できる。
【0076】
S240(
図7)では、プロセッサ210は、出力画像から、顔の領域と顔のランドマークとを検出する。S240の処理は、入力画像の代わりに出力画像が使用される点を除いて、S120の処理と同じである。以下、出力画像から検出されるランドマークセットを、出力ランドマークセットとも呼ぶ。
【0077】
図11(A)は、出力画像IM3から検出される顔の領域と顔のランドマークとの例を示している。
図11(A)の例では、出力画像IM3からは、5個の顔Fz1-Fz5の画像に対応する5個のバウンディングボックスBq1-Bq5が検出される。また、5個のバウンディングボックスBq1-Bq5に対応する5個のランドマークセットLMq1-LMq5が検出される。バウンディングボックスの符号の「Bq」に続く数は、識別番号を示している。ランドマークセットの符号の「LMq」に続く数は、識別番号を示している。
【0078】
S250(
図7)では、プロセッサ210は、入力画像IM1と出力画像IM3との間で、同一人物の顔の対応関係を決定する。後述するように、プロセッサ210は、損失が小さくなるように、スタイル変換モデルM2を訓練する。本実施例では、損失は、同一人物の入力ランドマークセットと出力ランドマークセットとの間の差を示すランドマーク損失を含んでいる。ランドマーク損失の算出のために、プロセッサ210は、入力画像IM1と出力画像IM3との間で、同一人物のランドマークセットの対応関係、すなわち、同一人物のバウンディングボックスの対応関係を、決定する。
【0079】
図12は、対応関係の決定処理の例を示すフローチャートである。本実施例では、プロセッサ210は、入力画像IM1(
図8(B))から検出されるバウンディングボックス(入力ボックスと呼ぶ)と、出力画像IM3(
図11(A))から検出されるバウンディングボックス(出力ボックスと呼ぶ)と、のペアのIoU(Intersection over Union)を使用して、対応関係を決定する。IoUは、2個の領域の共通部分の面積を、2個の領域の和集合の領域の面積で除算して得られる比率である。IoUは、2個のボックスの間の一致の程度を示している。面積は、例えば、画素数で表されてよい。プロセッサ210は、閾値より大きいIoUを有する入力ボックスと出力ボックスとのペアが同一人物の顔を示していることとして、対応関係を決定する。
【0080】
S310では、プロセッサ210は、入力画像IM1(
図8(B))の入力ボックスのうちの注目入力ボックスBpiの番号iを1に初期化する。S320では、IoUのリストLiouを初期化する。リストLiouは、注目入力ボックスBqiと各出力ボックスとのIoUのリストである。例えば、各出力ボックスのIoUは、それぞれ、ゼロに初期化される。
【0081】
S330では、プロセッサ210は、出力画像IM3(
図11(A))の出力ボックスのうちの注目出力ボックスBqjの番号jを1に初期化する。S340では、プロセッサ210は、注目入力ボックスBpiと注目出力ボックスBqjとのIoU(i,j)を算出する。そして、プロセッサ210は、リストLiouのj番のデータLiou(j)を、算出したIoU(i,j)に設定する。
【0082】
S350では、プロセッサ210は、全ての出力ボックスが処理されたか否かを判断する。未処理の出力ボックスが残っている場合(S350:No)、プロセッサ210は、S360で注目出力ボックスBqjの番号jに1を加算し、S340へ移行する。
【0083】
全ての出力ボックスが処理された場合(S350:Yes)、S370で、プロセッサ210は、リストLiouを参照して最大IoUを取得する。S380で、プロセッサ210は、最大IoUの注目出力ボックスの番号vを取得する。S390で、プロセッサ210は、最大IoUが閾値TH1よりも大きいか否かを判断する。閾値TH1は、同一人物を示すボックスBpi、BqjのIoUが閾値TH1よりも大きく、かつ、異なる人物を示すボックスBpi、BqjのIoUが閾値TH1よりも小さくなるように、予め実験的に決定される(例えば、TH1=0.4)
【0084】
最大IoUが閾値TH1よりも大きい場合(S390:Yes)、S400で、プロセッサ210は、i番の入力ボックスBpiの入力ランドマークセットLMpiに対応する対応ランドマークセットLMriを、最大IoUの注目出力ボックスBqvの出力ランドマークセットLMqvに設定する。そして、プロセッサ210は、S420へ移行する。
【0085】
S420では、プロセッサ210は、全ての入力ボックスが処理されたか否かを判断する。全ての入力ボックスが処理された場合(S420:Yes)、プロセッサ210は、
図12の処理、すなわち、
図7のS250の処理を終了する。未処理の入力ボックスが残っている場合(S420:No)、プロセッサ210は、S430で注目入力ボックスBpiの番号iに1を加算し、S320へ移行する。
【0086】
図11(B)は、対応関係の例を示す図である。この対応関係は、
図8(B)の検出結果と
図11(A)の検出結果とから導かれる対応関係の例を示している。図中には、最大IoUを形成する入力ボックスBp1-Bp5と出力ボックスBq1-Bq5とのペアの位置関係の例が示されている。ここで、同じ番号の入力ボックスと出力ボックスとが、同一人物を示していることとする。この場合、同じ番号の入力ボックスと出力ボックスとは、画像IM1、IM3上で、実質的に同じ位置に配置され、実質的に同じ形状を有している。
図11(B)の上部には、第1入力ボックスBp1と第1出力ボックスBq1との位置関係が示されている。第1入力ボックスBp1と第1出力ボックスBq1とは、実質的に同じ位置に配置され、実質的に同じ形状を有している。第1入力ボックスBp1と第1出力ボックスBq1とのペアのIoU(1,1)は、閾値TH1よりも大きい。従って、第1入力ランドマークセットLMp1に対応する第1対応ランドマークセットLMr1は、第1出力ボックスBq1の出力ランドマークセットLMq1に設定される。他の入力ボックスについても、同様に、対応ランドマークセットが設定される。i番の対応ランドマークセットLMriは、同じ番号i(すなわち、同じ人物)の出力ランドマークセットLMqiに設定される。
【0087】
図13(A)は、出力画像IM3から検出される顔の領域と顔のランドマークとの別の例を示している。
図11(A)の検出結果との違いは、第2人物PR2の顔Fz2に対応するバウンディングボックスが検出されていない点である。出力ボックスBq2-Bq4は、人物PR3-PR5に、それぞれ対応している(出力ボックスの符号の番号は、人物の符号の番号から1ずれている)。このように、S120(
図6)で検出された顔が、S240(
図7)では検出されない場合がある。
【0088】
図13(B)は、
図12の処理で決定される対応関係の例を示す図である。この対応関係は、
図8(B)の検出結果と
図13(A)の検出結果とから導かれる対応関係の例を示している。
図13(B)の上部には、第2入力ボックスBp2の対応関係が示されている。
図13(A)に示すように、第2入力ボックスBp2に対応する出力ボックスは、検出されていない。従って、第2入力ボックスBp2と出力ボックスBqvとのペアの最大IoU(2,v)は、閾値TH1よりも小さい。
【0089】
最大IoUが閾値TH1以下である場合(
図12:S390:No)、S410で、プロセッサ210は、i番の対応ランドマークセットLMriを、出力ランドマークセットではなく、i番の入力ランドマークセットLMpiに設定する。そして、プロセッサ210は、S420へ移行する。
【0090】
図13(B)に示すように、第2入力ボックスBp2の最大IoU(2,v)は閾値TH1よりも小さい。従って、第2入力ランドマークセットLMp2に対応する対応ランドマークセットLMr2は、元の第2入力ランドマークセットLMp2に設定される。
【0091】
他の人物PR1、PR3-PR5に関しては、入力ランドマークセットに対応する対応ランドマークセットは、同一人物の出力ランドマークセットに設定される。例えば、第3入力ボックスBp3の第3入力ランドマークセットLMp3に対応する対応ランドマークセットLMr3は、同一人物の第2出力ボックスBq2の出力ランドマークセットLMq2に設定される。
【0092】
このように、
図12の処理(すなわち、
図7のS250の処理)では、プロセッサ210は、入力ランドマークセット(
図8(B))に、同一人物の出力ランドマークセット(
図11(A)、
図13(A))を、対応付ける(
図12:S400)。出力画像IM3から同一人物のランドマークセットが検出されない場合、プロセッサ210は、入力ランドマークセットに対応する対応ランドマークセットを、同じ入力ランドマークセットに設定する(
図12:S410)。この理由については、後述する。
【0093】
図12の処理、すなわち、
図7のS250の処理の後、プロセッサ210は、S260へ移行する。また、S120(
図6)で検出されるバウンディングボックスの総数Nfpがゼロである場合(S140:No)、プロセッサ210は、S260へ移行する。S260では、プロセッサ210は、損失を算出し、スタイル変換モデルM2(
図2)の演算パラメータを損失が小さくなるように調整する。本実施例では、プロセッサ210は、訓練済のエンコーダECを使用して、デコーダDCの演算パラメータを調整する。
【0094】
図14(A)-
図14(C)は、損失の計算式の例を示す図である。
図14(A)に示すように、損失L(全体損失Lとも呼ぶ)は、コンテンツ損失Lcと、スタイル損失Lsと、顔個数損失Lnと、ランドマーク損失Llと、の重み付き合計値である。損失Lc、Ls、Ln、Llには、重み1、λs、λn、λlが、それぞれ付されている。可変値である重みλs、λn、λlは、訓練済のスタイル変換モデルM2が適切にスタイル変換を行うように、予め実験的に決定される。
【0095】
コンテンツ損失Lcとスタイル損失Lsとは、AdaINの上記の論文に記載のコンテンツ損失Lcとスタイル損失Lsと、それぞれ同じである。
【0096】
コンテンツ損失Lcは、変換済コンテンツ画像g(t)(
図2)がエンコーダECに入力される場合にエンコーダECから出力される特徴マップf(g(t))と、対象特徴マップtと、の間の差を示している。
【0097】
スタイル損失Lsは、変換済コンテンツ画像g(t)がエンコーダECに入力される場合にエンコーダECの複数の層から出力されるデータと、スタイル画像sがエンコーダECに入力される場合にエンコーダECの複数の層から出力されるデータと、の間の差を示している。差としては、平均の差と標準偏差の差とが使用される。エンコーダECの複数の層としては、例えば、relu1_1, relu2_1, relu3_1, relu4_1の4個の層が採用される。relu1_1, relu2_1, relu3_1, relu4_1は、第1-第4ブロックの第1畳込層EL02、EL05、EL08、EL13(
図3)の活性化関数を、それぞれ示している。
【0098】
図14(B)は顔個数損失Lnの計算式の例を示している。入力顔数Nfpは、
図6のS120で入力画像(例えば、入力画像IM1(
図8(B))から検出されるバウンディングボックスの総数である。出力顔数Nfqは、
図7のS240で出力画像(例えば、出力画像IM3(
図11(A)、
図13(A))から検出されるバウンディングボックスの総数である。顔個数損失Lnは、入力顔数Nfpと出力顔数Nfqとの間の差を示す種々の値であってよい。本実施例では、顔個数損失Lnは、バウンディングボックスの総数の差の二乗を、入力顔数Nfpで除算することによって、算出される。顔個数損失Lnを含む全体損失Lが小さくなるようにスタイル変換モデルM2が訓練される場合、スタイル変換モデルM2によるスタイル変換によってバウンディングボックスの総数が変化する可能性は、低減する。例えば、
図13(A)の検出結果のように、第2人物PR2のバウンディングボックスが検出されなくなる可能性は、低減する。なお、入力顔数Nfpがゼロである場合(
図6:S140:No)、顔個数損失Lnはゼロに設定される。
【0099】
図14(C)は、ランドマーク損失Llの計算式の例を示している。d(LMpi、LMri)は、スタイル変換前の顔画像の入力ランドマークセットLMpiと、スタイル変換済の顔画像の対応ランドマークセットLMriと、の間の距離を示している。
図9(B)に示すように、本実施例では、ランドマークセットLMpi、LMriは、それぞれ、ベクトルで表される。距離dは、ベクトルの要素の差分を表す種々の値であってよい。本実施例では、距離dは、ユークリッド距離である。大きい距離d(LMpi、LMri)は、顔に含まれる部分(例えば、目)のスタイル変換による変形の度合いが大きいことを示している。小さい距離d(LMpi、LMri)は、顔に含まれる部分のスタイル変換による変形の度合いが小さいことを示している。
【0100】
R(LMpi)は、入力ランドマークセットLMpiによって示される顔の大きさを示している。大きさRは、顔の大きさを表す種々の値であってよい。本実施例では、大きさR(LMpi)は、入力ランドマークセットLMpiに対応する入力ボックスBpiの対角線の長さである。
【0101】
ランドマーク損失Llは、顔の大きさRで正規化された距離dの平均である。ここで、平均は、入力画像(例えば、入力画像IM1(
図8(B)))から検出されるNfp個の顔の平均である。顔の大きさRで正規化する理由は、複数の顔の間の大きさの違いの影響を緩和するためである。ランドマーク損失Llを含む全体損失Lが小さくなるようにスタイル変換モデルM2が訓練される場合、顔に含まれる部分がスタイル変換モデルM2によるスタイル変換によって変形する可能性は、低減する。なお、入力顔数Nfpがゼロである場合(
図6:S140:No)、ランドマーク損失Llはゼロに設定される。
【0102】
S410(
図12)、
図13(A)で説明したように、入力ランドマークセットLMpiの人物と同一の人物の出力ボックス(ひいては、出力ランドマークセット)が、出力画像から検出されない場合がある。この場合、対応ランドマークセットLMriは、入力ランドマークセットLMpiと同じである。従って、距離dはゼロである。仮に、同一人物の出力ボックスが出力画像から検出されない場合に距離dが増大すると仮定する。この場合、顔に含まれる部分の変形とは異なる理由(すなわち、同一人物の出力ボックスが検出されないこと)に起因して、ランドマーク損失Llが増大する。このようなランドマーク損失Llは、スタイル変換モデルM2の適切な訓練を阻害し得る。本実施例では、そのような不具合の可能性は、低減する。
【0103】
プロセッサ210は、バッチサイズBS分のペア(
図6:S110)のそれぞれの全体損失Lを算出する。そして、プロセッサ210は、BS個の全体損失Lを使用して、調整用損失を算出する。調整用損失は、例えば、BS個の全体損失Lの平均値である。プロセッサ210は、調整用損失が小さくなるように、予め決められたアルゴリズムに従って、スタイル変換モデルM2の複数の演算パラメータを調整する。アルゴリズムとしては、例えば、誤差逆伝播法と勾配降下法とを使用したアルゴリズムが採用されてよい。また、プロセッサ210は、いわゆるAdamの最適化を行ってよい。
【0104】
S270(
図7)では、プロセッサ210は、訓練の終了条件が満たされるか否かを判断する。終了条件は、スタイル変換モデルM2が適切に訓練されたことを示す任意の条件であってよい。本実施例では、終了条件は、エポック数の訓練が終了することである。図示を省略するが、プロセッサ210は、1エポック毎に、各バッチの入力画像とスタイル画像のペアのセットを変更してよい。エポック数は、スタイル変換モデルM2を適切に訓練できるように、実験的に決定される。
【0105】
なお、訓練の終了条件は、他の条件であってよい。例えば、終了条件は、訓練に使用されていない所定数の入力画像とスタイル画像とのペアを使用して算出される全体損失Lのそれぞれが、所定の閾値以下であることであってよい。
【0106】
訓練が終了していないと判断される場合(S270:No)、プロセッサ210は、S110(
図6)へ移行し、入力画像とスタイル画像との新たなペアを使用して、スタイル変換モデルM2を訓練する。訓練が終了したと判断される場合(S270:Yes)、S280で、プロセッサ210は、訓練済のスタイル変換モデルM2を示すデータを、記憶装置215(ここでは、不揮発性記憶装置230)に格納する。そして、プロセッサ210は、訓練処理(
図6、
図7)を終了する。
【0107】
A4.画像処理:
図15、
図16は、訓練済のスタイル変換モデルM2を使用する画像処理の例を示すフローチャートである。
図16は、
図15の続きを示している。第2プログラム232(
図1)は、画像処理のためのプログラムである。ユーザは、画像処理の開始指示を、操作部250を操作することによって、画像処理装置200に入力する。プロセッサ210は、開始指示に従って、画像処理を開始する。この画像処理は、入力画像とスタイル画像とを使用して、スタイル画像のスタイルで表現される変換済画像を生成する。
【0108】
本実施例の画像処理は、
図6、
図7の訓練処理の複数のステップS105-S280のうちの一部の複数のステップを使用して構成されている。
図15、
図16において、訓練処理のステップに対応するステップの符号は、
図6、
図7の対応するステップの符号の末尾に文字「a」を付加したものである。例えば、S120aは、
図6のS120に対応している。
【0109】
S108では、プロセッサ210は、入力画像とスタイル画像との処理対象のペアのデータを取得する。例えば、プロセッサ210は、ユーザによって指定されるデータを、記憶装置(例えば、不揮発性記憶装置230、通信インタフェース270に接続される図示しない記憶装置、など)から、取得する。
【0110】
図17(A)-
図17(D)は、画像処理で処理される画像の例を示す図である。
図17(A)は、入力画像の例を示している。入力画像IMa1は、5人の人物PRa1-PRa5の撮影画像である。入力画像IMa1は、5人の人物PRa1-PRa5の5個の顔Fa1-Fa5の画像を、含んでいる。
【0111】
スタイル画像は、入力画像IMa1のスタイルとは異なるスタイルを有する種々の画像であってよい。例えば、
図2のスタイル画像sと、
図17(A)の入力画像IMa1とが、ペアを形成してよい。
【0112】
S120a(
図15)では、プロセッサ210は、入力画像から、顔の領域を検出する。顔の領域の検出方法は、
図6のS120での検出方法と同じである。なお、S120aでは、顔のランドマークの検出は、省略される。
【0113】
図17(B)は、入力画像IMa1から検出される顔の領域の例を示している。プロセッサ210は、入力画像IMa1を使用して顔検出モデルM1aの演算を実行することによって、5個の顔Fa1-Fa5に対応する5個のバウンディングボックスBap1-Bap5を検出する。
【0114】
S130a(
図15)では、プロセッサ210は、入力画像とスタイル画像とのペアを使用して、訓練済のスタイル変換モデルM2の演算を実行することによって、スタイル変換済の画像である処理済画像を生成する。デコーダDC(
図2)から出力される変換済コンテンツ画像g(tz)が、処理済画像である。
【0115】
重みα(
図4(A))は、ゼロより大きく、かつ、1以下の値に、予め決定される。これに代えて、プロセッサ210は、ユーザによって指定された重みαを使用してよい。重みαが大きいほど、調整済特徴マップtz(
図2)に対する対象特徴マップtの割合が大きい。従って、重みαが大きいほど、処理済画像(ここでは、デコーダDCから出力される変換済コンテンツ画像g(tz))のスタイルは、スタイル画像のスタイルに近づく。このように、ユーザは、重みαを調整することによって、スタイル変換の度合いを調整できる。
【0116】
図17(C)は、処理済画像の例を示している。処理済画像IMa2は、入力画像IMa1(
図17(A))から生成される画像を示している。図示するように、処理済画像IMa2は、人物PRa1-PRa5を表している。人物PRa1-PRa5の顔Fas1-Fas5は、入力画像IMa1のスタイルとは異なるスタイル(ここでは、スタイル画像のスタイル)で、表されている。
【0117】
S140a(
図15)では、プロセッサ210は、S120aで検出されるバウンディングボックスの総数Nfpがゼロよりも大きいか否かを判断する。
【0118】
総数Nfpがゼロよりも大きい場合(S140a:Yes)、プロセッサ210は、S150aへ移行する。S150a-S220aの処理は、
図6のS150-S220の処理と、それぞれ同じである。プロセッサ210は、バウンディングボックスBap1-Bap5(
図17(B))のそれぞれの画像に対して、高解像度化処理(S170a)、スタイル変換処理(S180a)、セグメンテーション処理(S190a)、マスキング処理(S200a)、低解像度化処理(S210a)を、実行する。これにより、
図10の顔処理済画像FIkdと同様にスタイルが適切に変換された顔の画像が、生成される。
【0119】
全てのバウンディングボックスの処理が完了した場合(S220a:Yes)、S230a(
図16)で、プロセッサ210は、スタイル変換済の顔の画像を、スタイル変換済の入力画像(例えば、全体処理済画像IMa2(
図17(C))の対応する位置に重畳することによって、出力画像を生成する。
【0120】
図17(D)は、出力画像の例を示している。出力画像IMa3は、S130a(
図15)で生成される全体処理済画像IMa2(
図17(C))の顔Fas1-Fas5の領域に、S170a-S210a(
図15)の処理によって生成される顔Faz1-Faz5の画像を、それぞれ、重畳することによって、生成される。S170a-S210aでは、
図10で説明したように、高解像度化された顔の画像を使用して、顔の画像のスタイル変換が行われる。従って、
図8(C)の顔Fs2のような変形の可能性は、低減される。このように、プロセッサ210は、入力画像IMa1内の顔が小さい場合であっても、顔の変形を抑制しつつ、スタイル変換済の出力画像IMa3を生成できる。
【0121】
S290(
図16)では、プロセッサ210は、出力画像のデータを、記憶装置215(例えば、不揮発性記憶装置230に格納する。そして、プロセッサ210は、
図15、
図16の画像処理を終了する。
【0122】
入力顔数Nfpがゼロである場合(
図15:S140a:No)、プロセッサ210は、S150a-S230a(
図15、
図16)をスキップして、S290に移行する。この場合、S290では、プロセッサ210は、S130a(
図15)で生成される処理済画像を、出力画像として採用する。プロセッサ210は、出力画像のデータを記憶装置に格納し、画像処理を終了する。
【0123】
以上のように、本実施例では、画像処理装置200のプロセッサ210は、以下の処理を実行する。S120a(
図15)では、プロセッサ210は、人物の顔を表す領域(第1領域と呼ぶ)を検出する検出処理を、入力画像を使用して実行する。
図17(B)の入力画像IMa1から検出されるバウンディングボックスBap1-Bap5のそれぞれの領域は、第1領域の例である。S150a-S210a(
図15)では、プロセッサ210は、入力画像の第1領域の第1画像を使用して画像処理を実行することによって、処理済画像を生成する。処理済画像は、スタイルが変更された顔の画像である(例えば、
図17(D)の顔Faz1-Faz5の画像)。以下、S210aで生成される処理済画像を、第1処理済画像と呼ぶ。S150a-S210aの処理の全体を、第1画像処理IP1aと呼ぶ。第1画像処理IP1aは、スタイル変換処理(S180a)を含んでいる(第1スタイル変換処理と呼ぶ)。
【0124】
S130aでは、プロセッサ210は、入力画像IMa1(
図17(A))の第2領域の第2画像を使用して画像処理を実行することによって、処理済画像IMa2(
図17(C))を生成する。本実施例では、第2領域は、入力画像IMa1の全領域である。第2画像は、入力画像と同じである。この第2領域は、第1領域を除いた残りの領域の少なくとも一部を含んでいる。以下、S130aで生成される処理済画像を、第2処理済画像と呼ぶ。S130aの画像処理を、第2画像処理IP2aと呼ぶ。第2画像処理IP2aは、スタイル変換処理を含んでいる(第2スタイル変換処理と呼ぶ)。画像処理IP1a、IP2aのうちの一方である第1画像処理IP1aは、第2画像処理IP2aには含まれない処理(例えば、高解像度化処理(S170a)を含んでいる。
【0125】
S230a(
図16)では、プロセッサ210は、第1処理済画像(例えば、
図17(D)の顔Faz1-Faz5の画像)と第2処理済画像(例えば、
図17(C)の処理済画像IMa2)との合成処理を実行することによって、出力画像(例えば、
図17(D)の出力画像IMa3)を生成する。
【0126】
このように、プロセッサ210は、顔の画像を使用する第1画像処理IP1aを、他の領域の画像を使用する第2画像処理IP2aとは別に、実行する。従って、プロセッサ210は、顔を考慮して画像のスタイル変換を行うことができる。
【0127】
また、第1画像処理IP1a(
図15)は、高解像度化処理(S170a)を含んでいる。S170a-S180aの処理は、
図6のS170-S180の処理と同じである(ただし、処理対象の入力画像とスタイル画像とは、
図6の処理対象とは異なり得る)。S180(
図6)でスタイル変換モデルM2に入力される画像の幅と高さとは、バウンディングボックスに囲まれる画像(例えば、
図10の注目画像FIk)の幅と高さよりも、それぞれ大きい。S180a(
図15)についても、同じである。このように、第1スタイル変換処理(S180a)は、入力画像上の第1領域の第1画像の解像度よりも高い解像度の画像のスタイル変換処理を含んでいる。従って、顔に含まれる部分の第1スタイル変換処理(S180a)による変形の可能性は、低減する。
【0128】
また、第2スタイル変換処理(S130a)は、訓練済のスタイル変換モデルM2によるスタイル変換処理を含んでいる。
図2で説明したように、スタイル変換モデルM2は、画像のスタイル変換を行う。スタイル変換モデルM2は、スタイル変換モデルの例である。
図6、
図7、
図14(A)で説明したように、訓練済のスタイル変換モデルM2は、全体損失Lが小さくなるように、訓練されている。全体損失Lは、顔個数損失Lnを含んでいる。顔個数損失Ln(
図14(B))は、スタイル変換モデルM2に入力される入力画像から検出される顔の総数Nfpと、スタイル変換モデルM2によるスタイル変換済の画像から検出される顔の総数Nfqと、の間の差に関連する第1項の例である。この構成によれば、検出される顔の総数を変化させるような不適切なスタイル変換の可能性は、低減する。例えば、入力画像のうちの背景の画像が、スタイル変換によって顔のような画像に変換される可能性は、低減する。
【0129】
また、第1スタイル変換処理(180a)は、訓練済のスタイル変換モデルM2によるスタイル変換処理を含んでいる。スタイル変換モデルM2は、スタイル変換モデルの例である。
図6、
図7、
図14(A)で説明したように、訓練済のスタイル変換モデルM2は、全体損失Lが小さくなるように、訓練されている。全体損失Lは、ランドマーク損失Llを含んでいる。ランドマーク損失Ll(
図14(C))は、入力ランドマークセットLMpiと対応ランドマークセットLMriとの間の差に関連している。入力ランドマークセットLMpiは、スタイル変換モデルM2に入力される画像(例えば、
図8(B)の入力画像IM1)に含まれる顔(第1顔と呼ぶ)から検出される第1顔ランドマークの位置を示している。対応ランドマークセットLMriは、S400(
図12)で、出力ランドマークセットLMqvに設定される。対応ランドマークセットLMri(ここでは、出力ランドマークセットLMqv)は、スタイル変換モデルM2によるスタイル変換済の画像(例えば、出力画像IM3(
図11(A)、
図13(A)))に含まれる顔(第2顔と呼ぶ)から検出される第2顔ランドマークの位置を示している。この構成によれば、スタイル変換処理に起因するランドマークの位置の変化の可能性は、低減する。すなわち、スタイル変換処理に起因する顔に含まれる部分の変形の可能性は、低減する。
【0130】
ここで、第1顔は、以下に説明する顔である。S120(
図6)では、プロセッサ210は、N個(Nは2以上の整数)の顔を表す入力画像(例えば、入力画像IM1(
図8(B)))を使用して検出処理を実行することによって、バウンディングボックス(例えば、バウンディングボックスBp1-Bp5)を検出する。第1顔は、バウンディングボックスに囲まれる領域によって表される顔である。入力画像IM1は、訓練のためにスタイル変換モデルM2に入力される画像である入力訓練画像の例である。また、S120によるバウンディングボックスの検出処理は、S120a(
図15)の処理と同じである(ただし、訓練用の入力画像IM1は、画像処理用の入力画像IMa1と異なり得る)。
【0131】
また、第2顔は、以下に説明する顔である。
図7のS240で、プロセッサ210は、出力画像(例えば、出力画像IM3(
図11))から、顔を示すバウンディングボックス(例えば、バウンディングボックスBq1-Bq5)を検出する。第2顔は、バウンディングボックスに囲まれる領域によって表される顔である。出力画像(例えば、出力画像IM3(
図11))は、
図6、
図7のS120、S130、S150-S210、S230の処理を、入力訓練画像(例えば、入力画像IM1(
図8(A))を使用して実行することによって生成される画像である。出力画像IM3は、入力訓練画像を使用して得られる出力訓練画像の例である。第2顔は、出力訓練画像から検出される1以上の顔のうち、第1顔と同じ人物の顔である。
【0132】
このように、ランドマーク損失Llは、第1顔から検出される第1顔ランドマークの位置と、第1顔の人物と同じ人物の第2顔から検出される第2顔ランドマークの位置と、の間の差に関連している。ランドマーク損失Llを含む全体損失Lが小さくなるようにスタイル変換モデルM2が訓練される場合、スタイル変換処理に起因する同じ人物のランドマークの位置の変化の可能性は、低減する。すなわち、スタイル変換処理に起因する同じ人物の顔に含まれる部分の変形の可能性は、低減する。この結果、本実施例の画像処理(
図15、
図16)は、顔のスタイルを変更しつつ、顔の見た目の同一性を維持できる。
【0133】
なお、出力訓練画像を生成する処理(
図6、
図7のS120、S130、S150-S210、S230)は、
図15、
図16のS120a、S130a、S150a-S210a、S230aの処理を、含んでいる(ここで、処理対象の入力画像とスタイル画像とは、
図15、
図16の処理対象の入力画像とスタイル画像と、それぞれ、異なり得る)。具体的には、S120の処理は、S120aの処理(バウンディングボックスの検出処理)を含んでいる。S130の処理は、第2画像処理IP2a(ここでは、S130a)を含んでいる。S150-S210の処理は、第1画像処理IP1a(ここでは、S150a-S210a)を含んでいる。S230の処理は、S230aの処理(ここでは、合成処理)を含んでいる。このように、出力訓練画像は、検出処理(S120a)と第1画像処理IP1aと第2画像処理IP2aと合成処理(S230a)とを含む処理を入力訓練画像(例えば、入力画像IM1(
図8(A))を使用して実行することによって生成される。
【0134】
このように、スタイル変換モデルM2の訓練において第2顔の検出に使用される出力訓練画像は、画像処理(
図15、
図16)において出力画像を生成するための処理(S120a、S130a、S150a-S210a、S230a)を含む処理によって、生成される。すなわち、スタイル変換モデルM2の訓練は、画像処理(
図15、
図16)による出力画像の生成を考慮して、行われる。従って、訓練済のスタイル変換モデルM2が画像処理で使用される場合、スタイル変換処理に起因する顔に含まれる部分の変形の可能性は、適切に低減する。
【0135】
また、プロセッサ210は、
図12の処理を実行することによって、第1顔と、同じ人物の第2顔と、の対応関係を決定する。本実施例では、S340、S370、S380、S390で説明したように、第1顔に対応付けられる第2顔は、出力訓練画像(例えば、出力画像IM3(
図11))から検出される1以上の顔のうち、IoUが閾値TH1よりも大きい(S390:Yes)という条件を満たす顔である。なお、IoUは、第1顔を囲む第1矩形(ここでは、入力ボックスBpi)と、出力訓練画像から検出される顔を囲む第2矩形(ここでは、出力ボックスBqj)と、を使用して算出される。IoUが大きい場合、第1矩形(入力ボックスBpi)と第2矩形(出力ボックスBqj)との間の位置の差は小さい。「IoU>TH1」は、第1矩形(入力ボックスBpi)と第2矩形(出力ボックスBqj)との間の位置の差が小さいことを示す位置条件の例である。位置条件が満たされる場合(S390:Yes)、S400で、プロセッサ210は、位置条件を満たす第2矩形(出力ボックスBqj)を第1矩形(入力ボックスBpi)に対応付ける。これにより、プロセッサ210は、同じ人物の第1顔と第2顔との対応関係を適切に決定できる。
【0136】
なお、画像内で複数の顔が近い位置に配置される場合、1個の第1矩形(入力ボックスBpi)に対して、複数の第2矩形(出力ボックスBqj)が、位置条件を満たし得る。この場合、プロセッサ210は、最大のIoUを有する第2矩形(出力ボックスBqj)を、第1矩形(入力ボックスBpi)に対応付ける。従って、プロセッサ210は、同じ人物の第1顔と第2顔との対応関係を適切に決定できる。
【0137】
B.変形例:
(1)超解像モデルM3(
図1)は、StyleGANに限らず、variational autoencoders (VAEs)、generative adversarial networks (GANs)など、高解像度の自然な画像を生成する種々の生成モデルであってよい。また、S170(
図6)、S170a(
図15)の高解像度化処理は、「PULSE」と呼ばれる超解像処理に代えて、他の種々の処理であってよい。プロセッサ210は、例えば、超解像モデルM3などの機械学習モデルを使用せずに、解像度変換処理(ニアレストネイバ、バイリニア、バイキュービックなど)を実行してよい。
【0138】
(2)S120(
図6)、S240(
図7)、S120a(
図15)における顔の領域の検出処理は、「BlazeFace」と呼ばれる物体検出モデルを使用する処理に代えて、他の種々の処理を実行してよい。プロセッサ210は、例えば、YOLO(You only look once)と呼ばれるオブジェクト検出モデルを使用して、顔の領域を検出してよい。また、プロセッサ210は、機械学習モデルを使用せずに、顔の基準画像を使用するパターンマッチングによって、顔の領域を検出してよい。
【0139】
(3)S120(
図6)、S240(
図7)における顔のランドマークを検出する処理は、「Attention Mesh」と呼ばれる検出モデルを使用する処理に代えて、他の種々の処理であってよい。プロセッサ210は、例えば、OpenCV(Open Source Computer Vision)のFacemark APIを使用することによって、顔のランドマークを検出してよい。また、プロセッサ210は、顔の部分(口、目など)の基準画像を使用するパターンマッチングによって、ランドマークを検出してよい。
【0140】
ランドマーク(
図9)の点の数nPは、68に限らず、任意の数であってよい。ランドマーク損失Ll(
図14(C))を使用して顔に含まれる部分の変形を抑制するためには、数nPが多いことが好ましい。例えば、数nPは、20以上であることが好ましい。なお、ランドマークは、顔の任意の部分を示してよい。ランドマークは、眉、目、口、鼻、顎からなる群から選択される1以上の部分を含んでよい。
【0141】
(4)S190(
図6)、S190a(
図15)のセグメンテーション処理は、FCNを使用する処理に代えて、他の種々の処理であってよい。例えば、「Mask R-CNN」と呼ばれる物体検出モデルが使用されてよい。また、プロセッサ210は、顔の基準画像を使用するパターンマッチングによって、顔を表す領域とその他の領域とを分割してよい。
【0142】
(5)
図12のS340、S370、S380、S390では、出力訓練画像(例えば、出力画像IM3(
図11))から検出される1以上の顔のうち、「IoU>TH1(S390:Yes)」という条件を満たす顔が、入力訓練画像(例えば、入力画像IM1(
図8(B))から検出される第1顔と同一人物の第2顔として採用される。出力訓練画像から検出される顔を同一人物の第2顔として採用するための条件である対応条件としては、種々の位置条件を採用可能である。ここで、位置条件は、第1顔を囲む第1矩形(例えば、入力ボックスBpi)と、出力訓練画像から検出される顔を囲む第2矩形(例えば、出力ボックスBqj)と、の間の位置の差が小さいことを示す条件である。位置条件は、例えば、第1矩形の重心位置と第2矩形の重心位置との間の距離が閾値未満であることを、含んでよい。また、位置条件は、第1矩形の頂点と第2矩形の対応する頂点との間の位置の差が閾値未満であることを、含んでよい。位置条件は、第1矩形の頂点と第2矩形の対応する頂点との4個の組み合わせの4個の位置差のそれぞれが閾値未満であることを、含んでよい。また、対応条件は、位置条件に限らず、第1顔と第2顔とが同一人物の顔であることを示す種々の条件であってよい。
【0143】
(6)スタイル変換モデルは、
図2のスタイル変換モデルM2に限らず、種々のモデルであってよい。例えば、「Fast Patch-based Style Transfer of Arbitrary Style」と呼ばれる技術のアーキテクチャ、または、「Avatar-Net: Multi-scale Zero-shot Style Transfer by Feature Decoration」と呼ばれる技術のアーキテクチャが、採用されてよい。
【0144】
いずれの場合も、スタイル変換モデルに入力可能な画像の幅と高さとチャンネル数とは、種々の値であってよい。スタイル変換モデルは、例えば、512*512*3で表される画像を受け付けるように構成されてよい。
【0145】
(7)人物の顔を表す第1領域の第1画像を使用して第1処理済画像を生成する第1画像処理は、
図15の第1画像処理IP1a(具体的には、S150a-S210a)に限らず、第1スタイル変換処理を含む種々の処理であってよい。例えば、マスキング処理(S200a)は、低解像度化処理(S210a)の後に実行されてよい。マスキング処理(S200a)は、省略されてよい。この場合、S230a(
図16)では、スタイル変換済の顔を含むバウンディングボックス内の画像の全体が、全体処理済画像IMa2(
図17(C))に重畳されてよい。また、高解像度化処理(S170a)は、省略されてよい。
【0146】
(8)入力画像の第2領域の第2画像を使用して第2処理済画像を生成する第2画像処理は、
図15の第2画像処理IP2a(具体的には、S130a)に限らず、第2スタイル変換処理を含む種々の処理であってよい。例えば、第2画像処理は、高解像度化処理を含んでよい。そして、スタイル変換済の高解像度の顔画像が、スタイル変換済の高解像度の全体処理済画像に重畳されてよい。
【0147】
いずれの場合も、第2領域は、入力画像の全体に限らず、入力画像のうちの顔を表す第1領域を除いた残りの領域の少なくとも一部を含む種々の領域であってよい。例えば、第2領域は、入力画像から第1領域を除いた残りの領域であってよい。すなわち、第2領域の第2画像は、第1領域をマスクして得られる画像であってよい。
【0148】
(9)第1画像処理と第2画像処理とは、それぞれ、種々の処理であってよい。例えば、第1画像処理は、第2画像処理には含まれない処理(例えば、高解像度化処理)を含んでよい。第2画像処理は、第1画像処理には含まれない処理(例えば、シャープネス強調処理)を含んでよい。
【0149】
第1画像処理に含まれる第1スタイル変換処理は、第2画像処理に含まれる第2スタイル変換処理と異なる処理であってよい。例えば、第2スタイル変換処理に使用されるスタイル変換モデルは、第1スタイル変換処理に使用されるスタイル変換モデルと異なるモデルであってよい。また、第2スタイル変換処理に使用されるスタイル画像は、第1スタイル変換処理に使用されるスタイル画像と異なる画像であってよい。ユーザが、第1スタイル変換処理用のスタイル画像と、第2スタイル変換処理用のスタイル画像とを、指定してよい。
【0150】
(10)スタイル変換モデルの訓練処理(例えば、
図6、
図7)でスタイル変換モデルに入力される入力訓練画像は、訓練済のスタイル変換モデルを使用する画像処理(例えば、
図15、
図16)でスタイル変換モデルに入力され得る画像と同じ種類の種々の画像を含むことが好ましい。例えば、入力訓練画像は、人物の無い風景画像、一人の人物を表すポートレート、複数の人物を表す集合写真など、種々の撮影画像を含んでよい。また、入力訓練画像は、イラストレーションなど、撮影画像とは異なる種類の画像を含んでよい。
【0151】
(11)スタイル変換モデルの訓練に使用される損失は、
図14(A)-
図14(C)で説明した損失に限らず、種々の損失であってよい。例えば、顔個数損失Lnは、入力顔数Nfpと出力顔数Nfqとの間の差を示す種々の値であってよい。例えば、顔個数損失Lnは、入力顔数Nfpと出力顔数Nfqとの差の絶対値であってよい。
【0152】
また、ランドマーク損失Ll(
図14(C))は、スタイル変換前の顔画像の入力ランドマークセットLMpiと、スタイル変換済の顔画像の対応ランドマークセットLMriと、の間の差を示す種々の値であってよい。例えば、R(LMpi)は、入力ランドマークセットLMpiによって示される顔の大きさを示す種々の値であってよい。R(LMpi)は、入力ランドマークセットLMpiに対応する入力ボックスBpiの面積であってよい。また、距離dは、ユークリッド距離に代えて、マンハッタン距離、チェビシェフ距離、マハラノビス距離など、ベクトルの要素の差分を表す種々の値であってよい。
【0153】
なお、顔個数損失Lnとランドマーク損失Llとの一方または両方が、省略されてよい。スタイル変換に起因する顔の変形の可能性を低減するためには、抽出される顔の画像を処理する第1スタイル変換処理(例えば、
図15のS180a)で使用されるスタイル変換モデルの訓練に、ランドマーク損失Llが使用されることが好ましい。これにより、入力画像と出力画像との間で顔の見た目の同一性を維持できる。また、スタイル変換に起因する顔検出数の変化の可能性を低減するためには、入力画像のうちの顔以外の部分を含む画像を処理する第2スタイル変換処理(例えば、
図15のS130a)で使用されるスタイル変換モデルの訓練に、顔個数損失Lnが使用されることが好ましい。これにより、入力画像のうちの顔を示していない部分(例えば、背景部分)が、スタイル変換によって、顔のような画像に変換される可能性は、低減する。
【0154】
(12)スタイル変換モデルの訓練処理は、
図6、
図7の処理に限らず、スタイル変換モデルに適する種々の処理であってよい。いずれの場合も、訓練処理は、以下の処理を含んでよい。
1)訓練済のスタイル変換モデルを使用する画像処理に対応する処理を、入力訓練画像を使用して実行することによって、出力訓練画像を生成する。
2)出力訓練画像を使用して、損失を算出する。
3)損失が小さくなるように、スタイル変換モデルの複数の演算パラメータを調整する。
このような訓練処理は、画像処理に適するように、スタイル変換モデルを訓練できる。訓練済のスタイル変換モデルを使用する画像処理が、
図15の第1画像処理IP1aと第2画像処理IP2aのように、第1画像処理と第2画像処理とを含む場合には、訓練処理は、第1画像処理に対応する処理と、第2画像処理に対応する処理と、を含むことが好ましい。
【0155】
(13)入力画像から検出される顔は、人物の顔に限らず、種々の生物の顔であってよい。例えば、犬、猫などのペットの顔が、検出されてよい。犬、猫に限らず、種々の哺乳類の顔が検出されてよい。
【0156】
(14)訓練済のスタイル変換モデルを使用する画像処理装置は、パーソナルコンピュータとは異なる種類の装置(例えば、デジタルカメラ、スキャナ、スマートフォン)であってもよい。また、ネットワークを介して互いに通信可能な複数の装置(例えば、コンピュータ)が、画像処理装置による画像処理の機能を一部ずつ分担して、全体として、画像処理の機能を提供してもよい(これらの装置を備えるシステムが画像処理装置に対応する)。
【0157】
スタイル変換モデルの訓練処理は、画像処理を実行する画像処理装置とは異なる他の装置によって、行われてよい。
【0158】
上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。例えば、スタイル変換モデル(例えば、スタイル変換モデルM2)の機能は、専用のハードウェア回路によって実現されてよい。
【0159】
また、本開示の機能の一部または全部がコンピュータプログラムで実現される場合には、そのプログラムは、コンピュータ読み取り可能な記録媒体(例えば、一時的ではない記録媒体)に格納された形で提供することができる。プログラムは、提供時と同一または異なる記録媒体(コンピュータ読み取り可能な記録媒体)に格納された状態で、使用され得る。「コンピュータ読み取り可能な記録媒体」は、メモリーカードやCD-ROMのような携帯型の記録媒体に限らず、各種ROM等のコンピュータ内の内部記憶装置や、ハードディスクドライブ等のコンピュータに接続されている外部記憶装置も含み得る。
【0160】
上記した実施の形態は、本開示の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。
【符号の説明】
【0161】
200…画像処理装置、210…プロセッサ、215…記憶装置、220…揮発性記憶装置、230…不揮発性記憶装置、231…第1プログラム、232…第2プログラム、240…表示部、250…操作部、270…通信インタフェース