(57)【要約】【課題】ニューラルネットワークの学習効率を向上させる。【解決手段】入力画像の各位置に対する検出結果を推定マップとして出力するニューラルネットワークの学習を行う。ニューラルネットワークは、入力画像が入力されると、入力画像の各位置に対する第１の種類の検出結果及び第２の種類の検出結果を出力する。学習のためにニューラルネットワークに入力する学習画像を取得する。学習画像の各位置について第１の種類の検出結果における検出誤差を示す、誤差マップを取得する。学習画像をニューラルネットワークに入力して得られた第１の種類の検出結果及び第２の種類の検出結果と、誤差マップと、を用いてニューラルネットワークの学習を行う。【選択図】図４
2020091543.tif 000002
【特許請求の範囲】
【請求項１】
入力画像の各位置に対する検出結果を推定マップとして出力するニューラルネットワークの学習を行う学習装置であって、
前記ニューラルネットワークは、前記入力画像が入力されると、前記入力画像の各位置に対する第１の種類の検出結果及び第２の種類の検出結果を出力し、
前記学習装置は、
学習のために前記ニューラルネットワークに入力する学習画像を取得する学習データ取得手段と、
前記学習画像の各位置について前記第１の種類の検出結果における検出誤差を示す、誤差マップを取得する誤差マップ取得手段と、
学習画像を前記ニューラルネットワークに入力して得られた前記第１の種類の検出結果及び前記第２の種類の検出結果と、前記誤差マップと、を用いて前記ニューラルネットワークの学習を行う、学習手段と、
を備えることを特徴とする学習装置。
【請求項２】
前記第２の種類の検出結果は、前記第１の種類の検出結果から生成可能であることを特徴とする、請求項１に記載の学習装置。
【請求項３】
前記誤差マップは、前記第１の種類の検出結果における検出誤差により生じた未検出領域又は過検出領域の位置を示すことを特徴とする、請求項１又は２に記載の学習装置。
【請求項４】
前記ニューラルネットワークは、前記入力画像が入力される入力層、処理が行われる中間層、前記第１の種類の検出結果を出力する第１の出力層、及び前記中間層から分岐して前記第２の種類の検出結果を出力する第２の出力層を備えることを特徴とする、請求項１から３のいずれか１項に記載の学習装置。
【請求項５】
前記学習データ取得手段は、前記学習画像について予め用意された前記第１の種類の検出結果を示す第１の教師データをさらに取得し、
前記誤差マップ取得手段は、前記学習画像を前記ニューラルネットワークに入力して得られた前記第１の種類の検出結果と、前記第１の教師データと、の誤差に基づいて前記誤差マップを生成する
ことを特徴とする、請求項１から４のいずれか１項に記載の学習装置。
【請求項６】
前記誤差マップ取得手段は、前記学習画像を学習前のニューラルネットワークに入力して得られた前記第１の種類の検出結果と、前記第１の教師データと、の誤差に基づいて前記誤差マップを生成し、
前記学習手段は、前記学習画像を学習後のニューラルネットワークに入力して得られた前記第１の種類の検出結果及び前記第２の種類の検出結果と、前記誤差マップと、を用いて前記ニューラルネットワークのさらなる学習を行う
ことを特徴とする、請求項５に記載の学習装置。
【請求項７】
前記誤差マップ取得手段は、
前記学習画像を学習前のニューラルネットワークに入力して得られた前記第１の種類の検出結果と、前記第１の教師データと、の誤差、及び、
前記学習画像を学習後のニューラルネットワークに入力して得られた前記第１の種類の検出結果と、前記第１の教師データと、の誤差、
に基づいて、さらなる学習に用いられる前記誤差マップを生成することを特徴とする、請求項５又は６に記載の学習装置。
【請求項８】
前記学習データ取得手段は、前記学習画像について予め用意された、前記第１の種類の検出結果を示す第１の教師データ及び前記第２の種類の検出結果を示す第２の教師データを取得し、
前記学習手段は、前記第１の種類の検出結果と前記第１の教師データとの誤差、及び前記第２の種類の検出結果と前記第２の教師データとの誤差、に基づいて前記ニューラルネットワークの学習を行う
ことを特徴とする、請求項１から７のいずれか１項に記載の学習装置。
【請求項９】
前記学習手段は、前記学習画像の各位置について、前記第１の種類の検出結果における検出誤差を用いて、前記第２の種類の検出結果と前記第２の教師データとの誤差を重み付けすることを特徴とする、請求項８に記載の学習装置。
【請求項１０】
前記第１の種類の検出結果及び前記第２の種類の検出結果は、同種の検出対象に対する異なる情報を示すことを特徴とする、請求項８又は９に記載の学習装置。
【請求項１１】
前記学習データ取得手段は、前記第１の教師データを用いて前記第２の教師データを生成することを特徴とする、請求項８から１０のいずれか１項に記載の学習装置。
【請求項１２】
前記第２の種類の検出結果は、前記第１の種類の検出結果についての検出誤差を示し、
前記学習手段は、前記第２の教師データとして前記誤差マップを用いる
ことを特徴とする、請求項８に記載の学習装置。
【請求項１３】
入力画像の各位置に対する検出結果を推定マップとして出力する処理装置であって、
請求項１から１２のいずれか１項に記載の学習装置により学習が行われたニューラルネットワークを有し、入力画像を前記ニューラルネットワークに入力することにより前記推定マップを生成する生成手段を備えることを特徴とする処理装置。
【請求項１４】
入力画像の各位置に対する検出結果を推定マップとして出力するニューラルネットワークであって、前記入力画像が入力される入力層、処理が行われる中間層、及び前記検出結果を出力する出力層を有し、前記検出結果から生成可能である別の検出結果が前記中間層から得られるように学習されていることを特徴とする、ニューラルネットワーク。
【請求項１５】
入力画像の各位置に対する検出結果を推定マップとして出力するニューラルネットワークの学習を行う学習装置が行う学習方法であって、
前記ニューラルネットワークは、前記入力画像が入力されると、前記入力画像の各位置に対する第１の種類の検出結果及び第２の種類の検出結果を出力し、
前記学習方法は、
学習のために前記ニューラルネットワークに入力する学習画像を取得する工程と、
前記学習画像の各位置について前記第１の種類の検出結果における検出誤差を示す、誤差マップを取得す工程と、
学習画像を前記ニューラルネットワークに入力して得られた前記第１の種類の検出結果及び前記第２の種類の検出結果と、前記誤差マップと、を用いて前記ニューラルネットワークの学習を行う工程と、
を有することを特徴とする学習方法。
【請求項１６】
コンピュータを、請求項１乃至１２の何れか１項に記載の学習装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は学習装置、処理装置、ニューラルネットワーク、学習方法、及びプログラムに関し、特に画像認識技術に関する。
【背景技術】
【０００２】
画像又は音声などのデータに対する検出処理が知られている。本明細書では、検出処理の目的のことを認識タスクと呼ぶ。多様な認識タスクが知られており、例えば画像から人間の顔領域を検出するタスク、画像中の物体（被写体）のカテゴリ（猫、車、又は建物など）を判別するタスク、及びシーンのカテゴリ（都市、山間、又は海岸など）を判別するタスク、などがある。このような認識タスクを行うための学習処理についても知られている。例えば、ニューラルネットワーク、とりわけＤｅｅｐ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋｓ（ＤＮＮ）は、性能が高いことで近年注目されている。
【０００３】
ニューラルネットワークは、データが入力される入力層、複数の中間層、及び検出結果を出力する出力層から構成されている。学習フェーズにおいては、学習データをニューラルネットワークに入力すると出力層から得られる推定結果と、学習データに対する正しい検出結果を示す教師データと、の差異を示す損失が予め設定された損失関数に従って算出される。そして、誤差逆伝搬法（バックプロパゲーション：ＢＰ）などを用いることにより、損失がより小さくなるようにニューラルネットワークの係数の調整などを行うことにより、学習が進行する。例えば、画像中で対象が存在する領域を検出するタスクにおいては、ニューラルネットワークに画像を入力すると、画像の各領域に対するラベル（対象が存在するか否かの推定結果）が得られる。この場合、学習データ（学習画像）に対する教師データとしては、画像の各領域に対するラベル付けされた教師画像が用いられ、各画素における損失の総和である全体の損失を用いて学習を行うことで、検出結果精度を向上させることができる。
【０００４】
非特許文献１はさらに、ニューラルネットワークの最終層に接続された出力層の他に、中間層にも出力層を接続することを開示している。そして、中間層の出力層から得られる推定結果についても、最終層の出力層と同じ教師データを用いて損失を算出することにより、最終層から離れた中間層における学習効率が向上する。また、関連のある複数のタスクについて同時に学習を行うマルチタスク学習の技術も知られている。例えば特許文献１は、入力画像に人が存在するか否かを識別するタスクと、入力画像における人の位置を示す回帰結果を得るタスクと、の学習を同時に行うことで、人の位置の検知精度を向上させる技術を開示している。
【０００５】
一方、検出精度を向上させる手法として、ハードネガティブ学習が知られている。ハードネガティブ学習では、誤検出が発生した学習画像を優先的に用いて再度学習を行うことで、誤検出が抑制される。また、未検出が発生した学習画像を優先的に用いて学習することで、未検出を防止するハードポジティブ学習も知られている。例えば非特許文献２では、学習が行われたニューラルネットワークを用いて対象の検出処理が行われる。そして、誤検出が生じた領域を含む部分画像が、優先的に学習画像として再度の学習で用いられる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１６−６６２６号公報
【非特許文献】
【０００７】
【非特許文献１】Christian Szegedy, Wei Liu, Yangqing Jia, Pierre Sermanet, Scott Reed, Dragomir Anguelov, Dumitru Erhan, Vincent Vanhoucke, and Andrew Rabinovich. "Going deeper with convolutions" in CVPR, 2015.
【非特許文献２】Abhinav Shrivastava, Abhinav Gupta, Ross Girshick, "Training Region-Based Object Detectors with Online Hard Example Mining", in CVPR, 2016.
【発明の概要】
【発明が解決しようとする課題】
【０００８】
より効率よくニューラルネットワークの学習を行うことが望まれていた。
【０００９】
本発明は、ニューラルネットワークの学習効率を向上させることを目的とする。
【課題を解決するための手段】
【００１０】
入力画像の各位置に対する検出結果を推定マップとして出力するニューラルネットワークの学習を行う学習装置であって、
前記ニューラルネットワークは、前記入力画像が入力されると、前記入力画像の各位置に対する第１の種類の検出結果及び第２の種類の検出結果を出力し、
前記学習装置は、
学習のために前記ニューラルネットワークに入力する学習画像を取得する学習データ取得手段と、
前記学習画像の各位置について前記第１の種類の検出結果における検出誤差を示す、誤差マップを取得する誤差マップ取得手段と、
学習画像を前記ニューラルネットワークに入力して得られた前記第１の種類の検出結果及び前記第２の種類の検出結果と、前記誤差マップと、を用いて前記ニューラルネットワークの学習を行う、学習手段と、
を備えることを特徴とする。
【発明の効果】
【００１１】
ニューラルネットワークの学習効率を向上させることができる。
【図面の簡単な説明】
【００１２】
【図１】一実施形態に係る処理装置の機能構成を示す概略図。
【図２】領域検出タスクの一事例を示す模式図。
【図３】ニューラルネットワークの学習処理の流れを説明する模式図。
【図４】一実施形態に係る学習方法を示すフローチャート。
【図５】サブタスク設定方法の一例を示す模式図。
【図６】サブタスクの教師画像の生成方法の一例を示す模式図。
【図７】誤差マップの精製方法の一例を示す模式図。
【図８】一実施形態に係る処理装置の機能構成を示す概略図。
【図９】一実施形態に係る学習方法を示すフローチャート。
【図１０】一実施形態に係る処理装置のハードウェア構成を示す概略図。
【図１１】サブタスク設定方法の一例を示す模式図。
【発明を実施するための形態】
【００１３】
以下、本発明を実施するための形態について図面を用いて説明する。ただし、本発明の範囲は以下の実施形態に限定されない。
【００１４】
一実施形態に係る学習装置は、入力画像の各位置に対する検出結果を推定マップとして出力するニューラルネットワークの学習を行う。とりわけ、本実施形態に係る学習装置は、学習画像をニューラルネットワークに入力して得られた検出結果と、教師データと、の誤差を学習画像の各位置について示す誤差マップを算出する。この誤差マップは、学習画像の各位置についての、画像検出処理において過検出又は未検出されやすい被写体の存在を示し、さらには画像検出処理の容易度を示すため、学習処理の効率化のために使用可能である。
［実施形態１］
【００１５】
実施形態１においては、誤差マップが、ニューラルネットワークの学習処理において、画像検出処理が困難な領域に対して重み付けを行うために用いられる。非特許文献２では、誤検出が生じた領域を含む部分画像自体がハードネガティブサンプルとして用いられる。すなわち、部分画像のうち判定が正解であった領域についても学習処理において優先的に用いられていた。一方で本実施形態によれば、画像のうち画像検出処理が困難な領域のみを重み付けすることができるため、学習効率をより高くすることができる。
【００１６】
以下、実施形態１に係る学習装置について説明する。本実施形態においては、領域の認識タスクを高精度に行うことができるように、ニューラルネットワーク処理装置が有するニューラルネットワークの学習が行われる。領域の認識タスクは、入力画像中において検出対象が存在する領域を推定するタスクである。例えば、人体を検出対象とする領域の認識タスクを行うＤＮＮは、図２（Ａ）に示す画像２００が入力されると、正しく推定できた場合には、図２（Ｂ）に示す画像２１０のように人体が存在する人体領域２２を示す情報を出力する。一方で、推定に失敗した場合には、図２（Ｃ）に示す画像２２０のように、人体が存在しない領域２３が人体領域と判定されたり（誤検出）、人体が存在する領域２４が人体領域と判定されなかったり（未検出）する。本実施形態においては、誤検出や未検出が抑制されるように、領域の認識タスクを行うＤＮＮの学習が効率的に行われる。
【００１７】
はじめに、ＤＮＮを用いる領域の認識タスクの実行処理及びＤＮＮの学習処理の典型的な流れについて、図３を参照しながら説明する。ＤＮＮは、検出対象の画像が入力されると、画像に対応する領域検出結果を出力する。例えば、検出対象の画像が入力層に入力されると、中間層を経て、出力層から推定結果である推定マップが出力される。ＤＮＮの各層は学習パラメータである重み係数を保持している。各層では、例えば畳み込み演算などの、前の層からの入力に対する重みづけ処理が行われ、その結果が次の層へ渡される。このような処理を順次実行することにより、出力層からは推定マップが出力される。
【００１８】
推定マップは、入力画像の各位置に対する検出結果を示す２次元マップである。例えば、推定マップは、検出対象が存在すると推定された領域を提示することができる。ＤＮＮは、例えば、検出対象の画像に対応する、検出対象の画像の各位置についてのラベル（画素値）で構成された推定マップを出力することができる。本実施形態においては、この画素値は０以上１以下の値を取ることができる。画素値が１に近いことは、検出対象の画像の対応する位置において、対象が存在する推定確率がより高いことを意味する。一方、画素値が０に近いことは、対象が存在する推定確率がより低いことを意味する。もっとも、推定マップの構成はこのような具体例には限定されない。
【００１９】
このような領域の認識タスクを行うＤＮＮの学習においては、学習画像と教師画像のペアを学習データとして用いることができる。学習画像は任意の画像であり、例えばＲＧＢ画像であってもよい。教師画像は、学習画像についての領域検出結果を示すデータであり、事前に例えば手動で作成することができる。本実施形態において、教師画像は学習画像の各位置についてのラベルで構成されている。以下の説明において、教師画像は、検出対象が存在する領域においては、検出対象が存在することを示すラベル（例えば画素値１）を有しており、存在しない領域においては、検出対象が存在しないことを示すラベル（例えば画素値０）を有している。
【００２０】
学習処理においては、まず、学習画像が入力された際のＤＮＮの出力と、教師画像とを比較することにより、出力の誤差が得られる。例えば、図３の処理３１０のように、学習画像をＤＮＮに入力することにより、学習画像に対応する推定マップが得られる。次に、図３の処理３２０のように、学習画像に対応する推定マップと教師画像とを比較することで、損失が算出される。この損失は、出力の誤差を示す値である。損失は、予め設定された損失関数を用いて算出することができる。例えば、領域の認識タスクにおける損失関数Ｅとしては、式（１）に示すクロスエントロピー誤差を採用することができる。もっとも、損失関数はこれに限定されるわけではなく、検出対象に合わせて適宜選択することができる。
Ｅ＝−ΣｑΣｐｔ（ｐ，ｑ）ｌｏｇｙ（ｐ，ｑ）  ……（１）
式（１）においては、推定マップにおける座標（ｐ，ｑ）の画素値をｙ（ｐ，ｑ）とする。また、教師画像における座標（ｐ，ｑ）の画素値をｔ（ｐ，ｑ）とする。
【００２１】
最後に、図３の処理３３０のように、得られた出力の誤差に基づいて、ＤＮＮの各層の重み係数が更新される。例えば、非特許文献１などでも紹介されているように、得られた損失に基づいて、誤差逆伝搬法（バックプロパゲーション：ＢＰ）などを用いることにより、重み係数を更新することができる。
【００２２】
これらの、図３に示す処理３１０〜３３０を繰り返して、各層の重み係数を逐次更新することにより、損失が徐々に小さくなり、すなわち推定マップが教師画像に近づいていく。このようにして、ＤＮＮの学習処理を行うことができる。
【００２３】
以下、図１を参照して、本実施形態に係る学習装置の構成について説明する。処理装置１０００は、ニューラルネットワークとしてＤＮＮ１９０を有しており、このＤＮＮ１９０は、入力画像が入力されると、入力画像の各位置に対する検出結果を推定マップとして出力する。ＤＮＮ１９０の学習は、特定の対象を検出するように行われ、この特定の対象を検出するタスクのことをメインタスクと呼ぶ。また、ニューラルネットワークから出力される、この特定の対象の検出結果を、第１の種類の検出結果又はメインタスクの推定マップと呼ぶことがある。本実施形態において処理装置１０００は、ＤＮＮ１９０の学習を行う学習装置としても動作する。以下では、処理装置１０００が有するＤＮＮ１９０の学習のための構成について説明する。
【００２４】
処理装置１０００は、設定部１１０及び学習部１２０を有している。また、処理装置１０００は学習データ１００を有している。学習データ１００は、複数の学習画像と、各学習画像に対応する教師画像と、で構成される画像セットである。教師画像は、学習画像中で、メインタスクの検出対象が存在する領域を示し、以下では第１の教師データ、又はメインタスクの教師画像と呼ぶことがある。
【００２５】
設定部１１０は、学習のためにニューラルネットワークに入力する学習画像を取得する、学習データ取得を行うことができる。学習画像は、上述のように処理装置１０００が学習データ１００として有していてもよいし、設定部１１０が外部から取得してもよい。
【００２６】
設定部１１０はまた、サブタスクの設定を行う。本実施形態において、メインタスクは、ＤＮＮ１９０を用いて推定を行おうとする認識タスクであり、その結果はＤＮＮ１９０の出力層から出力される。一方で本実施形態において、サブタスクとは、メインタスクの検出対象と同様の検出対象を検出するタスクのことである。
【００２７】
サブタスクはメインタスクとは異なるタスクであるが、メインタスクと同一のカテゴリに関する認識タスクであってもよい。メインタスクと同一のカテゴリに関する認識タスクとは、メインタスクの検出対象を対象とした認識タスク、又はメインタスクの検出対象に関連する認識タスクのことを指す。一実施形態において、メインタスクの検出結果及びサブタスクの検出結果は、同種の検出対象に対する異なる情報を示す。例えば、図２の事例では、人体領域の認識タスクがメインタスクにあたる。この場合のサブタスクの具体例としては、人体領域に関連するタスクが挙げられ、具体例としては、人体の中心領域を検出するタスクが挙げられる。また、サブタスクの検出対象は、メインタスクの検出対象（例えば人体）のうち一部（例えば頭、手、又は足）であってもよい。
【００２８】
また、実施形態３のように、サブタスクの検出対象は、メインタスクの検出対象と類似した特徴を有する被写体、又はメインタスクの検出対象を誤認識しやすい領域であってもよい。さらなる例として、メインタスクとサブタスクとの関係は、メインタスクの検出結果からサブタスクの検出結果が生成可能な関係であってもよい。
【００２９】
サブタスクの設定方法は特に限定されない。具体的なサブタスクの種類は、メインタスクに対応して予め定義されていてもよいし、ユーザによって定義されてもよい。本明細書では、ニューラルネットワークから出力されるサブタスクの結果を、第２の種類の検出結果又はサブタスクの推定マップと呼ぶことがある。ＤＮＮ１９０は、入力画像が入力されると、入力画像の各位置に対する第２の種類の検出結果を推定マップとして出力することができる。
【００３０】
設定部１１０は、学習画像について予め用意された、第１の種類の検出結果を示す第１の教師データ（又はメインタスクの教師画像）及び第２の種類の検出結果を示す第２の教師データ（又はサブタスクの教師画像）を取得することができる。上述の通り、処理装置１０００は、予め用意されている、学習画像に対応するメインタスクの教師画像を学習データ１００として有していてもよい。また、設定部１１０は、メインタスクの教師画像を外部から取得してもよい。
【００３１】
一方で、サブタスクの検出結果がメインタスクの検出結果から生成可能である場合、設定部１１０は、第１の教師データ（又はメインタスクの教師画像）を用いて第２の教師データ（又はサブタスクの教師画像）を生成してもよい。すなわち、設定部１１０は、学習画像に対応するメインタスクの教師画像から、この学習画像に対応するサブタスクの教師画像を生成することができる。サブタスクの教師画像とは、学習画像中でサブタスクの検出対象が存在する領域を示し、第２の教師データと呼ぶことがある。設定部１１０によるサブタスクの教師画像の生成処理については後述する。一方で、サブタスクの教師画像は予め生成されていてもよく、設定部１１０が外部から取得してもよい。
【００３２】
さらに、設定部１１０は、メインタスクに加えてサブタスクを行うようにＤＮＮ１９０を構成することができる。一実施形態において、ＤＮＮ１９０は、入力画像が入力される入力層、処理が行われる中間層、第１の種類の検出結果を出力する第１の出力層、及び中間層から分岐して第２の種類の検出結果を出力する第２の出力層を有している。ここで、中間層は複数の畳み込み層を有していてもよく、第２の出力層は、中間層にある複数の畳み込み層の間から分岐していてもよい。また、分岐箇所と第２の出力層との間には、さらなる中間層が存在していてもよい。
【００３３】
例えば、設定部１１０は、出力層からメインタスクの推定マップを出力するＤＮＮ１９０を、中間層においてネットワークが分岐するように構成することができる。この分岐したネットワークにはさらなる出力層が接続され、このさらなる出力層からサブタスクの推定マップが出力される。サブタスクを行うためのＤＮＮ１９０の構成方法は特に限定されず、例えば設定部１１０は、予め定義されているネットワークの分岐方法から選択された方法を用いて、ＤＮＮ１９０を構成してもよい。一方で、ＤＮＮ１９０は、メインタスクに加えてサブタスクを行うように、予め構成されていてもよいし、ユーザによって構成されてもよい。
【００３４】
学習部１２０は、ＤＮＮ１９０の学習処理を行う処理部である。学習部１２０は、誤差マップ作成部１２１、重み付け部１２２、損失算出部１２３、重み更新部１２４を備える。
【００３５】
誤差マップ作成部１２１は、学習画像の各位置について第１の種類の検出結果における検出誤差を示す誤差マップを取得する、誤差マップ取得を行う。例えば、誤差マップ作成部１２１は、学習画像をニューラルネットワークに入力して得られた第１の種類の検出結果と、第１の教師データと、の誤差に基づいて、誤差マップを生成することができる。このために、誤差マップ作成部１２１は、学習画像をＤＮＮ１９０に入力し、ニューラルネットワークからの出力としてメインタスクの推定マップを得ることができる。そして、誤差マップ作成部１２１は、メインタスクの推定マップと、学習画像に対応する教師画像と、の誤差分布を示す誤差マップを生成することができる。このように誤差マップ作成部１２１は、特定の学習画像に対応する誤差マップを生成することができる。一方で、誤差マップ作成部１２１が、現在のニューラルネットワークを利用して誤差マップを生成することは必要ではない。実施形態２と同様に、誤差マップ作成部１２１は、過去のニューラルネットワークを利用して生成された誤差マップを取得してもよい。
【００３６】
本実施形態における誤差マップは、メインタスクについての推定結果と教師画像との誤差分布が可視化されたマップである。また、本実施形態における誤差マップは、第１の種類の検出結果における検出誤差により生じた未検出領域又は過検出領域の位置を示している。一実施形態において、メインタスクについての誤検出又は未検出領域は、マップ上で大きい数値を有する領域として表すことができる。処理の詳細については後述する。
【００３７】
重み付け部１２２は、第１の種類の検出結果における検出誤差を用いて、第２の種類の検出結果と第２の教師データとの誤差を重み付けする。重み付け部１２２は、誤差マップ作成部１２１が学習画像について生成した誤差マップを用いて、この学習画像の各位置についての誤差を重み付けすることができる。また、重み付け部１２２は、学習画像をニューラルネットワークに入力し、ニューラルネットワークからの出力としてサブタスクの推定マップを得ることができる。処理の詳細については後述する。
【００３８】
損失算出部１２３及び重み更新部１２４は、学習画像をニューラルネットワークに入力して得られた第１の種類の検出結果及び第２の種類の検出結果と、誤差マップと、を用いてニューラルネットワークの学習を行う。本実施形態において損失算出部１２３及び重み更新部１２４は、第１の種類の検出結果と第１の教師データとの誤差、及び第２の種類の検出結果と第２の教師データとの誤差、に基づいてニューラルネットワークの学習を行う。
【００３９】
例えば、損失算出部１２３は、メインタスクに関する第１の種類の検出結果と、第１の教師データと、の誤差を評価することができる。すなわち、損失算出部１２３は、メインタスクの推定マップと、第１の教師画像と、からメインタスクの損失を算出することができる。また、損失算出部１２３は、サブタスクに関する第２の種類の検出結果と、第２の教師データと、の誤差を評価することができる。すなわち、損失算出部１２３は、サブタスクの推定マップと、第２の教師画像と、からサブタスクの損失を算出することができる。この際、損失算出部１２３は、重み付け部１２２による重み付けに従って、学習画像の各位置について、第２の種類の検出結果と第２の教師データとの誤差を重み付けする。すなわち、損失算出部１２３は、学習画像の各位置についてのサブタスクの損失を重み付けして、サブタスクについての損失を算出する。具体的な処理例については後述する。
【００４０】
重み更新部１２４は、損失算出部１２３が算出した損失に従って、ＤＮＮ１９０の層の重みを更新する。重み更新部１２４は、ニューラルネットワークの学習のために用いられる一般的な手法を用いて、各層の重み係数を更新することができる。例えば、重み更新部１２４は、上述したように誤差逆伝播法を用いて重みの更新を行うことができる。
【００４１】
図１等に示される処理部のそれぞれは、コンピュータにより実現することができる。図１０は、処理装置１０００として使用可能なコンピュータの基本構成を示す図である。図１０においてプロセッサ１０１０は、例えばＣＰＵであり、コンピュータ全体の動作をコントロールする。メモリ１０２０は、例えばＲＡＭであり、プログラム及びデータ等を一時的に記憶する。コンピュータが読み取り可能な記憶媒体１０３０は、例えばハードディスク又はＣＤ−ＲＯＭ等であり、プログラム及びデータ等を長期的に記憶する。本実施形態においては、記憶媒体１０３０が格納している、各部の機能を実現するプログラムが、メモリ１０２０へと読み出される。そして、プロセッサ１０１０が、メモリ１０２０上のプログラムに従って動作することにより、各部の機能が実現される。一方で、図１等に示される処理部のうち１以上が、専用のハードウェアによって実現されてもよい。
【００４２】
また、ＤＮＮ１９０のようなニューラルネットワークは、重み係数に従って順次演算を行うプログラムとして実現することができる。また、重み係数に従って順次演算を行うように構成されたプロセッサ等の処理部により、ＤＮＮ１９０を実現することもできる。
【００４３】
図１０において、入力インタフェース１０４０は外部の装置から情報を取得するためのインタフェースである。また、出力インタフェース１０５０は外部の装置へと情報を出力するためのインタフェースである。バス１０６０は、上述の各部を接続し、データのやりとりを可能とする。
【００４４】
以下では、図４に示すフローチャートを用いて、本実施形態におけるニューラルネットワーク処理装置の処理の流れについて詳細に説明する。
【００４５】
ステップＳ４０１で設定部１１０は、上記の通り、サブタスクを設定し、メインタスクとサブタスクとを同時に推定するようにＤＮＮ１９０を構成する。図５（Ａ）は、メインタスクとして人体領域検出を行い、サブタスクとして人体の中心領域を検出する場合に用いられる、ＤＮＮ１９０の一例を示す。本実施形態では、図５（Ａ）に示すように、サブタスクの結果を出力する出力層が、最終層ではなく中間層から分岐している。
【００４６】
もっとも、ニューラルネットワークの構成例は、図５（Ａ）に示すように、サブタスクの結果が中間層から得られる構成に限定されない。例えば、メインタスクの結果を出力する出力層と、サブタスクの結果を出力する出力層とが、いずれも最終層から得られる、マルチタスクニューラルネットワークを採用することもできる。例えば図５（Ｂ）は、メインタスクとして顔の中心領域を検出するタスク及び顔のサイズを推定するタスクを行うニューラルネットワークに対して、最終層において顔領域の検出を行うタスクがサブタスクとして設定された例を示す。
【００４７】
本実施形態におけるサブタスクは、メインタスクと同一のカテゴリに関する認識タスクである。このため、サブタスクの推定精度を上げるようにニューラルネットワークの学習を行うことで、検出対象の特徴を抽出しやすいようにニューラルネットワークの学習が進行する。このため、メインタスクの推定精度も上げることができる。特に、図５（Ａ）のようにサブタスクの結果が中間層から得られる場合、サブタスクに基づく学習を中間層（入力層により近い、すなわち浅い層）から行うことができる。このため、ニューラルネットワークの浅い層における、メインタスクにおける推定のために有用な特徴を抽出するための学習を、効率よく行うことができる。
【００４８】
上述のとおり設定部１１０は、サブタスクを設定する際に、メインタスクの教師データからサブタスクの教師データを自動的に作成することができる。図５（Ａ）に示すＤＮＮを用いる場合、設定部１１０は、メインタスクの教師画像である人体領域を示す画像から、サブタスクの教師画像である人体中心領域を示す画像を作成することができる。
【００４９】
具体的な手法は特に限定されないが、図６に一例が示されている。まず設定部１１０は、図６（Ａ）に示す人体領域の認識タスクの教師画像６１０から、人体領域を判定する。例えば、教師画像６１０において、隣接する画素のうちいずれかの画素値が１である画素の集合を探索することにより、人体領域を検出することができる。教師画像６１０には人体領域として領域６１のみが含まれるが、教師画像中には複数の人体領域が存在していてもよい。
【００５０】
次に、設定部１１０は、中間処理結果を示す図６（Ｂ）に示されるように、検出された人体領域ごとに、人体領域を包含する矩形領域６２を判定する。さらに、設定部１１０は、中間処理結果を示す図６（Ｃ）に示すように、判定された矩形領域６３の中心位置を算出する。人体中心領域は、こうして算出された中心位置の画素により表すことができる。設定部１１０は、それぞれの人体領域について中心位置を算出し、算出されたそれぞれの中心位置を表す画像６４０を、人体の中心領域を検出するタスクの教師画像として生成する。
【００５１】
同様に、図５（Ｂ）に示すＤＮＮを用いる場合、設定部１１０は、メインタスクの教師画像である顔の中心領域を示す教師画像と、顔のサイズを示す教師画像とを用いて、顔の領域を示すサブタスクの教師画像を生成することができる。例えば、設定部１１０は、顔の中心領域を示す教師画像（頭部位置教師画像）と、顔のサイズを示す教師画像（頭部サイズ教師画像）とを用いて、顔領域を円形領域として示す教師画像（頭部領域教師画像）を生成することができる。このように生成された教師画像を用いることにより、サブタスクの誤差評価及び学習を行うことができる。
【００５２】
ステップＳ４０２で誤差マップ作成部１２１は、学習画像をＤＮＮ１９０に入力することで、メインタスクの推定マップを得る。さらに、誤差マップ作成部１２１は、メインタスクの推定マップと、教師画像とを用いて、メインタスクの誤差マップを生成する。
【００５３】
図７を参照して、誤差マップの生成方法の例について説明する。ここでは、図７（Ａ）の入力画像７００に対する人物領域検出をメインタスクとして行う場合について説明する。図７（Ｂ）は、この場合におけるメインタスクの教師画像７１０を示す。教師画像７１０においては、領域７１及び領域７２が人体領域としてラベル付けされている（すなわち、教師画像のこれらの領域は画素値として１を有している）。また、それ以外の領域は、非人体領域としてラベル付けされている（すなわち、教師画像のこれらの領域は画素値として０を有している）。また、図７（Ｃ）は、入力画像７００をＤＮＮ１９０に入力して得られた、メインタスクの推定結果を表す推定マップ７２０である。この場合の誤差マップの例が、図７（Ｄ）に示す誤差マップ７３０である。
【００５４】
領域７３に示されるように、推定マップ７２０では、領域７１のうち下半身は検出されているが、上半身は未検出となっている。このため、誤差マップ７３０においては、領域７１のうち上半身が未検出領域７６として示されている。同様に、推定マップ７２０では人体領域７５が検出されており、誤差マップ７３０には、領域７２のうち頭部以外の領域が誤検出領域７８として示されている（なお、領域７２のうちの未検出領域については図７（Ｃ）では省略されている）。さらに推定マップ７２０は、領域７４に人体が存在することを示しているが、入力画像７００においてこの領域には人体が存在しないため、誤差マップ７３０においてこの領域は誤検出領域７７として示されている。
【００５５】
誤差マップ作成部１２１は、作成した誤差マップ７３０を、学習処理の中間結果としてユーザに提示してもよい。例えば誤差マップ作成部１２１は、学習中に、入力画像７００と誤差マップ７３０とを、併せて表示部（不図示）に表示させることができる。このような表示によれば、ユーザは学習の進行具合、及び誤検出又は未検出領域の出現傾向を確認することができる。さらには、提示された誤差マップ７３０を確認することで、ユーザはＤＮＮ１９０の学習率、又は重み付け部１２２による重み付けの大きさなどの、ハイパーパラメータ（ユーザが予め設定することができる学習パラメータ）をユーザは修正することができる。
【００５６】
誤差マップ作成部１２１による具体的な誤差マップの生成例を説明する。本実施形態において推定マップは実数分布として出力される。このため、誤差マップ作成部１２１は、教師画像に示される人体領域のうち、推定マップにおいて所定の閾値（例えば０．５）未満の画素値を有する領域を、未検出領域として誤差マップに記録することができる。同様に、誤差マップ作成部１２１は、教師画像に示される非人体領域のうち、所定の閾値以上の画素値を有する領域を、誤検出領域として誤差マップに記録することができる。
【００５７】
誤差マップには、未検出領域及び誤検出領域が、それぞれ区別できるように記録されてもよい。例えば誤差マップは、教師画像と同サイズの２チャネルのマップであってもよい。ここで、チャネル１においては、未検出領域の画素値を１に、それ以外の領域の画素値を０に、それぞれ設定することができる。また、チャネル２においては、誤検出領域の画素値を１に、それ以外の領域の画素値を０に、それぞれ設定することができる。
【００５８】
誤差マップ作成部１２１は、以上の処理により、学習画像がＤＮＮ１９０に入力され、推定マップが出力されるたびに、誤差マップを生成することができる。このような処理により、学習画像のそれぞれに対応する誤差マップが得られる。ただし、誤差マップの具体的な作成手法は上述の方法に限られない。また、提示された誤差マップを確認したユーザが、随時誤差マップの作成方式を修正してもよい。また、誤差マップの種類も上記のものに限定されない。例えば、誤差マップが、各位置において誤検出又は過検出が生じている可能性を、０以上１以下の値で示していてもよい。
【００５９】
ステップＳ４０３で重み付け部１２２は、学習画像をＤＮＮ１９０に入力することで、サブタスクの推定マップを得る。さらに、重み付け部１２２は、ステップＳ４０２で作成されたメインタスクの誤差マップを用いて、学習画像の各位置についてのサブタスクの損失を重み付けする。
【００６０】
本実施形態において重み付け部１２２は、学習画像の各位置に対応する、サブタスクの推定マップの画素ごとに、メインタスクの誤差マップに基づいて重みを決定する。重み付け部１２２は、サブタスクの推定マップの画素に対応する、メインタスクの誤差マップの画素の情報を参照して、重みを決定することができる。
【００６１】
例えば、重み付け部１２２は、サブタスクの推定マップの着目画素がメインタスクの未検出領域にある場合に、着目画素の重みをαに設定することができる。また、重み付け部１２２は、サブタスクの推定マップの着目画素がメインタスクの未検出領域にあり、かつ着目画素にサブタスクの検出対象が存在する場合に、着目画素の重みをαに設定してもよい。ここで、サブタスクの推定マップの着目画素がメインタスクの未検出領域にあるかどうかは、メインタスクの誤差マップを参照することにより判定することができる。また、サブタスクの推定マップの着目画素にサブタスクの検出対象が存在するかどうかは、サブタスクの教師画像を参照することにより判定することができる。さらに、重み付け部１２２は、サブタスクの推定マップの着目画素がメインタスクの過検出領域にある場合に、着目画素の重みをβに設定することができる。また、重み付け部１２２は、サブタスクの推定マップの着目画素がメインタスクの過検出領域にあり、かつ着目画素にサブタスクの検出対象が存在しない場合に、着目画素の重みをβに設定してもよい。また、着目画素が上記の条件に合わない場合、重み付け部１２２は、着目画素の重みを１に設定してもよい。これらの値α，βは１以上の任意の実数値であり、ユーザが予め又は処理中に設定することができる。
【００６２】
ステップＳ４０４で損失算出部１２３は、メインタスクの推定マップと、メインタスクの教師画像と、に基づいてメインタスクの損失を算出する。メインタスクの損失の算出は、例えば、上述の式（１）に従って行うことができる。また、損失算出部１２３は、サブタスクの推定マップと、サブタスクの教師画像と、に基づいて、ステップＳ４０３における重み付けに従ってサブタスクの損失を算出する。例えば、損失算出部１２３は、画素ごとに損失を算出し、ステップＳ４０３で設定された重みを用いて画素ごとの損失を重み付け加算することにより、サブタスクの損失を算出することができる。一例として、損失算出部１２３は、式（２）に従ってサブタスクの損失を算出することができる。式（２）において、ｗ（ｐ，ｑ）は、サブタスクの推定マップの座標（ｐ，ｑ）の重みを表す。
Ｅ＝−ΣｑΣｐｗ（ｐ，ｑ）ｔ（ｐ，ｑ）ｌｏｇｙ（ｐ，ｑ）  ……（２）
【００６３】
このような処理によって、メインタスクで誤検出又は未検出が発生した領域において、サブタスクの検出誤差が生じている場合に、サブタスクの損失が大きくなるように、サブタスクの損失が算出される。なお、メインタスクとサブタスクとの間で、損失を算出するための損失関数が同じである必要はなく、損失関数はタスクの内容に応じて適宜設定できる。
【００６４】
ステップＳ４０５で重み更新部１２４は、ステップＳ４０４で算出された損失に基づいて、上述のようにＤＮＮ１９０の各層の重み係数を更新する。例えば重み更新部１２４は、メインタスクの損失及びサブタスクの損失に基づいて算出された全体の損失を用いて、誤差逆伝搬法に従ってＤＮＮ１９０の重み係数を更新することができる。
【００６５】
ステップＳ４０６で重み更新部１２４は、所定の学習終了条件が満たされているかどうかを判定する。終了条件が満たされていない場合、処理はステップＳ４０２に戻り、その後ステップＳ４０２〜Ｓ４０５の処理が終了条件が満たされるまで繰り返される。処理を繰り返す場合、ステップＳ４０２〜４０５の処理は新しい学習画像を用いて行われてもよいし、以前に用いられた学習画像を再度使用して行われてもよい。終了条件が満たされている場合、ＤＮＮ１９０の学習処理は終了し、処理はステップＳ４０７に進む。
【００６６】
終了条件は特に限定されず、ユーザが予め設定してもよい。例えば、ステップＳ４０２〜Ｓ４０５の学習処理が所定回数行われた場合に、学習処理を終了することができる。また、ＤＮＮ１９０の検出精度が所定の閾値を超えた場合に、学習処理を終了してもよい。この検出精度は、例えば、予め用意された学習画像と教師画像のセットで構成されるテストセットに対する検出処理を行うことにより、判定することができる。
【００６７】
ステップＳ４０７で重み更新部１２４は、学習が行われた後のＤＮＮ１９０を学習済モデルとして保存する。例えば重み更新部１２４は、ＤＮＮ１９０の各層の重み係数を保存することにより、学習済モデルを保存することができる。
【００６８】
一実施形態によれば、処理装置１０００により、入力画像の各位置に対する検出結果を推定マップとして出力するニューラルネットワークが得られる。このニューラルネットワークは、入力画像が入力される入力層、処理が行われる中間層、及び検出結果（又はメインタスクの結果）を出力する出力層を有している。そして、このニューラルネットワークは、検出結果から生成可能である別の検出結果（又はサブタスクの結果）が中間層から得られるように学習されている。
【００６９】
処理装置１０００は、例えば、学習が行われた後のＤＮＮ１９０に未知画像を入力することで、未知画像に対するメインタスクの推定結果を得ることができる。すなわち、一実施形態において、処理装置１０００は、上記のように学習が行われたニューラルネットワークを有している。そして、処理装置１０００は、入力画像をニューラルネットワークに入力することにより、入力画像の各位置に対する検出結果を示す推定マップを生成し、この推定マップを出力することができる。一方で、学習済モデルを取得した別個の処理装置が、同様に未知画像に対するメインタスクの推定結果を生成して出力してもよい。
【００７０】
なお、こうして得られた学習済モデルは、サブタスクの推定結果を出力してもよいし、出力しなくてもよい。また、学習済モデルがサブタスクの推定結果を出力するか否かを、学習済モデルを保存する際にユーザが選択可能であってもよい。重み更新部１２４は、このようなユーザに選択に従って、サブタスクの推定結果を出力するように、又は出力しないように、学習済モデルを構成することができる。
【００７１】
本実施形態の構成によれば、検出対象が存在する領域を検出するニューラルネットワークの学習において、検出を誤りやすい領域に対して重みづけを行いながら検出誤差が評価され、評価結果に基づいてニューラルネットワークの学習が行われる。すなわち、メインタスクで誤検出又は未検出が発生した領域におけるサブタスクの検出誤差が大きく評価される。このような損失評価に基づいてＤＮＮ１９０の学習を行うことにより、このような領域におけるサブタスクの検出誤差が優先的に抑制されるように、効率的な学習が行われる。そして、本実施形態におけるサブタスクは、メインタスクと同一のカテゴリに関する認識タスクである。したがって、サブタスクの推定精度を上げるようにニューラルネットワークの学習を行うことで、メインタスクの検出対象の特徴を抽出しやすいようにニューラルネットワークの学習を行うことができる。このように、本実施形態の構成によれば、メインタスクにおける誤検出又は未検出の発生が抑制されるように、効率よく学習を行うことができる。
【００７２】
なお、本実施形態ではメインタスクの誤差マップに基づいてサブタスクの損失の重み付けが行われたが、代わりにサブタスクの誤差マップに基づいてメインタスクの損失の重み付けを行ってもよい。誤差マップ作成部１２１は、サブタスクについてメインタスクと同様に誤差マップを作成することができる。この場合でも、メインタスクと同一のカテゴリに関する認識タスクであるサブタスクにおいて誤検出又は未検出が生じやすい領域について重点的に、メインタスクにおける検出誤差が抑制される。したがって、このような構成によっても、メインタスクの推定精度が上がるように効率よく学習を行うことができる。
【００７３】
さらには、メインタスクの誤差マップに基づいてメインタスクの損失の重み付けを行ってもよいし、サブタスクの誤差マップに基づいてサブタスクの損失の重み付けを行ってもよい。例えば重み付け部１２２は、学習画像の各位置に対応する、メインタスクの推定マップの画素ごとに、メインタスクの誤差マップに基づいてメインタスクの損失の重みを決定してもよい。また重み付け部１２２は、サブタスクの推定マップの画素ごとに、サブタスクの誤差マップに基づいてサブタスクの損失の重みを決定してもよい。このように決定された重みは、ステップＳ４０４において損失算出部１２３が同様に用いることができる。このような構成は、メインタスクの誤差マップに基づいてサブタスクの損失の重み付けを行う構成や、サブタスクの誤差マップに基づいてメインタスクの損失の重み付けを行う構成と、組み合わせて用いられてもよいし、これらの構成の代わりに用いられてもよい。このような構成においては、特に、学習画像に対応する複数の誤差分布が累積された、実施形態２で説明する誤差マップを用いることができる。この場合、学習の初期に検出された誤りが発生しやすい領域への重み付けを、その後の学習においても継続的に行えるため、効率的な学習を実現できる。とりわけ、メインタスクの誤差マップに基づいてメインタスクの損失の重みを決定する構成においては、ニューラルネットワークがサブタスクを行うことは必須ではない。
【００７４】
また、一実施形態においては、誤差マップを用いたタスクの損失の重み付けを省略してもよい。上述の通り、サブタスクはメインタスクと同一のカテゴリに関する認識タスクであるため、サブタスクの推定精度を上げるようにニューラルネットワークの学習を行うことで、メインタスクの推定精度も上げることができる。特に、サブタスクの結果が中間層から得られる構成においては、サブタスクに基づく学習を中間層から行うことができる。このため、ニューラルネットワークの浅い層における、メインタスクにおける推定のために有用な特徴を抽出するための学習を、効率よく行うことができる。また、サブタスクとしてメインタスクよりも容易なタスク（例えば検出により得られる情報量が少ないタスク）を用いる場合、学習が容易なためにニューラルネットワークの浅い層における学習がより効率に進行する。したがって、このような構成によっても、メインタスクの推定精度が上がるように効率よく学習を行うことができる。
【００７５】
［実施形態２］
図８は、実施形態２に係る処理装置８０００の構成を示す。本実施形態は、誤差マップ作成部１２１が学習部１２０と独立している点で、実施形態１とは異なる。また、本実施形態に係る処理装置８０００は、プレモデル８１０を備えている。その他の構成は、実施形態１と同様であり、以下では異なる点について説明する。
【００７６】
プレモデル８１０は、処理装置８０００におけるメインタスクと同じ認識タスクを行うＤＮＮである。プレモデル８１０は、未学習であり、各層の重み係数が初期状態であるＤＮＮ１９０であってもよいし、学習データ１００を用いた学習処理が一定回数実行された後のＤＮＮ１９０であってもよい。
【００７７】
図９に示すフローチャートを参照して、実施形態２における処理の流れを説明する。ステップＳ９０１は、実施形態１のステップＳ４０１と同様に行われる。
【００７８】
ステップＳ９０２で誤差マップ作成部１２１は、メインタスクの誤差マップを作成する。本実施形態において誤差マップ作成部１２１は、学習画像を学習前のニューラルネットワークに入力して得られた第１の種類の検出結果と、第１の教師データと、の誤差に基づいて誤差マップを生成する。例えば、誤差マップ作成部１２１は、全ての学習画像のそれぞれについて、学習画像をプレモデル８１０に入力することにより、メインタスクの推定マップを生成する。そして、得られた推定マップと教師画像とを用いて、各学習画像に対応するメインタスクの誤差マップを作成する。このように、学習前のニューラルネットワークとして、プレモデル８１０を用いることができる。一方で、学習前のニューラルネットワークとして、学習中のニューラルネットワークを用いてもよい。誤差マップの作成は実施形態１におけるステップＳ４０２と同様に行うことができ、説明は省略する。
【００７９】
ステップＳ９０２の処理は、実施形態１とは異なり、ＤＮＮ１９０の学習とは独立に行うことができる。実施形態１においては、ＤＮＮ１９０の学習中に、特定の学習画像に対応する誤差マップは逐次更新されていた。一方、本実施形態においては、ＤＮＮ１９０の学習中の少なくとも所定期間（例えば、後述するステップＳ９０２〜Ｓ９０７の１回のループ）において、特定の学習画像に対応する誤差マップの値は固定される。
【００８０】
ステップＳ９０３〜Ｓ９０５の処理は、実施形態１のステップＳ４０３〜Ｓ４０５と同様に行うことができる。なお、ステップＳ４０３において重み付け部１２２は、ステップＳ９０２で作成された誤差マップのうち、学習画像に対応する誤差マップを用いて、この学習画像の各位置についてのサブタスクの損失を重み付けする。そして、ステップＳ４０４〜Ｓ４０５において損失算出部１２３及び重み更新部１２４は、学習後のニューラルネットワークのさらなる学習を行うことができる。ここで、学習後のニューラルネットワークは、学習中である現在のニューラルネットワークであり、推定マップを生成するために用いられたプレモデル８１０のような学習前のニューラルネットワークと比較して、重み係数が更新されている。損失算出部１２３及び重み更新部１２４は、学習画像を学習後のニューラルネットワークに入力して得られた第１の種類の検出結果及び第２の種類の検出結果と、誤差マップと、を用いて学習を行うことができる。
【００８１】
ステップＳ９０６で重み更新部１２４は、所定の学習終了条件が満たされているかどうかを判定する。終了条件が満たされていない場合、処理はステップＳ９０３に戻り、その後ステップＳ９０３〜Ｓ９０５の処理が終了条件が満たされるまで繰り返される。ステップＳ９０２〜９０５の処理は新しい学習画像を用いて行われてもよいし、以前に用いられた学習画像を再度使用して行われてもよい。終了条件が満たされている場合、処理はステップＳ９０７に進む。終了条件は特に限定されず、ユーザが予め設定してもよい。例えば、ステップＳ９０３〜Ｓ９０５の処理ループが所定回数実行された場合に、学習処理を終了することができる。ステップＳ９０７において重み更新部１２４は、学習が行われた後のＤＮＮ１９０を学習済モデルとして保存する。
【００８２】
ステップＳ９０８で重み更新部１２４は、所定の処理終了条件が満たされているかどうかを判定する。終了条件が満たされていない場合、処理はステップＳ９０２に戻り、その後ステップＳ９０２〜Ｓ９０７の処理が終了条件が満たされるまで繰り返される。ステップＳ９０２〜９０７の処理は、以前に用いられた学習画像を再度使用して行ってもよいが、この場合、ステップＳ９０３以降ではステップＳ９０２で作成される新たな誤差マップを使用することができる。終了条件が満たされている場合、図９の処理は終了する。終了条件は特に限定されず、ユーザが予め設定してもよい。例えば、ステップＳ９０２〜Ｓ９０７の処理ループが所定回数実行された場合に、学習処理を終了することができる。また、ＤＮＮ１９０の検出精度が所定の閾値を超えた場合に、学習処理を終了してもよい。
【００８３】
２回目以降のステップＳ９０２〜Ｓ９０７の処理ループにおけるステップＳ９０２で誤差マップ作成部１２１は、プレモデル８１０の代わりにステップＳ９０７で保存された学習済モデルを用いて、推定マップを生成することができる。このような処理によれば、最新の学習における誤差分布情報を反映したメインタスクの誤差マップを作成することができる。
【００８４】
一方で、ステップＳ９０２において誤差マップ作成部１２１は、学習画像を学習前のニューラルネットワークに入力して得られた第１の種類の検出結果と、第１の教師データと、の誤差を用いることができる。この場合、誤差マップ作成部１２１は、さらに学習画像を学習後のニューラルネットワークに入力して得られた第１の種類の検出結果と、第１の教師データと、の誤差に基づいて、さらなる学習に用いられる誤差マップを生成することができる。例えば、誤差マップ作成部１２１は、過去に作成された誤差マップを参照して、新たな誤差マップを生成してもよい。
【００８５】
具体例として、誤差マップ作成部１２１は、ステップＳ９０２〜Ｓ９０７の処理ループにおいて、誤差マップを新しく作成する代わりに、過去に作成した誤差マップを、最新の誤差分布情報が累積されるように更新してもよい。例えば、誤差マップ作成部１２１は、新たな誤検出又は未検出領域の画素値が１となり、その他の領域については画素値が維持されるように、前回以前のループで作成されたメインタスクの誤差マップを更新することができる。具体的な更新方法は特に限定されず、ユーザが定めることができる。例えば誤差マップ作成部１２１は、最新の５つの誤差マップの情報を累積することができる。具体例として誤差マップ作成部１２１は、最新の５つの推定マップのうち少なくとも１つで誤検出又は未検出が生じた領域を示す誤差マップを生成してもよい。また、誤差マップ作成部１２１は、プレモデル８１０を用いて作成された誤差マップを１回目のループでのみ用い、それ以降は学習済モデルを用いて作成された誤差マップを累積して、累積により得られた誤差マップを用いることができる。
【００８６】
実施形態１では、学習に用いる学習画像について誤差マップが作成され、誤りが発生しやすい領域における損失に重みづけがなされた。一方で実施形態２においては、学習を継続しながら誤りやすい領域への重みづけをより適切に行うことができる。より具体的には、学習の初期に検出された誤りが発生しやすい領域への重み付けを、その後の学習においても継続的に行うことで、誤検出又は未検出が抑制されるようにより効率的な学習を行うことができる。
【００８７】
［実施形態３］
実施形態１，２においては、メインタスクの誤差マップを利用して、誤りが発生しやすい領域における損失に重みづけすることで、このような領域における誤りを効率的に抑制するように学習が行われた。一方で、あるタスクにおける誤検出領域は、検出対象に類似した物体が存在する領域であることが多い。すなわち、未検出領域は検出対象が存在する領域であるし、過検出領域は検出対象に類似する物体が存在するために過検出が生じた可能性が高い。より詳細には、頭部領域を検出するタスクにおいては、タイヤ又はボールのような丸い物体や、手又は胴体のように頭部と同じ人体の一部である領域が、頭部領域と誤検出されやすい。また、未検出領域においては、検出対象が検出しづらい特定の状態で存在している可能性が高い。例えば、頭が後ろを向いている状態、及び頭部領域の一部が遮蔽されている状態では、頭部領域の未検出が生じやすい。このように、誤りが発生する場合には、被写体が特定の特性を有している可能性が高い。したがって、このような、検出対象に類似する物体や、被写体が有する特定の特性を判別しやすいように、ニューラルネットワークの学習を行うことにより、メインタスクについての検出精度も向上することが期待される。
【００８８】
実施形態３では、第２の種類の検出結果（又はサブタスクの結果）が、第１の種類の検出結果（又はメインタスクの結果）についての検出誤差を示すように、サブタスクが構成される。そして、損失算出部１２３は、第２の教師データ（又はサブタスクの教師データ）として、メインタスクの誤差マップを用いる。具体例としては、メインタスクにおいて誤りが発生しやすい領域を検出するタスクが、サブタスクとして用いられ、サブタスクの誤りが少なくなるようにニューラルネットワークの学習が行われる。このような構成によれば、検出対象に類似する物体や、被写体が有する特定の特性を、特徴として抽出しやすいようにニューラルネットワークの学習が行われる。したがって、メインタスクにおける誤検出又は未検出が抑制されるように効率的に学習を行うことができる。
【００８９】
実施形態３に係る処理装置は、重み付け部１２２を有さないことを除き、実施形態２に係る処理装置８０００と同様である。また、実施形態３に係る処理は、図９と同様に行うことができる。以下では、実施形態２とは異なる構成及び処理について説明する。なお、重み付け部１２２を有さない、実施形態１に係る処理装置１０００を、同様に用いることもできる。
【００９０】
本実施形態において、サブタスクとしては、メインタスクで誤りやすい領域の認識タスクが用いられる。また、サブタスクの教師画像としては、誤差マップ作成部１２１が作成した誤差マップを利用することができる。本実施形態では、プレモデル８１０（又は保存した学習済モデル）に対して学習画像を入力した際に、実際に誤った領域を検出するタスクをサブタスクとして用いることができる。この場合、学習画像をプレモデル８１０（又は保存した学習済モデル）に対して入力した際に得られる推定マップに基づいて、誤差マップ作成部１２１が作成した誤差マップを、教師画像として用いることができる。
【００９１】
図１１は、本実施形態において設定されるＤＮＮ１９０の一例を示す。学習データとしては、学習画像１１０１と、予め用意されたメインタスクの教師画像１１０２と、誤差マップ作成部１２１が作成したメインタスクの誤差マップ１１０３と、が対応付けて記憶されている。本実施形態では、ある学習画像１１０１に対するメインタスクの教師データとして教師画像１１０２が、サブタスクの教師データとして誤差マップ１１０３が、それぞれ設定される。
【００９２】
以下、本実施形態における処理について図９を参照して説明する。ステップＳ９０１において設定部１１０は、上記の通りサブタスクを設定する。本実施形態の場合、サブタスクの教師画像は、ステップＳ９０２において誤差マップ作成部１２１が作成する。ステップＳ９０２の処理は、実施形態２と同様に行うことができる。
【００９３】
本実施形態においては、メインタスクの誤差マップが、サブタスクの損失の重み付けのために用いられるのではなく、サブタスクの教師画像として用いられるため、ステップＳ９０３は省略することができる。ステップＳ９０５〜Ｓ９０８の処理は、実施形態２と同様に行うことができる。
【００９４】
一方で、メインタスクの損失に対してメインタスクの誤差マップを用いて重み付けを行ってもよい。また、ステップＳ９０１において設定部１１０が、メインタスクの誤差分布を推定するサブタスクとは異なるさらなるサブタスクを設定してもよい。この場合、さらなるサブタスクの損失に対して、実施形態２と同様に、メインタスクの誤差マップを用いて重みづけを行ってもよい。この場合は、それぞれのタスクに対してステップＳ９０３に相当する処理が行われる。
【００９５】
本実施形態では、メインタスクの検出対象を検出するための学習と並行して、メインタスクの検出対象と類似している領域の学習が行われる。これらの学習を行うことで、メインタスクにおける誤検出又は未検出が抑制されるように、ニューラルネットワークの学習を行うことができる。
【符号の説明】
【００９６】
１００：学習データ、１１０：設定部、１２０：学習部、１２１：誤差マップ作成部、１２２：重み付け部、１２３：損失算出部、１２４：重み更新部
【図１】
2020091543.tif 000003
【図２】
2020091543.tif 000004
【図３】
2020091543.tif 000005
【図４】
2020091543.tif 000006
【図５】
2020091543.tif 000007
【図６】
2020091543.tif 000008
【図７】
2020091543.tif 000009
【図８】
2020091543.tif 000010
【図９】
2020091543.tif 000011
【図１０】
2020091543.tif 000012
【図１１】
2020091543.tif 000013