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

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

▶ 日本電信電話株式会社の特許一覧

特許7582464物体検出装置、物体検出方法、及び物体検出プログラム
<>
  • 特許-物体検出装置、物体検出方法、及び物体検出プログラム 図1
  • 特許-物体検出装置、物体検出方法、及び物体検出プログラム 図2
  • 特許-物体検出装置、物体検出方法、及び物体検出プログラム 図3
  • 特許-物体検出装置、物体検出方法、及び物体検出プログラム 図4
  • 特許-物体検出装置、物体検出方法、及び物体検出プログラム 図5
  • 特許-物体検出装置、物体検出方法、及び物体検出プログラム 図6
  • 特許-物体検出装置、物体検出方法、及び物体検出プログラム 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-05
(45)【発行日】2024-11-13
(54)【発明の名称】物体検出装置、物体検出方法、及び物体検出プログラム
(51)【国際特許分類】
   G06T 7/00 20170101AFI20241106BHJP
   G06V 10/94 20220101ALI20241106BHJP
   G06N 3/063 20230101ALI20241106BHJP
【FI】
G06T7/00 350C
G06V10/94
G06N3/063
【請求項の数】 6
(21)【出願番号】P 2023523790
(86)(22)【出願日】2021-05-26
(86)【国際出願番号】 JP2021019953
(87)【国際公開番号】W WO2022249316
(87)【国際公開日】2022-12-01
【審査請求日】2023-09-05
(73)【特許権者】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(74)【代理人】
【識別番号】110001519
【氏名又は名称】弁理士法人太陽国際特許事務所
(72)【発明者】
【氏名】八田 彩希
(72)【発明者】
【氏名】鵜澤 寛之
(72)【発明者】
【氏名】吉田 周平
(72)【発明者】
【氏名】小林 大祐
(72)【発明者】
【氏名】大森 優也
(72)【発明者】
【氏名】中村 健
(72)【発明者】
【氏名】新田 高庸
【審査官】宮島 潤
(56)【参考文献】
【文献】特開2018-124681(JP,A)
【文献】八田 彩希 Saki Hatta,電子情報通信学会2020年基礎・境界ソサイエティ/NOLTAソサイエティ大会講演論文集 PROCEEDINGS OF THE 2020 IEICE ENGINEERING SCIENCES SOCIETY/NOLTA SOCIETY CONFERENCE,日本,電子情報通信学会,2020年09月01日,p.33
(58)【調査した分野】(Int.Cl.,DB名)
G06T 7/00 - 7/90
G06V 10/00 - 20/90
G06V 30/418
G06V 40/16
G06V 40/20
G06F 18/00 - 18/40
G06N 3/00 - 99/00
(57)【特許請求の範囲】
【請求項1】
メモリと、
前記メモリに接続された少なくとも1つのプロセッサと、
を含み、
前記プロセッサは、
入力画像が入力される多層ニューラルネットワークの処理アルゴリズムに従って、前記多層ニューラルネットワークを構成する複数の層の各々に対応する演算処理を、小数点位置が設定された固定長データに対して行うことにより、前記入力画像に含まれる物体を検出する物体検出を行う第1処理と
前記演算処理の演算結果が、前記小数点位置によって定まる値域の上限値を上回った回数である上限飽和回数及び前記値域の下限値を下回った回数である下限飽和回数を、前記複数の層の層毎に各々カウントする第2処理と
前記上限飽和回数が1回以上となった層の数である上限飽和層数及び前記下限飽和回数が1回以上となった層の数である下限飽和層数を各々カウントする第3処理と
前記上限飽和回数が上限飽和閾値を上回った層については、前記値域の上限値が大きくなるように小数点位置を設定し、前記下限飽和回数が下限飽和閾値を上回った層については、前記値域の下限値が小さくなるように小数点位置を設定する第4処理と、
2回目の前記物体検出を行い、1回目の前記物体検出における前記上限飽和層数に対する2回目の物体検出における前記上限飽和層数の増加量である前記上限飽和層数の変化量及び1回目の前記物体検出における前記下限飽和層数に対する2回目の物体検出における前記下限飽和層数の増加量である前記下限飽和層数の変化量を算出する第5処理と、
前記上限飽和層数の変化量が、予め定めた上限変化量閾値以下の場合は、前記上限飽和閾値が最適であると判定し、前記上限飽和層数の変化量が、前記上限変化量閾値より大きい場合は、前記上限飽和閾値が最適ではないと判定し、前記下限飽和層数の変化量が、予め定めた下限変化量閾値以下の場合は、前記下限飽和閾値が最適であると判定し、前記下限飽和層数の変化量が、前記下限変化量閾値より大きい場合は、前記下限飽和閾値が最適ではないと判定する第6処理と、
前記上限飽和閾値が最適ではないと判定された場合は、前記上限飽和閾値を予め定めた増加値だけ増加させることにより前記上限飽和閾値を変更し、前記下限飽和閾値が最適ではないと判定された場合は、前記下限飽和閾値を予め定めた増加値だけ増加させることにより前記下限飽和閾値を変更する第7処理と、
前記第7処理を実行した後、前記上限飽和閾値及び前記下限飽和閾値が最適であるか否かを判定し、前記上限飽和閾値及び前記下限飽和閾値が最適であると判定されるまで前記第7処理を繰り返す第8処理と、
前記上限飽和閾値及び前記下限変化量閾値が最適であると判定された場合は、前記物体検出を複数回行い、1回の前記物体検出を行う毎に、前記演算結果が前記値域の上限値を上回った層については、前記演算結果が前記上限値以下となる方向に小数点位置を移動させ、前記演算結果が前記値域の下限値を下回った層については、前記演算結果が前記下限値以上となる方向に小数点位置を移動させる処理を行い、前記複数の層の各々に対して、前記上限飽和回数及び前記下限飽和回数が最も少ないときの前記物体検出を行ったときの小数点位置を最適な小数点位置として決定する第9処理と、
前記最適な小数点位置を用いて前記物体検出を行う第10処理と、
を実行する物体検出装置。
【請求項2】
前記プロセッサは、最適でないと判定された前記上限飽和閾値及び前記下限飽和閾値の少なくとも一方を増加させる増加値を前記複数の層の各々について設定する
請求項記載の物体検出装置。
【請求項3】
前記プロセッサは、前回の物体検出及び今回の物体検出における前記上限飽和層数の変化量が前記上限変化量閾値より大きい場合及び前回の物体検出及び今回の物体検出における前記下限飽和層数の変化量が前記下限変化量閾値より大きい場合の少なくとも一方の場合に、入力画像の変化度合いが大きいと判定し、
前記プロセッサは、前記入力画像の変化度合いが大きいと判定された場合に、前記小数点位置が、前記最適な小数点位置として決定されるまで、前記第1処理から前記第9処理を繰り返す
請求項1又は請求項2に記載の物体検出装置。
【請求項4】
前記メモリは、前記上限飽和閾値及び前記下限飽和閾値の変更回数のうち、前記第7処理で変更した飽和閾値の変更回数、並びに、前記上限飽和層数の変化量及び前記下限飽和層数の変化量のうち、前記第6処理で最適ではないと判定された飽和層数の変化量を記憶
前記プロセッサは、前記飽和閾値の変更回数が予め定めた最大回数に達した場合に、前記和閾値を、記憶した前記飽和層数の変化量のうち、最も変化量が小さい前記飽和層数の変化量に対応する前記飽和閾値に変更する
請求項1~の何れか1項に記載の物体検出装置。
【請求項5】
コンピュータが、
入力画像が入力される多層ニューラルネットワークの処理アルゴリズムに従って、前記多層ニューラルネットワークを構成する複数の層の各々に対応する演算処理を、小数点位置が設定された固定長データに対して行うことにより、前記入力画像に含まれる物体を検出する物体検出を行う第1処理と
前記演算処理の演算結果が、前記小数点位置によって定まる値域の上限値を上回った回数である上限飽和回数及び前記値域の下限値を下回った回数である下限飽和回数を、前記複数の層の層毎に各々カウントする第2処理と
前記上限飽和回数が1回以上となった層の数である上限飽和層数及び前記下限飽和回数が1回以上となった層の数である下限飽和層数を各々カウントする第3処理と
前記上限飽和回数が上限飽和閾値を上回った層については、前記値域の上限値が大きくなるように小数点位置を設定し、前記下限飽和回数が下限飽和閾値を上回った層については、前記値域の下限値が小さくなるように小数点位置を設定する第4処理と、
2回目の前記物体検出を行い、1回目の前記物体検出における前記上限飽和層数に対する2回目の物体検出における前記上限飽和層数の増加量である前記上限飽和層数の変化量及び1回目の前記物体検出における前記下限飽和層数に対する2回目の物体検出における前記下限飽和層数の増加量である前記下限飽和層数の変化量を算出する第5処理と、
前記上限飽和層数の変化量が、予め定めた上限変化量閾値以下の場合は、前記上限飽和閾値が最適であると判定し、前記上限飽和層数の変化量が、前記上限変化量閾値より大きい場合は、前記上限飽和閾値が最適ではないと判定し、前記下限飽和層数の変化量が、予め定めた下限変化量閾値以下の場合は、前記下限飽和閾値が最適であると判定し、前記下限飽和層数の変化量が、前記下限変化量閾値より大きい場合は、前記下限飽和閾値が最適ではないと判定する第6処理と、
前記上限飽和閾値が最適ではないと判定された場合は、前記上限飽和閾値を予め定めた増加値だけ増加させることにより前記上限飽和閾値を変更し、前記上限飽和閾値が最適ではないと判定された場合は、前記下限飽和閾値を予め定めた増加値だけ増加させることにより前記下限飽和閾値を変更する第7処理と、
前記第7処理を実行した後、前記上限飽和閾値及び前記下限飽和閾値が最適であるか否かを判定し、前記上限飽和閾値及び前記下限飽和閾値が最適であると判定されるまで前記第7処理を繰り返す第8処理と、
前記上限飽和閾値及び前記下限変化量閾値が最適であると判定された場合は、前記物体検出を複数回行い、1回の前記物体検出を行う毎に、前記演算結果が前記値域の上限値を上回った層については、前記演算結果が前記上限値以下となる方向に小数点位置を移動させ、前記演算結果が前記値域の下限値を下回った層については、前記演算結果が前記下限値以上となる方向に小数点位置を移動させる処理を行い、前記複数の層の各々に対して、前記上限飽和回数及び前記下限飽和回数が最も少ないときの前記物体検出を行ったときの小数点位置を最適な小数点位置として決定する第9処理と、
前記最適な小数点位置を用いて、前記物体検出を行う第10処理と、
を実行する物体検出方法。
【請求項6】
コンピュータに、
入力画像が入力される多層ニューラルネットワークの処理アルゴリズムに従って、前記多層ニューラルネットワークを構成する複数の層の各々に対応する演算処理を、小数点位置が設定された固定長データに対して行うことにより、前記入力画像に含まれる物体を検出する物体検出を行う第1処理と
前記演算処理の演算結果が、前記小数点位置によって定まる値域の上限値を上回った回数である上限飽和回数及び前記値域の下限値を下回った回数である下限飽和回数を、前記複数の層の層毎に各々カウントする第2処理と
前記上限飽和回数が1回以上となった層の数である上限飽和層数及び前記下限飽和回数が1回以上となった層の数である下限飽和層数を各々カウントする第3処理と
前記上限飽和回数が上限飽和閾値を上回った層については、前記値域の上限値が大きくなるように小数点位置を設定し、前記下限飽和回数が下限飽和閾値を上回った層については、前記値域の下限値が小さくなるように小数点位置を設定する第4処理と、
2回目の前記物体検出を行い、1回目の前記物体検出における前記上限飽和層数に対する2回目の物体検出における前記上限飽和層数の増加量である前記上限飽和層数の変化量及び1回目の前記物体検出における前記下限飽和層数に対する2回目の物体検出における前記下限飽和層数の増加量である前記下限飽和層数の変化量を算出する第5処理と、
前記上限飽和層数の変化量が、予め定めた上限変化量閾値以下の場合は、前記上限飽和閾値が最適であると判定し、前記上限飽和層数の変化量が、前記上限変化量閾値より大きい場合は、前記上限飽和閾値が最適ではないと判定し、前記下限飽和層数の変化量が、予め定めた下限変化量閾値以下の場合は、前記下限飽和閾値が最適であると判定し、前記下限飽和層数の変化量が、前記下限変化量閾値より大きい場合は、前記下限飽和閾値が最適ではないと判定する第6処理と、
前記上限飽和閾値が最適ではないと判定された場合は、前記上限飽和閾値を予め定めた増加値だけ増加させることにより前記上限飽和閾値を変更し、前記上限飽和閾値が最適ではないと判定された場合は、前記下限飽和閾値を予め定めた増加値だけ増加させることにより前記下限飽和閾値を変更する第7処理と、
前記第7処理を実行した後、前記上限飽和閾値及び前記下限飽和閾値が最適であるか否かを判定し、前記上限飽和閾値及び前記下限飽和閾値が最適であると判定されるまで前記第7処理を繰り返す第8処理と、
前記上限飽和閾値及び前記下限変化量閾値が最適であると判定された場合は、前記物体検出を複数回行い、1回の前記物体検出を行う毎に、前記演算結果が前記値域の上限値を上回った層については、前記演算結果が前記上限値以下となる方向に小数点位置を移動させ、前記演算結果が前記値域の下限値を下回った層については、前記演算結果が前記下限値以上となる方向に小数点位置を移動させる処理を行い、前記複数の層の各々に対して、前記上限飽和回数及び前記下限飽和回数が最も少ないときの前記物体検出を行ったときの小数点位置を最適な小数点位置として決定する第9処理と、
前記最適な小数点位置を用いて、前記物体検出を行う第10処理と、
を実行させる物体検出プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
開示の技術は、物体検出装置、物体検出方法、及び物体検出プログラムに関する。
【背景技術】
【0002】
多層ニューラルネットワークと深層学習を用いた様々なデータ処理技術が開発されている。その応用範囲は認識および検出など様々な分野に広がっている。例えば、物体検出は、入力画像の中から、その画像に含まれる物体の位置(物体を囲む四角い枠)と属性(人、車などの物体の種別)、および各物体の検出精度とから成るメタデータを検出する技術である。物体検出については、近年、深層学習の結果に基づいてメタデータを検出するYOLO(You Only Look Once)(非特許文献1参照)やSSD(Single Shot Multibox Detector)(非特許文献2参照)などが開示され、自動運転や監視カメラなどリアルタイム性を必要とする物体検出システムへの適用が検討されている。
【0003】
自動運転及び監視カメラなどの物体検出装置は、ネットワークトラフィック負荷分散及びセキュリティ保護の観点から、ネットワークのエッジ、すなわち端末側に搭載されることも検討されている。物体検出装置をネットワークのエッジに搭載するには、装置の小型化及び低電力化が必要不可欠である。
【0004】
小型化及び低電力化を実現するために、深層学習に基づく物体検出処理をハードウェアで実装し、かつ、演算器が扱う各データのデータビット幅を削減する構成が提案されている(非特許文献3参照)。各データとしては、入力、出力(特徴マップ)、重み(カーネル)、及びバイアスが挙げられる。一般的にソフトウェアで深層学習の推論処理を実行する場合、積和演算に用いられる各データは32ビット浮動小数点データとして扱われる。なぜなら、各データの値のとりうる範囲が広く、画像ごと、又は畳み込みニューラルネットワークを構成するConvolution層などの層ごとに、その範囲が異なるからである。非特許文献3においては、統計情報を用いて畳み込みニューラルネットワークの各層におけるデータビット幅をあらかじめ決定し、8~16ビットまで削減することにより、回路規模と電力を削減する効果が得られることが報告されている。
【0005】
また、これらのアプローチに対して、各データ幅を一律に固定小数点数nビット(n<32)とし、入力される画像ごと及び層ごとに小数点位置を動的に制御する手法が開示されている(非特許文献4参照)。非特許文献4の物体検出装置では、入力される画像毎、層毎に小数点位置を動的に変更することで、当該値域を層毎の演算結果の傾向にあわせて変更し、認識精度の劣化を抑制する。従来構成では、推論処理を行う物体検出演算部に加えて、各層の小数点位置を決定する小数点位置制御部、上限値/下限値カウンタを備える。上限値/下限値カウンタは、物体検出における演算過程において、検出結果が値域の上限値(全ビットオール1)を上回った(上限飽和)回数/下限値(最下位ビットのみ1)を下回った回数をそれぞれ層毎に計測するカウンタである。層毎に全入力画像共通で上限値/下限値カウンタの閾値(UPth/UNth)を設定し、閾値を超えた層を小数点位置変更対象の層として、カウンタ値が閾値内に収まるように小数点位置を調整する。
【0006】
<非特許文献1>
Joseph Redmon et.al,“YOLOv3:An Incremental Improvement”,https://arxiv.org/abs/1804.02767
<非特許文献2>
Wei Liu et.al,“SSD:Single Shot MultiBox Detector”,https://arxiv.org/pdf/1512.02325.pdf
<非特許文献3>
Zhisheng Li et.al,“Laius: An 8-Bit Fixed-Point CNN Hardware Inference Engine”2017 IEEE International Symposium on Parallel and Distributed Processing with Applications and 2017 IEEE International Conference on Ubiquitous Computing and Communications (ISPA/IUCC),Guangzhou, 2017,pp. 143-150,doi: 10.1109/ISPA/IUCC.2017.00030.
<非特許文献4>
八田彩希、鵜澤寛之、吉田周平、新田高庸、“物体検出AI推論用ハードウェア向け動的小数点位置制御手法の提案”、電子情報通信学会、2020年9月.
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、検出精度をはじめとする物体検出結果の優劣は、上限飽和が発生した層の数である飽和層数と平均飽和回数のバランスで決まる。平均飽和回数を小さくしても、小数点位置の変更により飽和層数が多くなる場合は検出結果が劣化する。従来手法ではいずれの入力画像においても閾値が共通のため、画像によっては飽和層数が多くなるケースも生じ、検出結果の劣化を抑制できない、という問題があった。
【0008】
開示の技術は、上記の点に鑑みてなされたものであり、入力画像の物体検出の検出結果の精度が劣化するのを抑制することができる物体検出装置、物体検出方法、及び物体検出プログラムを提供することを目的とする。
【課題を解決するための手段】
【0009】
上記目的を達成するために、本開示の一態様に係る物体検出装置は、入力画像が入力される多層ニューラルネットワークの処理アルゴリズムに従って、前記多層ニューラルネットワークを構成する複数の層の各々に対応する演算処理を、小数点位置が設定された固定長データに対して行う物体検出演算部と、前記演算処理において、前記小数点位置によって定まる値域の上限値を上回った回数である上限飽和回数及び前記値域の下限値を下回った回数である下限飽和回数を各々カウントする飽和回数カウンタと、前記上限飽和回数が1回以上となった層の数である上限飽和層数及び前記下限飽和回数が1回以上となった層の数である下限飽和層数を各々カウントする飽和層数カウンタと、前記飽和層数カウンタでカウントした前記上限飽和層数の変化量及び前記下限飽和層数の変化量に基づいて、前記上限飽和回数の閾値である上限飽和閾値及び前記下限飽和回数の閾値である下限飽和閾値の少なくとも一方が最適か否かを判定し、最適でないと判定した場合に、前記上限飽和閾値及び前記下限飽和閾値の少なくとも一方を変更する閾値判定部と、前記閾値判定部の判定結果に基づいて、前記複数の層の各々に対して前記小数点位置を設定する小数点位置制御部と、を備える。
【0010】
更に、上記目的を達成するために、本開示の一態様に係る物体検出方法は、コンピュータが、入力画像が入力される多層ニューラルネットワークの処理アルゴリズムに従って、前記多層ニューラルネットワークを構成する複数の層の各々に対応する演算処理を、小数点位置が設定された固定長データに対して行い、前記演算処理において、前記小数点位置によって定まる値域の上限値を上回った回数である上限飽和回数及び前記値域の下限値を下回った回数である下限飽和回数を各々カウントし、前記上限飽和回数が1回以上となった層の数である上限飽和層数及び前記下限飽和回数が1回以上となった層の数である下限飽和層数を各々カウントし、カウントした前記上限飽和層数の変化量及び前記下限飽和層数の変化量に基づいて、前記上限飽和回数の閾値である上限飽和閾値及び前記下限飽和回数の閾値である下限飽和閾値の少なくとも一方が最適でない場合に、前記上限飽和閾値及び前記下限飽和閾値の少なくとも一方を変更し、前記上限飽和閾値及び前記下限飽和閾値の少なくとも一方が最適か否かの判定結果に基づいて、前記複数の層の各々に対して前記小数点位置を設定する処理を実行する。
【0011】
更に、上記目的を達成するために、本開示の一態様に係る物体検出プログラムは、コンピュータに、入力画像が入力される多層ニューラルネットワークの処理アルゴリズムに従って、前記多層ニューラルネットワークを構成する複数の層の各々に対応する演算処理を、小数点位置が設定された固定長データに対して行い、前記演算処理において、前記小数点位置によって定まる値域の上限値を上回った回数である上限飽和回数及び前記値域の下限値を下回った回数である下限飽和回数を各々カウントし、前記上限飽和回数が1回以上となった層の数である上限飽和層数及び前記下限飽和回数が1回以上となった層の数である下限飽和層数を各々カウントし、カウントした前記上限飽和層数の変化量及び前記下限飽和層数の変化量に基づいて、前記上限飽和回数の閾値である上限飽和閾値及び前記下限飽和回数の閾値である下限飽和閾値の少なくとも一方が最適でない場合に、前記上限飽和閾値及び前記下限飽和閾値の少なくとも一方を変更し、前記上限飽和閾値及び前記下限飽和閾値の少なくとも一方が最適か否かの判定結果に基づいて、前記複数の層の各々に対して前記小数点位置を設定する処理を実行させる。
【発明の効果】
【0012】
開示の技術によれば、入力画像の物体検出の検出結果の精度が劣化するのを抑制することができる。
【図面の簡単な説明】
【0013】
図1】第1実施形態に係る物体検出装置の機能ブロック図である。
図2】物体検出装置のハードウェア構成を示す図である。
図3】第1実施形態に係る物体検出処理のフローチャートである。
図4】従来における小数点位置の変更前後の上限飽和層数について説明するための図である。
図5】開示の技術における小数点位置の変更前後の上限飽和層数について説明するための図である。
図6】第2実施形態に係る物体検出装置の機能ブロック図である。
図7】第2実施形態に係る物体検出処理のフローチャートである。
【発明を実施するための形態】
【0014】
以下、開示の技術の実施形態の一例を、図面を参照しつつ説明する。なお、各図面において、同一又は等価な構成要素及び部分には同一の参照符号を付与している。
【0015】
<第1実施形態>
【0016】
第1実施形態に係る物体検出装置は、入力画像に含まれる物体の物体毎の位置、属性、及び検出精度を含むメタデータを検出する装置である。ここで、物体の位置は、例えば入力画像における物体の中心の座標及び物体を囲む四角い枠(バウンディングボックス)の少なくとも1つによって表される。また、物体の属性は、人及び車等の物体の種別であり、カテゴリーと呼ばれることもある。また、物体の検出精度は、例えば、検出された物体が特定の属性を有する確率である。
【0017】
図1に示すように、第1実施形態に係る物体検出装置10は、物体検出演算部12、小数点位置制御部14、飽和回数カウンタ16、閾値判定部18、及び飽和層数カウンタ20を備える。
【0018】
物体検出演算部12は、入力された入力画像に対して深層学習の推論処理に基づく演算処理を行う。
【0019】
具体的には、物体検出演算部12は、多層ニューラルネットワークの処理アルゴリズムに従って、多層ニューラルネットワークを構成する複数の層の各々に対応する演算処理を行うように構成された演算処理回路である。物体検出演算部12における多層ニューラルネットワークによる処理は、典型的には、畳み込みニューラルネットワーク(CNN: Convolutional Neural Network)が用いられる。
【0020】
CNNの概要について説明すると、CNNは、入力画像に対して所定のフィルタを畳み込む畳み込み処理を行う畳み込み層と、畳み込み処理の結果をダウンサイジングするプーリング処理を行うプーリング層とが交互に配置されて、特徴マップを作成する特徴抽出パートと、複数の全結合層からなり、特徴マップから入力画像に含まれる物体を特定する識別パートと、を含む。
【0021】
特徴抽出パートでは、画像に対してフィルタを畳み込む演算が行われる。また、識別パートでは、特徴マップの各画素の値に重みを乗じて和をとる積和演算と、その積和演算の結果にバイアスを加えて活性化関数に入力し、その出力を得る演算と、が繰り返される。なお、活性化関数としては、ReLU(Rectified Linear Unit)等が用いられる。重み及び活性化関数のパラメータの値は、学習によって決定することができる。
【0022】
物体検出演算部12は、入力画像が入力される多層ニューラルネットワークの処理アルゴリズムに従って、多層ニューラルネットワークを構成する複数の層の各々に対応する演算処理を、小数点位置が設定された固定長データに対して行う。具体的には、物体検出演算部12は、深層学習に基づく物体検出アルゴリズム、例えばYOLO(非特許文献1)又はSSD(非特許文献2)等を用いて、推論処理の畳み込み演算及び結合処理を行って、入力画像に含まれる物体の位置、属性、及び検出精度等のメタデータを検出結果として出力する。このような物体検出演算部12は、多くの積和演算を実行することから、しばしばマルチコアCPU又はGPU(グラフィックス処理装置)を用いて実現される。なお、物体検出演算部12を、例えば、FPGA(Field Programmable Gate Array)によって実現してもよい。
【0023】
本実施形態において、物体検出演算部12が多層ニューラルネットワークの各層で扱うデータ、例えば、入力、出力(特徴マップ)、バイアス、及び重み等は、32ビットよりも小さなビット幅を有する固定長データであり、かつ層毎に異なる小数点位置を有することが可能なデータ構造となっている。
【0024】
より具体的には、本実施形態において、物体検出演算部12は、例えば、8ビットのビット幅を有する固定長データに対して、多層ニューラルネットワークを構成する複数の層の各々に対応する演算処理を行う。なお、物体検出演算部12が扱うデータの小数点位置は、後述する小数点位置制御部14によって層毎に設定される。
【0025】
物体検出演算部12における畳み込み演算において、例えば、入力を8ビット、重みを8ビットとした場合、その積和演算で得られる結果は最大16ビットとなる。物体検出演算部12は、16ビットの計算結果に対してバイアスを加算し、活性化関数を掛け、16ビットの途中入力マップとする。特徴マップは次の層における入力になるため、16ビットの途中入力マップを8ビット幅まで小さくし、次層入力用の特徴マップとする。なお、層の数、活性化関数、及びバイアス加算の方法は、使用する物体検出アルゴリズム毎に適宜選択されるものであり、開示の技術を限定するものではない。
【0026】
小数点位置制御部14は、物体検出演算部12における演算対象となる、固定長データの小数点の位置(以下、単に「小数点位置」という。)を設定する。
【0027】
具体的には、小数点位置制御部14は、物体検出演算部12の出力、すなわち多層ニューラルネットワークによる物体の検出結果に基づいて、多層ニューラルネットワークを構成する複数の層の各々に対応して、物体検出演算部12における演算対象となる固定長データの小数点位置を設定する。小数点位置制御部14によって設定された小数点位置は物体検出演算部12へ通知される。物体検出演算部12は、小数点位置制御部14からの通知に基づいて、多層ニューラルネットワークを構成する複数の層の各々に対応する固定長データの小数点位置を変更する。
【0028】
小数点位置制御部14では、物体検出演算部12から出力された検出結果を用いて、各層の小数点位置を決定する。例えば映像としての入力画像に含まれる物体を検出する場合、連続して入力される入力画像に含まれる物体は少しずつ変化し、短時間で全て変化することは稀である。このため、小数点位置制御部14は、入力画像1つのみの検出結果から各層の小数点位置を設定するのではなく、複数の入力画像に対する物体の検出結果を用いて各層の小数点位置を算出する処理を繰り返すことによって、少しずつ各層の小数点位置を最適化する。
【0029】
飽和回数カウンタ16は、物体検出演算部12の演算処理において、小数点位置制御部14によって設定された小数点位置によって定まる値域の上限値(全ビットオール1)を上回った回数である上限飽和回数を層毎にカウントする。
【0030】
また、飽和回数カウンタ16は、物体検出演算部12の演算において、小数点位置制御部14によって設定された小数点位置によって定まる値域の下限値(最下位ビットのみ1)を下回った回数である下限飽和回数を層毎にカウントする。なお、以下では、上限飽和回数及び下限飽和回数を区別しない場合に単に飽和回数と称する場合がある。
【0031】
閾値判定部18は、飽和回数カウンタ16の上限飽和閾値及び下限飽和閾値を最適化する。小数点位置制御部14は、詳細は後述するが、閾値判定部18の判定結果に基づいて、多層ニューラルネットワークの複数の層の各々に対して小数点位置を設定する。なお、以下では、上限飽和閾値及び下限飽和閾値を区別しない場合に単に閾値と称する場合がある。
【0032】
飽和層数カウンタ20は、飽和回数カウンタ16でカウントされた上限飽和回数が1回以上となった層の数である上限飽和層数をカウントする。また、飽和層数カウンタ20は、飽和回数カウンタ16でカウントされた下限飽和回数が1回以上となった層の数である下限飽和層数をカウントする。なお、以下では、上限飽和層数及び下限飽和層数を区別しない場合に単に飽和層数と称する場合がある。
【0033】
図2は、物体検出装置10のハードウェア構成を示すブロック図である。図2に示すように、物体検出装置10は、コンピュータ30を備える。コンピュータ30は、CPU(Central Processing Unit)30A、ROM(Read Only Memory)30B、RAM(Random Access Memory)30C、及び入出力インターフェース(I/O)30Dを備える。そして、CPU30A、ROM30B、RAM30C、及びI/O30Dがシステムバス30Eを介して各々接続されている。システムバス30Eは、コントロールバス、アドレスバス、及びデータバスを含む。
【0034】
また、I/O30Dには、通信部32、及び記憶部34が接続されている。
【0035】
通信部32は、外部装置とデータ通信を行うためのインターフェースである。
【0036】
記憶部34は、ハードディスク等の不揮発性の記憶装置で構成され、後述する物体検出プログラム34A等を記憶する。CPU30Aは、記憶部34に記憶された物体検出プログラム34AをRAM30Cに読み込んで実行する。なお、記憶部34は、例えばコンピュータ30に着脱可能な可搬型の記憶装置としてもよい。
【0037】
次に、物体検出装置10で実行される物体検出処理について図3に示すフローチャートを参照して説明する。
【0038】
ステップS100では、閾値判定部18が、各層の小数点位置を初期化すると共に、小数点位置変更の前後における上限飽和層数の変化量及び下限飽和層数の変化量を取得するために、上限飽和回数の閾値である上限飽和閾値を予め定めた初期上限飽和閾値に初期化し、下限飽和回数の閾値である下限飽和閾値を予め定めた初期下限飽和閾値に初期化し、物体検出を2回実行する。具体的には、1回目の物体検出においては、物体検出演算部12が、入力画像に含まれる前述したメタデータを演算し、飽和回数カウンタ16及び小数点位置制御部14に出力する。また、飽和回数カウンタ16が、上限飽和回数及び下限飽和回数を層毎にカウントし、飽和層数カウンタ20に出力する。なお、上限飽和閾値及び下限飽和閾値は、0以上の整数である。また、上限飽和閾値及び下限飽和閾値は、同じ値でもよいし、異なる値でもよい。
【0039】
飽和層数カウンタ20は、上限飽和回数が1回以上の層の数である上限飽和層数及び下限飽和回数が1回以上の層の数である下限飽和層数をカウントする。
【0040】
2回目の物体検出においては、小数点位置制御部14が、1回目の物体検出の検出結果に基づいて、上限飽和回数が上限飽和閾値を上回る層の数が少なくなるように、かつ、下限飽和回数が限飽和閾値を上回る層の数が少なくなるように、小数点位置を層毎に設定する。すなわち、上限飽和回数が上限飽和閾値を上回った層については、その層の値域の上限値が大きくなるように小数点位置を設定し、下限飽和回数が下限飽和閾値を上回った層については、その層の値域の下限値が小さくなるように小数点位置を設定する。すなわち、値域が広くなるように小数点位置を設定する。
【0041】
ステップS102では、飽和層数カウンタ20が、1回目の物体検出結果と2回目の物体検出結果に基づいて、上限飽和層数の変化量及び下限飽和層数の変化量を算出する。ここで、上限飽和層数の変化量とは、1回目の物体検出における上限飽和層数に対する2回目の物体検出における上限飽和層数の増加量である。また、下限飽和層数の変化量とは、1回目の物体検出における下限飽和層数に対する2回目の物体検出における下限飽和層数の増加量である。
【0042】
ステップS104では、閾値判定部18が、ステップS102で得られた上限飽和層数の変化量が許容範囲内であるか否か、すなわち上限飽和閾値が最適な上限飽和閾値であるか否かを判定する。具体的には、上限飽和層数の変化量が、予め定めた上限変化量閾値以下の場合は、上限飽和閾値が最適であると判定する。ここで、上限変化量閾値は1以上の整数である。一方、上限飽和層数の変化量が、上限変化量閾値より大きい場合は、上限飽和閾値が最適ではないと判定する。
【0043】
また、閾値判定部18は、ステップS102で得られた下限飽和層数の変化量が許容範囲内であるか否か、すなわち下限飽和閾値が最適な下限飽和閾値であるか否かを判定する。具体的には、下限飽和層数の変化量が、予め定めた下限変化量閾値以下の場合は、下限飽和閾値が最適であると判定する。ここで、下限変化量閾値は1以上の整数である。一方、下限飽和層数の変化量が、下限変化量閾値より大きい場合は、下限飽和閾値が最適ではないと判定する。なお、上限変化量閾値及び下限変化量閾値は、物体検出装置10が適用されるネットワークモデル又はアプリケーション等によって適宜設定される。このように、閾値判定部18は、物体検出演算部12による2回の物体検出における上限飽和層数の変化量及び下限飽和層数の変化量を用いて上限飽和閾値及び下限飽和閾値が最適であるか否かを判定する。
【0044】
そして、上限飽和閾値及び下限飽和閾の少なくとも一方が最適ではないと判定された場合はステップS105へ移行し、上限飽和閾値及び下限飽和閾値の両方が最適であると判定された場合はステップS114へ移行する。
【0045】
ステップS105では、閾値判定部18が、最適ではないと判定された上限飽和閾値及び下限飽和閾値の少なくとも一方を予め定めた増加値だけ増加させることにより変更し、飽和回数カウンタ16に出力する。ここで、増加値は1以上の整数である。このように、閾値判定部18は、上限飽和閾値及び前記下限飽和閾値の少なくとも一方が最適でないと判定された場合に、最適でないと判定された上限飽和閾値及び下限飽和閾値の少なくとも一方を増加させる。なお、最適でないと判定された上限飽和閾値及び下限飽和閾値の少なくとも一方を増加させる増加値を複数の層の全てにおいて同じ値にするのではなく、複数の層の各々について設定してもよい。
【0046】
ステップS108及びステップS110は、ステップS100及びステップS102と同様の処理であるが、ステップS105で変更された上限飽和閾値及び下限飽和閾値の少なくとも一方を用いる点が異なる。
【0047】
ステップS112では、飽和層数カウンタ20が、入力画像の変化度合いを判定する。本実施形態では、入力画像の種別によっては、同じ小数点位置でも上限飽和層数及び下限飽和層数の少なくとも一方が異なる場合もあることを利用し、上限飽和層数の変化量及び下限飽和層数を用いて入力画像の変化度合いを判定する。
【0048】
具体的には、ステップS110で求めた上限飽和層数の変化量が、予め定めた上限変化量閾値より大きいか否かを判定すると共に、ステップS110で求めた下限飽和層数の変化量が、予め定めた下限変化量閾値より大きいか否かを判定する。なお、上限変化量閾値及び下限変化量閾値は1以上の整数である。そして、ステップS110で求めた上限飽和層数の変化量が上限変化量閾値より大きい場合及びステップS110で求めた下限飽和層数の変化量が下限変化量閾値より大きい場合の少なくとも一方の場合は、入力画像の変化度合いが大きいと判定し、ステップS100へ移行する。一方、ステップS102で求めた上限飽和層数の変化量が上限変化量閾値以下で、かつ、ステップS102で求めた下限飽和層数の変化量が下限変化量閾値以下の場合は、入力画像の変化度合いが大きくない、すなわち、入力画像の変化度合いが0又は小さいと判定し、ステップS104へ移行する。このように、飽和層数カウンタ20は、前回の物体検出及び今回の物体検出における上限飽和層数の変化量が上限変化量閾値より大きい場合及び前回の物体検出及び今回の物体検出における下限飽和層数の変化量が下限変化量閾値より大きい場合の少なくとも一方の場合に、入力画像の変化度合いが大きいと判定する。
【0049】
このように、上限飽和閾値及び下限飽和閾値の少なくとも一方が最適ではなく、入力画像の変化度合いが大きくない場合は、上限飽和閾値及び下限飽和閾値が最適となるまで上限飽和閾値及び下限飽和閾値の少なくとも一方を変更して物体検出する処理を繰り返す。
【0050】
一方、ステップS104で上限飽和閾値及び下限飽和閾値が最適と判定された場合は、ステップS114において、物体検出演算部12が物体検出をn回実行する。このとき、小数点位置制御部14が1回の物体検出を行う毎に小数点位置を変更する。なお、nは2以上の整数である。
【0051】
具体的には、各層の上限飽和回数の平均値及び下限飽和回数の平均値が少なくなるように、各層の小数点位置を変更して物体検出を行う。すなわち、演算結果がその層の値域の上限値を上回った層については、演算結果が上限値以下となる方向に小数点位置を移動させ、演算結果が下限値を下回った層については、演算結果が下限値以上となる方向に小数点位置を移動させる。物体検出をn回行って得られた小数点位置はそれぞれ記憶しておく。
【0052】
ステップS116では、小数点位置制御部14が、最も検出結果が良いときの小数点位置、すなわち、上限飽和回数及び下限飽和回数が最も少ないときの物体検出を行ったときの小数点位置を最適な小数点位置として決定する。このように、小数点位置制御部14は、上限飽和閾値及び下限飽和閾値が最適であると判定された場合に、物体検出演算部12による複数回の物体検出における上限飽和回数及び下限飽和回数に基づいて、小数点位置を設定する。
【0053】
ステップS118では、ステップS116で決定した小数点位置を用いて、物体検出演算部12が物体検出を実行する。
【0054】
ステップS120では、前回入力した入力画像と今回入力した入力画像とで入力画像の変化度合いが大きいか否かを判定する。この判定は、ステップS112の判定と同様に行う。
【0055】
そして、入力画像の変化度合いが大きい場合はステップS100へ移行する。一方、入力画像の変化度合いが大きくない場合は、ステップS118へ移行して物体検出を繰り返す。すなわち、入力画像の変化度合いが大きくなるまでは、ステップS116で決定した小数点位置で物体検出を繰り返す。
【0056】
このように、ステップS104~S112の処理において上限飽和閾値及び下限飽和閾値の最適化を行ってから、ステップS114、S116の処理で最適な小数点位置を決定する。これにより、入力画像に応じた上限飽和回数及び下限飽和回数と、上限飽和層数及び下限飽和層数とのバランスを調整することが可能となる。これにより、様々な入力画像毎に最適な小数点位置を決定することが可能となり、物体検出の検出結果劣の精度が劣化するのを抑制することができる。
【0057】
ここで、例えば図4の上のグラフに示すように、多層ニューラルネットワークの層数が6層の場合において、上限飽和層数が3層であった場合に、非特許文献4記載の技術のように上限飽和回数が上限飽和閾値を上回った層番号1、3、5の3層について小数点位置を変更した場合、図4の下のグラフに示すように、6層全てにおいて上限飽和回数が上限飽和閾値以下となるものの、上限飽和層数は6層に増加する。このため、入力画像の物体検出の検出結果の精度が劣化するのを抑制することができない。
【0058】
これに対し、開示の技術によれば、図5に示すように、上限飽和閾値を固定にするのではなく、上限飽和閾値が最適でない場合には、上限飽和閾値を増加させる。このため、図5の上のグラフに示すように、層番号が3の1層のみ上限飽和回数が上限飽和閾値を上回り、この層のみ小数点位置が変更される。これにより、図5の下のグラフに示すように、上限飽和層数は4層となり、図4の場合と比較して、入力画像の物体検出の検出結果の精度が劣化するのを抑制することができる。
【0059】
<第2の実施の形態>
【0060】
次に、開示の技術の第2実施形態について説明する。なお、第1実施形態と同一部分については同一符号を付し、詳細な説明を省略する。
【0061】
第1実施形態においては、多層ニューラルネットワークの複数の層の各々について設定される上限飽和閾値及び下限飽和閾値を上回らないように小数点位置を変更する前に、上限閾値の最適値を決定する構成及び手法によって、いかなる入力画像においても検出結果の劣化を抑制する例について示した。
【0062】
しかしながら、第1実施形態では、図3のステップS105において上限飽和閾値及び下限飽和閾値の少なくとも一方を増加するだけである。このため、増加した閾値が最適な閾値とはならない、すなわち最適な閾値を決定できない入力画像の場合、入力画像の種別が変わらない限り最適な小数点位置が定まらなくなる。このように、閾値が増加し続けると最適な小数点位置が定まらない状態が継続されることになる。
【0063】
そこで、本実施形態では、最適な閾値が定まらない場合に閾値を減少させる処理を加えることによって、閾値を増加させるだけでは最適な閾値が定まらない入力画像においても最適な小数点位置を決定することが可能な手法について説明する。
【0064】
図6に本実施形態に係る物体検出装置11の構成を示す。物体検出装置11は、第1実施形態で説明した物体検出装置10に変更パラメータ記憶部22を加えた構成である。
【0065】
変更パラメータ記憶部22は、変更パラメータを記憶する。ここで、変更パラメータとは、最適でないと判定された上限飽和閾値及び下限飽和閾値の少なくとも一方の変更回数と、最適でないと判定した際の上限飽和層数の変化量及び下限飽和層数の変化量の少なくとも一方である。
【0066】
図7に本実施形態に係る物体検出処理のフローチャートを示す。
【0067】
図7の物体検出処理は、図3の物体検出処理にステップS106、S107、S113の処理が追加された処理となっている。
【0068】
ステップS106では、ステップS105で変更した上限飽和閾値及び下限飽和閾値の少なくとも一方の変更回数と、ステップS104で判定した際の上限飽和層数の変化量及び下限飽和層数の変化量の少なくとも一方を変更パラメータ記憶部22に記憶する。
【0069】
ステップS107では、ステップS106で記憶した上限飽和閾値及び下限飽和閾値の少なくとも一方の変更回数が最大変更回数Nmaxに達したか否かを判定する。なお、Nmaxは1以上の整数である。そして、上限飽和閾値及び下限飽和閾値の少なくとも一方の変更回数が最大変更回数Nmaxに達した場合はステップS113へ移行し、上限飽和閾値及び下限飽和閾値の変更回数が何れも最大変更回数Nmaxに達していない場合はステップS108へ移行する。
【0070】
ステップS113では、閾値を変更する毎に変更パラメータ記憶部22に記憶した上限飽和層数の変化量及び下限飽和層数の変化量の少なくとも一方のうち、最も変化量が小さい上限飽和層数の変化量及び下限飽和層数の変化量の少なくとも一方に対応する上限飽和閾値及び下限飽和閾値の少なくとも一方を設定する。
【0071】
このように、変更回数が最大変更回数Nmaxに達しても閾値が最適とならない場合には、閾値を増加させる毎に記憶した上限飽和層数の変化量及び下限飽和層数の変化量の少なくとも一方のうち最も変化量が小さい上限飽和層数の変化量及び下限飽和層数の変化量の少なくとも一方に対応する上限飽和閾値及び下限飽和閾値の少なくとも一方を設定する。これにより、閾値を増加させるだけでは最適な閾値が定まらない入力画像においても最適な小数点位置を決定することができる。
【0072】
なお、上記実施形態では、物体検出プログラムがストレージに予め記憶(インストール)されている態様を説明したが、これに限定されない。プログラムは、CD-ROM(Compact Disk Read Only Memory)、DVD-ROM(Digital Versatile Disk Read Only Memory)、及びUSB(Universal Serial Bus)メモリ等の非一時的(non-transitory)記憶媒体に記憶された形態で提供されてもよい。また、プログラムは、ネットワークを介して外部装置からダウンロードされる形態としてもよい。
【0074】
以上の実施形態に関し、更に以下の付記を開示する。
【0075】
(付記項1)
メモリと、
前記メモリに接続された少なくとも1つのプロセッサと、
を含み、
前記プロセッサは、
力画像が入力される多層ニューラルネットワークの処理アルゴリズムに従って、前記多層ニューラルネットワークを構成する複数の層の各々に対応する演算処理を、小数点位置が設定された固定長データに対して行い、
前記演算処理において、前記小数点位置によって定まる値域の上限値を上回った回数である上限飽和回数及び前記値域の下限値を下回った回数である下限飽和回数を各々カウントし、
前記上限飽和回数が1回以上となった層の数である上限飽和層数及び前記下限飽和回数が1回以上となった層の数である下限飽和層数をカウントし、
前記上限飽和層数の変化量及び前記下限飽和層数の変化量に基づいて、前記上限飽和回数の閾値である上限飽和閾値及び前記下限飽和回数の閾値である下限飽和閾値の少なくとも一方が最適でない場合に、前記上限飽和閾値及び前記下限飽和閾値の少なくとも一方を変更し、
前記上限飽和閾値及び前記下限飽和閾値の少なくとも一方が最適か否かの判定結果に基づいて、前記複数の層の各々に対して前記小数点位置を設定する
ように構成されている物体検出装置。
【0076】
(付記項2)
物体検出処理を実行するようにコンピュータによって実行可能なプログラムを記憶した非一時的記憶媒体であって、
前記物体検出処理は、
コンピュータが、
入力画像が入力される多層ニューラルネットワークの処理アルゴリズムに従って、前記多層ニューラルネットワークを構成する複数の層の各々に対応する演算処理を、小数点位置が設定された固定長データに対して行い、
前記演算処理において、前記小数点位置によって定まる値域の上限値を上回った回数である上限飽和回数及び前記値域の下限値を下回った回数である下限飽和回数を各々カウントし、
前記上限飽和回数が1回以上となった層の数である上限飽和層数及び前記下限飽和回数が1回以上となった層の数である下限飽和層数をカウントし、
前記上限飽和層数の変化量及び前記下限飽和層数の変化量に基づいて、前記上限飽和回数の閾値である上限飽和閾値及び前記下限飽和回数の閾値である下限飽和閾値の少なくとも一方が最適でない場合に、前記上限飽和閾値及び前記下限飽和閾値の少なくとも一方を変更し、
前記上限飽和閾値及び前記下限飽和閾値の少なくとも一方が最適か否かの判定結果に基づいて、前記複数の層の各々に対して前記小数点位置を設定する
非一時的記憶媒体。
【符号の説明】
【0077】
10、11 物体検出装置
12 物体検出演算部
14 小数点位置制御部
16 飽和回数カウンタ
18 閾値判定部
20 飽和層数カウンタ
22 変更パラメータ記憶部
30 コンピュータ
34A 物体検出プログラム
図1
図2
図3
図4
図5
図6
図7