IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ キヤノン株式会社の特許一覧

<>
  • 特許-情報処理装置、情報処理方法 図1
  • 特許-情報処理装置、情報処理方法 図2
  • 特許-情報処理装置、情報処理方法 図3
  • 特許-情報処理装置、情報処理方法 図4
  • 特許-情報処理装置、情報処理方法 図5
  • 特許-情報処理装置、情報処理方法 図6
  • 特許-情報処理装置、情報処理方法 図7
  • 特許-情報処理装置、情報処理方法 図8
  • 特許-情報処理装置、情報処理方法 図9
  • 特許-情報処理装置、情報処理方法 図10
  • 特許-情報処理装置、情報処理方法 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-05
(45)【発行日】2024-09-13
(54)【発明の名称】情報処理装置、情報処理方法
(51)【国際特許分類】
   G06T 7/00 20170101AFI20240906BHJP
   G02B 7/28 20210101ALI20240906BHJP
   G03B 13/36 20210101ALI20240906BHJP
   H04N 23/60 20230101ALI20240906BHJP
【FI】
G06T7/00 350C
G02B7/28 N
G03B13/36
H04N23/60 500
【請求項の数】 16
(21)【出願番号】P 2020191892
(22)【出願日】2020-11-18
(65)【公開番号】P2022080686
(43)【公開日】2022-05-30
【審査請求日】2023-11-13
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】110003281
【氏名又は名称】弁理士法人大塚国際特許事務所
(72)【発明者】
【氏名】内田 悠美子
【審査官】藤原 敬利
(56)【参考文献】
【文献】国際公開第2015/049826(WO,A1)
【文献】特開2020-091543(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 7/00- 7/90
G06V 10/00-20/90
H04N 23/60
G02B 7/28
G03B 13/36
(57)【特許請求の範囲】
【請求項1】
画像における検出対象の領域を表す第1マップを取得する第1取得手段と、
前記画像を入力した学習モデルから出力される、該画像において該検出対象が位置すると推論される推論領域を表す第2マップを取得する第2取得手段と、
前記画像において検出対象の位置として許容する許容領域を表す第3マップを取得する第3取得手段と、
前記第1マップと前記第2マップとの誤差を表す誤差マップにおいて前記許容領域の範囲外が前記許容領域の範囲内よりも大きい重み値で重み付けされている第4マップを取得する第4取得手段と、
前記第4マップに基づいて前記学習モデルにおける重み係数を更新する更新手段と
を備えることを特徴とする情報処理装置。
【請求項2】
前記画像における検出対象の位置に対応する前記第1マップにおける位置を対応位置とし、前記第1マップにおいて該対応位置により近い位置の要素値はより大きいことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記第2マップにおける推論領域は、該第2マップにおいて検出対象の存在確率が一定値以上の領域であることを特徴とする請求項1または2に記載の情報処理装置。
【請求項4】
前記第3取得手段は、前記画像におけるオブジェクトのそれぞれの部位の位置に基づいて前記許容領域を求め、該許容領域を表す第3マップを取得することを特徴とする請求項1乃至3の何れか1項に記載の情報処理装置。
【請求項5】
前記第3取得手段は、前記画像におけるオブジェクトに設定された検出対象の位置と、前記画像に対する領域分割の結果と、に基づいて前記許容領域を求め、該許容領域を表す第3マップを取得することを特徴とする請求項1乃至3の何れか1項に記載の情報処理装置。
【請求項6】
前記第3取得手段は、前記画像におけるオブジェクトに設定された検出対象の位置の周辺の画像特徴量と類似する画像特徴量を有する領域を前記許容領域として求め、該許容領域を表す第3マップを取得することを特徴とする請求項1乃至3の何れか1項に記載の情報処理装置。
【請求項7】
更に、
前記第2マップにおける推論領域のうち前記許容領域に属さない推論領域を表す第5マップを取得する第5取得手段を備え、
前記第4取得手段は、前記誤差マップにおいて前記第5マップが表す推論領域を前記許容領域に属する推論領域よりも大きい重み値で重み付けした第4マップを取得する
ことを特徴とする請求項1乃至3の何れか1項に記載の情報処理装置。
【請求項8】
更に、
前記第3マップにおける許容領域には含まれるが、前記画像における検出対象の領域には含まれない領域を表す第5マップを取得する手段を備え、
前記第4取得手段は、前記誤差マップにおいて前記第5マップが表す領域を該領域の範囲外よりも小さい重み値で重み付けした第4マップを取得する
ことを特徴とする請求項1乃至3の何れか1項に記載の情報処理装置。
【請求項9】
前記更新手段は、前記第4マップにおける全ての誤差の総和を損失として求め、該損失に基づいて前記重み係数を更新することを特徴とする請求項1乃至8の何れか1項に記載の情報処理装置。
【請求項10】
前記誤差は交差エントロピーであることを特徴とする請求項1乃至9の何れか1項に記載の情報処理装置。
【請求項11】
前記学習モデルは、CNN(Convolutional Neural Network)であることを特徴とする請求項1乃至10の何れか1項に記載の情報処理装置。
【請求項12】
画像における検出対象の領域を表す第1マップを取得する第1取得手段と、
前記画像を入力した学習モデルから出力される、該画像において該検出対象が位置すると推論される推論領域を表す第2マップを取得する第2取得手段と、
前記画像において検出対象としない無視領域を表す第3マップを取得する第3取得手段と、
前記第1マップ、前記第2マップ、前記第3マップに基づいて、前記無視領域および前記第2マップにおける誤検出領域を表す第4マップを取得する第4取得手段と、
前記第1マップと前記第2マップとの誤差を表す誤差マップを前記第4マップに基づいて重み付けした第5マップを取得する第5取得手段と、
前記第5マップに基づいて前記学習モデルにおける重み係数を更新する更新手段と
を備えることを特徴とする情報処理装置。
【請求項13】
前記誤差マップにおいて前記無視領域に対する重み値は0であることを特徴とする請求項12に記載の情報処理装置。
【請求項14】
情報処理装置が行う情報処理方法であって、
前記情報処理装置の第1取得手段が、画像における検出対象の領域を表す第1マップを取得する第1取得工程と、
前記情報処理装置の第2取得手段が、前記画像を入力した学習モデルから出力される、該画像において該検出対象が位置すると推論される推論領域を表す第2マップを取得する第2取得工程と、
前記情報処理装置の第3取得手段が、前記画像において検出対象の位置として許容する許容領域を表す第3マップを取得する第3取得工程と、
前記情報処理装置の第4取得手段が、前記第1マップと前記第2マップとの誤差を表す誤差マップにおいて前記許容領域の範囲外が前記許容領域の範囲内よりも大きい重み値で重み付けされている第4マップを取得する第4取得工程と、
前記情報処理装置の更新手段が、前記第4マップに基づいて前記学習モデルにおける重み係数を更新する更新工程と
を備えることを特徴とする情報処理方法。
【請求項15】
情報処理装置が行う情報処理方法であって、
前記情報処理装置の第1取得手段が、画像における検出対象の領域を表す第1マップを取得する第1取得工程と、
前記情報処理装置の第2取得手段が、前記画像を入力した学習モデルから出力される、該画像において該検出対象が位置すると推論される推論領域を表す第2マップを取得する第2取得工程と、
前記情報処理装置の第3取得手段が、前記画像において検出対象としない無視領域を表す第3マップを取得する第3取得工程と、
前記情報処理装置の第4取得手段が、前記第1マップ、前記第2マップ、前記第3マップに基づいて、前記無視領域および前記第2マップにおける誤検出領域を表す第4マップを取得する第4取得工程と、
前記情報処理装置の第5取得手段が、前記第1マップと前記第2マップとの誤差を表す誤差マップを前記第4マップに基づいて重み付けした第5マップを取得する第5取得工程と、
前記情報処理装置の更新手段が、前記第5マップに基づいて前記学習モデルにおける重み係数を更新する更新工程と
を備えることを特徴とする情報処理方法。
【請求項16】
コンピュータを、請求項1乃至13の何れか1項に記載の情報処理装置の各手段として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、学習モデルの学習技術に関するものである。
【背景技術】
【0002】
撮像装置のフォーカスを被写体に自動的に合わせること(オートフォーカス)を目的として、画像中の被写体を検出することが行われている。例えば、人物を被写体とする場合には、顔検出や頭部検出、胴体検出などが行われている。
【0003】
物体検出を用いたオートフォーカスにおいては、可能な限り物体の中心を正確に検出し、該検出した中心にフォーカスを合わせることが望ましい。しかし、検出位置が物体の中心から少し外れていても、該検出位置が検出対象の物体上である場合は、物体の中心と深度が近いために許容可能である場合が多い。一方、検出位置が検出対象の物体以外の背景領域に含まれている場合には、物体とは異なる深度にフォーカスが合ってしまうために問題となる。
【0004】
物体領域を検出する技術としては近年、CNN(Convolutional Neural Network)を活用した深層学習手法が多数開発されている。
【0005】
他方で、物体検出における誤検出を抑制するための取り組みとして、特許文献1がある。特許文献1に記載の技術では、メインタスクとサブタスクを持ち、それぞれが異なる検出対象を学習する物体検出の学習方法が開示されている。学習画像内のメインタスクにおける誤検出マップを作成し、該マップを用いてのサブタスクの損失に対して重みづけを行うことで、メインタスクの誤検出を抑制することを目的としている。
【先行技術文献】
【特許文献】
【0006】
【文献】特開2020-91543号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
特許文献1では、物体の中心から外れた位置の検出を誤検出として扱い、その結果、誤検出を抑制することができる。しかし、特許文献1では、検出位置が物体の中心から少し外れているが物体上の位置である場合と物体外の誤検出とを区別して扱うことができなかった。本発明では、検出対象の位置として許容する許容領域を考慮した検出のための技術を提供する。
【課題を解決するための手段】
【0008】
本発明の一様態は、画像における検出対象の領域を表す第1マップを取得する第1取得手段と、前記画像を入力した学習モデルから出力される、該画像において該検出対象が位置すると推論される推論領域を表す第2マップを取得する第2取得手段と、前記画像において検出対象の位置として許容する許容領域を表す第3マップを取得する第3取得手段と、前記第1マップと前記第2マップとの誤差を表す誤差マップにおいて前記許容領域の範囲外が前記許容領域の範囲内よりも大きい重み値で重み付けされている第4マップを取得する第4取得手段と、前記第4マップに基づいて前記学習モデルにおける重み係数を更新する更新手段とを備えることを特徴とする。
【発明の効果】
【0009】
本発明の構成によれば、検出対象の位置として許容する許容領域を考慮した検出のための技術を提供することができる。
【図面の簡単な説明】
【0010】
図1】(A)は情報処理装置のハードウェア構成例を示すブロック図、(B)は情報処理装置の学習モデルの学習に係る機能構成例を示すブロック図。
図2】CNNを用いた一般的な物体検出の学習方法を説明する図。
図3】CNNを用いた本実施形態に係る物体検出の学習方法を説明する図。
図4】学習モデル119の学習処理のフローチャート。
図5】ステップS404における処理の詳細を示すフローチャート。
図6】ステップS404における処理の詳細を説明する図。
図7】ステップS406における処理の詳細を示すフローチャート。
図8】ステップS407における処理の詳細を示すフローチャート。
図9】許容マップ116の生成方法を説明する図。
図10】重み付け方法を説明する図。
図11】許容マップ116の与え方、および損失重み付けの方法を示す図。
【発明を実施するための形態】
【0011】
以下、添付図面を参照して実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る発明を限定するものではない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
【0012】
[第1の実施形態]
本実施形態では、画像から物体を検出するためのモデルとしてCNN(Convolutional Neural Network)を用いるケースについて説明する。また、本実施形態では、「人物の胴の中心」を検出対象とするケースについて説明する。
【0013】
まず、本実施形態に係る情報処理装置のハードウェア構成例について、図1(A)のブロック図を用いて説明する。本実施形態に係る情報処理装置には、PC(パーソナルコンピュータ)、タブレット端末装置、スマートフォンなどのコンピュータ装置が適用可能である。
【0014】
CPU101は、ROM102やRAM108に格納されているコンピュータプログラムやデータを用いて各種の処理を実行する。これによりCPU101は、情報処理装置全体の動作制御を行うと共に、情報処理装置が行うものとして説明する各処理を実行もしくは制御する。
【0015】
ROM102には、情報処理装置の設定データ、情報処理装置の起動に係るコンピュータプログラムやデータ、情報処理装置の基本動作に係るコンピュータプログラムやデータ、などが格納されている。さらにROM102には、生成部103、推論部104、生成部105、損失計算部106、更新部107、の各機能部がコンピュータプログラムの形態でもって格納されている。以下では、生成部103、推論部104、生成部105、損失計算部106、更新部107、の各機能部を処理の主体として説明する場合がある。しかし実際には、該機能部に対応するコンピュータプログラムをCPU101が実行することで、該機能部の機能が実現される。
【0016】
RAM108は、ROM102や記憶部109からロードされたコンピュータプログラムやデータを格納するためのエリア、通信部112により外部から受信したデータを格納するためのエリア、を有する。さらにRAM108は、CPU101が各種の処理を実行する際に用いるワークエリアを有する。このようにRAM108は、各種のエリアを適宜提供することができる。
【0017】
記憶部109は、ハードディスクドライブ装置やフラッシュメモリなどの不揮発性メモリである。記憶部109には、学習モデルや該学習モデルの学習に用いる各種のデータが保存されている。なお、ROM102に格納されているものとして説明した上記のコンピュータプログラムやデータの一部若しくは全部を記憶部109に保存するようにしても良い。また、記憶部109は、CD-ROMやDVD-ROMなどの記憶媒体に対するコンピュータプログラムやデータの読み書きを行う装置であっても良く、その場合には、記憶部109に保存するものとして説明した上記のコンピュータプログラムやデータを該記憶媒体に格納する。
【0018】
入力部110は、キーボード、マウス、タッチパネルなどのユーザインターフェースであり、ユーザが操作することで各種の指示をCPU101に対して入力することができる。
【0019】
表示部111は、液晶画面やタッチパネル画面などの画面であり、CPU101による処理結果を画像や文字などでもって表示することができる。なお、表示部111は、画像や文字を投影するプロジェクタなどの投影装置であっても良い。
【0020】
通信部112は、外部とのデータ通信を行うための通信インターフェースであり、各種の規格に準拠した通信インターフェースを適用することができる。情報処理装置は通信部112を介して外部との間でデータの送受信を行う。
【0021】
本実施形態に係る情報処理装置の、学習モデルの学習に係る機能構成例を示すブロック図を図1(B)に示す。まず、CNNを用いた一般的な物体検出の学習方法を図1(B)の構成で実装したケースについて、図2を用いて説明する。
【0022】
推論部104は、記憶部109から入力画像113を取得する。入力画像113は図2に示す如く、人物201を含む画像である。そして推論部104は、入力画像113を学習モデル119に入力し、該学習モデル119が該入力画像113に対する推論結果として出力する推論マップ117を取得する。学習モデル119は入力層、複数の中間層、出力層を有するCNNであり、入力画像113が入力層に入力されると、複数の中間層および出力層により、該入力画像113に対応する推論マップ117が生成されて出力される。CNNの各層は、学習パラメータとして重み係数を保持しており、各層では入力に対して重みづけを行った結果を次の層へ渡す処理を順次実行していくことで、最終的に出力される推論マップ117を生成する。推論マップ117は、入力画像113における検出対象「人物201の胴の中心」の存在確率(0~1の実数値)の分布を表すマップであり、該推論マップ117において、存在確率がより高いと推論した位置の要素値はより高く、存在確率がより低いと推論した位置の要素値はより低い。図2において推論領域204は、推論マップ117において検出対象「人物201の胴の中心」の存在確率が一定値以上の領域(検出対象「人物201の胴の中心」が位置するとCNNが推論した領域)である。以下では、推論マップ117は、入力画像113と同じ解像度を有する2次元配列であるものとし、2次元配列における各要素を「画素」と称する。推論マップ117における着目画素位置には、該着目画素位置における存在確率が要素値として保持される。
【0023】
生成部103は、記憶部109から正解情報114を取得する。正解情報114は入力画像113における検出対象「人物201の胴の中心」の画素位置を表す情報である。正解情報114は図2に示す如く、入力画像113と同じ解像度を有し(縦の画素数と横の画素数が入力画像113と同じ)、入力画像113中の「人物201の胴の中心」の画素位置に対応する対応画素202の画素値が「1」、該対応画素202以外の画素の画素値が「0」の2値画像である。そして生成部103は、正解情報114の複製を正解マップ115として生成する。そして生成部103は、該正解マップ115において対応画素202により近い画素位置の画素の画素値を「0~1の実数の範囲においてより1に近い実数値」に更新し、正解マップ115において対応画素202からより遠い画素位置の画素の画素値を「0~1の実数の範囲においてより0に近い実数値」に更新する。一般的にはガウス分布に従う広がりを持たせた分布を利用する。図2の正解マップ115は更新後の正解マップ115である。図2の正解マップ115において正解領域203は、画素値が一定値以上の画素群の領域である。
【0024】
そして損失計算部106は、推論マップ117と正解マップ115とに基づいて損失を計算する。一般に、正解をマップ形式で与える方式における物体検出手法においては、以下の式(1)および式(2)に示すように、画素ごとの交差エントロピーの総和を損失とすることが一般的である。
【0025】
【数1】
【0026】
【数2】
【0027】
式(1)では、正解マップ115におけるi番目の画素の画素値をyi、推論マップ117において該画素に対応する画素位置の要素値をpiとして、該画素に対応する交差エントロピーEiを求めている。式(2)では、全ての画素について求めた交差エントロピーの総和Lossを損失として求めている。
【0028】
そして更新部107は、損失計算部106が求めた損失に基づいて、誤差逆伝搬法(バックプロパゲーション)などの手法を用いて、学習モデル119(CNN)における各層の重み係数を更新することで該学習モデル119の学習を行う。学習が進むにつれて、推論マップ117は正解マップ115に近いものとなっていく。
【0029】
次に、CNNを用いた本実施形態に係る物体検出の学習方法を図1(B)の構成で実装したケースについて、図3を用いて説明する。推論部104は、図2のケースと同様、記憶部109から入力画像113を取得し、該入力画像113を学習モデル119に入力することで該学習モデル119から出力される推論マップ117を取得する。推論マップ117には図3に示す如く、入力画像113における検出対象「人物201の胴の中心」の存在確率が一定値以上の領域(検出対象「人物201の胴の中心」が位置するとCNNが推論した領域)である推論領域304,305,306が存在する。推論領域304は、人物201の胴の中心近辺の領域であるが、後述の正解領域302と比較すると要素値(存在確率)が小さくなっている。推論領域305は、人物201の胴の中心からは外れているが、腰近辺に位置している。推論領域306は、人物201の領域外に位置しており、誤検出された領域である。
【0030】
一方、生成部103は、図2のケースと同様、記憶部109から入力画像113の正解情報114を取得し、該正解情報114から正解マップ115を生成する。正解マップ115には図3に示す如く正解領域302が存在する。また、生成部103は、入力画像113から許容マップ116を生成する。許容マップ116中の許容領域303は、入力画像113における人物201の胴全体の領域に対応する対応領域である。例えば、許容マップ116は、入力画像113と同じ解像度を有し(縦の画素数と横の画素数が入力画像113と同じ)、入力画像113中の「人物201の胴全体の領域」に対応する許容領域303に属する画素の画素値が「1」、該許容領域303以外の画素の画素値が「0」の2値画像である。許容マップ116は、正解マップ115とは異なり、推論マップ117が許容マップ116に近づくよう学習させる目的のものではなく、検出位置が検出対象の中心から外れている場合であっても、検出されることを相対的に許容する領域を示すものである。許容マップ116の生成方法については後述する。
【0031】
生成部105は、推論マップ117における推論領域304~306のうち許容マップ116における許容領域303と重ならない推論領域306を誤検出領域311として示すマップを重み付けマップ118として生成する。以下では、重み付けマップ118は、入力画像113と同じ解像度を有する2次元配列であるものとし、2次元配列における各要素を「画素」と称する。許容マップ116を用いることにより、人物201の腰近辺に出力された推論領域305を誤検出として扱わず、人物201から外れた出力である推論領域306のみを誤検出として扱うことができる。
【0032】
損失計算部106は、推論マップ117と正解マップ115との画素ごとの誤差を表す誤差マップ307を求める。誤差マップ307は、入力画像113と同じ解像度を有し(縦の画素数と横の画素数が入力画像113と同じ)、誤差マップ307における着目画素位置の要素値は、正解マップ115における該着目画素位置の画素の画素値と、推論マップ117において該着目画素位置に対応する対応位置の要素値と、の誤差である。誤差マップ307には、誤差が一定値以上の領域である誤差領域308,309,310が存在する。誤差領域308は、正解領域302に対して推論領域304の要素値が小さいために生じている誤差の領域である。誤差領域309および誤差領域310はそれぞれ、正解領域302外に推論領域305および推論領域306が位置しているために生じている誤差の領域である。
【0033】
そして損失計算部106は、誤差マップ307の複製を重み付け誤差マップ312として生成し、重み付け誤差マップ312における着目画素位置の誤差を、「該誤差に、重み付けマップ118において該着目画素位置に対応する画素位置の要素値に応じた重み値を乗じた結果」に更新する。図3のケースでは、誤差領域313および誤差領域314は許容領域303に属するために重み付けはされないが、誤差領域315は許容領域303には属していないため、重み付けされて誤差は大きくなっている。そして損失計算部106は、重み付け誤差マップ312における各画素位置の誤差の総和を損失として計算する。
【0034】
そして更新部107は、損失計算部106が求めた損失に基づいて、図2のケースと同様にして、学習モデル119(CNN)における各層の重み係数を更新することで該学習モデル119の学習を行う。学習が進むにつれて、推論マップ117は正解マップ115に近いものとなっていく。
【0035】
次に、本実施形態に係る学習モデル119の学習処理について、図4のフローチャートに従って説明する。なお、新規に学習モデル119の学習処理を行う場合には、該学習モデル119のパラメータをランダムな値で初期化して、RAM108上に展開する。既存の学習モデル119に対する追加学習をおこなう場合には、該学習モデル119を記憶部109から読み出し、RAM108上に展開する。
【0036】
ステップS401では、推論部104は、記憶部109から入力画像113を取得する。ステップS402では、生成部103は、記憶部109から入力画像113の正解情報114を取得する。以下では、正解情報114は、入力画像113内における検出対象(人物の胴の中心、該人物の左右の肩関節、該人物の左右の腰関節)の画素位置を表す情報であるものとして説明する。正解情報114は人が手作業で入力することが一般的であるが、高精度の別の学習モデルを用いて付与してもよい。
【0037】
ステップS403では、生成部103は、ステップS402で取得した正解情報114の複製を正解マップ115として生成する。そして生成部103は、該正解マップ115において「人物の胴の中心」に対応する対応画素により近い画素位置の画素の画素値を「0~1の実数の範囲においてより1に近い実数値」に更新し、該対応画素からより遠い画素位置の画素の画素値を「0~1の実数の範囲においてより0に近い実数値」に更新する。
【0038】
ステップS404では、生成部103は、「人物の胴の中心、該人物の左右の肩関節、該人物の左右の腰関節」の各位置を用いて、入力画像113から許容マップ116を生成する。ステップS404における処理の詳細については、図5,6を用いて後述する。
【0039】
ステップS405では、推論部104は、ステップS401で取得した入力画像113を学習モデル119に入力することで該学習モデル119から出力される推論マップ117を取得する。
【0040】
ステップS406では、生成部105は、ステップS405で取得した推論マップ117において、許容マップ116における許容領域と重ならない推論領域を誤検出領域として示すマップを重み付けマップ118として生成する。ステップS406の詳細については、図7を用いて後述する。
【0041】
ステップS407では、損失計算部106は、推論マップ117と正解マップ115との画素ごとの誤差を表す誤差マップ307を求め、該誤差マップ307を重み付けマップ118で重み付けした結果を、重み付け誤差マップ312として求める。そして損失計算部106は、重み付け誤差マップ312における各画素位置の誤差の総和を損失として計算する。ステップS407における処理の詳細については、図8を用いて後述する。
【0042】
ステップS408では、更新部107は、損失計算部106が求めた損失に基づいて、学習モデル119(CNN)における各層の重み係数を更新することで該学習モデル119の学習を行う。
【0043】
ステップS409では、CPU101は、処理の終了条件が満たされたか否かを判断する。処理の終了条件には様々な条件があり、特定の終了条件に限らない。例えば、「学習回数(ステップS401~S408の繰返し回数)が規定回数以上」、「学習を開始してからの経過時間が規定時間以上」、「前回からの重み係数の変化量が規定量未満」、「ユーザが入力部110を操作して処理の終了指示を入力した」、「画像に対する精度が所定以上」などがある。
【0044】
このような判断の結果、処理の終了条件が満たされた場合には図4のフローチャートに従った処理は終了する。一方、処理の終了条件が満たされていない場合には、処理はステップS401に進む。
【0045】
次に、上記のステップS404における処理の詳細について、図5のフローチャートに従って説明する。図6(A)に、正解情報114で規定されている胴中心601、右肩関節602、左肩関節603、右腰関節604、左腰関節605の位置関係を示す。図6(B)~図6(I)は、許容マップ116を生成する過程を示している。
【0046】
まず、ステップS501では、生成部103は、入力画像113における人物の胴のサイズを算出する。入力画像113における人物の胴のサイズは、一例としては、左右の肩関節の間の距離や、胴中心といずれかの肩関節の距離を用いることができる。
【0047】
ステップS502では、生成部103は、胴中心を中心位置とし、胴のサイズを直径とした円領域(胴体円)を算出する。図6(B)に、胴中心601を中心位置とし、胴のサイズを直径とした胴体円606の例を示す。
【0048】
そして、ステップS504~ステップS505の処理を、肩関節および腰関節の数だけ繰り返す。ステップS504では、生成部103は、右肩関節602、左肩関節603、右腰関節604、左腰関節605において未選択の関節から1つを選択関節として選択する。そして生成部103は、該選択関節の位置を通り且つ胴体円606と接する線分を求め、該線分と該胴体円606との接点を求める。図6(C)では、選択関節として右肩関節602を選択しており、右肩関節602の位置を通り且つ胴体円606と接する線分を求め、該線分と胴体円606との接点607,608を求めている。
【0049】
ステップS505では、生成部103は、選択関節の位置と、ステップS504で求めた2つの接点の位置と、を頂点とする三角形領域を求める。図6(C)では、右肩関節602の位置、接点607の位置、接点608の位置、の3つの位置を頂点とする三角形領域609を求めている。
【0050】
図6(D)の三角形領域610は、左肩関節603を選択関節として選択した場合に求めた三角形領域である。図6(E)の三角形領域611は、右腰関節604を選択関節として選択した場合に求めた三角形領域である。図6(F)の三角形領域612は、左腰関節605を選択関節として選択した場合に求めた三角形領域である。
【0051】
ステップS507では、生成部103は、2つの肩関節の位置と胴中心の位置を頂点とする三角形領域を求める。図6(G)の三角形領域613は、左肩関節603の位置、右肩関節602の位置、胴中心601の位置、を頂点とする三角形領域である。
【0052】
ステップS508では、生成部103は、2つの腰関節の位置と胴中心の位置を頂点とする三角形領域を求める。図6(H)の三角形領域614は、左腰関節605の位置、右腰関節604の位置、胴中心601の位置、を頂点とする三角形領域である。
【0053】
ステップS509では、生成部103は、ステップS502で求めた胴体円の領域(図6(B)の胴体円606の領域)、ステップS504~S508で求めた全ての三角形領域(図6(C)~(H)に示した三角形領域)の合計領域を許容領域とする。図6(I)の許容領域615は、図6(B)~(H)に示した胴体円および三角形領域の合計領域である。そして生成部103は、入力画像113と同じ解像度を有する許容マップ116であって、上記の処理で求めた許容領域に該当する領域内の画素の画素値を「1」、該領域外の画素の画素値を「0」とする許容マップ116を生成する。
【0054】
このような許容マップ116の生成方法により、例えば、図6(J)に示す如く、反り返った姿勢をしている人物についても、該人物の胴体の領域を近似した許容領域616を有する許容マップ116を生成することができる。
【0055】
次に、上記のステップS406における処理の詳細について、図7のフローチャートに従って説明する。ステップS701では、生成部105は、重み付けマップ118における全ての要素の要素値を「0」に初期化する。そして、ステップS703~S705の処理を、重み付けマップ118における全ての要素について行う。
【0056】
ステップS703では生成部105は、重み付けマップ118におけるi(1≦i≦M:Mは重み付け誤差マップ312における要素の総数)番目の要素(i番目の画素位置における要素)が、許容マップ116における許容領域に属しているか否かを判断する。つまり生成部105は、重み付けマップ118におけるi番目の要素に対応する許容マップ116中の画素位置の画素値が「1」であるか否かを判断する。重み付けマップ118におけるi番目の要素に対応する許容マップ116における画素位置の画素値が「1」であれば、重み付けマップ118におけるi番目の要素は許容領域に属していると判断される。一方、重み付けマップ118におけるi番目の要素に対応する許容マップ116における画素位置の画素値が「0」であれば、重み付けマップ118におけるi番目の要素は許容領域に属していないと判断される。
【0057】
重み付けマップ118におけるi番目の要素が許容領域に属していると判断された場合は、生成部105は変数iの値(初期値は1)を1つインクリメントしてステップS703の処理を行う。一方、重み付けマップ118におけるi番目の要素が許容領域に属していないと判断された場合は、処理はステップS704に進む。
【0058】
ステップS704では、生成部105は、重み付けマップ118におけるi番目の要素に対応する推論マップ117中の要素の要素値Vが所定値以上であるか否かを判断する。この判断の結果、要素値Vが所定値以上であれば、処理はステップS705に進み、要素値Vが所定値未満であれば、生成部105は変数iの値を1つインクリメントして、処理はステップS703に進む。ステップS705では、生成部105は、重み付けマップ118におけるi番目の要素の要素値を「1」に更新する。
【0059】
次に、上記のステップS407における処理の詳細について、図8のフローチャートに従って説明する。ステップS802およびステップS803の処理は、推論マップ117における各画素について行われる。
【0060】
ステップS802では、損失計算部106は、推論マップ117において未選択の画素位置のうち1つを選択画素位置として選択し、推論マップ117における選択画素位置の要素値と正解マップ115における選択画素位置の画素値との誤差を求める。誤差としては、例えば、上記の交差エントロピーを求める。
【0061】
ステップS803では、損失計算部106は、ステップS802で求めた誤差に、重み付けマップ118において選択画素位置に対応する画素位置の要素値に応じた重み値を乗じた結果を、重み付け誤差マップ312の選択画素位置における要素値とする。例えば、重み付けマップ118において選択画素位置に対応する画素位置の要素値が0である場合は、該要素値に応じた重み値を1(変化なし)とする。また、重み付けマップ118において選択画素位置に対応する画素位置の要素値が1である場合は、該要素値に応じた重み値を1より大きい値にする。これにより、許容領域外の誤検出領域に対する誤差に対して、該誤差をより大きくする重み値を掛けることができる。
【0062】
推論マップ117における全ての画素についてステップS802およびステップS803の処理を行うことで、誤差マップ307に対して重み付けマップ118による重み付けを行った重み付け誤差マップ312が完成する。
【0063】
そしてステップS805では、損失計算部106は、上記の処理でもって完成した重み付け誤差マップ312における各画素位置の画素の誤差の総和を損失として計算する。例えば、損失は以下の式(3)に基づいて求めても良い。
【0064】
【数3】
【0065】
Eiは重み付け誤差マップ312におけるi番目の画素の誤差(交差エントロピー)、wiは重み付けマップ118においてi番目の画素に対応する要素値に対応する重み値、αは任意の係数である。
【0066】
このように、本実施形態によれば、物体を検出するCNNの学習において、優先度の高い誤検出領域に対して誤差の重み付けを行うことができ、優先度の高い誤検出を早期に抑制することが可能となる。
【0067】
[第2の実施形態]
本実施形態を含む以下の各実施形態では、第1の実施形態との差分について説明し、以下で特に触れない限りは、第1の実施形態と同様であるものとする。第1の実施形態では、人物の関節の位置に基づいて許容マップ116を生成していたが、本実施形態では、別の方法によって許容マップ116を生成する。
【0068】
図9を用いて、本実施形態における許容マップ116の生成方法を説明する。本実施形態では、生成部103は、入力画像113の領域分割情報905を取得する。領域分割情報905の取得方法は特定の取得方法に限らず、記憶部109から取得しても良いし、通信部112を介して外部から受信しても良い。領域分割情報905は、画像に対する領域分割を行うモデルにより得られる。
【0069】
図9(A)は、入力画像113を示しており、該入力画像113には、検出対象として人物901が映っており、検出対象ではない物体として樹木902が映っている。図9(B)は、入力画像113に対する正解情報903を示しており、該正解情報903は、人物901の胴の中心の位置904を表している。
【0070】
図9(C)は、入力画像113に対応する領域分割情報905を示しており、人物901に対応する領域906と、樹木902に対応する領域907と、それ以外の領域と、に分割した結果を示している。領域分割情報905は、一例としては、入力画像113と同じ解像度を有する2次元配列であり、領域906に属する要素の要素値は1、領域907に属する要素の要素値は2、それ以外の領域に属する要素の要素値は0である。
【0071】
図9(D)は、許容マップ116を示している。本実施形態では、領域分割情報905における領域906および領域907のうち、正解情報903における位置904を含む領域、つまり、領域906を許容領域とするため、図9(D)に示す如く、領域906を許容領域として表す許容マップ116が生成される。このような許容マップ116の生成方法では、検出対象の人物全体を許容領域とすることができるため、手足や頭などを誤検出扱いしない場合に有効である。
【0072】
なお、許容マップ116の生成方法は、上述の方法に限定されるものではなく、他の方法を用いてもよい。例えば、正解情報114として胴の中心の位置904のみが与えられた場合には、胴の中心の位置904周辺の画像特徴量を用いて許容マップ116を生成してもよい。具体的には、入力画像113において胴の中心の位置904の周辺領域(位置904から規定距離内の領域)内の色ヒストグラムを「正解領域の色ヒストグラム」として作成する。その上で、入力画像113の各画素について、該画素の周辺領域の色ヒストグラムを作成し、「正解領域の色ヒストグラム」との類似度が所定値以上となる色ヒストグラムを作成した周辺領域を許容領域としても良い。胴の中心の位置904の周辺は衣服を身に着けていることが多いため、このような方法では、胴の中心と同じ衣服を着用している領域を許容領域とすることができる。
【0073】
このように、本実施形態によれば、人物の関節位置を正解情報114として与える必要がないため、正解情報114の作成コストを削減することができる。なお、許容領域を人手で入力することで許容マップ116を作成して与える構成としてもよい。この場合には、許容可能な領域を人が定めた上で、より正確に許容領域として指定することができる。
【0074】
[第3の実施形態]
第1の実施形態では、誤検出領域に対して重み付けを行うものであったが、本実施形態では、許容領域の重み値を許容領域の範囲外の重み値よりも下げることによる重み付け方法について説明する。図10を用いて本実施形態における重み付け方法を説明する。
【0075】
本実施形態では、正解マップ115と許容マップ116から、重み付けマップ118を生成する。本実施形態において重み付けマップ118は、許容領域303に含まれるが、正解領域302には含まれない領域1001を特定するためのものである。
【0076】
重み付けマップ118を用いて、誤差マップ307に対して画素ごとに重み付けしたものが、重み付け誤差マップ312である。本実施形態においては、重み付けマップ118の領域1001に対する重み値を領域1001の範囲外に対する重み値よりも下げることで、領域1001の範囲外の誤検出領域の重みを相対的に高くする効果がある。本例では、誤差領域313および誤差領域315は領域1001の範囲外であるため、重み付けはされないが、誤差領域314は領域1001の範囲内であるため、重みを弱くすることで誤差の値が小さくなっている。
【0077】
そして、損失計算部106は、上記の処理でもって完成した重み付け誤差マップ312における各画素位置の画素の誤差の総和を損失として計算する。例えば、損失は以下の式(4)に基づいて求めても良い。
【0078】
【数4】
【0079】
βは任意の係数である。本実施形態では、推論マップ117を用いずに重み付けマップ118を生成するため、重み付けマップ118の生成処理を事前処理として学習前に実施しておくことも可能となり、学習に要する時間を短縮することができる。
【0080】
[第4の実施形態]
第1~3の実施形態では、許容マップ116として検出対象となる人物の胴体の領域を利用していた。これに対し、本実施形態では、検出対象となる人物以外の領域を許容マップ116として与える。図11に本実施形態における許容マップ116の与え方、および損失重み付けの方法を示す。
【0081】
入力画像113には、人物1101と背景人物1102とが映っている。人物1101は検出対象であり、背景人物1102は写っているサイズが小さいため、検出対象ではない。しかし、背景人物1102は検出対象と類似した特徴を備えているため、背景人物1102を検出しないように学習すると、検出精度が低下する可能性がある。そこで本実施形態では、許容マップ116として、背景人物1102の胴中心に相当する許容領域1103を与え、該許容領域1103を検出してもしなくてもよい領域として扱う。本実施形態において、許容マップ116は人が手作業によって入力して与えるものとする(例えばユーザが入力部110を操作して入力する)。
【0082】
第1の実施形態と同様、入力画像113を学習モデル119に入力すると、該学習モデル119からは、該入力画像113に対応する推論マップ117が出力される。推論マップ117には推論領域1104~1106が含まれている。推論領域1104は、人物1101の胴の中心近辺に位置しており、該推論領域1104における存在確率は正解領域302と比較すると小さい。推論領域1105は、人物1101および背景人物1102のいずれからも外れた位置に存在しており、推論領域1106は、背景人物1102の胴の中心付近に位置している。
【0083】
推論マップ117と正解マップ115とから第1の実施形態と同様にして誤差マップ307を取得する。誤差マップ307において誤差領域1107は、正解領域302に対して推論領域1104における存在確率が弱いために生じている誤差である。誤差マップ307において誤差領域1108および誤差領域1109はそれぞれ、正解領域302以外の位置に推論領域1105および推論領域1106が存在しているために生じている誤差である。
【0084】
本実施形態では、重み付けマップ118は、正解マップ115と推論マップ117と許容マップ116とから生成部105が生成する。生成部105は、全ての要素の要素値が「1」に初期化された2次元配列の重み付けマップ118において、許容領域1103に対応する領域1111に属する要素の要素値を「0」に設定すると共に、推論領域1104~1106のうち許容領域1103にも正解領域302にも対応しない誤検出領域である推論領域1105に対応する領域1110に属する要素の要素値を「2」に設定する。「領域1111に属する要素の要素値を「1」に設定する」ことは、「領域1111を損失を計算しない無視領域」として設定することを意味する。このような許容マップ116を用いることにより、背景人物1102への検出結果を無視するよう扱うことができる。
【0085】
損失計算部106は第1の実施形態と同様にして、重み付けマップ118を用いて誤差マップ307の画素ごとに重み付けして重み付け誤差マップ312を生成するが、領域1111に対応する領域1114については、誤差領域1109に対応するものの上記の無視領域に該当するため、誤差を無視するよう重み付け(重み値「0」で重み付け)した結果、該領域1114内の要素値(誤差)は0となる。誤差領域1112は、誤検出領域である領域1110および無視領域である領域1111の範囲外であるために重み付けはされないが、誤差領域1113は領域1110に対応するため、より大きい重み値で重み付けされて要素値(誤差)が大きくなる。
【0086】
そして、損失計算部106は、上記の処理でもって完成した重み付け誤差マップ312における各画素位置の画素の誤差の総和を損失として計算する。例えば、損失は以下の式(5)に基づいて求めても良い。
【0087】
【数5】
【0088】
γは任意の係数である。このように、本実施形態によれば、検出対象となる人物の他に、背景人物などが映りこんでいる画像においても、背景人物を検出対象でも誤検出対象でもない対象として扱うことができ、効率的に学習を行うことができる。
【0089】
<変形例>
上述の実施形態では、人物の胴の中心を検出対象としていたが、他の対象を検出対象としてもよく、例えば、人物の他の部位(頭部など)、他の生物(動物など)を検出対象としても良い。どのような対象(オブジェクト)を検出対象としても、上記の実施形態と同様、正解マップと許容マップを与えることで、致命的な誤検出を抑制した学習を効率的に行うことができる。
【0090】
また、許容マップは0、1の2値で表現されるマップではなく、許容領域の中心が1、端にいくに従って0に近くなる分布を持つマップでもよい。この場合には、許容領域内を一律誤検出扱いとしないのではなく、許容マップの値に従って誤検出度合いを付与してもよい。許容領域の値が1に近い部分は誤検出扱いとせず、0に近い部分は弱い誤検出として扱うことで、重み付けマップに強弱をつけることができる。この構成では、許容領域の中央付近と比較して、許容領域の端の部分への検出を相対的に抑制することができる。
【0091】
また、上述の実施形態では、重み付けマップを生成した上で重み付けをおこなう構成としたが、これに限らず、重み付けマップを生成せずに、損失の計算時に直接重みを計算してもよい。
【0092】
また、上記の生成部103、推論部104、生成部105、損失計算部106、更新部107の各機能部はハードウェアで実装しても良い。その場合、このハードウェアは処理回路として上記のコンピュータ装置に組み込んでも良いし、動画像若しくは静止画像を撮影する撮影装置に組み込んでも良く、その組み込み先は特定のデバイスに限らない。また、これらの機能部の一部をハードウェアやソフトウェアで実装するようにしても良い。
【0093】
また、上記の各実施形態で使用した数値、処理タイミング、処理順、データ(情報)の構成/送信先/送信元などは、具体的な説明を行うために一例として挙げたものであり、このような一例に限定することを意図したものではない。
【0094】
また、以上説明した各実施形態や変形例の一部若しくは全部を適宜組み合わせて使用しても構わない。また、以上説明した各実施形態や変形例の一部若しくは全部を選択的に使用しても構わない。
【0095】
(その他の実施形態)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
【0096】
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
【符号の説明】
【0097】
101:CPU 102:ROM 103:生成部 104:推論部 105:生成部 106:損失計算部 107:更新部 108:RAM 109:記憶部 110:入力部 111:表示部 112:通信部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11