(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0013】
以下に、本願に係る画像生成装置、画像生成方法および画像生成プログラムの実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態により本願に係る画像生成装置、画像生成方法および画像生成プログラムが限定されるものではない。
【0014】
[第1の実施形態]
以下の実施の形態では、第1の実施形態に係る画像生成装置10の構成、画像生成装置10の処理の流れを順に説明し、最後に第1の実施形態による効果を説明する。
【0015】
[画像生成装置の構成]
図1は、第1の実施形態に係る画像生成装置の構成例を示すブロック図である。
図1を用いて、画像生成装置10の構成を説明する。
図1に示すように、画像生成装置10は、ユーザ端末20とネットワーク30を介して接続されている。
【0016】
ここでユーザ端末20は、例えば、デスクトップ型PC、タブレット型PC、ノート型PC、携帯電話機、スマートフォン、PDA(Personal Digital Assistant)等の情報処理装置である。
【0017】
また、
図1に示すように、この画像生成装置10は、通信処理部11、制御部12および記憶部13を有する。以下に画像生成装置10が有する各部の処理を説明する。
【0018】
通信処理部11は、各種情報に関する通信を制御する。例えば、通信処理部11は、ユーザ端末20から食材名と料理画像の生成要求とを受信する。また、通信処理部11は、ユーザ端末20に対して生成した料理画像を送信する。
【0019】
記憶部13は、制御部12による各種処理に必要なデータおよびプログラムを格納するが、特に本発明に密接に関連するものとしては、料理データ記憶部13aを有する。例えば、記憶部13は、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、又は、ハードディスク、光ディスク等の記憶装置などである。なお、料理データ記憶部13aに記憶されるデータは、事前に格納されたデータであって、適宜更新可能なデータである。
【0020】
料理データ記憶部13aは、本物の料理の画像である料理画像と、該本物の料理に使用された食材に関する情報とを対応付けて記憶する。例えば、料理データ記憶部13aは、
図2に例示するように、本物の料理の画像である「料理画像」と、料理画像の料理に使用された食材の名称を示す「食材名」と、食材名をベクトル化した「食材ベクトル」とを対応付けて記憶する。
図2は、料理データ記憶部に記憶されるデータの一例を示す図である。
【0021】
図2の例を挙げて説明すると、料理データ記憶部13aは、料理画像「画像A」と、食材名「卵、鶏肉、玉ねぎ・・・」と、食材ベクトル「ベクトルA」とを対応付けて記憶する。なお、
図2に例示した情報は一例であり、これに限定されるものではない。なお、
図2の例では、料理画像および食材ベクトルについて、画像A、ベクトルA等と簡略的に記載している。
【0022】
制御部12は、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有し、これらによって種々の処理を実行するが、特に本発明に密接に関連するものとしては、生成部12a、識別部12b、学習部12c、取得部12dおよび学習済み生成部12eを有する。ここで、制御部12は、CPU(Central Processing Unit)やMPU(Micro Processing Unit)、GPU(Graphical Processing Unit)などの電子回路やASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの集積回路である。
【0023】
制御部12の各機能部によって実行される処理は、モデルの機械学習を行う学習フェーズと学習済みモデルを用いて料理画像を生成する画像生成フェーズとに大別される。制御部12における生成部12a、識別部12bおよび学習部12cは、学習フェーズにおける処理を行う機能部であり、取得部12dおよび学習済み生成部12eは、画像生成フェーズにおける処理を行う機能部である。なお、第1の実施形態に係る画像生成装置10は、学習フェーズにおける学習処理および画像生成フェーズにおける画像生成処理の両方を行う装置として説明するが、これに限定されるものではなく、画像生成フェーズにおける画像生成処理のみを行うようにしてもよい。この場合には、画像生成装置10は、事前に機械学習処理が行われた学習済みモデルを予め設定されているものとする。
【0024】
また、学習フェーズにおいては、例えば、ニューラルネットワークの一種である敵対的生成ネットワークであるGAN(Generative Adversarial Network)を利用し、生成器と識別器という二つのニューラルネットワークを組み合わせて所与のデータ集合に対する学習を行う。例えば、学習処理として、対象データが画像である場合には、生成器は何らかのランダムな画像を生成するように、識別器は入力画像が元のデータ集合に属するものであるか生成器の生成したものであるかを識別するように構築される。なお、学習フェーズにおける学習処理および画像生成フェーズにおける画像生成処理については、後に図を用いて詳述する。以下では、各機能部について説明する。
【0025】
生成部12aは、料理データ記憶部13aに記憶された食材に関する情報と乱数とを入力として、料理画像を生成する第一のモデル(以下では、「生成器」と記載)を用いて、料理画像を生成する。
【0026】
具体的な処理を説明すると、生成部12aは、料理データ記憶部13aからランダムサンプリングを行って食材名のセットを取得する。そして、生成部12aは、取得した食材名をベクトルに変換する。例えば、生成部12aは、取得した食材名をWord−embeddingを行ってベクトルφに変換し、さらにベクトルφを正規分布N(μ(φ),σ(φ))に基づく潜在変数c´として表現することにより次元圧縮を行う。そして、生成部12aは、ベクトルc´と乱数ベクトルzを結合し、結合したベクトルを入力として生成器を用いて、料理画像を生成する。
【0027】
識別部12bは、料理データ記憶部13aに記憶された料理画像と食材に関する情報を訓練データとして、入力された画像の本物らしさを識別する第二のモデル(以下では、「識別器」と記載)を用いて、生成部12aによって生成された料理画像の本物らしさを識別する。
【0028】
具体的な処理を説明すると、識別部12bは、生成器により生成された料理画像と、生成部12aが料理データ記憶部13aからランダムサンプリングを行って取得した食材名に対応する本物の料理画像および食材ベクトルc´とを識別器に入力し、畳み込みニューラルネットワークを用いて、生成器により生成された料理画像が本物らしいかを識別する。なお、どのように本物らしいかを識別する手法については、既存のどのような手法を用いてもよいが、例えば、生成器により生成された料理画像と本物の料理画像との確率分布の距離を計算し、計算した距離に応じて本物らしさを定義するようにしてもよい。
【0029】
学習部12cは、本物らしい料理画像を生成できるように生成器を最適化し、料理画像の識別精度が向上できるように識別器を最適化する。例えば、学習部12cは、上述したように、生成器によって料理画像が生成され、識別器によって料理画像の本物らしさを識別されるたびに、本物らしい料理画像を生成できるように生成器のパラメータを最適化し、料理画像の識別精度が向上できるように識別器のパラメータを最適化する。なお、学習部12cは、パラメータを最適化する手法については、どのような手法であってもよく、機械学習における既存の最適化手法のうち、どの手法を適用してもよい。
【0030】
ここで、
図3を用いて、第1の実施形態に係る画像生成装置10における学習処理の一連の流れを説明する。
図3は、第1の実施形態に係る画像生成装置における学習処理を説明する図である。
図3に示すように、画像生成装置10では、生成器と識別器という二つのニューラルネットワークを組み合わせて適用し、生成器はランダムな料理画像を生成するように、識別器は入力された料理画像が本物の料理画像に属するものであるか生成器の生成した料理画像であるかを識別するように構築される。
【0031】
図3に示すように、画像生成装置10は、料理データ記憶部13aから取得した「食材名」をWord−embeddingを行ってベクトルφに変換する。そして、画像生成装置10は、ベクトルφを正規分布N(μ(φ),σ(φ))に基づく潜在変数c´として表現することにより次元圧縮を行い、ベクトルc´と乱数ベクトルzを結合する(
図3の(A)参照)。
【0032】
そして、画像生成装置10は、結合したベクトルを生成器に入力し、畳み込みニューラルネットワークを用いてアップサンプリングして料理画像を生成する(
図3の(B)参照)。
【0033】
続いて、画像生成装置10は、生成器により生成された料理画像と、生成部12aが料理データ記憶部13aからランダムサンプリングを行って取得した食材名に対応する本物の料理画像および食材ベクトルc´とを識別器に入力し、畳み込みニューラルネットワークを用いて、生成器により生成された料理画像が本物らしいかを識別する(
図3の(C)参照)。
【0034】
画像生成装置10は、上記の処理(
図3の(A)〜(C)の処理)を繰り返し、生成器がより本物らしい料理画像を生成できるように、識別器が料理画像の識別精度が向上できるように、それぞれのニューラルネットワークのパラメータを最適化する。このように、画像生成装置10では、二つのニューラルネットワークを同時並行で訓練することで、学習が成功すれば、学習済みモデルの生成器は本物の料理画像と識別困難な料理画像をランダムに生成して出力するようになる。
【0035】
つまり、画像生成装置10では、学習に用いるデータ集合として、実際の料理画像とその料理で用いられている食材たちの名称が組になったものを利用する。そして、画像生成装置10は、生成器がランダムに画像を生成する際、及び、識別器が入力画像を識別する際に、それぞれの画像の料理に用いられている食材たちの名称を付加情報として利用するよう、GANの構造を改良する。これによって、学習済みモデルの生成器は食材たちの名前を所与として、対応するそれらしい料理画像をランダムに生成して出力するようになる。
【0036】
また、画像生成装置10では、「食材名」をWord−embeddingを行ってベクトルφに変換した後、ベクトルφを正規分布N(μ(φ),σ(φ))に基づく潜在変数c´として表現している。通常、食材の種類は膨大(数百次元)であり、入力する食材名を通常のOne−hotベクトルなどに変換してしまうと表現能力が低くなってしまう。このため、生成器や識別器にこのままOne−hotベクトルを入力すると、そのベクトルの要素の多くは0につぶれてしまい、学習がうまく進まない場合がある。
【0037】
これに対して、画像生成装置10では、「食材名」をWord−embeddingを行ってベクトルφに変換した後、ベクトルφを正規分布N(μ(φ),σ(φ))に基づく潜在変数c´として表現することにより、より高い表現能力をもっと低次元ベクトルに変換する。このことにより、要素の多くが0に潰れることを防ぎ、学習をうまく進行させることが可能である。また、潜在変数c´は、確率分布に基づく表現であり、生成器の生成する画像の多様性を損なうものではない。
【0038】
図1の説明に戻って、取得部12dは、ユーザによって入力された食材に関する情報と、ランダムに生成されたランダムデータとを取得する。例えば、取得部12dは、ユーザ端末20に表示された入力画面に入力された食材名を取得する。ここで、
図4の例を用いて、ユーザ端末20に表示される食材の入力画面の一例を説明する。
図4は、ユーザ端末に表示される食材の入力画面の一例を示す図である。
【0039】
図4に例示するように、ユーザ端末20では、食材名を入力するためのテキストボックスと、料理画像の生成を指示するためのボタンとが表示される。例えば、
図4に例示するように、ユーザ端末20に表示された入力画面において、テキストボックスに「卵、鶏肉、玉ねぎ・・・」と入力し、「画像生成」と表示されたボタンを押下することで、食材名「卵、鶏肉、玉ねぎ・・・」と料理画像の生成要求とがユーザ端末20から画像生成装置10に送信される。入力時におけるシチュエーションの一例として、例えば、ユーザが、夕飯等を作る際に、手もとにある食材名をテキストボックスに入力する。
【0040】
なお、
図4に例示する入力画面は一例であり、これに限定されるものではない。例えば、
図4の例では、一つのテキストボックスが表示され、一つのテキストボックスに複数の食材名が入力されている例を示すが、複数のテキストボックスが表示され、各テキストボックスに一つずつ食材名が入力されるようにしてもよい。また、テキストボックスに代えて食材名を選択するためのプルダウンリストを表示してもよく、プルダウンリストから食材を選択できるようにしてもよい。
【0041】
また、取得部12dは、ユーザ端末20から食材名を受信すると、食材名をベクトルに変換する。例えば、取得部12dは、取得した食材名をWord−embeddingを行ってベクトルφに変換し、さらにベクトルφを正規分布N(μ(φ),σ(φ))に基づく潜在変数c´として表現することにより次元圧縮を行う。そして、取得部12dは、食材ベクトルc´と乱数ベクトルzを結合する。
【0042】
学習済み生成部12eは、取得部12dによって取得された食材に関する情報および乱数データを入力として、料理画像を生成するための学習済みモデルを用いて、料理画像を生成する。具体的には、学習済み生成部12eは、取得部12dによって食材ベクトルc´と乱数ベクトルzとが結合されたベクトルを入力として学習済みモデル(生成器)を用いて、料理画像を生成する。つまり、学習済み生成部12eは、上述の学習部12cによって最適化された生成器を学習済みモデルとして用いて、料理画像を生成する。その後、学習済み生成部12eは、生成した料理画像をユーザ端末20に出力する。
【0043】
ここで、
図5を用いて、第1の実施形態に係る画像生成装置10における画像生成処理の一連の流れを説明する。
図5は、第1の実施形態に係る画像生成装置における画像生成処理を説明する図である。
図5に示すように、画像生成装置10では、生成器と識別器という二つのニューラルネットワークを組み合わせて適用し、生成器はランダムな料理画像を生成するように、識別器は入力された料理画像が本物の料理画像に属するものであるか生成器の生成した料理画像であるかを識別するように構築される。
【0044】
図5に示すように、画像生成装置10は、料理データ記憶部13aから取得した「食材名」をWord−embeddingを行ってベクトルφに変換する。そして、画像生成装置10は、ベクトルφを正規分布N(μ(φ),σ(φ))に基づく潜在変数c´として表現することにより次元圧縮を行い、ベクトルc´と乱数ベクトルzを結合する。
【0045】
そして、画像生成装置10は、結合したベクトルを学習済みモデルである生成器に入力し、畳み込みニューラルネットワークを用いてアップサンプリングして料理画像を生成する。その後、画像生成装置10は、生成した料理画像をユーザ端末20に送信する。
【0046】
ここで、
図6の例を用いて、ユーザ端末20に表示される料理画像の出力画面について説明する。
図6は、ユーザ端末に表示される料理画像の出力画面の一例を示す図である。
図6に例示するように、ユーザ端末20において、料理画像の出力画面として、食材名が入力されたテキストボックスの下に料理画像が表示されている。ここで表示されている料理画像は、学習済みモデルの生成器によってランダムに生成されたものである。例えば、ユーザ端末20には、ユーザが手元にある食材名を所与としてランダムに生成された、既存の料理画像と異なる料理画像が表示される。
【0047】
このように、画像生成装置10は、学習済みモデルの生成器によってランダムに料理画像を生成するので、例えば、ユーザの手もとにある食材が以前と同一の場合でも相応のばらつきがあり、既存の料理画像とは異なる料理画像をユーザに提供することが可能である。このため、ユーザが家庭での調理において手もとの食材を用いて作りうる料理についての多様で新奇性のある示唆を容易に得ることができ、その創意工夫を通じた生活の質の向上につなげることができる。
【0048】
[画像生成装置の処理手順]
次に、
図7および
図8を用いて、第1の実施形態に係る画像生成装置10による処理手順の例を説明する。
図7は、第1の実施形態に係る画像生成装置における学習処理の流れの一例を示すフローチャートである。
図8は、第1の実施形態に係る画像生成装置における画像生成処理の流れの一例を示すフローチャートである。
【0049】
まず、
図7を用いて、画像生成装置10における学習処理の流れの一例を説明する。
図7に例示するように、画像生成装置10の生成部12aは、料理データ記憶部13aからランダムサンプリングを行って食材名を取得する(ステップS101)。そして、生成部12aは、取得した食材名をWord−embeddingを行ってベクトルφに変換する(ステップS102)。
【0050】
続いて、生成部12aは、変換したベクトルφを正規分布N(μ(φ),σ(φ))に基づく潜在変数c´として表現することにより次元圧縮を行う(ステップS103)。そして、生成部12aは、ベクトルc´と乱数ベクトルzを結合し(ステップS104)、結合したベクトルから生成器の畳み込みニューラルネットワークを用いて、料理画像を生成する(ステップS105)。
【0051】
そして、識別部12bは、生成器により生成された料理画像と、生成部12aが料理データ記憶部13aからランダムサンプリングを行って取得した食材名に対応する本物の料理画像および食材ベクトルc´とを識別器に入力し、識別器の畳み込みニューラルネットワークを用いて、生成器により生成された料理画像が本物らしいかを識別する(ステップS106)。
【0052】
その後、学習部12cは、所定の手法により、本物らしい料理画像を生成できるように生成器のパラメータを最適化し、料理画像の識別精度が向上できるように識別器のパラメータを最適化する(ステップS107)。なお、画像生成装置10では、上記のステップS101〜107の一連の処理を所定の条件を満たすまで繰り返し行うものとする。例えば、画像生成装置10は、予め繰り返し行う回数を設定するようにしてもよいし、生成器および識別器の精度が所定の閾値を満たすまで繰り返し行うようにしてもよい。
【0053】
次に、
図8を用いて、画像生成装置10における画像生成処理の流れの一例を説明する。
図8に例示するように、取得部12dは、ユーザ端末20から食材名の入力を受け付けると(ステップS201肯定)、食材名をベクトルφに変換する(ステップS202)。続いて、取得部12dは、変換したベクトルφを正規分布N(μ(φ),σ(φ))に基づく潜在変数c´として表現することにより次元圧縮を行う(ステップS203)。そして、取得部12dは、食材ベクトルc´と乱数ベクトルzを結合する(ステップS204)。
【0054】
そして、学習済み生成部12eは、結合したベクトルを入力として学習済みモデル(生成器)を用いて、料理画像を生成する(ステップS205)。その後、学習済み生成部12eは、生成した料理画像をユーザ端末20に出力する(ステップS206)。
【0055】
(第1の実施形態の効果)
第1の実施形態に係る画像生成装置10は、ユーザによって入力された食材に関する情報と、ランダムに生成された乱数データとを取得し、取得した食材に関する情報および乱数データを入力として、料理画像を生成するための学習済みモデルを用いて、料理画像を生成する。このため、バリエーション豊かな料理の一助となる創意工夫の余地がある料理画像を簡易に提供することが可能である。
【0056】
つまり、画像生成装置10では、学習済みモデルの生成器によってランダムに未知でかつ本物らしい料理画像を生成することができ、ユーザの手もとにある食材が以前と同一ないし類似の場合でも相応のばらつきがあり、ユーザに料理の外観をある程度想像させる料理画像を提供することができる。
【0057】
また、画像生成装置10では、レシピを提示するのではなく、既存の料理画像とは異なる料理画像をユーザに提供するので、調理に際して一定の創意工夫を凝らす余地がある。また、画像生成装置10は、手もとにある食材名を入力するだけでよいため、簡易に料理画像を得ることが出来る。このように、画像生成装置10では、ユーザが家庭での調理において手もとの食材を用いて作りうる料理についての多様で新奇性のある示唆を容易に得ることができ、その創意工夫を通じた生活の質の向上につなげることが可能である。
【0058】
(システム構成等)
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【0059】
また、本実施の形態において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【0060】
(プログラム)
また、上記実施形態において説明した画像生成装置が実行する処理をコンピュータが実行可能な言語で記述したプログラムを作成することもできる。例えば、実施形態に係る画像生成装置10が実行する処理をコンピュータが実行可能な言語で記述した画像生成プログラムを作成することもできる。この場合、コンピュータが画像生成プログラムを実行することにより、上記実施形態と同様の効果を得ることができる。さらに、かかる画像生成プログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録された画像生成プログラムをコンピュータに読み込ませて実行することにより上記実施形態と同様の処理を実現してもよい。
【0061】
図9は、画像生成プログラムを実行するコンピュータを示す図である。
図9に例示するように、コンピュータ1000は、例えば、メモリ1010と、CPU1020と、ハードディスクドライブインタフェース1030と、ディスクドライブインタフェース1040と、シリアルポートインタフェース1050と、ビデオアダプタ1060と、ネットワークインタフェース1070とを有し、これらの各部はバス1080によって接続される。
【0062】
メモリ1010は、
図9に例示するように、ROM(Read Only Memory)1011及びRAM1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、
図9に例示するように、ハードディスクドライブ1090に接続される。ディスクドライブインタフェース1040は、
図9に例示するように、ディスクドライブ1100に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ1100に挿入される。シリアルポートインタフェース1050は、
図9に例示するように、例えばマウス1110、キーボード1120に接続される。ビデオアダプタ1060は、
図9に例示するように、例えばディスプレイ1130に接続される。
【0063】
ここで、
図9に例示するように、ハードディスクドライブ1090は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093、プログラムデータ1094を記憶する。すなわち、上記の、画像生成プログラムは、コンピュータ1000によって実行される指令が記述されたプログラムモジュールとして、例えばハードディスクドライブ1090に記憶される。
【0064】
また、上記実施形態で説明した各種データは、プログラムデータとして、例えばメモリ1010やハードディスクドライブ1090に記憶される。そして、CPU1020が、メモリ1010やハードディスクドライブ1090に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出し、各種処理手順を実行する。
【0065】
なお、画像生成プログラムに係るプログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1090に記憶される場合に限られず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ等を介してCPU1020によって読み出されてもよい。あるいは、画像生成プログラムに係るプログラムモジュール1093やプログラムデータ1094は、ネットワーク(LAN(Local Area Network)、WAN(Wide Area Network)等)を介して接続された他のコンピュータに記憶され、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
【0066】
上記の実施形態やその変形は、本願が開示する技術に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。