A.第1実施例
A−1.システム1000の構成
次に、実施の形態を実施例に基づき説明する。図1は、本実施例のシステム1000の構成を示すブロック図である。システム1000は、サーバ100と、端末装置200と、を備えている。第1実施例のシステム1000は、入力画像データを用いて、出力画像を示す出力画像データを生成するための画像生成システムである。図1で破線で示すミシン300は、第2実施例のシステムが備える構成要素であり、第1実施例のシステムが備える構成要素ではないので、第2実施例において説明する。
サーバ100は、インターネットITに接続された計算機である。サーバ100は、サーバ100のコントローラとしてのCPU110と、RAMなどの揮発性記憶装置120と、ハードディスクドライブやフラッシュメモリなどの不揮発性記憶装置130と、通信インタフェース(IF)160と、を備えている。通信インタフェース160は、インターネットITと接続するための有線または無線のインタフェースである。
揮発性記憶装置120は、CPU110が処理を行う際に生成される種々の中間データを一時的に格納するバッファ領域を提供する。不揮発性記憶装置130には、コンピュータプログラムPGsと、スタイル画像データ群SDG(後述)と、肌色データ群SKG(後述)と、が格納されている。
コンピュータプログラムPGsとスタイル画像データ群SDGと肌色データ群SKGとは、例えば、サーバ100の運用者によって提供され、サーバ100にアップロードされる。CPU110は、コンピュータプログラムPGsを実行することにより、端末装置200と協働して、後述する出力画像を生成する処理を実行する。
コンピュータプログラムPGsは、後述する複数個の生成ネットワークGNを含む生成ネットワーク群GNGをCPU110に実現させるコンピュータプログラムをモジュールとして含んでいる。
端末装置200は、例えば、スマートフォンなどの携帯型の端末装置である。端末装置200は、端末装置200のコントローラとしてのプロセッサであるCPU210と、ハードディスクドライブやフラッシュメモリなどの不揮発性記憶装置220と、RAMなどの揮発性記憶装置230と、ユーザの操作を受け取るタッチパネルなどの操作部240と、タッチパネルと重畳された液晶ディスプレイなどの表示装置250と、外部機器と通信を行うための無線の通信インタフェース260と、を備えている。端末装置200は、無線ネットワークNWとインターネットITとを介して、サーバ100と通信可能に接続されている。
端末装置200の不揮発性記憶装置220には、コンピュータプログラムPGtが格納されている。コンピュータプログラムPGtは、上述したサーバ100の運用者によって提供され、例えば、インターネットITを介して端末装置200に接続された所定のサーバからダウンロードされる形態で提供される。CPU210は、コンピュータプログラムPGtを実行することにより、サーバ100と協働して、後述する出力画像を生成する処理を実行する。
A−2.生成ネットワーク群の構成
図2は、生成ネットワーク群GNGの構成の説明図である。生成ネットワーク群GNGは、図2(A)のブロック図に示すように、4個の生成ネットワークGN1〜GN4を含んでいる。なお、破線で示す2個の生成ネットワークGN4、GN5は、第2実施例において備えられるので、第2実施例にて説明する。
4個の生成ネットワークGN1〜GN4は、それぞれ、図2(B)に生成ネットワークGNとして示す構成を有している。生成ネットワークGNは、スタイル変換を行う機械学習モデルである。本実施例では、生成ネットワークGNは、論文「Xun Huang and Serge Belongie. Arbitrary style transfer in real-time with adaptive instance normalization. In ICCV, 2017.」に開示されている機械学習モデルである。
生成ネットワークGNには、コンテンツ画像データCDとスタイル画像データSDとから成るデータペアが入力される。コンテンツ画像データCDは、コンテンツ画像を示す画像データである。例えば、目用の生成ネットワークGN1では、コンテンツ画像は、人物の目を示す画像(後述)である。スタイル画像データSDは、スタイル画像を示す画像データである。例えば、目用の生成ネットワークGN1では、スタイル画像は、人物の目を示す画像であり、コンテンツ画像とは異なるスタイル(例えば、目の色調やメイクの特徴)を有する画像である。
生成ネットワークGNは、データペアが入力されると、データペアに対して複数個のパラメータを用いた演算を実行して、変換済画像データTDを生成し、出力する。変換済画像データTDは、コンテンツ画像に対してスタイル画像のスタイルを適用して得られる変換済画像を示すデータである。例えば、変換済画像は、コンテンツ画像の形状(例えば、目の形状)を維持しつつ、スタイル画像のスタイルを有する画像である。
本実施例では、コンテンツ画像データCD、スタイル画像データSD、および、変換済画像データTDは、複数個の画素を含む画像を示すビットマップデータであり、具体的には、RGB値によって画素ごとの色を表すRGB画像データである。RGB値は、3個の色成分の階調値(以下、成分値とも呼ぶ)、すなわち、R値、G値、B値を含むRGB表色系の色値である。これらの画像データCD、SD、TDによって示される画像のサイズは、互いに等しく、例えば、縦256画素×横256画素のサイズである。
図2(B)に示すように、生成ネットワークGNは、エンコーダECと、特徴結合部CCと、強度調整部SAと、デコーダDCと、を含んでいる。
エンコーダECには、コンテンツ画像データCDやスタイル画像データSDが入力される。エンコーダECは、入力された画像データに対して、次元削減処理を実行して、入力された画像データの特徴を示す特徴データを生成する。エンコーダECは、例えば、畳込処理(convolution)を行う畳込層を含む複数の層を有するニューラルネットワーク(Convolutional Neural Network)である。本実施例では、エンコーダECには、VGG19と呼ばれるニューラルネットワークのうちの入力層からRElu4_1層までの部分が用いられる。VGG19は、ImageNetと呼ばれる画像データベースに登録された画像データを用いてトレーニングされた学習済みのニューラルネットワークであり、その学習済みの演算パラメータは一般公開されている。本実施例では、エンコーダECの演算パラメータには、公開された学習済みの演算パラメータが用いられる。
特徴結合部CCは、上記論文に開示された「AdaIN layer」である。特徴結合部CCは、コンテンツ画像データCDをエンコーダECに入力して得られる特徴データf(c)と、スタイル画像データSDをエンコーダECに入力して得られる特徴データf(s)と、を用いて、変換特徴データtを生成する。
強度調整部SAは、スタイル変換の強度を示すパラメータαを用いて、スタイル変換の強度を調整する。具体的には、強度調整部SAは、パラメータαと、コンテンツ画像データCDの特徴データf(c)と、変換特徴データtと、を用いて、強度調整済みの変換特徴データt_adを生成する。変換特徴データt_adは、以下の式(1)で示される。
t_ad=(1−α)f(c)+αt …(1)
パラメータαは、0<α≦1の範囲の値を取る。パラメータαが1に近いほど、スタイル変換の強度が強くなる。換言すれば、パラメータαが1に近いほど、変換済画像データTDによって示される変換済画像は、スタイル画像に近づき、コンテンツ画像との差異が大きくなる。このために、パラメータαは、コンテンツ画像と変換済画像との間の差異の程度を指定するパラメータである、と言うことができる。パラメータαは、後述するように、ユーザによって指定される。パラメータαは、デコーダDCのトレーニング時には、1に設定される。
デコーダDCには、強度調整済みの変換特徴データt_adが入力される。デコーダDCは、デコーダDCは、変換特徴データt_adに対して、複数個の演算パラメータを用いて、エンコーダECとは逆の次元復元処理を実行して、上述した変換済画像データTDを生成する。デコーダDCは、転置畳込処理(transposed convolution)を行う転置畳込層を含む複数の層を有するニューラルネットワークである。
デコーダDCの複数個の演算パラメータは、以下のトレーニングによって調整される。学習用のコンテンツ画像データCDとスタイル画像データSDからなるデータペアが、所定数(例えば、数万個)分だけ準備される。これらのデータペアから選択される所定のバッチサイズ分のデータペアを用いて1回の調整処理が実行される。
1回の調整処理では、バッチサイズ分のデータペアを用いて算出される損失関数Lが小さくなるように、所定のアルゴリズムに従って複数個の演算パラメータが調整される。所定のアルゴリズムには、例えば、誤差逆伝播法と勾配降下法とを用いたアルゴリズム(本実施例では、adam)が用いられる。
損失関数Lは、コンテンツ損失Lcと、スタイル損失Lsと、重みλを用いて、以下の式(2)で示される。
L=Lc+λLs …(2)
コンテンツ損失Lcは、本実施例では、変換済画像データTDの特徴データf(g(t))と、変換特徴データtと、の間の損失(誤差とも呼ぶ)である。変換済画像データTDの特徴データf(g(t))は、用いるべきデータペアを生成ネットワークGNに入力して得られる変換済画像データTDを、さらに、エンコーダECに入力することによって算出される。変換特徴データtは、上述したように、用いるべきデータペアをエンコーダECに入力して得られる特徴データf(c)、f(s)を特徴結合部CCに入力することによって算出される。
スタイル損失Lcは、変換済画像データTDをエンコーダECに入力した場合にエンコーダECの複数個の層からそれぞれ出力されるデータ群と、スタイル画像データSDをエンコーダECに入力した場合にエンコーダECの複数個の層からそれぞれ出力されるデータ群と、の間の損失である。
以上のような調整処理を複数回に亘って繰り返される。これによって、コンテンツ画像データCDとスタイル画像データSDとが入力される場合に、コンテンツ画像に対してスタイル画像のスタイルを適用して得られる変換済画像を示す変換済画像データTDが出力できるように、生成ネットワークGNがトレーニングされる。
生成ネットワークGN1〜GN4の基本的な構成は、図2(B)のネットワークGNに示す構成であるが、生成ネットワークGN1〜GN4のトレーニングに用いられるデータペアが互いに異なる。例えば、目用の生成ネットワークGN1は、人物の目を示すデータペアを用いてトレーニングされている。鼻用の生成ネットワークGN2は、人物の鼻を示すデータペアを用いてトレーニングされている。口用の生成ネットワークGN3は、人物の口を示すデータペアを用いてトレーニングされている。顔用の生成ネットワークGN4は、人物の顔の全体を示すデータペアを用いてトレーニングされている。このために、トレーニング済みの生成ネットワークGN1〜GN4では、複数個の演算パラメータの値が互いに異なっている。
A−3.システムの動作
図3は、第1実施例の端末装置200が実行する処理のフローチャートである。この処理は、サーバ100が提供するスタイル変換サービスを利用して、入力画像データに対してスタイル変換を行って得られる出力画像データを取得する処理である。この処理は、例えば、端末装置200のコンピュータプログラムPGtが実行された状態で、ユーザの開始指示に基づいて開始される。
図3のS105では、端末装置200のCPU210は、入力画像Iinを示す入力画像データを取得する。CPU210は、例えば、不揮発性記憶装置130に格納された複数個の画像データの中から、ユーザによって指定された画像データを入力画像データとして取得する。あるいは、CPU210は、ユーザの撮影指示に応じて端末装置200が備えるデジタルカメラ(図示省略)に撮影を実行させ、該撮影によって生成される画像データを入力画像データとして取得する。入力画像データは、例えば、RGB画像データである。
図4は、入力画像Iinと出力画像Ioutとの一例を示す図である。図4(A)に示すように、本実施例の入力画像Iinは、人物の顔FCの全体を含む写真を示す画像である。
図3のS110では、CPU210は、入力画像データを用いて、入力画像Iinを含む選択画面UDaを表示装置250に表示する。図5は、選択画面の一例を示す図である。図5(A)の選択画面UDaは、入力画像Iinと、入力画像Iinの種類に関する選択指示(具体的には、性別および人種の選択指示)を入力するためのプルダウンメニューPM1、PM2と、選択画面の切替指示を入力するためのボタンBT1、BT2と、を含んでいる。
図3のS115では、CPU210は、入力画像データをサーバ100に送信する。なお、本実施例では、端末装置200からサーバ100へのデータの送信は、HTTP(Hypertext Transfer Protocol)に従うHTTPリクエストの送信として行われる。
サーバ100が端末装置200から送信される入力画像データを受信すると、サーバ100のCPU110は、スタイル変換サービスを提供する処理を開始する。図6は、第1実施例のサーバ100が実行する処理のフローチャートである。端末装置200の図3の処理とサーバ100の図6の処理とは、データの遣り取りを行いながら並行して実行される。
図6のS205では、サーバ100のCPU110は、サーバ100が端末装置200から送信される入力画像データを受信する。図6のS210では、CPU110は、入力画像データに対して所定の領域特定処理を実行して、入力画像Iinの顔FCに含まれる複数個の部位の領域を特定する。具体的には、図4(A)に示すように、右目、左目、鼻、口の領域Per、Pel、Pn、Pmが特定される。領域特定処理には、公知の画像認識方法が用いられる。
例えば、yolo(You only look once)と呼ばれる画像認識アルゴリズムは、畳込ニューラルネットワークを用いて、画像内のオブジェクトの位置と種類との認識を同時に行うことができる。本実施例では、右目、左目、鼻、口の4種類のオブジェクトの位置と種類を認識できるようにトレーニングされたyoloの畳込ニューラルネットワークを用いて、右目、左目、鼻、口の領域Per、Pel、Pn、Pmが特定される。yoloは、例えば、論文「J. Redmon, S. Divvala, R. Girshick, and A. Farhadi, “You only look once:Unified, real-time object detection,” in Proc. IEEE Conf. Comput. Vis. Pattern Recognit. (CVPR), Jun. 2016, pp. 779-788.」に開示されている。
図6のS212では、CPU110は、特定された複数個の部位の領域Per、Pel、Pn、Pmを示す領域情報、例えば、これらの領域の入力画像Iin内の位置とサイズとを示す領域情報を、端末装置200に送信する。
図3のS120では、端末装置200のCPU210は、サーバ100から送信される領域情報を受信し、該領域情報を用いて、複数個の部位の領域Per、Pel、Pn、Pmの特定結果を表示装置250に表示する。例えば、図5(A)に示すように、選択画面UDaの入力画像Iin上に、複数個の部位の領域Per、Pel、Pn、Pmを示す複数個の矩形の枠Ser、Sel、Sn、Smを表示する。なお、フローチャートでは省略するが、CPU210は、矩形の枠Ser、Sel、Sn、Smの位置やサイズの修正指示がユーザから入力される場合には、該入力に応じて、対応する部位の領域Per、Pel、Pn、Pmの領域情報を修正する。修正後の領域情報は、サーバ100に送信される。
図3のS125では、CPU210は、ユーザによって選択された性別と人種の情報をサーバ100に送信する。例えば、図5(A)のプルダウンメニューPM1は、男性を示す選択肢と、女性を示す選択肢と、を含む。プルダウンメニューPM2は、予め登録された人種を示す複数個の選択肢を含む。ユーザは、プルダウンメニューPM1、PM2を操作して、複数個の選択肢のうちの1個の選択肢を選択して、ボタンBT2を押下する。CPU210は、ボタンBT2が押下された時点で、プルダウンメニューPM1、PM2にて選択されている選択肢に対応する性別および人種の情報を、サーバ100に送信する。
図6のS215では、サーバ100のCPU110は、端末装置200から送信される性別および人種の情報を受信する。S220では、CPU110は、受信された情報によって示される性別および人種に応じたスタイル画像データSDと肌色データとを、端末装置200に送信する。例えば、サーバ100の不揮発性記憶装置130に格納されたスタイル画像データ群SDG(図1)は、性別および人種の組み合わせごとに、複数個のスタイル画像データSDを含んでいる。性別および人種の1つの組み合わせに対応する複数個のスタイル画像データSDは、顔の部位(本実施例では目、口、鼻)ごとに、顔の部位をそれぞれ示す複数個のスタイル画像データSDを含んでいる。例えば、受信された情報によって示される性別および人種に対応する複数個のスタイル画像データSDが、端末装置200に送信される。サーバ100の不揮発性記憶装置130に格納された肌色データ群SKG(図1)は、性別および人種の組み合わせごとに、複数個の肌色データ(例えば、肌色を示すRGB値)を含んでいる。例えば、受信された情報によって示される性別および人種に対応する複数個の肌色データが端末装置200に送信される。
図3のS127では、端末装置200のCPU210は、サーバ100から送信されるスタイル画像データSDと肌色データとを受信する。
図3のS130では、CPU210は、入力画像Iinにて特定される顔の部位(目、鼻、口)の領域から注目領域を選択する。
図3のS135では、CPU210は、注目領域用の選択画面を表示装置250に表示する。図5(B)の選択画面UDbは、目の領域用の選択画面である。選択画面UDbは、入力画像Iinと、目のスタイル画像の選択指示を入力するための選択ウインドウSWbと、目のスタイル変換の強度を入力するためのスライドバーSBbと、ボタンBT1、BT2と、を含んでいる。選択ウインドウSWbは、選択肢として、S127にて受信された目の複数個のスタイル画像データSDによって示される複数個のスタイル画像SIe1、SIe2を含んでいる。図5(C)の選択画面UDcは、鼻の領域用の選択画面である。選択画面UDcは、後述する中間画像Imaと、鼻のスタイル画像の選択指示を入力するための選択ウインドウSWcと、鼻のスタイル変換の強度を入力するためのスライドバーSBcと、ボタンBT1、BT2と、を含んでいる。選択ウインドウSWcは、選択肢として、S127にて受信された鼻の複数個のスタイル画像データSDによって示される複数個のスタイル画像SIn1、SIn2を含んでいる。口の領域用の選択画面については図示を省略する。
図3のS140では、CPU210は、ユーザによって選択されたスタイル画像と強度とを示す情報をサーバ100に送信する。例えば、注目領域が目の領域である場合には、ユーザは、図5(B)の選択ウインドウSWbに表示された複数個のスタイル画像SIe1、SIe2の中から、用いるべき1個のスタイル画像を選択する。ユーザは、スライドバーSBcのノブを操作して、用いるべき強度に対応する位置に移動させる。その後、ユーザは、ボタンBT2を押下する。CPU210は、ボタンBT2が押下された時点で、選択ウインドウSWbにて選択されているスタイル画像を示す情報(例えば、画像ID)と、スライドバーSBbのノブの位置に対応する強度を示す情報(例えば、上述したパラメータα)と、をサーバ100に送信する。
図6のS225では、サーバ100のCPU110は、注目領域について選択されたスタイル画像と強度とを示す情報を端末装置200から受信する。
図6のS227では、CPU110は、用いるべきスタイル画像データSDを取得する。
例えば、注目領域が目の領域Per、Pelである場合には、CPU110は、S225にて受信された情報に基づいて、不揮発性記憶装置130に格納されたスタイル画像データ群SDG(図1)から、用いるべき目のスタイル画像データSDを取得する。
図6のS230では、CPU110は、注目領域のスタイル変換処理を実行する。CPU110は、目の領域Per、Pelに対応する2個の部分画像PIer、PIel(図4(A))を示す2個の部分画像データを、入力画像データからそれぞれ抽出する。CPU110は、2個の部分画像データに対して、それぞれ、縮小処理または拡大処理を実行して、所定サイズ(本実施例では、縦256画素×横256画素)の2個の目のコンテンツ画像データCDを生成する。CPU110は、右目のコンテンツ画像データCDとS227にて取得されたスタイル画像データSDとのデータペアを、目用の生成ネットワークGN1に入力して、右目の変換済画像データTDを生成する。同様に、CPU110は、左目のコンテンツ画像データCDとスタイル画像データSDとのデータペアを、目用の生成ネットワークGN1に入力して、左目の変換済画像データTDを生成する。CPU110は、生成された2個の変換済画像データTDに対して拡大処理または縮小処理を実行して、変換済画像データTDによって示される画像のサイズを元の部分画像と同じサイズに調整する。以下では、サイズが調整された後の変換済画像データTDを、変換済データと呼ぶ。注目領域が鼻の領域Pnや口の領域Pmである場合には、鼻用の生成ネットワークGN2や口用の生成ネットワークGN3を用いたスタイル変換処理によって、鼻や口の変換済データが生成される。
図6のS232では、CPU110は、入力画像データのうちの注目領域に対応する部分画像データを変換済データに置換することによって、中間画像を示す中間画像データを生成する。図4(B)には、目の領域Per、Pelに対応する部分画像データが置換された後の中間画像Imaが示されている。中間画像Imaの顔FCaでは、図4(A)の入力画像Iinの目の部分画像PIer、PIelが、変換済データによって示される変換済部分画像TIer、TIelに置換されている。中間画像Imaには、変換済部分画像TIer、TIelと他の部分との境界に位置するスジBLが現れている。変換済部分画像TIer、TIelと他の部分との境界では、画素の値が滑らかに変化しておらず、画素の値の差が大きくなっているためである。
図6のS235では、CPU110は、中間画像データを端末装置200に送信する。
図6のS240では、CPU110は、顔の全ての部位の領域について処理されたか否かを判断する。未処理の領域がある場合には(S240:NO)、S225に処理が戻される。全ての部位の領域について処理された場合には(S240:YES)、S245に処理が進められる。
図3のS145では、端末装置200のCPU210は、サーバ100から送信される中間画像データを受信する。S147では、CPU210は、中間画像データを用いて、表示装置250に表示されている選択画面を更新する。例えば、図5(C)の選択画面UDcでは、入力画像Iinに代えて、中間画像データによって示される中間画像Ima(図4(B))が表示されている。ユーザは、表示装置250に表示される中間画像Imaを見て、注目領域のスタイル変換の結果を確認することができる。フローチャートでは、省略するが、ユーザは、注目領域のスタイル変換の結果に満足できない場合には、ボタンBT1を押下することで、処理済みの注目領域について、再度、図3のS135〜S147、および、図6のS225〜S235を繰り返させることができる。
図3のS150では、CPU210は、顔の全ての部位の領域について処理されたか否かを判断する。未処理の領域がある場合には(S150:NO)、S130に処理が戻される。全ての部位の領域について処理された場合には(S150:YES)、S155に処理が進められる。
S155に処理が進められた時点で、サーバ100において、図4(C)の中間画像Imbを示す中間画像データが生成され、端末装置200に送信されている。中間画像Imbの顔FCbでは、図4(A)の入力画像Iinの各部位の部分画像PIer、PIel、PIn、PImが、変換済データによって示される変換済部分画像TIer、TIel、TIn、TImに置換されている。中間画像Imbには、変換済部分画像TIer、TIel、TIn、TImと他の部分との境界に上述したスジBLが現れている。
図3のS155では、端末装置200のCPU210は、図5(D)の肌色の選択画面UDdを表示装置250に表示する。図5(D)の選択画面UDdは、中間画像Imb(図)と、肌色の選択指示を入力するための選択ウインドウSWdと、ボタンBT1、BT2と、を含んでいる。選択ウインドウSWdは、選択肢として、S127にて受信された複数個の肌色データによって示される肌色を有する矩形画像CP1、CP2を含んでいる。
図3のS160では、CPU210は、ユーザによって選択された肌色を示す情報をサーバ100に送信する。例えば、ユーザは、図5(D)の選択ウインドウSWdに表示された複数個の矩形画像CP1、CP2の中から、1個の画像を選択して、ボタンBT2を押下する。CPU210は、ボタンBT2が押下された時点で、選択ウインドウSWdにて選択されている矩形画像が有する肌色を示す情報(例えば、色番号などのID)をサーバ100に送信する。
図6の245では、サーバ100のCPU110は、選択された肌色を示す情報を端末装置200から受信する。図6のS250では、CPU110は、S205にて取得済みの入力画像データに対して肌色補正を実行して、補正済みの入力画像データを生成する。肌色補正処理は、公知の補正処理が用いられる。例えば、CPU110は、入力画像データに対して公知の顔認識アルゴリズムを用いた認識処理を実行し、入力画像Iin内の人物の顔FCの領域を特定する。顔認識アルゴリズムには、例えば、人物の顔の領域を認識できるようにトレーニングされた上述したyoloの畳込ニューラルネットワークが用いられる。CPU110は、人物の顔FCの領域の複数個の画素のうち、肌色を示す所定の範囲内のRGB値を有する肌色画素を特定し、特定された複数個の肌色画素の平均のRGB値を算出する。CPU110は、肌色画素の平均のRGB値と、ユーザによって選択された肌色を示すRGB値と、の差分に基づいて、RGBの各成分の補正量を決定する。CPU110は、該補正量に応じてRGBの各成分のトーンカーブを決定し、該トーンカーブを用いて、特定済みの複数個の肌色画素のRGB値を補正する。図4(D)には、補正済みの入力画像データによって示される補正済画像Icが示されている。補正済画像Icの人物の顔FCcは、ユーザによって選択された肌色を有している。
S255では、中間画像データに対して、顔の全体のスタイル変換処理を実行して、出力画像データを生成する。例えば、CPU110は、図4(C)の中間画像Imbを示す中間画像データと、図4(D)の補正済画像Icを示す補正済みの入力画像データと、に対して、それぞれ、縮小処理または拡大処理を実行する。これによって、中間画像Imbと補正済画像Icとのサイズは、所定のサイズ(本実施例では、縦256画素×横256画素)に調整される。CPU110は、サイズが調整された後の中間画像データをコンテンツ画像データCDとし、サイズが調整された後の補正済みの入力画像データをスタイル画像データSDとして、顔用の生成ネットワークGN4に入力することによって、顔全体の変換済画像データTDを生成する。CPU110は、生成された顔全体の変換済画像データTDに対して拡大処理または縮小処理を実行して、変換済画像データTDによって示される画像のサイズを元の入力画像Iinと同じサイズに調整する。サイズが調整された後の変換済画像データTDが、最終的な出力画像Ioutを示す出力画像データである。顔用の生成ネットワークGN4において、強度を示すパラメータαは、上述した顔の各部位に対するスタイル変換処理(図6のS230)におけるパラメータαよりも小さな値に設定される。これは、各部位に対するスタイル変換処理によって中間画像Imbに現れている顔の各部位の特徴が、顔の全体のスタイル変換処理によって失われることを抑制するためである。パラメータαの値が比較的小さい場合であっても、顔の肌色のような全体的な特徴は、出力画像Ioutに反映される。
図4(E)には、出力画像Ioutの一例が示されている。出力画像Ioutの人物の顔FCoは、中間画像Imbの顔の部位の特徴を備えており、顔FCoの肌色は、補正済画像Icの顔FCcの肌色に近い色である。また、出力画像Ioutの人物の顔FCoでは、中間画像Imbと比較して、スジBLは目立たない。すなわち、出力画像Ioutでは、スジBLを形成する境界における画素の値の差が小さくされている。スタイル画像として用いられる補正済画像Icの顔FCcはスジBLを含まないために、スタイル変換処理によって、補正済画像Icのスタイルが中間画像Imbに適用されると、スジBLが軽減されるためである。
S260では、CPU110は、生成された出力画像データを端末装置200に送信して処理を終了する。
図3のS165では、端末装置200のCPU210は、端末装置200から送信される出力画像データを受信する。S170では、CPU210は、出力画像データを出力する。出力画像データの出力の態様は、例えば、表示、保存、印刷を含む。例えば、CPU210は、出力画像データによって示される出力画像Ioutを表示装置250に表示する。例えば、CPU210は、ユーザの指示に基づいて、出力画像データを含むファイルを揮発性記憶装置120、不揮発性記憶装置130に保存する。例えば、CPU210は、出力画像データを用いて、出力画像Ioutを示す印刷データを生成して、図示しないプリンタに送信する。
以上説明した第1実施例では、サーバ100のCPU110は、入力画像データを取得し(図6のS205)、入力画像データを用いて、入力画像Iinの一部である第1入力部分画像(例えば、目の領域Per、Pelに対応する部分画像PIer、PIel)と、入力画像の一部であって第1入力部分画像とは異なる位置にある第2入力部分画像(例えば、鼻の領域Pnに対応する部分画像PIn)と、を特定する(図6のS210)。CPU110は、第1入力部分画像を示す第1部分画像データ(例えば、目の部分画像PIer、PIelを示す部分画像データ)に対して、機械学習モデル(例えば、目の生成ネットワークGN1)を用いた第1スタイル変換処理を実行して、第1変換済部分画像(例えば、目の変換済部分画像TIer、TIel)を示す第1変換済データ(例えば、目の変換済部分画像TIer、TIelを示す変換済データ)を生成する(図6のS230)。CPU110は、第2入力部分画像を示す第2部分画像データ(例えば、鼻の部分画像PInを示す部分画像データ)に対して、機械学習モデル(例えば、鼻の生成ネットワークGN2)を用いた第2スタイル変換処理を実行して、第2変換済部分画像(例えば、鼻の変換済部分画像TIn)を示す第2変換済データ(例えば、鼻の変換済部分画像TInを示す変換済データ)を生成する(図6のS230)。CPU110は、第1変換済データと第2変換済データとを用いて、入力画像Iinに基づく出力画像Ioutを示す出力画像データを生成する(図6のS232、S250、S255)。図4(D)の出力画像Ioutは、第1入力部分画像に対応する第1出力部分画像(例えば、目の部分画像OIer、OIel)と、第2入力部分画像に対応する第2出力部分画像(鼻の部分画像OIn)とを含む。第1出力部分画像(例えば、目の部分画像OIer、OIel)は、第1変換済部分画像(例えば、目の変換済部分画像TIer、TIel)に基づく画像である。第2出力部分画像(例えば、目の部分画像OIn)は第2変換済部分画像(例えば、鼻の変換済部分画像TIn)に基づく画像である。第1実施例によれば、このように、1個の入力画像データに対して第1スタイル変換処理と第2スタイル変換処理とを適用することで出力画像データが生成されるので、柔軟なスタイル変換を実現することができる。
さらに、上記実施例では、第1スタイル変換処理(例えば、目の領域Per、Pelのスタイル変換処理)は、第1スタイル画像(例えば、目のスタイル画像SIe1)を示すスタイル画像データSDを用いて実行され、第2スタイル変換処理(例えば、鼻の領域Pnのスタイル変換処理)は、第2スタイル画像(例えば、鼻のスタイル画像SIn1)を示すスタイル画像データSDを用いて実行される(図2(B)等)。第1変換済部分画像(例えば、目の変換済部分画像TIer、TIel)は、第1スタイル画像(例えば、目のスタイル画像SIe1)のスタイルが、第1入力部分画像(例えば、目の部分画像PIer、PIel)に適用された画像であり、第2変換済部分画像(例えば、鼻の変換済部分画像TIn)は、第2スタイル画像(例えば、鼻のスタイル画像SIn1)のスタイルが、第2入力部分画像(例えば、鼻の部分画像PIn)に適用された画像である。この結果、第1スタイル画像のスタイルと第2スタイル画像のスタイルとが適用された出力画像を示す出力画像データが生成できるので、より柔軟なスタイル変換を実現することができる。
さらに、CPU110は、第1変換済データと第2変換済データとを用いて、第1変換済部分画像(例えば、目の変換済部分画像TIer、TIel)と第2変換済部分画像(例えば、鼻の変換済部分画像TIn)とを含む中間画像(例えば、中間画像Imb)を示す中間画像データを生成する(図6のS232、図4(C))。CPU110は、中間画像データに対して特定の後処理(図6のS255)を実行して、出力画像データを生成する。この結果、特定の後処理を実行することで、適切な出力画像データを生成することができる。
具体的には、本実施例の特定の後処理として、顔の全体のスタイル変換処理(図6のS255)が行われる。この処理によって、上述したように、中間画像Imaにおいて、変換済部分画像(例えば、目や鼻の変換済部分画像TIer、TIel、TIn)と、該1変換済部分画像に隣接する部分との間における画素値の差が低減される。この結果、例えば、出力画像Ioutでは、中間画像Imaに現れているスジBLが目立たない。このように、出力画像Ioutが自然な見栄えを有するように、出力画像データを生成することができる。
さらに、本実施例の顔の全体のスタイル変換処理(図6のS255)は、機械学習モデル(例えば、顔用の生成ネットワークGN4)を用いた第3スタイル変換処理である。この結果、部分画像に対するスタイル変換処理と、画像の全体に対するスタイル変換さらに、第3スタイル変換処理を実行することで、さらに、柔軟なスタイル変換を実現することができる。
さらに、本実施例の第3スタイル変換処理(図6のS255の顔の全体のスタイル変換処理)は、入力画像データをスタイル画像データSDとして用いて実行される。この結果、例えば、上述したスジBLが目立たない自然な見栄えを有する出力画像を示す出力画像データを容易に生成することができる。
さらに、本実施例の特定の後処理は、入力画像データに対して、人物の顔FCの肌色を補正する処理を実行して、補正済みの入力画像データを生成する処理(図6のS250)を含む。そして、第3スタイル変換処理(図6のS255の顔の全体のスタイル変換処理)は、補正済みの入力画像データをスタイル画像データSDとして用いて実行される。この結果、補正済みの入力画像(図4(D)の補正済画像Ic)の人物の顔の肌色が、スタイルとして出力画像Ioutに適用される。したがって、任意の肌色を有する出力画像Ioutを示す出力画像データを容易に生成することができる。
さらに、本実施例では、上述のように、入力画像Iinは、人物の顔FCを示す画像を含む(図4(A))、第1入力部分画像(例えば、部分画像PIer、PIel)は、人物の顔FCを構成する第1の部位(例えば、目)を示す画像であり、第2入力部分画像(例えば、部分画像PIn)は、人物の顔FCを構成する第2の部位(例えば、鼻)を示す画像である。この結果、人物の顔を構成する第1の部位と第2の部位とについて、柔軟なスタイル変換を実現することができる。例えば、目のスタイル画像として人物Aの目の画像を選択し、鼻のスタイル画像として人物Bの鼻の画像を選択すれば、入力画像Iinの人物の顔FCの目を人物Aの目に近づけ、顔FCの鼻を人物Bの鼻に近づけるように、スタイル変換することができる。
さらに、本実施例では、端末装置200から情報を受信することで入力画像Iinの種類(例えば、人物の性別や人種)が特定される(図6のS215)。そして、入力画像Iinの種類に応じて、S230のスタイル変換処理に用いるべきスタイル画像データSDの候補が変更される(図6のS220)。すなわち、S230では、入力画像Iinの種類に応じて異なるスタイル変換処理が実行される。換言すれば、入力画像Iinが第1種の入力画像(例えば、女性の顔の入力画像)である場合に、顔の各部位の部分画像データに対して第1種のスタイル変換処理が実行され、入力画像Iinが第2種の入力画像(例えば、男性の顔の入力画像)である場合に、顔の各部位の部分画像データに対して第2種のスタイル変換処理が実行される。この結果、入力画像Iinの種類に応じた柔軟なスタイル変換を実現できる。例えば、入力画像Iinの人物の性別や人種などによって、ユーザに好まれるスタイル変換は異なり得ると考えられるので、本実施例によれば、ユーザのニーズに合致したスタイル変換を実現できる。
さらに、本実施例によれば、ユーザは、選択画面UDb、SDcのスライドバーSBb、SBcを操作して、顔の部位ごとに、スタイル変換の強度を示すパラメータαを設定できる(図5(B)、(C)、図3のS140、図6のS225)。換言すれば、第1スタイル変換処理(例えば、目のスタイル変換処理)は、第1パラメータα1を用いて実行され、第2スタイル変換処理(例えば、鼻のスタイル変換)は、第1パラメータα1とは独立して調整される第2パラメータα2を用いて実行される。この結果、さらに柔軟なスタイル変換を実現できる。例えば、目については入力画像Iinとの差異が大きく、鼻については入力画像Iinとの差異が小さな出力画像Ioutを示す出力画像データを容易に生成することができる。この結果、例えば、用意されるスタイル画像データSDの個数が比較的少なくても柔軟で多様なスタイル変換が実現できる。
さらに、本実施例によれば、CPU110は、ユーザによる目のスタイル画像の選択指示(図5(B))に基づいて、目のスタイル画像データSDを取得し、ユーザによる鼻のスタイル画像の選択指示(図5(C))に基づいて、鼻のスタイル画像を取得する(図6のS227)。目や鼻のスタイル変換処理は、取得された目や鼻のスタイル画像データSDを用いて実行される(図6のS230)。この結果、ユーザによるスタイル画像の選択指示に応じた柔軟なスタイル変換を実現できる。例えば、ユーザは選択指示を入力することで、例えば、目と鼻に類似したスタイルが適用された出力画像Ioutを示す出力画像データをサーバ100に生成させることもでき、目と鼻に大きく異なるスタイルが適用された出力画像Ioutを示す出力画像データをサーバ100に生成させることもできる。
以上の説明から解るように、目のスタイル画像の選択指示は、第1の入力の例であり、鼻のスタイル画像の選択指示は、第2の入力の例である。また、目のスタイル画像の選択指示に基づいて取得される目のスタイル画像データSDは、第1入力情報の例であり、鼻のスタイル画像の選択指示に基づいて取得される鼻のスタイル画像データSDは、第2入力情報の例である。
B.第2実施例
B−1.システム1000の構成
第2実施例のシステム1000の基本的な構成は、第1実施例と同様に図1に示す構成であるので、以下では、図1を参照して第1実施例と異なる点について説明する。
第2実施例のシステム1000は、第1実施例の構成に加えて、端末装置200と通信可能に接続されるミシン300を備える。ミシン300は、刺繍データに基づいて、複数色の糸を布に縫い付けることによって布に刺繍模様を縫製する。
第2実施例の端末装置200は、パーソナルコンピュータなどの据え置き型の端末装置である。第2実施例の端末装置200の揮発性記憶装置230に格納されるコンピュータプログラムPGtは、ミシン300を制御するドライバプログラムである。コンピュータプログラムPGtは、ミシン300の製造者によって提供され、インターネットITを介して端末装置200に接続されたサーバからダウンロードされる形態で提供される。これに代えて、コンピュータプログラムPGtは、CD−ROMやDVD−ROMなどに格納された形態で提供されても良い。CPU210は、コンピュータプログラムPGtを実行することによって、サーバ100と協働して、後述する刺繍データを生成してミシン300に供給する処理を実行する。
第2実施例のサーバ100の不揮発性記憶装置130に格納されるコンピュータプログラムPGsは、ミシン300の製造者によって提供され、サーバ100にアップロードされる。CPU110は、コンピュータプログラムPGsを実行することによって、端末装置200と協働して、後述する刺繍データを生成してミシン300に供給する処理を実行する。
B−2.生成ネットワーク群の構成
第2実施例では、入力画像Iinは、第1実施例と同様に、人物の顔FCの全体を含む写真を示す画像である。写真などの画像データから刺繍データを生成する場合には、画像データに対して前処理を行い、前処理済みの画像データを用いて刺繍データを生成することが通常である。刺繍模様の縫製に用いられる糸の色数(例えば、数十色)は、写真に表現されている色数(例えば、約1千万色)よりも少ないことや、輪郭線がはっきりしていることが好ましいためである。このような前処理は、経験豊かな作業者が、画像加工プログラム(フォトレタッチソフトとも呼ばれる)を用いて行うことが一般的である。第2実施例では、入力画像データを用いて、前処理済みの出力画像Ioutを示す出力画像データを生成するために、スタイル変換処理が利用される。
第2実施例の生成ネットワーク群GNGは、第1実施例と同様に、生成ネットワークGN1〜GN4を含んでいる。第2実施例では、顔の各部位のスタイル変換は、出力画像Ioutが刺繍データの生成に適した画像になるように実行される。このために、生成ネットワークGN1〜GN4のトレーニングおよび後述する刺繍データの生成の際に用いられるスタイル画像データSDによって示されるスタイル画像は、刺繍データの生成に適した前処理済みの画像である。前処理の手法、例えば、輪郭線を明確にする手法、陰影の付け方、色の調整の手法には、多数の手法があり、例えば、作業者によって異なる。このために、様々な手法で前処理が行われた複数個の画像がスタイル画像として用いられる。
例えば、目用の生成ネットワークGN1は、様々な目の写真に対して様々な手法で前処理が行われた多数の画像がトレーニングのためのスタイル画像データSDとして用いられる。また、刺繍データの生成の際に、図5(B)の選択画面UDbを介して選択可能なスタイル画像データSDには、代表的な目の写真に対して複数個の手法で前処理が行われた複数個のスタイル画像を示す複数個のスタイル画像データSDが用いられる。
第2実施例の生成ネットワーク群GNGは、さらに、表情用の生成ネットワークGN5と、歯列用の生成ネットワークGN6と、を含んでいる。
表情用の生成ネットワークGN5は、機械学習モデルであり、StarGANと呼ばれる敵対的生成ネットワーク(GANs(Generative adversarial networks))を構成する生成ネットワークである。表情用の生成ネットワークGN5は、表情を変更するスタイル変換処理を実行する。具体的には、人物の顔を示す画像データと表情の種類を示すラベルデータとが、表情用の生成ネットワークGN5に入力されると、表情用の生成ネットワークGN5は、変換済画像データを出力する。該変換済画像データによって示される変換済画像は、入力された画像データによって示される人物の顔であって、ラベルデータによって示される表情を有する顔を示す。本実施例では、表情用の生成ネットワークGN5は、無表情、歯を見せない笑顔(smile)、歯を見せた笑顔(grin)、真顔(serious)などの表情に変換することができるように、トレーニングされている。StarGANは、論文「Yunjey Choi et al., "StarGAN: Unified Generative Adversarial Networks for Multi-Domain Image-to-Image Translation", arXiv preprint arXiv:1711.09020, 2017.」に開示されている。
歯列用の生成ネットワークGN6は、上述した生成ネットワークGN1〜GN4と同様の機械学習モデルである。歯列用の生成ネットワークGN6は、歯が露出した表情を有する人物の顔を示す画像データがコンテンツ画像データCDとして入力され、歯が露出した表情を有し、歯列が矯正されている人物の顔を示す画像データがスタイル画像データSDとして入力される。生成ネットワークGN6が出力する変換済画像データTDによって示される画像は、コンテンツ画像データCDによって示される人物の顔であって、歯列が矯正されている人物の顔である。
B−3.システムの動作
図7は、端末装置200が実行する処理のフローチャートである。この処理は、サーバ100が提供するスタイル変換を用いた前処理サービスを利用して、入力画像データに対して前処理を行って得られる出力画像データを取得し、該出力画像データを用いて刺繍データを生成する処理である。この処理は、例えば、端末装置200のコンピュータプログラムPGtが実行された状態で、ユーザの開始指示に基づいて開始される。
図7のS305では、端末装置200のCPU210は、図4(A)の人物の顔FCを含む入力画像Iinを示す入力画像データを取得する。なお、第1実施例と第2実施例とでは、用いられることが想定される画像(例えば、入力画像、スタイル画像、出力画像)は同じではないが、同様の人物の顔、部位を示す画像であるので、説明の便宜上、同じ図、同じ符号を用いて説明する。CPU210は、例えば、不揮発性記憶装置130に格納された複数個の画像データの中から、ユーザによって指定された画像データを入力画像データとして取得する。
S310では、CPU210は、入力画像Iinを含む選択画面UDを表示装置250に表示する。図8は、第2実施例の選択画面UDを示す図である。図8の選択画面UDは、入力画像Iinと、プルダウンメニューPM1〜PM3と、選択ウインドウSWa〜SWdと、スライドバーSBa〜SBcと、チェックボックスCBa、CBbと、ボタンBT3、BT4と、を含んでいる。
プルダウンメニューPM1、PM2は、入力画像Iinの種類に関する選択指示(具体的には、性別および人種の選択指示)を入力するためのメニューであり、第1実施例の図5(A)のプルダウンメニューPM1、PM2と同様のメニューである。プルダウンメニューPM3は、上述した表情用の生成ネットワークGN5を用いた表情の変更を行うか否かと、表情の変更を行う場合における変更後の表情の種類と、の選択指示を入力するためのメニューである。
選択ウインドウSWb、SWcは、目、鼻のスタイル画像の選択指示を入力するための選択ウインドウであり、第1実施例の図5(B)、(C)の選択ウインドウSWb、SWcと同様のメニューである。選択ウインドウSWaは、選択肢として、口の複数個のスタイル画像データSDによって示される複数個のスタイル画像Sm1、Sm2が表示される。なお、各選択ウインドウ内のスタイル画像は、この時点では、表示されておらず、後述するS335にて表示される。
スライドバーSBa〜SBcは、図5(B)、(C)のスライドバーSBb、SBcと同様に、口、目、鼻のスタイル変換の強度を入力するためのスライドバーである。
チェックボックスCBaは、後述する白目処理を実行するか否かを指定するためのチェックボックスである。チェックボックスCBbは、歯列用の生成ネットワークGN6を用いた歯列の矯正を行うか否かを指定するためのチェックボックスである。
図7のS315では、図3のS115と同様に、CPU210は、入力画像データをサーバ100に送信する。
サーバ100が端末装置200から送信される入力画像データを受信すると、サーバ100のCPU210は、スタイル変換処理を用いた前処理サービスを提供する処理を開始する。図9は、第2実施例のサーバ100が実行する処理のフローチャートである。図9のS405に示すように、サーバ100のCPU110は、第1実施例と同様に、端末装置200とデータの遣り取りを行いながら図6のS205〜S220の処理を実行する。
図6のS205では、サーバ100のCPU110は、サーバ100が端末装置200から送信される入力画像データを受信する。S210では、CPU110は、入力画像データに対して所定の領域特定処理を実行して、入力画像Iinの顔FCに含まれる複数個の部位、すなわち、右目、左目、鼻、口の領域Per、Pel、Pn、Pmを特定する。S212では、CPU110は、複数個の部位の領域Per、Pel、Pn、Pmを示す領域情報を端末装置200に送信する。
図7のS320では、図3の120と同様に、端末装置200のCPU210は、サーバ100から送信される領域情報を受信し、該領域情報を用いて、複数個の部位の領域Per、Pel、Pn、Pmの特定結果を表示装置250に表示する。図7のS325では、図3のS125と同様に、CPU210は、ユーザによって選択された性別と人種の情報をサーバ100に送信する。
図6のS215では、サーバ100のCPU110は、端末装置200から送信される性別および人種の情報を受信する。S220では、CPU110は、受信された情報によって示される性別および人種に応じたスタイル画像データSDと肌色データとを、端末装置200に送信する。
図7のS330では、端末装置200のCPU210は、サーバ100から送信されるスタイル画像データSDと肌色データとを受信する。図7のS335では、受信されたスタイル画像データSDによって示される口、目、鼻のスタイル画像SIm1、SIm2、SIe1、SIe2、SIn1、SIn2を、対応する選択ウインドウSWa、SWb、SWcに表示する(図8)。
図7のS340では、CPU210は、選択画面UDにて選択された変換処理のための情報をサーバ100に送信する。ユーザは、図8の選択ウインドウSWa〜SWd、スライドバーSBa〜SBcを介して、顔の各部位について用いるべきスタイル画像、各部位のスタイル変換の強度、出力画像の顔が有すべき肌色の選択指示を入力する。ユーザは、チェックボックスCBa、CBbを介して、白目処理を実行するか否かと、歯列の矯正を実行するか否かと、の選択指示を入力する。ユーザは、プルダウンメニューPM3を介して、表情の変更を行うか否かと、表情の変更を行う場合における変更後の表情の種類と、の選択指示を入力する。ただし、白目処理を実行することの選択指示が入力された場合には、目のスタイル画像の選択ウインドウSWbは無効とされる。すなわち、白目処理を実行することの選択指示と目のスタイル画像の選択指示とのうち、一方の指示のみが有効となる。後述するように、サーバ100において、白目処理と目のスタイル変換処理とのうちの一方のみが実行可能であるためである。その後、ユーザは、選択指示が入力された状態で、前処理の実行を指示するためのボタンBT3を押下する。CPU210は、ボタンBT2が押下された時点で入力されている選択指示に対応する情報をサーバ100に送信する。
図9のS410では、サーバ100のCPU110は、変換処理のための情報を端末装置200から受信する。
図9のS415では、CPU110は、S410にて受信された情報に基づいて、白目処理を実行することが選択されたか否かを判断する。白目処理を実行することが選択された場合には(S415:YES)、S420にて、CPU110は、入力画像データに対して、白目処理を実行する。白目処理は、目の領域Per、Pelにおいて、目を示す画像の白目の部分を、見栄えの良い特定の白色で塗りつぶす処理である。例えば、CPU110は、白目の部分に対応する画素の値を、白を示す特定の値(例えば、(255、255、255)のRGB値)に変換する。例えば、白および白に近似する色を示す所定範囲の値有する画素が、白目の部分に対応する画素として特定される。これによって、例えば、入力画像Iinにおける白目の濁りが低減されて、刺繍模様にて表現される人物の顔の目の見栄えが向上する。白目処理は、機械学習モデルを用いずに目の部分画像PIer、PIelの少なくとも一部の色を変換する処理である、と言うことができる。
図9のS425では、CPU110は、目の領域Per、Pelをスタイル変換の対象領域から除外する。白目処理が実行された後にスタイル変換処理が行われると、スタイル変換処理後の画像に白目の濁りが現れる場合があり、白目処理の効果が低下するためである。
白目処理を実行することが選択されない場合には(S415:NO)、CPU110は、S420、S425をスキップして、S430に処理を進める。
図9のS430では、CPU110は、入力画像Iinにて特定される顔の部位(目、鼻、口)の領域のうち、スタイル変換処理の対象とすべき対象領域から、注目領域を選択する。目の領域が対象領域から除外されている場合には、対象領域は、口と鼻の領域Pn、Pmであり、目の領域が対象領域から除外されていない場合には、対象領域は、目と口と鼻の領域Per、Pel、Pn、Pmである。
図9のS435では、CPU110は、S410にて受信された情報に基づいて、不揮発性記憶装置130に格納されたスタイル画像データ群SDG(図1)から、注目領域のスタイル変換処理において、用いるべきスタイル画像データSDを取得する。
図9のS440では、CPU110は、図6のS230と同様に、注目領域のスタイル変換処理を実行する。S442では、図6のS232と同様に、CPU110は、入力画像データのうちの注目領域に対応する部分画像データを変換済データに置換することによって、中間画像を示す中間画像データを生成する。
図9のS445では、CPU110は、全ての対象領域について処理されたか否かを判断する。未処理の領域がある場合には(S445:NO)、S430に処理が戻される。全ての対象領域について処理された場合には(S445:YES)、S450に処理が進められる。
図9のS450では、CPU110は、図6のS250と同様に、入力画像データに対して肌色補正を実行して、補正済みの入力画像データを生成する。図9のS455では、CPU110は、図6のS255と同様に、中間画像データに対して、顔の全体のスタイル変換処理を実行して、出力画像データを生成する。
図9のS460では、CPU110は、S410にて受信された情報に基づいて、表情の変更を実行することが選択されたか否かを判断する。表情の変更を実行することが選択された場合には(S460:YES)、S420にて、CPU110は、出力画像データに対して、さらに、表情を変更するためのスタイル変換処理を実行する。例えば、CPU110は、S410にて受信された情報に基づいて、変更後の表情の種類(例えば、歯を見せない笑顔、真顔)を決定して、変更後の表情の種類を示すラベルデータを生成する。CPU110は、出力画像データとラベルデータとを、表情用の生成ネットワークGN5に入力することによって、表情が変更された人物の顔を含む出力画像(図示省略)を示す出力画像データを生成する。
表情の変更を実行することが選択されない場合には(S460:NO)、CPU110は、S465をスキップして、S470に処理を進める。
図9のS470では、CPU110は、S410にて受信された情報に基づいて、歯列の矯正を実行することが選択されたか否かを判断する。表情の変更を実行することが選択された場合には(S470:YES)、図9のS475にて、CPU110は、歯列を矯正するためのスタイル変換処理を実行する。例えば、CPU110は、出力画像データをコンテンツ画像データCDとし、予め用意された歯列が矯正された人物の顔を示す画像データをスタイル画像データSDとして、歯列用の生成ネットワークGN6に入力することによって、歯列が矯正された人物の顔を含む出力画像(図示省略)を示す出力画像データを生成する。
歯列の矯正を実行することが選択されない場合には(S470:NO)、CPU110は、S475をスキップして、S480に処理を進める。
表情の変更も歯列の矯正も実行されない場合には、S455にて生成された出力画像データが、最終的な出力画像データである。表情の変更が実行され、歯列の矯正が実行されない場合には、S465にて生成された出力画像データが、最終的な出力画像データである。歯列の矯正が実行される場合には、S475にて生成された出力画像データが、最終的な出力画像データである。
図9のS480では、CPU110は、最終的な出力画像データを端末装置200に送信して、処理を終了する。
図7のS345では、端末装置200のCPU210は、端末装置200から送信される出力画像データを受信する。S350では、CPU210は、出力画像データを用いて、出力画像を表示装置250に表示する。具体的には、図8の選択画面UDの入力画像Iinに代えて、出力画像を表示する。ユーザは、選択画面UDにて、出力画像を確認して、出力画像に満足した場合には出力ボタンBT4を押下する。ユーザは、出力画像の生成を再度やり直す場合には、選択画面UDにおいて、選択指示の入力内容を適宜に変更して、前処理ボタンBT3を押下する。
図9のS355では、CPU210は、出力ボタンBT4が押下されたか、前処理ボタンBT3が押下されたか、を判断する。出力ボタンBT4が押下された場合には(S355:YES)、CPU210は、S360に処理を進める。前処理ボタンBT3が押下された場合には(S355:NO)、CPU210は、S340に戻る。
S360では、CPU210は、出力画像データを用いて刺繍データに変換する。刺繍データは、刺繍模様を表すデータであり、例えば、刺繍模様の縫目を形成するための針落点の座標と、縫い順と、使用すべき糸の色と、を縫目ごとに示すデータである。出力画像データを刺繍データに変換する処理には、公知の処理、例えば、特開2019−41834号に開示された処理が用いられる。
S365では、CPU210は、刺繍データをミシン300に送信する。ミシン300は、刺繍データを受信すると、刺繍データを用いて、布に刺繍模様を縫製する。
以上説明した第2実施例によれば、出力画像データを生成する際に、第1実施例と同様に柔軟なスタイル変換処理を実現できる。この結果、例えば、ユーザの好みに応じた柔軟な前処理が行われた出力画像データを生成できる。したがって、例えば、ユーザが一般的な画像加工プログラムを用いて前処理を行う技術を有していなくても、ユーザの好みに応じた多様な刺繍模様を布に印刷することができる。
例えば、第2実施例によれば、特定の後処理として、人物の顔の表情を変更するスタイル変換処理(図9のS465)が実行される。この結果、人物の顔の表情の変更を含む柔軟なスタイル変換を実現することができる。例えば、ユーザは1個の入力画像データを用意するだけで、様々な表情を有する顔を示す出力画像データをシステム1000に生成させることができ、ひいては、様々な表情を有する顔の刺繍模様をミシン300に縫製させることができる。
さらに、第2実施例によれば、CPU110は、目の部分画像PIer、PIelを示す部分画像データに対して実行すべき処理を、白目処理とスタイル変換処理とから選択する(図9のS415)。CPU210は、スタイル変換処理が選択される場合に、白目処理を実行せずに、スタイル変換処理を実行し、白目処理が選択される場合に、スタイル変換処理を実行せずに、白目処理を実行する。この結果、目の部分画像データに対する処理として、機械学習モデルを用いたスタイル変換処理と、機械学習モデルを用いない白目処理と、が使い分けられるので、処理の柔軟性を向上できる。例えば、ユーザは、目に対する処理として、スタイル変換処理よりも単純な白目処理を好む場合もあるが、本実施例では、このようなユーザのニーズにも応えることができる。
さらに、第2実施例によれば、口を示す画像において歯列を矯正するスタイル変換処理が実行される(図9のS475)。この結果、歯列が矯正された画像を示す出力画像データを容易に生成することができる。
B.変形例:
(1)上記各実施例では、入力画像Iinに含まれる人物の人種と性別に応じて異なるスタイル画像データSDが用いられる。これに限らず、例えば、入力画像Iinに含まれる人物の表情(例えば、怒り、笑い、真顔)や、顔の角度(例えば、正面、側面、斜め)に応じて異なるスタイル画像データSDが用いられても良い。また、上記実施例では、これらの入力画像Iinの種類は、ユーザの選択指示に基づいて特定されているが、例えば、画像認識処理、例えば、上述したyoloと呼ばれる画像認識アルゴリズムを用いて特定されても良い。
(2)上記各実施例では、部位ごとのスタイル変換処理(図6のS230、図9のS440)の対象の部位は、目、鼻、口である。これに限らず、対象の部位は、頭(頭髪)、耳、ほほ、顎などの他の部位であっても良い。
(3)上記各実施例では、入力画像Iinは、人物の顔FCを含む画像に限らず、他の画像であっても良い。例えば、入力画像Iinは、風景、動物、建物を含み、人物を含まない画像であっても良い。いずれの画像が入力画像として用いられる場合であっても、その画像の一部である第1部分画像と、第1部分画像とは異なる位置にある第2部分画像と、で互いに異なるスタイル変換処理が実行されることが好ましい。
(4)上記各実施例で用いられる生成ネットワーク(機械学習モデル)は一例であり、これに限られない。例えば、目、鼻、口で共通の生成ネットワークが用いられても良い。また、例えば、トレーニング時に用いられたスタイル画像が有する1種類のスタイルのみに変換可能である生成ネットワークが用いられても良い。この場合には、例えば、1つの部位(例えば、鼻)のスタイル変換のために、選択可能なスタイル画像の個数分の生成ネットワークが用意され、選択されたスタイル画像に応じて使い分けられても良い。
(5)上記各実施例では、スタイル画像データSDは、サーバ100に格納されたスタイル画像データ群SDGから選択される。これに代えて、スタイル画像データSDは、ユーザによって用意された画像データであっても良い。この場合には、ユーザは、用意したスタイル画像データSDを端末装置200に入力する。入力されたスタイル画像データSDは、端末装置200からサーバ100に送信され、サーバ100においてスタイル変換処理に用いられる。
(6)上記各実施例では、CPU110は、ユーザによって選択されたスタイル画像データSDを取得し(例えば、図6のS227)、該スタイル画像データSDを生成ネットワークに入力してスタイル変換処理を実行している(例えば、図6のS230)。これに代えて、予め複数個のスタイル画像データSDを、それぞれ、生成ネットワークGNのエンコーダECに入力して、複数個の特徴データを生成しておいても良い。この場合には、ユーザによって選択されたスタイル画像データSDに対応する特徴データを取得し、該特徴データを用いてスタイル変換処理を実行しても良い。
(7)上記各実施例では、特定の後処理として、顔の全体のスタイル変換処理(例えば、図6のS255)を実行することによって、図4(C)の中間画像Imbに現れるスジBLを軽減している。これに代えて、他の処理、例えば、フィルタを用いた平滑化処理をスジBLの部分の画素に対して実行しても良い。一般的には、スジBLを構成する部分、例えば、図4(C)の変換済部分画像TIerと、変換済部分画像TIerに隣接する部分との間における画素値の差と、を軽減する処理が実行されることが好ましい。
(8)上記各実施例の処理は、一例であり、適宜に省略や追加などの変更が行われ得る。例えば、図9のS420の白目処理、S460のスタイル変換処理、S475のスタイル変換処理の全部または一部は省略されても良い。また、これらの処理は、第1実施例の図6の処理の中で適宜に実行されても良い。図6または図9において、顔の全体のスタイル変換処理(図6のS255、図9のS455)は、省略されても良い。また、スタイル変換の強度のパラメータαは、固定値とされても良いし、各領域のスタイル変換において共通の値が用いられても良い。
(9)上記各実施例のサーバ100が実行する処理の全部または一部は、端末装置200によって実行されても良い。例えば、図6のS210の顔の部位の領域の特定は、端末装置200のCPU210によって実行されても良い。また、図6のS230にて生成された各部位の領域に対応する変換済データは、端末装置200に送信され、端末装置200において入力画像データと変換済データとを用いて、中間画像データ、あるいは、最終的な出力画像データが生成されても良い。
(10)図1のサーバ100や端末装置200のハードウェア構成は、一例であり、これに限られない。例えば、各実施例の処理を行うサーバ100や端末装置200のプロセッサは、CPUに限らず、GPU(Graphics Processing Unit)やASIC(application specific integrated circuit)、あるいは、これらとCPUとの組み合わせであっても良い。また、サーバ100は、ネットワークを介して互いに通信可能な複数個の計算機(例えば、いわゆるクラウドサーバ)であっても良い。
(11)上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。例えば、生成ネットワークGN1〜GN6は、プログラムモジュールに代えて、ASIC(Application Specific Integrated Circuit)等のハードウェア回路によって実現されてよい。
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨並びに特許請求の範囲を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。