(58)【調査した分野】(Int.Cl.,DB名)
前記多層ニューラルネットワークは、前記処理結果と前記サイド情報との間に齟齬がある場合、前記中間層を構成する複数のノードのうち、前記出力層における前記処理結果の算出に大きく寄与したノードを特定し、特定したノードの出力値を変更して前記出力層における前記処理結果の算出を再度行うこと
を特徴とする請求項1記載の識別分類装置。
前記多層ニューラルネットワークは、前記中間層を構成する複数のノードのうち、前記出力層の前段のノードから、前記処理結果の算出に大きく寄与したノードを特定すること
を特徴とする請求項3記載の識別分類装置。
前記多層ニューラルネットワークは、前記処理結果と前記サイド情報との間に齟齬がある場合、前記中間層を構成する複数のノードのうち、後段のノードの出力値の算出に大きく寄与したノードを順に遡って特定し、特定したノードの出力値を変更して前記処理結果の算出を再度行うこと
を特徴とする請求項1記載の識別分類装置。
【発明を実施するための形態】
【0011】
以下、この発明をより詳細に説明するため、この発明を実施するための形態について、添付の図面に従って説明する。
実施の形態1.
図1は、この発明の実施の形態1に係る識別分類装置100の構成を示すブロック図である。識別分類装置100は、識別処理または分類処理を行う装置であって、
図1に示すように、サイド情報算出部110および多層ニューラルネットワーク120を備える。
識別分類装置100に入力されたデータの一部または全ては、サイド情報算出部110および多層ニューラルネットワーク120に同じタイミングで入力される。
【0012】
サイド情報算出部110は、識別分類装置100に入力されたデータの一部または全てを用いてサイド情報を算出し、算出したサイド情報を多層ニューラルネットワーク120に出力する。なお、サイド情報は、入力データの識別処理または分類処理を補助する内容を含む情報である。
【0013】
例えば、多層ニューラルネットワーク120が、カメラによって撮影された画像データを用いて、画像に写った撮影対象物の識別処理または分類処理を行う場合、撮影対象物の実サイズは、撮影対象物を識別または分類する上で有用な情報となる。
また、カメラと撮影対象物との間の距離が分かれば、上記画像データから撮影対象物の実サイズを算出することが可能となる。
【0014】
撮影対象物の実サイズは、カメラと撮影対象物との間の距離および画像上の撮影対象物のサイズ(画素数)を用いて、次式から算出することができる。
次式において、空間分解能は、1画素あたりの視野の角度を表しており、カメラごとの特性に基づく値である。画素数は画像上での撮影対象物のサイズである。距離はカメラと撮影対象物との間の距離である。
実サイズ(m)=画素数(ピクセル)×距離(km)×空間分解能(mrad)
【0015】
サイド情報算出部110は、撮影対象物の実サイズを求めるパラメータである、カメラと撮影対象物との間の距離を、サイド情報として算出する。
例えば、サイド情報算出部110は、視点が異なる複数の画像データに基づいて、三角測量法を用いてカメラと撮影対象物との間の距離を算出する。
また、サイド情報算出部110は、視点が異なる複数の画像データに基づいて、SfM(Structure from Motion)によってカメラと撮影対象物との間の距離を算出してもよい。
【0016】
サイド情報算出部110は、測距センサの検出データを用いて、カメラと撮影対象物との間の距離を算出してもよい。測距センサは、カメラの周辺に配置されて、例えば、撮影対象物を含む検出範囲の計測点との距離を検出するセンサであり、赤外線深度センサまたはレーザセンサにより実現される。
【0017】
サイド情報算出部110は、撮影対象物が存在する場所についての事前情報、カメラの位置情報、およびカメラ周辺の地図情報を用いて、カメラと撮影対象物との間の距離を算出してもよい。事前情報とは、撮影対象物が存在する建物または地形部分を示す情報である。例えば、サイド情報算出部110は、事前情報および地図情報に基づいて撮影対象物が存在する位置情報を特定し、特定した撮影対象物の位置情報とカメラの位置情報から、カメラと撮影対象物との間の距離を算出する。
【0018】
カメラと撮影対象物との間の距離を算出するための様々な方法を示したが、サイド情報算出部110は、これらの方法のうちから、撮影対象物を撮影するカメラシステムの構成あるいは上記距離の許容算出時間に応じて適切な方法を選択してもよい。
例えば、カメラシステムが上記測距センサを備える場合、サイド情報算出部110は、測距センサの検出情報を利用して上記距離を算出する方法を選択する。
また、サイド情報算出部110は、許容算出時間内に上記距離の算出が可能であれば、画像データから上記距離を算出してもよい。
【0019】
多層ニューラルネットワーク120は、入力データを用いて識別処理または分類処理を行うニューラルネットワークであり、多層パーセプトロンと呼ばれる場合がある。
なお、多層ニューラルネットワーク120は、識別処理または分類処理を行うものであればよく、畳み込みニューラルネットワークであってもよい。
【0020】
また、多層ニューラルネットワーク120には、入力データから出力値を算出するときに使用されるパラメータが、識別処理または分類処理に適した値となるように学習処理が施されているものとする。
多層ニューラルネットワーク120に学習処理を施す学習部は、識別分類装置100が備えてもよいが、識別分類装置100とは別に設けられた外部装置が備えてもよい。
【0021】
図2は、多層ニューラルネットワーク120の構成例を示す図である。多層ニューラルネットワーク120は、
図2に示すように、入力層10、中間層20および出力層30の3種類の層から構成されたニューラルネットワークである。
【0022】
入力層10は、識別処理または分類処理の対象となるデータが入力される複数のノードを備えている。中間層20は、いわゆる隠れ層と呼ばれる層であり、1段もしくは複数段の層に配置された複数のノードを備えている。出力層30は、識別処理または分類処理の出力数に対応した数のノードを備える。例えば、識別処理または分類処理で1つの正解を得る場合、出力層30のノード数は1つとなる。
図2に示す出力層30では、識別する数または分類するクラスの数に対応するm個のノードを備えている。
【0023】
多層ニューラルネットワーク120を構成する複数のノードは、エッジと呼ばれる枝によって接続されている。例えば、入力層10における複数のノードのそれぞれは、エッジによって、中間層20における1段目の層に配置された複数のノードのそれぞれと接続されている。中間層20が複数段の層で構成されている場合、前段の層に配置された複数のノードのそれぞれは、エッジによって、後段の層に配置された複数のノードのそれぞれに接続される。出力層30のノードは、エッジによって、中間層20における最終段の層(出力層30の一つ手前の段の層)に配置された複数のノードのそれぞれに接続される。
【0024】
エッジには、学習処理によって算出された重みwが付与されている。
また、出力層30を構成する1または複数のノードには、学習処理によって算出されたバイアスbが付与されている。
例えば、中間層20における最終段の層のノード20l−iが、エッジijによって、出力層30におけるノード30−jと接続されている場合、エッジijには、学習処理によって算出された重みw
ijが付与されている。また、ノード30−jには、学習処理によって算出されたバイアスb
jが付与される。
なお、中間層20における最終段の層はn個のノードを備えるので、iは、1,2,・・・,nのうちのいずれかの値となる。同様に、出力層30はm個のノードを備えるので、jは、1,2,・・・,mのうちのいずれかの値となる。
【0025】
入力層10の複数のノードのそれぞれに入力された処理対象のデータは、中間層20の複数のノードのそれぞれに出力される。
中間層20における最終段の層に配置されたノード20l−iは、前段の層に配置された複数のノードのそれぞれの出力値を用いて演算を行い、演算結果の出力値x
iを出力層30のノード30−jに出力する。
【0026】
例えば出力層30の活性化関数がsoftmax関数である場合、ノード30−jは、重みw
ijと出力値x
iとの積を用いて下記式(1)に示す演算を行うことにより、識別処理または分類処理の結果が得られる確率であるp
jを算出する。
ただし、下記式(1)において、eを底とする指数関数の指数部は、重みw
ijと出力値x
iとの積にバイアスb
jを足した値の総和である。Rは、下記式(2)で算出される値である。
【0027】
出力層30は、上記確率p
jが最大となるj番目のノードを下記式(3)に従って特定する。下記式(3)に従って特定されたノードの出力値が、処理対象物がcに識別されることを示す出力値または処理対象物がクラスcに分類されることを示す出力値となる。
【0028】
また、多層ニューラルネットワーク120は、出力層30で算出された処理結果(上記出力値)と上記サイド情報との間に齟齬がある場合、中間層20の出力値を変更して識別処理または分類処理を再度行う。
【0029】
例えば、多層ニューラルネットワーク120が、カメラによって撮影された撮影画像に写った船の種類を分類する場合に、船の大きさに関する情報は、船の種類を分類する上で補助的な役割を果たす情報となる。
そこで、サイド情報算出部110は、撮影画像に写った船がどの程度の大きさであるかという情報を算出して、多層ニューラルネットワーク120に出力する。
【0030】
多層ニューラルネットワーク120では、サイド情報算出部110によって算出された上記サイド情報と出力層30で算出された処理結果の出力値との間に齟齬がある場合に、中間層20の出力値を変更して分類処理を再度行う。これにより、多層ニューラルネットワーク120を再学習することなく、分類処理の分類正解率を向上させることができる。
【0031】
なお、サイド情報算出部110は、撮影画像に写った船がどの程度の大きさであるかという情報の代わりに、撮影画像に写った船の大きさに基づいて、分類対象とはなり得ないクラスを示す情報をサイド情報として求めてもよい。例えば、カメラと船との間の距離が数十メール程度であるにも関わらず、撮影画像において船が数十ピクセル程度の大きさで写っていれば、この船は、大型船舶ではない可能性が高い。このとき、サイド情報算出部110は、大型船舶が分類対象のクラスになり得ないことを示すサイド情報を算出する。
【0032】
また、サイド情報算出部110は、極めて可能性が高いクラスを1つまたは複数求めてサイド情報としてもよい。
例えば、サイド情報算出部110は、撮影画像に写った船の大きさと閾値とを比較して撮影画像における船の大きさが上記閾値よりも小さい場合、船が小型船舶である可能性が高いと判断し、小型船舶を示す情報をサイド情報として出力する。
【0033】
さらに、サイド情報算出部110は、撮影画像に写った船の大きさに基づいて、当該船がクラスに分類される確からしさを数値として算出してもよい。
例えば、サイド情報算出部110は、撮影画像に写った船が小型船舶に分類される確からしさを示す数値、上記船が中型船舶に分類される確からしさを示す数値、および上記船が大型船舶に分類される確からしさを示す数値をそれぞれ算出してサイド情報とする。
【0034】
図3Aは、識別分類装置100の機能を実現するハードウェア構成を示すブロック図である。さらに、
図3Bは、識別分類装置100の機能を実現するソフトウェアを実行するハードウェア構成を示すブロック図である。識別分類装置100におけるサイド情報算出部110および多層ニューラルネットワーク120のそれぞれの機能は、処理回路により実現される。すなわち、識別分類装置100は、
図4に示すフローチャートのそれぞれの処理を実行するための処理回路を備える。
処理回路は、専用のハードウェアであっても、メモリ202に記憶されたプログラムを実行するCPU(Central Processing Unit)であってもよい。
【0035】
処理回路が
図2Aに示す専用のハードウェアである場合、処理回路200は、例えば、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ASIC(Application Specific Integrated Circuit)、FPGA(Field−Programmable Gate Array)またはこれらを組み合わせたものが該当する。サイド情報算出部110および多層ニューラルネットワーク120のそれぞれの機能を別々の処理回路で実現してもよいし、これらの機能をまとめて1つの処理回路で実現してもよい。
【0036】
処理回路が
図2Bに示すプロセッサ201である場合、サイド情報算出部110および多層ニューラルネットワーク120のそれぞれの機能は、ソフトウェア、ファームウェアまたはソフトウェアとファームウェアとの組み合わせによって実現される。ソフトウェアまたはファームウェアはプログラムとして記述され、メモリ202に記憶される。
【0037】
プロセッサ201は、メモリ202に記憶されたプログラムを読み出して実行することで、サイド情報算出部110および多層ニューラルネットワーク120のそれぞれの機能を実現する。すなわち、識別分類装置100は、プロセッサ201により実行されたときに、
図4に示す一連の処理のそれぞれが結果的に実行されるプログラムを記憶するためのメモリ202を備える。これらのプログラムは、サイド情報算出部110および多層ニューラルネットワーク120の手順または方法を、コンピュータに実行させるものである。
【0038】
メモリ202には、例えば、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ、EPROM(Erasable Programmable Read Only Memory)、EEPROM(Electrically−EPROM)などの不揮発性または揮発性の半導体メモリ、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVDなどが該当する。
【0039】
サイド情報算出部110および多層ニューラルネットワーク120のそれぞれの機能について、一部を専用のハードウェアで実現し、一部をソフトウェアまたはファームウェアで実現してもよい。例えば、サイド情報算出部110については、専用のハードウェアとしての処理回路200でその機能を実現し、多層ニューラルネットワーク120については、プロセッサ201がメモリ202に記憶されたプログラムを読み出して実行することによってその機能を実現してもよい。このように、処理回路は、ハードウェア、ソフトウェア、ファームウェア、または、これらの組み合わせによって上記機能のそれぞれを実現することができる。
【0040】
次に動作について説明する。
図4は、実施の形態1に係る識別分類方法を示すフローチャートである。
なお、
図4に示す一連の処理が行われる前に、多層ニューラルネットワーク120は、識別処理または分類処理に関する学習が施されているものとする。
【0041】
まず、多層ニューラルネットワーク120は、サイド情報を用いずに、入力データについての識別処理または分類処理を行い、処理結果である出力値を算出する(ステップST120)。このとき、サイド情報算出部110は、上記入力データに基づいて、識別処理または分類処理についてのサイド情報を算出する。
【0042】
多層ニューラルネットワーク120は、サイド情報算出部110が算出したサイド情報と出力層30から出力された上記出力値との間に齟齬があるか否かを判定する(ステップST121)。
例えば、多層ニューラルネットワーク120は、撮影対象物が分類されるクラスcを示す出力値を出力したときに、撮影対象物がクラスcには分類され得ないというサイド情報をサイド情報算出部110から入力した場合、上記出力値と上記サイド情報との間に齟齬があると判定する。
【0043】
また、多層ニューラルネットワーク120は、撮影対象物が分類されるクラスとしてクラスc’以外のクラスを示す出力値を出力したときに、撮影対象物がクラスc’に属する可能性が極めて高いことを示すサイド情報をサイド情報算出部110から入力した場合、上記出力値と上記サイド情報との間には齟齬があると判定する。
【0044】
さらに、多層ニューラルネットワーク120は、複数のクラスのそれぞれに撮影対象物が分類される確からしさを示す数値を、サイド情報として入力した場合、例えば、出力層30で分類結果のクラスを算出する前の計算値(上記式(3)に代入されるp
jの値)とクラスに撮影対象物が分類される確からしさを示すサイド情報とを加算する。次に、多層ニューラルネットワーク120は、例えば、加算値が一定値よりも小さい場合、上記出力値と上記サイド情報との間に齟齬があると判定する。
【0045】
多層ニューラルネットワーク120は、出力値とサイド情報との間に齟齬がないと判定した場合(ステップST121;NO)、ステップST120で算出された出力値を識別結果または分類結果として出力する(ステップST122)。この後、
図4に示す一連の処理が終了する。
【0046】
図5は、多層ニューラルネットワーク120の出力値の算出に寄与するノードkを特定する処理の概要を示す図であって、多層ニューラルネットワーク120によって撮影対象物のクラス分類が行われた場合を示している。出力層30の活性化関数がsoftmax関数であり、出力層30のノードが、上記式(3)に従ってクラスcを示す出力値を選択したものとする。
【0047】
多層ニューラルネットワーク120は、クラスcを示す出力値と、サイド情報との間に齟齬があると判定した場合(ステップST121;YES)、
図5に示すように、中間層20を構成する複数のノードのうち、出力層30の前段にあるノードから、上記出力値の算出に大きく寄与したノードkを特定する(ステップST123)。
【0048】
例えば、出力層30の活性化関数がsoftmax関数であり、撮影対象物がクラスcに分類される確率p
cが最も大きい場合に、クラスcを示す出力値が出力層30から出力される。確率p
cは、下記式(4)によって算出することができる。
下記式(4)において、出力層30の前段にある複数のノード(中間層20の最終段のノード)に関連したパラメータは、w
icおよびx
iである。w
icは、多層ニューラルネットワーク120に施された学習処理において算出されたエッジの重みであり、x
iは出力層30の前段にあるノードの出力値である。
【0049】
出力層30の前段にある複数のノードのうち、確率p
cが最大の値になったことに最も寄与したノードkは、下記式(5)から求めることができる。
下記式(5)における重みw
icと出力値x
iとの積は、上記式(4)における指数関数の指数部にあるので、確率p
cの決定に大きく寄与していると言える。
【0050】
多層ニューラルネットワーク120は、出力層30の前段にあるノードと出力層30のノードとを接続するエッジの重みw
icと、出力層30の前段にあるノードの出力値x
iとを特定する。次に、多層ニューラルネットワーク120は、確率p
cの決定に大きく寄与する重みw
icと出力値x
iとの積を上記式(5)に代入することで、クラスcを示す出力値の算出に大きく寄与したノードkを特定する。例えば、多層ニューラルネットワーク120は、上記式(5)に最大の出力値x
iを代入して特定したノードiをノードkとしてもよい。
【0051】
なお、これまでノードkとして1つのノードを特定する場合を示したが、多層ニューラルネットワーク120の出力値への寄与が大きいもの(例えば、閾値以上であるもの)であれば、多層ニューラルネットワーク120は、複数のノードをノードkとして特定してもよい。
【0052】
また、上記式(4)および上記式(5)は、ノードkを特定するための計算式の一例であり、実施の形態1における識別分類方法は、この計算式に限定されるものではない。
例えば、出力層30の活性化関数はsoftmax関数以外であってもよく、ノードkを特定するための計算式も上記式(4)および上記式(5)以外であってもよい。
【0053】
図4の説明に戻る。
多層ニューラルネットワーク120は、ステップST123で特定したノードkの出力値x
kをより小さな値に変更して、出力層30で出力値の算出を再度行う(ステップST124)。出力値x
kは、従前よりも小さな値であればよいが、以降ではx
k=0とした場合を例に挙げて説明する。
【0054】
上記式(1)は下記式(6)のように表すことができ、上記式(2)は下記式(7)のように表すことができる。下記式(6)および下記式(7)では、単純にx
kに0を代入するのではなく、i≠kとしてx
kに関わる計算を省くことで、撮影対象物が、分類対象となる複数のクラスのそれぞれに分類される確率p’
jを算出することができる。
出力層30では、下記式(6)および下記式(7)に従って確率p’
jが算出される。これにより、出力値の再計算における演算量を削減することができる。
【0055】
出力層30は、確率p’
jを算出すると、これを下記式(8)に代入することにより、確率p’
jが最大となるj番目のノードを特定する。
例えば、下記式(8)で特定されたノードの出力値が、撮影対象物が新たなクラスc’に分類されることを示す出力値となる。
【0056】
ステップST124の処理が完了すると、多層ニューラルネットワーク120は、再びステップST121の処理に戻り、新たなクラスc’を示す出力値とサイド情報との間に齟齬があるか否かを判定する。
クラスc’を示す出力値とサイド情報との間に齟齬がないと判定した場合(ステップST121;NO)、クラスc’を示す出力値を、分類結果として出力する(ステップST122)。
【0057】
一方、多層ニューラルネットワーク120は、クラスc’を示す出力値とサイド情報との間に齟齬があると判定した場合(ステップST121;YES)、出力層30の前段にあるノードのうち、上記出力値の算出に大きく寄与したノードk’を特定する(ステップST123)。
【0058】
例えば、多層ニューラルネットワーク120は、クラスc’を示す出力値の算出に大きく寄与したノードk’と、前述のように特定されたノードkとの集合をL={k,k’}として、集合Lに含まれるノードkの出力値x
kとノードk’の出力値x
k’を変更する。出力値x
kおよび出力値x
k’は従前よりも小さな値であればよいが、以降では、x
k=0およびx
k’=0とした場合を例に挙げて説明する。
【0059】
x
k=0およびx
k’=0とした場合、上記式(1)は下記式(9)のように表すことができ、上記式(2)は下記式(10)のように表すことができる。
下記式(9)および下記式(10)では、単純にx
kとx
k’とのそれぞれに0を代入するのではなく、集合Lに含まれるノードの出力値に関わる計算を省くことで、撮影対象物が分類対象となる複数のクラスのそれぞれに分類される確率p’’
jを算出することができる。出力層30では、下記式(9)および下記式(10)に従って、確率p’’
jが算出される。これにより、出力値の再計算における演算量を削減することができる。
【0060】
出力層30は、確率p’’
jを算出すると、これを下記式(11)に代入することで、確率p’’
jが最大となるj番目のノードを特定する。下記式(11)で特定されたノードの出力値が、撮影対象物が新たなクラスc’’に分類されることを示す出力値となる。以降、ステップST121で出力値とサイド情報との間に齟齬が発生する度に、集合Lに出力層30の前段にあるノードを追加して、前述した一連の処理を繰り返す。
【0061】
なお、これまでの説明では、多層ニューラルネットワーク120の出力値とサイド情報との間に齟齬がある場合に、多層ニューラルネットワーク120が、出力層30の前段のノードの出力値を変更して、識別処理または分類処理を再度行う場合を示した。
多層ニューラルネットワーク120の出力値とサイド情報との間に齟齬がある場合に、多層ニューラルネットワーク120が、中間層20の複数のノードのうち、後段のノードの出力値の算出に大きく寄与したノードを順に遡って特定し、特定したノードの出力値を変更して識別処理または分類処理を再度行ってもよい。
【0062】
例えば、多層ニューラルネットワーク120の出力値がAである場合、多層ニューラルネットワーク120は、出力層30の前段のノード(中間層20の最終段のノード)のうち、出力値Aの算出に大きく寄与したノードN1を特定する。
特定したノードN1の出力値がBである場合、多層ニューラルネットワーク120は、出力層30の前々段のノード(中間層20の最終段の前段のノード)のうち、出力値Bの算出に大きく寄与したノードN2を特定する。
特定したノードN2の出力値がCである場合、多層ニューラルネットワーク120は、出力層30の前々々段のノード(中間層20の最終段の前々段にあるノード)のうち、出力値Cの算出に大きく寄与したノードN3を特定する。
このように後段のノードの出力値の算出に大きく寄与したノードを順に遡って特定することでも、識別処理の識別率または分類処理の分類正解率を向上させることができる。
【0063】
以上のように、実施の形態1に係る識別分類装置100において、サイド情報算出部110が、識別処理または分類処理を補助するサイド情報を算出する。多層ニューラルネットワーク120は、識別処理または分類処理の処理結果とサイド情報との間に齟齬がある場合に、中間層20の出力値を変更して識別処理または分類処理を再度行う。
特に、サイド情報算出部110は、入力データに基づいてサイド情報を算出する。
このように構成することで、学習済みの多層ニューラルネットワーク120を再学習することなく、識別処理の識別率または分類処理の分類正解率を向上させることができる。
【0064】
実施の形態1に係る識別分類装置100において、多層ニューラルネットワーク120が、中間層20を構成する複数のノードのうち、処理結果の算出に大きく寄与したノードを特定し、特定したノードの出力値を変更して処理結果の算出を再度行う。
特に、多層ニューラルネットワーク120は、中間層20を構成するノードのうち、出力層30を構成するノードの前段のノードから、処理結果の算出に大きく寄与したノードを特定する。このように構成することで、識別処理の識別率または分類処理の分類正解率を向上させることができる。
【0065】
実施の形態1に係る識別分類装置100において、多層ニューラルネットワーク120が、処理結果とサイド情報との間に齟齬がある場合、中間層20を構成する複数のノードのうち、後段のノードにおける出力値の算出に大きく寄与したノードを順に遡って特定し、特定したノードの出力値を変更して処理結果の算出を再度行う。
このように構成することで、識別処理の識別率または分類処理の分類正解率を向上させることができる。
【0066】
なお、本発明は上記実施の形態に限定されるものではなく、本発明の範囲内において、実施の形態の任意の構成要素の変形もしくは実施の形態の任意の構成要素の省略が可能である。