(57)【要約】【課題】カメラが撮影した撮影画像に含まれる特徴点を検出するプログラムを提供する。【解決手段】当該プログラムは、前記カメラで撮影された画像を示す入力画像データと、入力画像データで示される画像内でカメラのユーザが指定した特徴点の指定位置を示す教師データとを取得する取得処理（Ｓ５１）と、メモリに記憶されたＤＮＮデータで示されるディープニューラルネットワークに入力画像データを入力することによって、当該入力画像データで示される画像に含まれる特徴点の推定位置を示す出力データを生成する生成処理（Ｓ５２）と、出力データで示される推定位置が教師データで示される指定位置に近づくように、ＤＮＮデータを更新する更新処理（Ｓ５３）とをコンピュータに繰り返し実行させる。【選択図】図５
2018092502.tif 000002
【特許請求の範囲】
【請求項１】
メモリと、カメラとに接続されたコンピュータによって読み取り可能なプログラムであって、
該プログラムは、入力画像データ及び教師データを取得する取得処理を前記コンピュータに実行させ、前記入力画像データは、前記カメラで撮影された画像を示し、前記教師データは、前記入力画像データで示される画像内で前記カメラのユーザが指定した特徴点の指定位置を示し、
該プログラムは、
前記メモリに記憶されたＤＮＮデータで示されるディープニューラルネットワークに前記入力画像データを入力することによって、当該入力画像データで示される画像に含まれる前記特徴点の推定位置を示す出力データを生成する生成処理と、
前記出力データで示される前記推定位置が前記教師データで示される前記指定位置に近づくように、前記ＤＮＮデータを更新する更新処理とを前記コンピュータに繰り返し実行させるプログラム。
【請求項２】
前記教師データは、第１方向及び前記第１方向に直交する第２方向の画素数が前記入力画像データで示される画像と同一であり、且つ前記指定位置の画素に第１画素値が設定された画像を示し、
前記出力データは、前記第１方向及び前記第２方向の画素数が前記入力画像データで示される画像と同一であり、且つ前記推定位置の画素に第２画素値が設定された画像を示し、
該プログラムは、前記更新処理において、前記出力データの前記第２画素値の位置が前記教師データの前記第１画素値の位置に近づくように、前記ＤＮＮデータを更新する請求項１に記載のプログラム。
【請求項３】
前記ＤＮＮデータは、各々が複数のノードで構成された入力層、中間層、及び出力層を含み、前記入力画像データの各画素の画素値が前記入力層の各ノードに入力されることによって、前記出力データの各画素の画素値が前記出力層の各ノードから出力される前記ディープニューラルネットワークを示し、
該プログラムは、前記生成処理において、前記カメラで撮影された画像が前記入力層のノード数に一致する画素数にリサイズされた前記入力画像データを用いて、前記出力データを生成する請求項２に記載のプログラム。
【請求項４】
該プログラムは、前記生成処理において、前記カメラで撮影された画像の色調が特定階調に減じられた前記入力画像データを用いて、前記出力データを生成する請求項２又は３に記載のプログラム。
【請求項５】
該プログラムは、前記生成処理において、前記カメラによって撮影された長方形の画像が正方形に変換された前記入力画像データを用いて、前記出力データを生成する請求項２から４のいずれかに記載のプログラム。
【請求項６】
前記ＤＮＮデータは、各々が複数のノードで構成された入力層、中間層、及び出力層を含み、且つ各層を構成する複数の前記ノードが隣接する層の全ての前記ノードに接続された全結合型の前記ディープニューラルネットワークを示し、
該プログラムは、繰り返し実行する前記生成処理それぞれにおいて、前記中間層を構成する複数の前記ノードのうちの異なる一部を省略する請求項１から５のいずれかに記載のプログラム。
【請求項７】
該プログラムは、前記更新処理において、誤差逆伝搬法を用いて前記ＤＮＮデータを更新する請求項１から６のいずれかに記載のプログラム。
【請求項８】
前記コンピュータは、通信インタフェースを備えており、
前記カメラは、前記通信インタフェースを通じて通信可能な携帯端末に搭載されており、
該プログラムは、
前記取得処理において、前記通信インタフェースを通じて前記携帯端末から前記入力画像データ及び前記教師データを受信し、
繰り返し実行させた前記更新処理で更新した前記ＤＮＮデータを、前記通信インタフェースを通じて前記携帯端末に送信する送信処理を前記コンピュータに実行させる請求項１から７のいずれかに記載のプログラム。
【請求項９】
該プログラムは、
前記取得処理において、前記入力画像データ及び前記教師データのセットを複数の前記携帯端末それぞれから受信し、
前記入力画像データ及び前記教師データの複数のセットそれぞれを用いて、同一の前記ＤＮＮデータに対する前記生成処理及び前記更新処理を前記コンピュータに実行させ、
前記送信処理において、複数の前記携帯端末それぞれに同一の前記ＤＮＮデータを送信する請求項８に記載のプログラム。
【請求項１０】
該プログラムは、
前記取得処理において、第１携帯端末及び第２携帯端末それぞれから前記入力画像データ及び前記教師データを受信し、
前記第１携帯端末から受信した前記入力画像データ及び前記教師データを用いて、第１ＤＮＮデータに対する前記生成処理及び前記更新処理を前記コンピュータに実行させ、
前記第２携帯端末から受信した前記入力画像データ及び前記教師データを用いて、第２ＤＮＮデータに対する前記生成処理及び前記更新処理を前記コンピュータに実行させ、
前記送信処理において、前記第１携帯端末に前記第１ＤＮＮデータを送信し、前記第２携帯端末に前記第２ＤＮＮデータを送信する請求項８に記載のプログラム。
【請求項１１】
カメラと、ディスプレイと、入力インタフェースと、通信インタフェースとを備える携帯端末によって読み取り可能なプログラムであって、
該プログラムは、
対象物を撮影した前記カメラが生成した撮影画像データを取得する取得処理と、
前記撮影画像データで示される撮影画像及び前記撮影画像に重ねられたガイド画像を、前記ディスプレイに表示させる表示処理と、
前記表示処理で表示させた前記撮影画像に含まれる特徴点に重なる位置に前記ガイド画像を移動させるユーザ操作を、前記入力インタフェースを通じて受け付ける受付処理と、
前記通信インタフェースを通じてサーバに入力画像データ及び教師データを送信する送信処理とを前記携帯端末に実行させ、前記入力画像データは、前記撮影画像データに対応するデータであり、前記教師データは、前記入力画像データで示される画像内において、前記受付処理で前記ガイド画像が重ねられた指定位置を示すプログラム。
【請求項１２】
該プログラムは、
前記通信インタフェースを通じてＤＮＮデータを受信する受信処理と、
前記ＤＮＮデータで示されるディープニューラルネットワークに前記入力画像データを入力することによって、当該入力画像データで示される画像に含まれる前記特徴点の推定位置を示す出力データを生成する生成処理とを前記携帯端末に実行させ、前記ＤＮＮデータは、前記送信処理で送信した前記入力画像データ及び前記教師データを用いてディープラーニングされたデータであり、
該プログラムは、前記表示処理において、前記出力データで示される前記推定位置に対応する前記撮影画像上の位置に、前記ガイド画像を表示させる請求項１１に記載のプログラム。
【請求項１３】
前記撮影画像は、長方形の前記対象物が斜めから撮影されたことによって台形に表された前記対象物を示す画像であり、
前記特徴点は、前記撮影画像上における前記対象物の４つの頂点の位置であり、
該プログラムは、
前記受付処理で指定された４つの頂点で囲まれた領域の画像を台形補正することによって、長方形の補正画像を示す補正画像データを生成する補正処理と、
前記補正画像データを出力する出力指示処理とを前記携帯端末に実行させる請求項１１又は１２に記載のプログラム。
【請求項１４】
カメラ、ディスプレイ、入力インタフェース、第１通信インタフェース、及び第１コントローラを備える携帯端末と、メモリ、第２通信インタフェース、及び第２コントローラを備えるサーバとで構成されるシステムであって、
前記第１コントローラは、
対象物を撮影した前記カメラが生成した撮影画像データを取得する取得処理と、
前記撮影画像データで示される撮影画像及び前記撮影画像に重ねられたガイド画像を、前記ディスプレイに表示させる表示処理と、
前記表示処理で表示させた前記撮影画像に含まれる特徴点に重なる位置に、前記ガイド画像を移動させるユーザ操作を前記入力インタフェースを通じて受け付ける受付処理と、
前記第１通信インタフェースを通じて前記サーバに入力画像データ及び教師データを送信する送信処理とを実行し、前記入力画像データは、前記撮影画像データに対応するデータであり、前記教師データは、前記入力画像データで示される画像内において、前記受付処理で前記ガイド画像が重ねられた指定位置を示し、
前記第２コントローラは、
前記第２通信インタフェースを通じて前記携帯端末から前記入力画像データ及び前記教師データを受信する受信処理と、
前記メモリに記憶されたＤＮＮデータで示されるディープニューラルネットワークに前記入力画像データを入力することによって、当該入力画像データで示される画像に含まれる前記特徴点の推定位置を示す出力データを生成する生成処理と、
前記出力データで示される前記推定位置が前記教師データで示される前記指定位置に近づくように、前記ＤＮＮデータを更新する更新処理とを繰り返し実行するシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、カメラに生成させた画像に含まれる特徴点を検出するプログラムに関する。
【背景技術】
【０００２】
特許文献１には、カメラに生成させた撮影画像を台形補正する携帯端末のプログラムが記載されている。より詳細には、特許文献１に記載のプログラムは、カメラで被写体を撮影した撮影画像をディスプレイに表示させ、撮影画像内で被写体を囲む略四角形領域の頂点の位置をユーザに指定させ、指定された略四角形領域の画像をトリミングし、トリミングした画像を台形補正する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−２１８５４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特にディスプレイサイズが小さい携帯端末において、略四角形領域の頂点の位置を正確に指定するのは、ユーザにとって難しい場合がある。また、このような課題は、略四角形領域の頂点の位置を指定する場合に限定されず、複数の人物が写っている写真の中から特定の人物を指定する等、撮影画像に含まれる特徴点の位置を指定する場合にも、同様に発生し得る。
【０００５】
本発明は、上記の事情に鑑みてなされたものであり、その目的は、カメラが撮影した撮影画像に含まれる特徴点を検出するプログラムを提供することにある。
【課題を解決するための手段】
【０００６】
本明細書では様々な開示を行う。開示例の１つであるプログラムは、メモリと、カメラとに接続されたコンピュータによって読み取り可能である。該プログラムは、入力画像データ及び教師データを取得する取得処理を前記コンピュータに実行させる。前記入力画像データは、前記カメラで撮影された画像を示す。前記教師データは、前記入力画像データで示される画像内で前記カメラのユーザが指定した特徴点の指定位置を示す。該プログラムは、前記メモリに記憶されたＤＮＮデータで示されるディープニューラルネットワークに前記入力画像データを入力することによって、当該入力画像データで示される画像に含まれる前記特徴点の推定位置を示す出力データを生成する生成処理と、前記出力データで示される前記推定位置が前記教師データで示される前記指定位置に近づくように、前記ＤＮＮデータを更新する更新処理とを前記コンピュータに繰り返し実行させる。
【０００７】
上記構成によれば、カメラで実際に撮影された画像を示す入力画像データと、カメラのユーザが確認した特徴点の指定位置を示す教師データとを用いて、特徴点の位置を検出する処理をディープニューラルネットワークに学習させることができる。その結果、学習のために生成されたデータで学習させる場合と比較して、ディープニューラルネットワークを効率的に成長させることができる。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施形態に係るシステム１００の概略図である。
【図２】図２（Ａ）は携帯端末５０のブロック図を、図２（Ｂ）はサーバ８０のブロック図を示す図である。
【図３】図３は、台形補正処理のフローチャートである。
【図４】図４（Ａ）は学習データ出力処理のフローチャートを、図４（Ｂ）はガイド位置決定処理のフローチャートである。
【図５】図５（Ａ）は学習処理のフローチャートを、図５（Ｂ）はＳ５２で生成された出力画像データ１４５を示す図である。
【図６】図６（Ａ）は撮影画像データ１４１及び位置画像データ１４２の例を、図６（Ｂ）は対応する入力画像データ１４３及び教師画像データ１４４の例を示す図である。
【図７】図７は、ディスプレイ５３の表示例であって、（Ａ）はカメラ画面を、（Ｂ）は台形指定画面を示す。
【図８】図８は、ディスプレイ５３の表示例であって、（Ａ）はガイド画像１２２〜１２５が原稿の頂点の位置に移動された台形指定画面を、（Ｂ）はプレビュー画面を示す。
【図９】図９は、ディープニューラルネットワークの構造の例を示す図である。
【発明を実施するための形態】
【０００９】
以下、適宜図面を参照して本発明の実施形態について説明する。なお、以下に説明される実施形態は本発明の一例にすぎず、本発明の要旨を変更しない範囲で、本発明の実施形態を適宜変更できることは言うまでもない。
【００１０】
図１は、本実施形態に係るシステム１００の概略図である。図１に示されるシステム１００は、プリンタ１０と、携帯端末５０Ａ、５０Ｂ（以下、これらを総称して、「携帯端末５０」と表記することがある。）と、サーバ８０とで構成されている。プリンタ１０、携帯端末５０、及びサーバ８０は、通信ネットワーク１０１を通じて相互に通信可能に構成されている。通信ネットワーク１０１の具体例は特に限定されないが、例えば、インターネット、有線ＬＡＮ、無線ＬＡＮ、或いはこれらの組み合わせであってもよい。
【００１１】
プリンタ１０は、画像データで示される画像をシートに記録するプリント動作を実行する。より詳細には、プリンタ１０は、通信ネットワーク１０１を通じて携帯端末５０から受信した画像データを対象とするプリント動作を実行する。プリンタ１０の記録方式としては、インクジェット方式や電子写真方式などの公知の方式を採用することができる。プリンタ１０の構成は周知なので、詳細な説明は省略する。
【００１２】
携帯端末５０は、図２（Ａ）に示されるように、カメラ５２と、ディスプレイ５３と、入力Ｉ／Ｆ５４と、通信Ｉ／Ｆ５５と、ＣＰＵ６１と、メモリ６２と、通信バス６３とを主に備える。携帯端末５０を構成する各構成要素は、通信バス６３を通じて相互に接続されている。携帯端末５０Ａ、５０Ｂの構成は、同様であってもよい。携帯端末５０Ａは第１携帯端末の一例であり、携帯端末５０Ｂは第２携帯端末の一例である。
【００１３】
携帯端末５０は、例えば、携帯電話、スマートフォン、タブレット端末等である。より詳細には、携帯端末５０のディスプレイ５３は、表示画面のサイズが１２インチ以下、より好ましくは８インチ以下であるのが望ましい。また、携帯端末５０の入力Ｉ／Ｆ５４は、ディスプレイ５３の表示画面に重ねられたタッチパネルであるのが望ましい。
【００１４】
カメラ５２は、被写体を撮影して画像データ（以下、「撮影画像データ」と表記することがある。）を生成する。カメラ５２の動作は、例えば、メモリ６２に記憶された不図示のカメラプログラムによって制御される。すなわち、カメラプログラムは、例えば図７（Ａ）に示されるように、カメラ５２が生成した撮影画像データで示される撮影画像１１１と、［撮影］アイコン１１２とをディスプレイ５３に表示させる。また、ディスプレイ５３に表示される撮影画像１１１は、カメラ５２の向きが変更されるのに追従して変更される。そして、カメラプログラムは、［撮影］アイコン１１２を指定するユーザ操作を入力Ｉ／Ｆ５４を通じて受け付けたことに応じて、カメラ５２が生成した撮影画像データをメモリ６２に記憶させる。
【００１５】
カメラ５２は、例えば、第１方向の画素数がＡ画素で且つ第１方向に直交する第２方向の画素数がＢ画素（以下、「Ａ×Ｂ」と表記する。）の長方形の画像を示す撮影画像データを生成する。携帯端末５０の長手方向を鉛直方向に向けた状態で撮影した場合、第１方向が縦方向となり、第２方向が横方向となる。一方、携帯端末５０の短手方向を鉛直方向に向けた状態で撮影した場合、第１方向が横方向となり、第２方向が縦方向となる。すなわち、撮影画像データで示される画像の縦横比は、撮影時の携帯端末５０の姿勢によって異なる。また、撮影画像データで示される画像の画素数、縦横比、解像度、各画素の色調等は、携帯端末５０Ａ、５０Ｂのカメラ５２で異なっていてもよい。
【００１６】
ディスプレイ５３は、液晶ディスプレイ、有機ＥＬディスプレイ等であり、各種情報を表示する表示画面を備える。
【００１７】
入力Ｉ／Ｆ５４は、ユーザによる入力操作を受け付けるユーザインタフェースである。具体的には、入力Ｉ／Ｆ５４はボタンを有しており、押下されたボタンに対応づけられた各種の操作信号をＣＰＵ６１へ出力する。さらに、入力Ｉ／Ｆ５４は、ディスプレイ５３の表示面に重畳された膜状のタッチセンサを有していてもよい。ディスプレイ５３の表示面に表示されたオブジェクトを指定する操作、文字列或いは数字列を入力する操作は、ユーザ操作の一例である。「オブジェクト」とは、例えば、ディスプレイ５３に表示された文字列、アイコン、ボタン、リンク、ラジオボタン、チェックボックス、プルダウンメニュー等である。
【００１８】
タッチセンサとして実現される入力Ｉ／Ｆ５４は、ユーザがタッチした表示面上の位置を示す位置情報を出力する。なお、本明細書中における「タッチ」とは、入力媒体を表示面に接触させる操作全般を含む。また、入力媒体が表示面に触れていなくても、表示面との間の距離がごく僅かな位置まで入力媒体を近接させる「ホバー」或いは「フローティングタッチ」を、前述の「タッチ」の概念に含めてもよい。さらに入力媒体とは、ユーザの指であってもよいし、タッチペン等であってもよい。ディスプレイ５３に表示されたオブジェクトの位置のタップするユーザ操作は、当該オブジェクトを指定する指定操作の一例である。
【００１９】
通信Ｉ／Ｆ５５は、通信ネットワーク１０１を通じて外部装置と通信可能なインタフェースである。すなわち、携帯端末５０は、通信Ｉ／Ｆ５５を通じて外部装置に各種情報を送信し、通信Ｉ／Ｆ５５を通じて外部装置から各種情報を受信する。通信Ｉ／Ｆ５５の具体的な通信手順は特に限定されないが、例えば、Ｗｉ−Ｆｉ（登録商標）を採用することができる。通信Ｉ／Ｆ５５は、第１通信インタフェースの一例である。
【００２０】
ＣＰＵ６１は、携帯端末５０の全体動作を制御するものである。ＣＰＵ６１は、入力Ｉ／Ｆ５４から出力される各種情報、通信Ｉ／Ｆ５５を通じて外部装置から受信した各種情報等に基づいて、後述する各種プログラムをメモリ６２から取得して実行する。ＣＰＵ６１はコンピュータの一例であり、ＣＰＵ６１及びメモリ６２は第１コントローラの一例である。
【００２１】
メモリ６２は、ＯＳ６４と、端末プログラム６５とを記憶している。端末プログラム６５は、単一のプログラムであってもよいし、複数のプログラムの集合体であってもよい。また、メモリ６２は、端末プログラム６５の実行に必要なデータ或いは情報等を記憶する。メモリ６２は、例えば、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＨＤＤ、携帯端末５０に着脱されるＵＳＢメモリ等の可搬記憶媒体、ＣＰＵ６１が備えるバッファ等、或いはそれらの組み合わせによって構成される。
【００２２】
メモリ６２は、コンピュータが読み取り可能なストレージ媒体であってもよい。コンピュータが読み取り可能なストレージ媒体とは、ｎｏｎ−ｔｒａｎｓｉｔｏｒｙな媒体である。ｎｏｎ−ｔｒａｎｓｉｔｏｒｙな媒体には、上記の例の他に、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等の記録媒体も含まれる。また、ｎｏｎ−ｔｒａｎｓｉｔｏｒｙな媒体は、ｔａｎｇｉｂｌｅな媒体でもある。一方、インターネット上のサーバなどからダウンロードされるプログラムを搬送する電気信号は、コンピュータが読み取り可能な媒体の一種であるコンピュータが読み取り可能な信号媒体であるが、ｎｏｎ−ｔｒａｎｓｉｔｏｒｙなコンピュータが読み取り可能なストレージ媒体には含まれない。後述するサーバ８０のメモリ９２についても同様である。
【００２３】
サーバ８０は、図２（Ｂ）に示されるように、ディスプレイ８３と、入力Ｉ／Ｆ８４と、通信Ｉ／Ｆ８５と、ＣＰＵ９１と、メモリ９２と、通信バス９３とを主に備える。サーバ８０に含まれるディスプレイ８３、入力Ｉ／Ｆ８４、通信Ｉ／Ｆ８５、ＣＰＵ９１、メモリ９２、及び通信バス９３は、携帯端末５０に含まれるディスプレイ５３、入力Ｉ／Ｆ５４、通信Ｉ／Ｆ５５、ＣＰＵ６１、メモリ６２、及び通信バス６３と同様の構成であるので、説明は省略する。サーバ８０はコンピュータの一例であり、ＣＰＵ９１及びメモリ９２は第２コントローラの一例であり、通信Ｉ／Ｆ８５は第２通信インタフェースの一例である。
【００２４】
メモリ９２は、ＯＳ９４と、サーバプログラム９５と、ＤＮＮデータとを記憶している。ＤＮＮデータは、ディープニューラルネットワークを示すデータである。ＤＮＮデータで示されるディープニューラルネットワークは、例えば図９に示されるように、入力層を構成する複数のノードＩ１、Ｉ２、Ｉ３、・・・と、中間層を構成する複数のノードＨ１、Ｈ２、・・・と、出力層を構成する複数のノードＯ１、Ｏ２、Ｏ３、・・・とからなる。なお、本実施形態では、入力層のノード数及び出力層のノード数をＮ２個で一致させているが、入力層及び出力層のノード数は異なっていてもよい。また、ディープニューラルネットワークは、複数の中間層を有していてもよい。
【００２５】
ＤＮＮデータは、ディープニューラルネットワークの構造を示す構造データを含む。構造データは、例えば、各層を構成するノードの数と、隣接する層のノード同士の接続関係を示す。ディープニューラルネットワークの構造は、サーバ８０の管理者或いはサーバプログラム９５の開発者などによって事前に設計されている。図９は、各層を構成する複数のノードが隣接する層の全てのノードに接続された全結合型のディープニューラルネットワークを示しているが、ディープニューラルネットワークの構造はこれに限定されない。
【００２６】
また、ＤＮＮデータは、接続されたノードの間の重みパラメータ（Ｗ１１、Ｗ１２、Ｗ２１、Ｗ２２、Ｗ３１、Ｗ３２、Ｘ１１、Ｘ１２、Ｘ１３、Ｘ２１、Ｘ２２、Ｘ２３）を含む。重みパラメータには、サーバ８０の管理者或いはサーバプログラム９５の開発者などによって事前に初期値が設定されている。また、重みパラメータの値は、後述する学習処理で更新される。本実施形態に係る重みパラメータは、各ノードに入力される値に乗じられる定数である。但し、重みパラメータは、各ノードに入力される値が入力変数として入力されることによって、出力変数の値が出力される関数であってもよい。
【００２７】
ディープニューラルネットワークは、入力層の各ノードＩ１、Ｉ２、Ｉ３、・・・に入力された値（以下、「入力値Ｉｘ」と表記する。）に対応する重みパラメータＷ１１、Ｗ１２、Ｗ２１、Ｗ２２、Ｗ３１、Ｗ３２を乗じて、中間層の各ノードＨ１、Ｈ２、・・・に出力する。そして、中間層の各ノードＨ１、Ｈ２、・・・には、例えば下記式１、２に示されるように、入力層の各ノードＩ１、Ｉ２、Ｉ３、・・・から出力された値の和を活性化関数Ｆに入力した結果（以下、「中間値Ｈｘ」と表記する。）が入力される。
【００２８】
中間値Ｈ１＝Ｆ｛（Ｉ１×Ｗ１１）＋（Ｉ２×Ｗ２１）＋（Ｉ３×Ｗ３１）＋・・・｝（式１）
中間値Ｈ２＝Ｆ｛（Ｉ１×Ｗ１２）＋（Ｉ２×Ｗ２２）＋（Ｉ３×Ｗ３２）＋・・・｝（式２）
【００２９】
さらに、ディープニューラルネットワークは、中間値Ｈ１、Ｈ２に対応する重みパラメータＸ１１、Ｘ１２、Ｘ１３、Ｘ２１、Ｘ２２、Ｘ２３を乗じて、出力層の各ノードＯ１、Ｏ２、Ｏ３、・・・に出力する。そして、出力層の各ノードＯ１、Ｏ２、Ｏ３、・・・には、例えば下記式３〜５に示されるように、中間層の各ノードＨ１、Ｈ２、・・・から出力された値の和を活性化関数Ｇに入力した結果（以下、「出力値Ｏｘ」と表記する。）が入力される。活性化関数Ｆ、Ｇは、例えば、シグモイド関数、或いはＲｅＬＵ（Rectified Linear Unitの略）等である。また、活性化関数Ｆ、Ｇは、同一の関数でもよいし、異なる関数でもよい。
【００３０】
出力値Ｏ１＝Ｇ｛（Ｈ１×Ｘ１１）＋（Ｈ２×Ｘ２１）＋・・・｝             （式３）
出力値Ｏ２＝Ｇ｛（Ｈ１×Ｘ１２）＋（Ｈ２×Ｘ２２）＋・・・｝             （式４）
出力値Ｏ３＝Ｇ｛（Ｈ１×Ｘ１３）＋（Ｈ２×Ｘ２３）＋・・・｝             （式５）
【００３１】
すなわち、サーバプログラム９５は、ディープニューラルネットワークの入力層に入力値Ｉ１、Ｉ２、Ｉ３、・・・を入力することによって、出力層から出力値Ｏ１、Ｏ２、Ｏ３、・・・を得ることができる。入力値Ｉ１、Ｉ２、Ｉ３、・・・及び出力値Ｏ１、Ｏ２、Ｏ３、・・・の詳細については、後述する。以下、入力層に入力値Ｉｘを入力して出力層から出力値Ｏｘを得る向きの計算を、「順方向の計算」と表記することがある。
【００３２】
［システム１００の動作］
図３〜図５を参照して、本実施形態に係るシステム１００の動作を説明する。
【００３３】
本明細書のフローチャートは、基本的に、プログラムに記述された命令に従ったＣＰＵ６１、９１の処理を示す。すなわち、以下の説明における「判断」、「抽出」、「選択」、「算出」、「決定」、「特定」、「制御」等の処理は、ＣＰＵ６１、９１の処理を表している。ＣＰＵ６１、９１による処理は、ＯＳ６４、９４を介したハードウェア制御も含む。また、本明細書中の「データ」とは、コンピュータに読取可能なビット列で表される。そして、実質的な意味内容が同じでフォーマットが異なるデータは、同一のデータとして扱われるものとする。本明細書中の「情報」についても同様である。
【００３４】
携帯端末５０の端末プログラム６５は、ユーザからの指示を受け付けたことに応じて、図３に示される台形補正処理を実行する。まず、端末プログラム６５は、例えば、ＯＳ６４が提供する起動ＡＰＩを実行することによって、不図示のカメラプログラムを起動させる（Ｓ１１）。端末プログラム６５によって起動されたカメラプログラムは、図７（Ａ）に示されるカメラ画面をディスプレイ５３に表示させる。また、カメラプログラムは、所定時間毎にカメラ５２が撮影した複数の撮影画像１１１を、カメラ画面上で撮影順に切り替えて表示させる。
【００３５】
次に、カメラプログラムは、［撮影］アイコン１１２を指定するユーザ操作を入力Ｉ／Ｆ５４を通じて受け付けたことに応じて、撮影画像データをメモリ６２に記憶させ、記憶させた撮影画像データを端末プログラム６５に提供する。より詳細には、カメラプログラムは、メモリ６２に記憶させた撮影画像データのパスを起動ＡＰＩの戻り値に含めればよい。そして、端末プログラム６５は、戻り値に含まれるパスで示される撮影画像データを、メモリ６２から読み出す（Ｓ１２：Ｙｅｓ）。Ｓ１１、Ｓ１２の処理は、取得処理の一例である。
【００３６】
本実施形態において、携帯端末５０のユーザは、机上に載置された長方形の原稿をカメラ５２によって斜めから撮影したものとする。その結果、端末プログラム６５は、例えばＳ１２において、図７（Ａ）に示される撮影画像１１１を示す撮影画像データを取得したものとする。原稿は、対象物の一例である。但し、対象物の具体例は原稿に限定されず、ホワイトボード、黒板、ポスター、ディスプレイ等の概ね長方形或いは正方形の物であればよく、表面に文字或いは図柄等が描かれているのが望ましい。
【００３７】
次に、端末プログラム６５は、ＤＮＮデータがメモリ６２に記憶されているか否かを判断する（Ｓ１３）。端末プログラム６５が携帯端末５０にインストールされて時点において、メモリ６２にはＤＮＮデータが記憶されていない。そして、端末プログラム６５は、ＤＮＮデータが記憶されていないと判断したことに応じて（Ｓ１３：Ｎｏ）、後述するガイド画像１２２、１２３、１２４、１２５の位置を、デフォルト位置に決定する（Ｓ１５）。デフォルト位置は、撮影画像１１１上の予め定められた位置である。ＤＮＮデータがメモリ６２に記憶されている場合の処理（Ｓ１３：Ｙｅｓ→Ｓ１４）は、後述する。
【００３８】
次に、端末プログラム６５は、図７（Ｂ）に示される台形指定画面をディスプレイ５３に表示させる（Ｓ１６）。台形指定画面は、撮影画像１１１と、ガイド画像１２２、１２３、１２４、１２５と、［補正］アイコン１２６とを含む。ガイド画像１２２〜１２５は、Ｓ１５で決定された撮影画像１１１上のデフォルト位置において、撮影画像１１１に重ねて表示される。［補正］アイコン１２６は、台形画像を台形補正する指示に対応する。そして、端末プログラム６５は、台形指定画面に対するユーザ操作を、入力Ｉ／Ｆ５４を通じて受け付ける（Ｓ１７）。Ｓ１６の処理は表示処理の一例であり、Ｓ１７の処理は受付処理の一例である。
【００３９】
次に、端末プログラム６５は、例えば、ガイド画像１２２の位置に対するドラッグ操作を入力Ｉ／Ｆ５４を通じて受け付けたことに応じて（Ｓ１７：ガイド画像）、台形指定画面上でガイド画像１２２の位置を変更する（Ｓ１８＆Ｓ１６）。より詳細には、端末プログラム６５は、ガイド画像１２２の位置にタッチされた入力媒体が表示面上で移動されたことに応じて、当該入力媒体に追従してガイド画像１２２の位置を変更する。そして、端末プログラム６５は、入力媒体が離間された位置、すなわちドラッグ操作の終了位置を、ガイド画像１２２の新たな位置に決定する。ガイド画像１２３、１２４、１２５の位置に対するドラッグ操作についても同様である。
【００４０】
本実施形態において、携帯端末５０のユーザは、例えば図８（Ａ）に示されるように、撮影画像１１１に含まれる原稿の４つの頂点それぞれに重なる位置に、ガイド画像１２２〜１２５を移動させる。一方、携帯端末５０のユーザは、ガイド画像が最初から原稿の頂点に重なっている場合、当該ガイド画像を移動させる必要がない。原稿の４つの頂点は、特徴点の一例である。
【００４１】
次に、端末プログラム６５は、［補正］アイコン１２６の指定を入力Ｉ／Ｆ５４を通じて受け付けたことに応じて（Ｓ１７：補正）、ガイド画像１２２〜１２５の位置を頂点とする台形画像を、撮影画像１１１から抽出する。そして、端末プログラム６５は、抽出した台形画像を台形補正して、長方形の補正画像を示す補正画像データを生成する（Ｓ１９）。台形補正は、例えば、周知の射影変換行列を用いて実現することができる。Ｓ１９の処理は、補正処理の一例である。
【００４２】
次に、端末プログラム６５は、学習データ出力処理を実行する（Ｓ２０）。学習データ出力処理は、入力画像データ及び教師画像データを含む学習データを生成し、生成した学習データをサーバ８０に送信する処理である。教師画像データは、画像形式の教師データの一例である。学習データは、入力画像データ及び教師データのセットの一例である。図４（Ａ）を参照して、学習データ出力処理の詳細を説明する。
【００４３】
まず、端末プログラム６５は、［補正］アイコン１２６が指定された時のガイド画像１２２〜１２５の位置（以下、「指定位置」と表記する。）を特定する（Ｓ３１）。端末プログラム６５は、例えば、ガイド画像１２２〜１２５が重ねられた撮影画像１１１の位置を、撮影画像１１１の左上隅を原点として、（第１方向の画素数ｘ、第２方向の画素数ｙ）で特定してもよい。すなわち、端末プログラム６５は、原稿の各頂点に重ねられたガイド画像１２２、１２３、１２４、１２５の位置（ｘ１、ｙ１）、（ｘ２、ｙ２）、（ｘ３、ｙ３）、（ｘ４、ｙ４）を特定する。
【００４４】
次に、端末プログラム６５は、図６（Ａ）に示される位置画像データ１４２を生成する（Ｓ３２）。位置画像データ１４２は、画素数及び縦横比が撮影画像データ１４１と同一の画像データである。また、位置画像データ１４２は、Ｓ３１で特定したガイド画像１２２〜１２５の位置に画素値“２５５”が設定され、それ以外の位置に画素値“０”が設定された画像データである。画素値“２５５”は、第１画素値の一例である。なお、本明細書では、画素値を１バイトの整数で表現するが、浮動小数点などを用いてもよい。
【００４５】
端末プログラム６５は、例えば、要素数がＡ×Ｂの二次元配列“位置画像”を、メモリ６２内に確保する。そして、端末プログラム６５は、二次元配列“位置画像”のうち、Ｓ３１で特定した指定位置に対応する位置画像［ｘ１］［ｙ１］、位置画像［ｘ２］［ｙ２］、位置画像［ｘ３］［ｙ３］、位置画像［ｘ４］［ｙ４］の要素に画素値“２５５”を設定し、その他の要素に画素値“０”を設定する。
【００４６】
この二次元配列“位置画像”は、例えば図６（Ａ）に示されるように、画素数及び縦横比が撮影画像１１１と同一であって、指定位置が白色、その他の位置が黒色の画像を示す。本明細書において、画像データ（例えば、撮影画像データ、位置画像データ、入力画像データ、教師画像データ、出力画像データ）は、前述のように、メモリ６２に確保された二次元配列に展開されるものとする。すなわち、「画像データの画素の位置」とは、二次元配列のインデックスの組み合わせで特定される。また、「画像データの画素値」とは、二次元配列の要素を指す。
【００４７】
次に、端末プログラム６５は、図６（Ａ）に示される撮影画像データ１４１及び位置画像データ１４２から、図６（Ｂ）に示される入力画像データ１４３及び教師画像データ１４４を生成する（Ｓ３３）。入力画像データ１４３は、当該画像データで示される画像が撮影画像データ１４１と実質的に同一であり、画素数及び各画素の色調が撮影画像データ１４１と異なる。教師画像データ１４４は、当該画像データで示される画像が位置画像データ１４２と実質的に同一であり、画素数が位置画像データ１４２と異なる。入力画像データ１４３及び教師画像データ１４４で示される画像は、正方形である。
【００４８】
端末プログラム６５は、撮影画像データ１４１及び位置画像データ１４２を、画素数Ａ×Ｂから画素数Ｎ×Ｎにリサイズする。なお、典型的には、Ｎ＜Ａ、Ｎ＜Ｂである。端末プログラム６５は、例えば、撮影画像データ１４１及び位置画像データ１４２を構成する画素の一部を、予め定められたアルゴリズムによって間引けばよい。入力画像データ１４３及び教師画像データ１４４の画素数Ｎ×Ｎは、ＤＮＮデータで示されるディープニューラルネットワークの入力層及び出力層のノード数Ｎ２と一致する。
【００４９】
また、端末プログラム６５は、撮影画像データ１４１をグレースケール化する。すなわち、端末プログラム６５は、撮影画像データ１４１を構成する各画素の色調を、０〜２５５の範囲に減縮する。グレースケールは、特定階調の一例である。一方、最初からグレースケールとして生成された位置画像データ１４２は、色調を減縮する必要がない。
【００５０】
次に、端末プログラム６５は、Ｓ３３で生成した入力画像データ及び教師画像データを含む学習データを、通信Ｉ／Ｆ５５を通じてサーバ８０に送信する（Ｓ３４）。Ｓ３４の処理は、送信処理の一例である。一方、サーバ８０のサーバプログラム９５は、通信Ｉ／Ｆ８５を通じて携帯端末５０から学習データを受信し、受信した学習データをメモリ９２に記憶させる。この処理は、取得処理及び受信処理の一例である。
【００５１】
次に図３に戻って、端末プログラム６５は、図８（Ｂ）に示されるプレビュー画面をディスプレイ５３に表示させる（Ｓ２１）。プレビュー画面は、Ｓ１９で生成した補正画像１３１と、［プリント］アイコン１３２と、［保存］アイコン１３３とを含む。［プリント］アイコン１３２は、補正画像データに対するプリント動作をプリンタ１０に実行させる指示に対応する。［保存］アイコン１３３は、補正画像データをメモリ６２に記憶させる指示に対応する。そして、端末プログラム６５は、プレビュー画面に対するユーザ操作を、入力Ｉ／Ｆ５４を通じて受け付ける（Ｓ２２）。
【００５２】
端末プログラム６５は、［プリント］アイコン１３２の指定を入力Ｉ／Ｆ５４を通じて受け付けたことに応じて（Ｓ２２：プリント）、通信Ｉ／Ｆ５５を通じてプリンタ１０にプリント指示情報を送信する（Ｓ２３）。また、プリンタ１０は、携帯端末５０からプリント指示情報を受信したことに応じて、補正画像データを対象とするプリント動作を実行する。一方、端末プログラム６５は、［保存］アイコン１３３の指定を入力Ｉ／Ｆ５４を通じて受け付けたことに応じて（Ｓ２２：保存）、補正画像データをメモリ６２に記憶させる（Ｓ２４）。Ｓ２３、Ｓ２４の処理は、出力指示処理の一例である。
【００５３】
また、サーバ８０のサーバプログラム９５は、サーバ８０の管理者からの指示を受け付けたことに応じて、図５（Ａ）に示される学習処理を実行する。なお、学習処理を実行する時点において、サーバ８０のメモリ９２には、携帯端末５０Ａ、５０Ｂから受信した１以上の学習データが記憶されているものとする。
【００５４】
まず、サーバプログラム９５は、学習データの１つをメモリ９２から読み出す（Ｓ５１）。次に、サーバプログラム９５は、読み出した学習データの入力画像データに含まれる各画素の画素値を、０から最大２５５までの値から、０から最大１までの浮動小数点数に変換する。そして、サーバプログラム９５は、浮動小数点数に変換した画素値を一列に並び替えて、ＤＮＮデータで示されるディープニューラルネットワークの入力層の各ノードＩ１、Ｉ２、Ｉ３、・・・に入力する。すなわち、入力画像データに含まれる各画素の画素値に基づく値は、入力値Ｉ１、Ｉ２、Ｉ３、・・・となる。
【００５５】
そして、サーバプログラム９５は、ディープニューラルネットワークを順方向に計算することによって、図５（Ｂ）に示される出力画像データ１４５を生成する（Ｓ５２）。すなわち、サーバプログラム９５は、出力層から出力された一次元の出力値Ｏ１、Ｏ２、Ｏ３、・・・を、０から最大１までの浮動小数点数から、０から最大２５５までの値に変換する。そして、サーバプログラム９５は、変換した出力値Ｏ１、Ｏ２、Ｏ３、・・・をＮ×Ｎに並べ替えて、要素数がＮ×Ｎの二次元配列“出力画像”の各要素に設定する。Ｓ５２の処理は、生成処理の一例である。出力画像データ１４５は、画素数及び縦横比が入力画像データ１４３と一致するＮ×Ｎの正方形の画像を示す。また、出力画像データ１４５の各画素には、例えば、０〜２５５の画素値が設定される。出力画像データは、画像形式の出力データの一例である。
【００５６】
出力画像データ１４５の各画素の画素値は、例えば、入力画像データ１４３の対応する位置の画素が原稿の頂点を示す可能性の高さを表す。すなわち、相対的に高い画素値が設定された画素は、入力画像データ１４３の対応する位置の画素が原稿の頂点を示す可能性が高い。出力画像データ１４５のうちの最も高い４つの画素値は、第２画素値の一例である。４つの第２画素値は、同一の値（例えば、２５５）でもよいし、異なる値（例えば、２５５、２３８、２２４、２０１）でもよい。出力画像データ１４５のうちの第２画素値が設定された画素の位置は、推定位置の一例である。
【００５７】
次に、サーバプログラム９５は、Ｓ５２で生成した出力画像データで示される推定位置が、Ｓ５１で読み出した学習データの教師画像データで示される指定位置に近づくように、ＤＮＮデータを更新する（Ｓ５３）。より詳細には、サーバプログラム９５は、出力画像データの第２画素値の位置が教師データの第１画素値の位置に近づくように、ＤＮＮデータの重みパラメータを更新する。Ｓ５３の処理は、例えば、周知の誤差逆伝搬法を用いて実現されてもよい。Ｓ５３の処理は、更新処理の一例である。
【００５８】
そして、サーバプログラム９５は、Ｓ５１〜Ｓ５４の処理を繰り返し実行する（Ｓ５４：Ｎｏ）。繰り返し実行するＳ５１〜Ｓ５４において、同一の学習データが複数回用いられてもよいし、全て異なる学習データが用いられてもよい。また、サーバプログラム９５は、繰り返し実行するＳ５２それぞれにおいて、中間層を構成する複数のノードＨ１、Ｈ２、・・・のうちの異なる一部を省略してもよい。すなわち、Ｄｒｏｐｏｕｔの技術を用いて、ディープニューラルネットワークを学習させてもよい。
【００５９】
次に、サーバプログラム９５は、Ｓ５１〜Ｓ５３の処理を所定の回数実行したことに応じて（Ｓ５４：Ｙｅｓ）、繰り返し実行したＳ５３で重みパラメータが更新されたＤＮＮデータを、通信Ｉ／Ｆ８５を通じて携帯端末５０に送信する（Ｓ５５）。Ｓ５５の処理は、送信処理の一例である。また、携帯端末５０の端末プログラム６５は、通信Ｉ／Ｆ５５を通じてサーバ８０からＤＮＮデータを受信し、受信したＤＮＮデータをメモリ６２に記憶させる。この処理は、受信処理の一例である。
【００６０】
また、端末プログラム６５は、ＤＮＮデータがメモリ６２に記憶されている状態で実行する台形補正処理において（Ｓ１３：Ｙｅｓ）、Ｓ１５に代えて、ガイド位置決定処理を実行する（Ｓ１４）。ガイド位置決定処理は、台形指定画面に表示させるガイド画像１２２〜１２５の初期位置を、ディープニューラルネットワークを用いて決定する処理である。図４（Ｂ）を参照して、ガイド位置決定処理の詳細を説明する。
【００６１】
まず、端末プログラム６５は、Ｓ１２で取得した撮影画像データをリサイズ及びグレースケール化して、Ｎ×Ｎの入力画像データを生成する（Ｓ４１）。Ｓ４１の処理は、Ｓ３３と同様であってもよい。次に、端末プログラム６５は、メモリ６２に記憶されたＤＮＮデータで示されるディープニューラルネットワークに、Ｓ４２で生成した入力画像データの画素値を入力して順方向に計算することによって、出力画像データを生成する（Ｓ４２）。Ｓ４２の処理は生成処理の一例であって、Ｓ５２と同様であってもよい。
【００６２】
次に、端末プログラム６５は、Ｓ４２で生成したＮ×Ｎの出力画像データのうち、画素値が最も高い４つの画素の位置を特定する（Ｓ４３）。そして、端末プログラム６５は、Ａ×Ｂの撮影画像データ内において、Ｓ４３で特定した位置に対応する画素の位置を、ガイド画像１２２〜１２４の初期位置に決定する（Ｓ４４）。そして、端末プログラム６５は、Ｓ４４で決定した初期位置にガイド画像１２２〜１２４を配置した台形指定画面を、ディスプレイ５３に表示させる（Ｓ１６）。
【００６３】
端末プログラム６５は、例えばＳ４４において、Ｓ４１で撮影画像データをリサイズするアルゴリズムを、出力画像データに対して逆向きに適用することによって、出力画像データをＮ×ＮからＡ×Ｂにリサイズする。これにより、出力画像データ内において、Ｓ４３で特定した画素の位置が移動する。そして、端末プログラム６５は、Ｓ４３で特定し且つリサイズによって移動された画素の位置を、撮影画像１１１に含まれる原稿の頂点の推定位置として、ガイド画像１２２〜１２４の初期位置に決定すればよい。
【００６４】
［本実施形態の作用効果］
上記の実施形態によれば、カメラ５２で実際に撮影された画像を示す入力画像データと、携帯端末５０のユーザが台形指定画面上で指定した特徴点の指定位置を示す教師データとを用いて、特徴点の位置を検出する処理をディープニューラルネットワークに学習させることができる。その結果、学習のために生成されたデータで学習させる場合と比較して、ディープニューラルネットワークを効率的に成長させることができる。
【００６５】
また、上記の実施形態によれば、携帯端末５０から受信した学習データを用いて成長させたディープニューラルネットワークを、当該携帯端末５０に利用させる。これにより、Ｓ１４で決定したガイド画像１２２〜１２５の初期位置は、Ｓ１５のデフォルト位置より原稿の頂点の位置に近くなる場合が多い。その結果、携帯端末５０のディスプレイ５３上で撮影画像１１１の特徴点を指定するユーザ操作を簡略化できる。
【００６６】
また、上記の実施形態によれば、Ｓ５２でＤｒｏｐｏｕｔを用いて学習させることによって、ディープニューラルネットワークの過学習が抑制されるので、未知の入力画像データに含まれる特徴点の検出精度の低下を抑制することができる。
【００６７】
なお、上記の実施形態では、撮影画像１１１上で台形に表された原稿の頂点を、特徴点とする例を説明した。しかしながら、特徴点の具体例はこれに限定されない。特徴点の他の例として、複数の人物が写っている撮影画像１１１上において、所定の特徴（例えば、特定の人物、男性、女性など）を有する人物の顔の位置を特徴点としてもよい。
【００６８】
また、ＤＮＮデータの学習に用いる学習データの送信元の携帯端末５０と、ＤＮＮデータの送信先の携帯端末５０との関係は、特に限定されない。一例として、サーバプログラム９５は、携帯端末５０Ａ、５０Ｂそれぞれから受信した学習データを用いて、同一のＤＮＮデータに対してＳ５２、Ｓ５３の処理を実行してもよい。そして、サーバプログラム９５は、Ｓ５５において、携帯端末５０Ａ、５０Ｂに同一のＤＮＮデータを送信してもよい。これにより、短期間に多数の学習データが得られるので、ディープニューラルネットワークをさらに効率的に成長させることができる。
【００６９】
他の例として、メモリ９２は、携帯端末５０Ａに対応する第１ＤＮＮデータと、携帯端末５０Ｂに対応する第２ＤＮＮデータとを独立して記憶していてもよい。そして、サーバプログラム９５は、Ｓ５２、Ｓ５３において、携帯端末５０Ａから受信した学習データを用いて第１ＤＮＮデータを学習させ、携帯端末５０Ｂから受信した学習データを用いて第２ＤＮＮデータを学習させてもよい。さらに、サーバプログラム９５は、Ｓ５５において、携帯端末５０Ａに第１ＤＮＮデータを送信し、携帯端末５０Ｂに第２ＤＮＮデータを送信してもよい。
【００７０】
これにより、携帯端末５０Ａ、５０Ｂのユーザ毎にカスタマイズされたディープニューラルネットワークを得ることができる。換言すれば、携帯端末５０Ａ、５０Ｂのカメラ５２の性能及び特徴点を指定するユーザの癖などを反映したディープニューラルネットワークを得ることができる。
【００７１】
また、上記の実施形態によれば、入力層のノード数に画素数を一致させた入力画像データを用いて、学習処理を実行する。これにより、複数の携帯端末５０Ａ、５０Ｂから受信した学習データを用いて、サーバプログラム９５に学習処理を実行させる場合において、性能の異なる複数のカメラ５２で撮影された画像が同一画素数の入力画像データとしてディープニューラルネットワークに入力される。その結果、複数のカメラ５２から取得した学習データで学習させることができるので、ディープニューラルネットワークをさらに効率的に成長させることができる。
【００７２】
但し、学習処理は、サーバプログラム９５が実行することに限定されず、端末プログラム６５が実行してもよい。この場合において、カメラ５２で撮影した画像を入力層のノード数にリサイズしてからディープニューラルネットワークに入力するので、性能の異なるカメラ５２が搭載された複数の携帯端末５０Ａ、５０Ｂに対して、同一のＤＮＮデータを配布することができる。
【００７３】
また、上記の実施形態によれば、撮影画像データをグレースケール化して、入力画像データを生成する。これにより、入力画像データのデータ量が削減されるので、特にＳ４２、Ｓ５２の処理負荷を削減することができる。また、性能の異なるカメラ５２を搭載した複数の携帯端末５０Ａ、５０Ｂから取得した学習データで同一のディープニューラルネットワークを学習させる場合において、カメラ５２の性能差によるバラツキを吸収することができる。
【００７４】
撮影画像１１１の縦横比は、例えば、携帯端末５０Ａ、５０Ｂに搭載されたカメラ５２によって、或いは撮影時の携帯端末５０Ａ、５０Ｂの向き（例えば、縦向き或いは横向き）によって異なる。そこで上記の実施形態のように、長方形の撮影画像１１１を正方形にリサイズすることによって、撮影時に生じる撮影画像１１１のバラツキを吸収することができる。その結果、複数の携帯端末５０Ａ、５０Ｂから受信した学習データで学習させることができるので、ディープニューラルネットワークをさらに効率的に成長させることができる。また、ディープニューラルネットワークに入力する複数の入力画像データを、統一した形式に整形することによって、過学習がさらに抑制される。
【００７５】
なお、上記の実施形態において、教師データ及び出力データのデータ形式は、画像形式に限定されない。例えば、端末プログラム６５は、Ｓ３１で特定したガイド画像１２２〜１２５の位置を示す座標形式のデータを教師データとしてもよい。出力データについても同様である。
【００７６】
また、上記の実施形態の携帯端末５０及びサーバ８０において、メモリ６２、９２に記憶された各種プログラムがＣＰＵ６１、９１によって実行されることによって、本発明のコントローラが実行する各処理が実現される例を説明した。しかしながら、コントローラの構成はこれに限定されず、その一部又は全部を集積回路等のハードウェアで実現してもよい。
【００７７】
さらに、本発明は、携帯端末５０及びサーバ８０として実現できるだけでなく、携帯端末５０及びサーバ８０に処理を実行させるプログラムとして実現してもよい。そして、当該プログラムは、ｎｏｎ−ｔｒａｎｓｉｔｏｒｙな記録媒体に記録されて提供されてもよい。ｎｏｎ−ｔｒａｎｓｉｔｏｒｙな記録媒体は、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等の他、通信ネットワーク１０１を通じて携帯端末５０及びサーバ８０に接続可能なサーバに搭載されたメモリを含んでもよい。そして、サーバのメモリに記憶されたプログラムは、当該プログラムを示す情報或いは信号として、インターネット等の通信ネットワーク１０１を通じて配信されてもよい。
【符号の説明】
【００７８】
１０・・・プリンタ
５０・・・携帯端末
５２・・・カメラ
５３・・・ディスプレイ
５４・・・入力Ｉ／Ｆ
５５，８５・・・通信Ｉ／Ｆ
６１，９１・・・ＣＰＵ
６２，９２・・・メモリ
６５・・・端末プログラム
８０・・・サーバ
９５・・・サーバプログラム
【図１】
2018092502.tif 000003
【図２】
2018092502.tif 000004
【図３】
2018092502.tif 000005
【図４】
2018092502.tif 000006
【図５】
2018092502.tif 000007
【図６】
2018092502.tif 000008
【図７】
2018092502.tif 000009
【図８】
2018092502.tif 000010
【図９】
2018092502.tif 000011