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

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

▶ コニカミノルタ株式会社の特許一覧

特許7556390ディープラーニングモデルの値域決定プログラム、値域決定システム、および値域決定方法
<>
  • 特許-ディープラーニングモデルの値域決定プログラム、値域決定システム、および値域決定方法 図1
  • 特許-ディープラーニングモデルの値域決定プログラム、値域決定システム、および値域決定方法 図2
  • 特許-ディープラーニングモデルの値域決定プログラム、値域決定システム、および値域決定方法 図3
  • 特許-ディープラーニングモデルの値域決定プログラム、値域決定システム、および値域決定方法 図4
  • 特許-ディープラーニングモデルの値域決定プログラム、値域決定システム、および値域決定方法 図5
  • 特許-ディープラーニングモデルの値域決定プログラム、値域決定システム、および値域決定方法 図6
  • 特許-ディープラーニングモデルの値域決定プログラム、値域決定システム、および値域決定方法 図7
  • 特許-ディープラーニングモデルの値域決定プログラム、値域決定システム、および値域決定方法 図8
  • 特許-ディープラーニングモデルの値域決定プログラム、値域決定システム、および値域決定方法 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-17
(45)【発行日】2024-09-26
(54)【発明の名称】ディープラーニングモデルの値域決定プログラム、値域決定システム、および値域決定方法
(51)【国際特許分類】
   G06N 3/0495 20230101AFI20240918BHJP
   G06N 3/082 20230101ALI20240918BHJP
【FI】
G06N3/0495
G06N3/082
【請求項の数】 11
(21)【出願番号】P 2022541117
(86)(22)【出願日】2021-04-28
(86)【国際出願番号】 JP2021016965
(87)【国際公開番号】W WO2022030054
(87)【国際公開日】2022-02-10
【審査請求日】2023-12-22
(31)【優先権主張番号】P 2020133972
(32)【優先日】2020-08-06
(33)【優先権主張国・地域又は機関】JP
(73)【特許権者】
【識別番号】000001270
【氏名又は名称】コニカミノルタ株式会社
(74)【代理人】
【識別番号】110000671
【氏名又は名称】IBC一番町弁理士法人
(72)【発明者】
【氏名】田中 希武
(72)【発明者】
【氏名】ル クオック ヴォン
【審査官】千葉 久博
(56)【参考文献】
【文献】特開2020-113273(JP,A)
【文献】特開2019-40414(JP,A)
【文献】中国特許出願公開第108734266(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/0495
G06N 3/082
(57)【特許請求の範囲】
【請求項1】
ディープラーニングモデルのパラメーターの量子化における値域を決定するプログラムであって、
入力データと、前記入力データに対応する正解データとを取得する手順(a)と、
前記パラメーターの量子化における前記値域を順次変えて、前記パラメーターを量子化するとともに、前記入力データに基づく前記ディープラーニングモデルによる推定結果の前記正解データに対するロスを算出して、前記ロスが最小になるときの前記値域を決定する手順(b)と、
を有する処理を、コンピューターに実行させるためのディープラーニングモデルの値域決定プログラム。
【請求項2】
前記手順(b)は、前記パラメーターの量子化における前記値域を順次変えて、前記パラメーターを量子化して、前記ディープラーニングモデルを学習用教師データを用いて学習するとともに、学習後の前記ディープラーニングモデルによる前記入力データに基づく推定結果の前記正解データに対する前記ロスを算出して、前記ロスが最小になるときの前記値域を決定する、請求項1に記載のディープラーニングモデルの値域決定プログラム。
【請求項3】
前記手順(b)は、
前記ディープラーニングモデルの所定の対象層の前記パラメーターの量子化における前記値域を仮設定する手順(b1)と、
前記対象層の前記パラメーターを、前記手順(b1)において仮設定された前記値域で量子化して、前記学習用教師データを用いて、前記対象層または指定した層を学習する手順(b2)と、
前記手順(b2)において学習された前記ディープラーニングモデルによる前記入力データに基づく推定結果の前記正解データに対する前記ロスを算出する手順(b3)と、
前記仮設定した前記値域を順次変えて、前記手順(b2)および前記手順(b3)を実行して、前記仮設定した前記値域の中で、前記手順(b3)において算出された前記ロスが最小になるときの前記値域を決定する手順(b4)と、
を有する、請求項2に記載のディープラーニングモデルの値域決定プログラム。
【請求項4】
前記手順(b)は、
前記対象層の1層下層を新たな対象層として、前記手順(b1)~前記手順(b4)を実行して、前記新たな対象層の前記パラメーターの値域を決定する手順(b5)と、
前記手順(b5)を、前記新たな対象層が最下層となるまで実行する手順(b6)と、
をさらに有する、請求項3に記載のディープラーニングモデルの値域決定プログラム。
【請求項5】
前記(b1)における前記対象層の初期値は最上層である、請求項4に記載のディープラーニングモデルの値域決定プログラム。
【請求項6】
前記(b1)における前記対象層の初期値は最上層以外の層である、請求項4に記載のディープラーニングモデルの値域決定プログラム。
【請求項7】
前記ディープラーニングモデルの各層の前記パラメーターは、weight、およびbiasを含み、
前記手順(b2)は、
前記biasを固定して、前記weightを学習する手順(b21)と、
前記weightを固定して、前記biasを学習する手順(b22)と、
を有する、請求項3~6のいずれか一項に記載のディープラーニングモデルの値域決定プログラム。
【請求項8】
前記ディープラーニングモデルの各層の前記パラメーターは、weight、bias、およびoutputを含み、
前記手順(b4)は、前記biasの前記値域を、前記biasの層と同じ層の前記weightの前記値域と、前記biasの層の1層上層の前記outputの前記値域とに基づいて算出する、請求項3~7のいずれか一項に記載のディープラーニングモデルの値域決定プログラム。
【請求項9】
畳み込み層の下層がrelu層である前記ディープラーニングモデルの場合、前記手順(b4)は、前記畳み込み層の前記値域を前記relu層の前記値域と同一にする、請求項3~8のいずれか一項に記載のディープラーニングモデルの値域決定プログラム。
【請求項10】
ディープラーニングモデルのパラメーターの量子化における値域を決定するシステムであって、
入力データと、前記入力データに対応する正解データとを取得する取得部と、
前記パラメーターの量子化における前記値域を順次変えて、前記パラメーターを量子化するとともに、前記入力データに基づく前記ディープラーニングモデルによる推定結果の前記正解データに対するロスを算出して、前記ロスが最小になるときの前記値域を決定する演算部と、
を有するディープラーニングモデルの値域決定システム。
【請求項11】
ディープラーニングモデルのパラメーターの量子化における値域を、値域決定システムにより決定する方法であって、
入力データと、前記入力データに対応する正解データとを取得する段階(a)と、
前記パラメーターの量子化における前記値域を順次変えて、前記パラメーターを量子化するとともに、前記入力データに基づく前記ディープラーニングモデルによる推定結果の前記正解データに対するロスを算出して、前記ロスが最小になるときの前記値域を決定する段階(b)と、
を有するディープラーニングモデルの値域決定方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ディープラーニングモデルの値域決定プログラム、値域決定システム、および値域決定方法に関する。
【背景技術】
【0002】
近年、身近な様々な装置等にAI(Artificial Intelligence)技術を導入しようとするエッジコンピューティング技術が開発されている。
【0003】
エッジコンピューティング技術では、低コストおよび低消費電力等が要求されるため、高速かつ小規模な回路で演算可能な量子化ディープラーニングモデルが注目されている。
【0004】
量子化ディープラーニングモデルは、通常のディープラーニングモデルにおいて16~32ビットの浮動小数点で表現されるパラメーターを、8ビット以下の固定小数点に変換する量子化により軽量化されている。
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、量子化ディープラーニングモデルによる推定精度は、パラメーターの量子化により低下する可能性があり、また値域の設定の仕方により比較的大きく変化する。このため、推定精度の低下を抑止しつつ各層ごとの値域を設定してパラメーターを量子化することが困難であるという問題がある。
【0006】
本発明は、このような問題を解決するためになされたものである。すなわち、パラメーターの量子化により、高精度かつ軽量な量子化ディープラーニングモデルが得られる、ディープラーニングモデルの値域決定プログラム、値域決定システム、および値域決定方法を提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明の上記課題は、以下の手段によって解決される。
【0008】
(1)ディープラーニングモデルのパラメーターの量子化における値域を決定するプログラムであって、入力データと、前記入力データに対応する正解データとを取得する手順(a)と、前記パラメーターの量子化における前記値域を順次変えて、前記パラメーターを量子化するとともに、前記入力データに基づく前記ディープラーニングモデルによる推定結果の前記正解データに対するロスを算出して、前記ロスが最小になるときの前記値域を決定する手順(b)と、を有する処理を、コンピューターに実行させるためのディープラーニングモデルの値域決定プログラム。
【0009】
(2)前記手順(b)は、前記パラメーターの量子化における前記値域を順次変えて、前記パラメーターを量子化して、前記ディープラーニングモデルを学習用教師データを用いて学習するとともに、学習後の前記ディープラーニングモデルによる前記入力データに基づく推定結果の前記正解データに対する前記ロスを算出して、前記ロスが最小になるときの前記値域を決定する、上記(1)に記載のディープラーニングモデルの値域決定プログラム。
【0010】
(3)前記手順(b)は、前記ディープラーニングモデルの所定の対象層の前記パラメーターの量子化における前記値域を仮設定する手順(b1)と、前記対象層の前記パラメーターを、前記手順(b1)において仮設定された前記値域で量子化して、前記学習用教師データを用いて、前記対象層または指定した層を学習する手順(b2)と、前記手順(b2)において学習された前記ディープラーニングモデルによる前記入力データに基づく推定結果の前記正解データに対する前記ロスを算出する手順(b3)と、前記仮設定した前記値域を順次変えて、前記手順(b2)および前記手順(b3)を実行して、前記仮設定した前記値域の中で、前記手順(b3)において算出された前記ロスが最小になるときの前記値域を決定する手順(b4)と、を有する、上記(2)に記載のディープラーニングモデルの値域決定プログラム。
【0011】
(4)前記手順(b)は、前記対象層の1層下層を新たな対象層として、前記手順(b1)~前記手順(b4)を実行して、前記新たな対象層の前記パラメーターの値域を決定する手順(b5)と、前記手順(b5)を、前記新たな対象層が最下層となるまで実行する手順(b6)と、をさらに有する、上記(3)に記載のディープラーニングモデルの値域決定プログラム。
【0012】
(5)前記(b1)における前記対象層の初期値は最上層である、上記(4)に記載のディープラーニングモデルの値域決定プログラム。
【0013】
(6)前記(b1)における前記対象層の初期値は最上層以外の層である、上記(4)に記載のディープラーニングモデルの値域決定プログラム。
【0014】
(7)前記ディープラーニングモデルの各層の前記パラメーターは、weight、およびbiasを含み、前記手順(b2)は、前記biasを固定して、前記weightを学習する手順(b21)と、前記weightを固定して、前記biasを学習する手順(b22)と、を有する、上記(3)~(6)のいずれかに記載のディープラーニングモデルの値域決定プログラム。
【0015】
(8)前記ディープラーニングモデルの各層の前記パラメーターは、weight、bias、およびoutputを含み、前記手順(b4)は、前記biasの前記値域を、前記biasの層と同じ層の前記weightの前記値域と、前記biasの層の1層上層の前記outputの前記値域とに基づいて算出する、上記(3)~(7)のいずれかに記載のディープラーニングモデルの値域決定プログラム。
【0016】
(9)畳み込み層の下層がrelu層である前記ディープラーニングモデルの場合、前記手順(b4)は、前記畳み込み層の前記値域を前記relu層の前記値域と同一にする、上記(3)~(8)のいずれかに記載のディープラーニングモデルの値域決定プログラム。
【0017】
(10)ディープラーニングモデルのパラメーターの量子化における値域を決定するシステムであって、入力データと、前記入力データに対応する正解データとを取得する取得部と、前記パラメーターの量子化における前記値域を順次変えて、前記パラメーターを量子化するとともに、前記入力データに基づく前記ディープラーニングモデルによる推定結果の前記正解データに対するロスを算出して、前記ロスが最小になるときの前記値域を決定する演算部と、を有するディープラーニングモデルの値域決定システム。
【0018】
(11)ディープラーニングモデルのパラメーターの量子化における値域を、値域決定システムにより決定する方法であって、入力データと、前記入力データに対応する正解データとを取得する段階(a)と、前記パラメーターの量子化における前記値域を順次変えて、前記パラメーターを量子化するとともに、前記入力データに基づく前記ディープラーニングモデルによる推定結果の前記正解データに対するロスを算出して、前記ロスが最小になるときの前記値域を決定する段階(b)と、を有するディープラーニングモデルの値域決定方法。
【発明の効果】
【0019】
ディープラーニングモデルのパラメーターの量子化における値域を順次変えて、パラメーターを量子化するとともに、入力データに基づくディープラーニングモデルによる推定結果の正解データに対するロスを算出して、ロスが最小になるときの値域を決定する。これにより、パラメーターの量子化によって、高精度かつ軽量な量子化ディープラーニングモデルを得ることができる。
【図面の簡単な説明】
【0020】
図1】ディープラーニングモデルの値域決定システムの概略構成を示す図である。
図2】値域決定装置のハードウェア構成を示すブロック図である。
図3】値域決定装置の制御部の機能の例を示すブロック図である。
図4】入力画像を示す説明図である。
図5】関節点を示す説明図である。
図6】順次仮設定される、モデルパラメーターの量子化における値域を説明するための説明図である。
図7】ディープラーニングモデルの層ごとに、モデルパラメーターの量子化における値域が決定される推移を示す説明図である。
図8】値域決定装置の制御部の機能の他の例を示すブロック図である。
図9】値域決定装置の動作を示すフローチャートである。
【発明を実施するための形態】
【0021】
以下、図面を参照して、本発明の実施形態に係る、ディープラーニングモデルの値域決定プログラム、値域決定システム、および値域決定方法について説明する。なお、図面において、同一の要素には同一の符号を付し、重複する説明を省略する。また、図面の寸法比率は、説明の都合上誇張されており、実際の比率とは異なる場合がある。
【0022】
図1は、実施形態に係る、ディープラーニングモデルの値域決定システム10の概略構成を示す図である。
【0023】
値域決定システム10は、値域決定装置100、撮影装置200、および通信ネットワーク300を備える。値域決定装置100は、通信ネットワーク300により撮影装置200と相互に通信可能に接続される。本明細書において、物体とは、値域決定装置100の推定部112(図3図8参照)により位置または部分位置が推定される対象の物体である。物体には複数のカテゴリーが含まれ得る。カテゴリーとは物体の種別であり、人、犬、猫等が含まれる。以下、説明を簡単にするために、物体は対象者500(すなわち、「人」)であるものとして説明する。値域決定装置100は、値域決定装置100に入力される画像(以下、単に「入力画像250」とも称する)における物体の位置または部分位置を推定する、推定部112のディープラーニングモデルのパラメーター(以下、「モデルパラメーター」とも称する)の量子化における値域を決定する。入力画像250は、撮影装置200で撮影された画像であり得る。入力画像250は入力データを構成する。量子化とは、例えば、16~32ビットの浮動小数点で表現されたモデルパラメーターを、8ビット以下の固定小数点に変換することをいう。以下、説明を簡単にするために、32ビットの浮動小数点で表現されたモデルパラメーターを、8ビットの固定小数点で表現可能な値に変換することが量子化であるものとして説明する。例えば、量子化後の値は、8ビットの固定小数点で表現可能な値であれば、8ビットより高ビットの浮動小数点で表現された値であってもよい。また、予め学習されることで、32ビットの浮動小数点で表現されたモデルパラメーターが、量子化により、8ビットの固定小数点で表現可能なモデルパラメーターに変換されることを前提に説明する。モデルパラメーターには、ディープラーニングモデルの各層のinput、weight、bias、およびoutputが含まれる。また、説明を簡単にするために、値域決定装置100の推定部112は、物体の部分位置の例である、対象者500の関節点251の位置を、入力画像250上の座標として推定する場合を例に説明する。以下、関節点251等の位置を、単に関節点251等とも称する。
【0024】
値域決定装置100は、撮影装置200と一体化されることで、撮影装置200に包含され得る。
【0025】
撮影装置200は、例えば、対象者500の居室の天井もしくは壁の上部に配置され、または店舗等の天井もしくは壁の上部に配置される。撮影装置200は、所定の撮影範囲を、対象者500を俯瞰可能な位置から撮影し、入力画像250(画像データ)を出力する。入力画像250には対象者500を含む画像が含まれる。撮影装置200には、広角カメラが含まれる。撮影装置200は、例えば15fps~30fpsのフレームレートの動画の入力画像250として撮影領域を撮影し得る。入力画像250は動画と静止画とを含む。入力画像250は、例えば、白黒画像で、128ピクセル×128ピクセルの画像であり得る。入力画像250は、カラー画像であってもよい。撮影装置200は、入力画像250を値域決定装置100等へ送信する。
【0026】
通信ネットワーク300には、イーサネット(登録商標)などの有線通信規格によるネットワークインターフェースを使用し得る。通信ネットワーク300には、Bluetooth(登録商標)、IEEE802.11などの無線通信規格によるネットワークインターフェースを使用してもよい。
【0027】
図2は、値域決定装置100のハードウェア構成を示すブロック図である。値域決定装置100は、制御部110、記憶部120、表示部130、入力部140、および通信部150を備える。これらの構成要素は、バス160を介して相互に接続される。値域決定装置100は、コンピューターにより構成され得る。
【0028】
制御部110は、CPU(Central Processing Unit)により構成され、プログラムに従って、値域決定装置100の各部の制御および演算処理を行う。制御部110の作用の詳細については後述する。
【0029】
記憶部120は、RAM(Random Access Memory)、ROM(Read Only Memory)、およびSSD(Solid State Drive)により構成され得る。RAMは、制御部110の作業領域として一時的にプログラムやデータを記憶する。ROMは、あらかじめ各種プログラムや各種データを格納する。SSDは、オペレーションシステムを含む各種プログラムおよび各種データを格納する。
【0030】
表示部130は、例えば液晶ディスプレイであり、各種情報を表示する。
【0031】
入力部140は、例えばタッチパネルや各種キーにより構成される。入力部140は、各種操作、入力のために使用される。
【0032】
通信部150は、外部機器と通信するためのインターフェースである。通信には、イーサネット(登録商標)、SATA、PCI Express、USB、IEEE1394などの規格によるネットワークインターフェースが用いられ得る。その他、通信には、Bluetooth(登録商標)、IEEE802.11、4Gなどの無線通信インターフェースが用いられ得る。
【0033】
制御部110の作用の詳細について説明する。
【0034】
図3は、値域決定装置100の制御部110の機能の例を示すブロック図である。制御部110は、取得部111、推定部112、値域仮設定部113、ロス算出部114、および値域決定部115として機能する。推定部112は、ニューラルネットワークである、ディープラーニングモデルを用いて構成され得る。推定部112、値域仮設定部113、ロス算出部114、および値域決定部115は、演算部を構成する。
【0035】
取得部111は、入力画像250と、当該入力画像250に対応する、関節点251の正解データを取得する。
【0036】
図4は、入力画像250を示す説明図である。図5は、関節点251を示す説明図である。
【0037】
図4の入力画像250の例においては、入力画像250に対象者500の画像が含まれている。
【0038】
図5の関節点251の例においては、14個の関節点が示されている。関節点251には、例えば、右足首、右膝、右腰、左腰、左膝、左足首、右手首、右肘、右肩、左手首、左肘、左肩、首、および頭部の各関節点251が含まれる。
【0039】
推定部112は、値域仮設定部113により仮設定された値域で、32ビットの浮動小数点で表現されたモデルパラメーターを、8ビットの固定小数点で表現可能な値にすることで量子化する。後述するように、値域仮設定部113は異なる値域を順次仮設定する。推定部112は、値域仮設定部113により順次仮設定された各値域で、モデルパラメーターを順次量子化する。なお、量子化される前の、32ビットの浮動小数点で表現されたモデルパラメーターは、比較的高機能なコンピューターにより、大量の教師データ(画像と当該画像に対応した正解データとの組合せ)を用いて、予め学習されることで生成されたモデルパラメーターであり得る。
【0040】
推定部112は、値域仮設定部113により、ディープラーニングモデルの層ごとに仮設定された値域で、当該層ごとにモデルパラメーターを量子化し得る。推定部112は、値域仮設定部113により、ディープラーニングモデルのモデルパラメーターごとに仮設定された値域で、当該モデルパラメーターごとにモデルパラメーターを量子化してもよい。以下、説明を簡単にするために、推定部112は、ディープラーニングモデルの層ごとに仮設定された値域で、当該層ごとにモデルパラメーターを量子化するものとして説明する。
【0041】
推定部112は、値域仮設定部113により仮設定された値域でモデルパラメーターをディープラーニングモデルの層ごとに量子化するとともに、入力画像250に基づいてディープラーニングモデルにより関節点251を推定する。
【0042】
値域仮設定部113は、モデルパラメーターの量子化における値域を、順次変えて仮設定する。
【0043】
図6は、順次仮設定される、モデルパラメーターの量子化における値域を説明するための説明図である。図6の各グラフの横軸はモデルパラメーターの値を示しており、縦軸は頻度を示している。縦軸の頻度は、ディープラーニングモデルの学習時にモデルパラメーターがとった値の頻度である。
【0044】
図6において、破線で示す2、2n-1、2n-2は値域(より詳細には値域の上限)を表す。例えば、8ビットの固定小数点の表現では指数nは8であり、値域2は256(10進数)=11111111(2進数)である。値域2では、例えば、-128~127(10進数)の値を、1(10進数)=1(2進数)刻みで表現できる。値域2n-1では、例えば、-64~63.5(10進数)の値を、0.5(10進数)=0.1(2進数)刻みで表現できる。従って、値域を大きくするとモデルパラメーターがとり得る値の幅を大きくできるが、量子化誤差が大きくなる。逆に、値域を小さくするとモデルパラメーターがとり得る値の幅が小さくなるが、量子化誤差が小さくなる。
【0045】
図6の例に示すように、値域仮設定部113は、モデルパラメーターの量子化における値域を、2、2n-1、2n-2の順で順次仮設定し得る。
【0046】
ロス算出部114は、推定部112による、入力画像250に基づく関節点251の推定結果の、正解データに対するロスを算出する。ロスは、例えば、すべての関節点251について算出した、関節点251と正解データとの差分(距離)の2乗平均とし得る。ロス算出部114は、ディープラーニングモデルの層ごとに、仮設定された値域におけるロスを算出する。
【0047】
値域決定部115は、ディープラーニングモデルの層ごとに、ロス算出部114により算出されたロスが最小になるときの値域を決定し、記憶部120に値域のパラメーターとして記憶させる。
【0048】
図7は、ディープラーニングモデルの層ごとに、モデルパラメーターの量子化における値域が決定される推移を示す説明図である。
【0049】
図7の左側の図は、ディープラーニングモデルの最上層であるLayer1について量子化され、値域が決定された状態が示されている。右側の図は、ディープラーニングモデルの最上層であるLayer1について量子化され、値域が決定された後、最上層に対し1層下層であるLayer2について量子化され、値域が決定された状態が示されている。このように、ディープラーニングモデルは、最上層から最下層に向かって、1層づつ、量子化され、値域が決定され得る。この際、下層の量子化は、上層の量子化が実行された状態で実行される。
【0050】
ディープラーニングモデルは、所定の対象層についてのみ、量子化され、値域が決定されてもよい。所定の対象層は複数の対象層であってもよい。また、入力部140からユーザーにより入力されること等により設定された対象層についてのみ、量子化され、値域が決定されてもよい。
【0051】
ディープラーニングモデルは、所定の対象層から最下層に向かって、1層づつ、量子化され、値域が決定されてもよい。この場合、所定の対象層は、ディープラーニングモデルの最上層であってもよく、最上層以外の層であってもよい。すなわち、所定の対象層の初期値は最上層であってもよく、最上層以外の層であってもよい。
【0052】
値域決定部115は、モデルパラメーターであるbiasの値域を、biasの層と同一層のweightの値域と、当該biasの層の1層上層のoutputの値域とに基づいて算出(決定)し得る。
【0053】
ディープラーニングモデルが、畳み込み層の下層がrelu層である場合、値域決定部115は、畳み込み層の値域をrelu層の値域と同一の値域に決定し得る。
【0054】
図8は、値域決定装置100の制御部110の機能の他の例を示すブロック図である。制御部110は、取得部111、推定部112、値域仮設定部113、ロス算出部114、値域決定部115、および学習用ロス算出部116として機能し得る。
【0055】
取得部111は、入力画像250と、当該入力画像250に対応する、関節点251の正解データを取得する。取得部111は、さらに、学習用入力画像と、当該学習用入力画像に対応する、関節点251の学習用正解データを取得する。なお、ディープラーニングモデルの過学習を防止するため、学習用入力画像および学習用正解データは、それぞれ入力画像250および正解データとは異なるものを用いることが好ましい。学習用入力画像および学習用正解データは、それぞれ入力画像250および正解データと同じものを用いてもよい。学習用入力画像と学習用正解データの組合せは、学習用教師データを構成する。
【0056】
推定部112は、値域仮設定部113により仮設定された値域で、32ビットの浮動小数点で表現されたモデルパラメーターを、8ビットの固定小数点で表現可能な値にすることで量子化する。推定部112は、値域仮設定部113によりディープラーニングモデルの層ごとに仮設定された各値域で、モデルパラメーターを順次量子化して、ディープラーニングモデルを、学習用教師データを用いて、以下のように学習する。
【0057】
学習用ロス算出部116は、推定部112による、学習用入力画像に基づく関節点251の推定結果の、学習用正解データに対する学習用ロスを算出する。学習用ロスは、関節点251と学習用正解データとの差分(距離)であり、関節点251ごとに算出される。学習用ロス算出部116は、ディープラーニングモデルの層ごとに、仮設定された値域における学習用ロスを算出する。
【0058】
推定部112は、学習用ロス算出部116により関節点251ごとに算出された学習用ロスがそれぞれ0になるように、バックプロパゲーションによりディープラーニングモデルを学習する。
【0059】
推定部112は、値域仮設定部113により仮設定された値域でモデルパラメーターをディープラーニングモデルの層ごとに量子化して、当該ディープラーニングモデルを学習用教師データを用いて学習する(すなわち、当該ディープラーニングモデルのすべての層を学習する)とともに、学習後のディープラーニングモデルにより、入力画像250に基づいて関節点251を推定する。これにより、ディープラーニングモデルの層ごとの量子化の際に、層ごとにモデルパラメーターがファインチューニングされる。なお、推定部112は、値域仮設定部113により仮設定された値域でモデルパラメーターをディープラーニングモデルの層ごとに量子化して、量子化した層ごとに学習(モデルパラメーターの更新)をしてもよい。すなわち、所定の層ごとに量子化および学習をしてもよい。この場合、所定の層以外の層は、モデルパラメーターの更新をしないようにして学習する。
【0060】
値域仮設定部113は、モデルパラメーターの量子化における値域を、順次変えて仮設定する。
【0061】
ロス算出部114は、推定部112による、入力画像250に基づく関節点251の推定結果の、正解データに対するロスを算出する。ロスは、例えば、すべての関節点251について算出した、関節点251と正解データとの差分(距離)の2乗平均とし得る。ロス算出部114は、ディープラーニングモデルの層ごとに、仮設定された値域におけるロスを算出する。
【0062】
値域決定部115は、ディープラーニングモデルの層ごとに、ロス算出部114により算出されたロスが最小になるときの値域を決定する。
【0063】
ディープラーニングモデルは、所定の対象層についてのみ、量子化および学習され、値域が決定されてもよい。
【0064】
ディープラーニングモデルは、所定の対象層から最下層に向かって、1層づつ、量子化および学習され、値域が決定されてもよい。この場合、所定の対象層は、ディープラーニングモデルの最上層であってもよく、最上層以外の層であってもよい。すなわち、所定の対象層の初期値は最上層であってもよく、最上層以外の層であってもよい。
【0065】
ディープラーニングモデルの層ごとの学習は、次の順番で行い得る。biasのモデルパラメーターを固定して、weightを学習する。その後、weightを固定して、biasを学習する。
【0066】
このようにモデルパラメーターの値域が決定されるとともに学習された推定部112により、入力画像250に基づいて、関節点251が高精度に検出される。この際、推定部112は、記憶部120に記憶された学習後のモデルパラメーターをディープラーニングモデルに反映して関節点251を推定する。また、推定部112は、記憶部120に記憶された、層ごとの値域のパラメーターを読み出して、当該値域のパラメーターに基づいて、層ごとにモデルパラメーターを量子化する。
【0067】
値域決定装置100の動作について説明する。
【0068】
図9は、値域決定装置100の動作を示すフローチャートである。本フローチャートは、記憶部120に記憶されたプログラムに従い、制御部110により実行される。
【0069】
制御部110は、入力画像250と、当該入力画像250に対応する、関節点251の正解データを取得する(S101)。制御部110は、入力画像250と、関節点251の正解データを、記憶部120から読み出すことにより取得し得る。制御部110は、入力画像250と、関節点251の正解データを、通信部150により受信することで取得してもよい。
【0070】
制御部110は、ディープラーニングモデルの対象層の量子化における値域を仮設定する(S102)。
【0071】
制御部110は、仮設定された値域で量子化したモデルパラメーターで、学習用教師データを用いて対象層を学習する(S103)。
【0072】
制御部110は、学習後のディープラーニングモデルで、入力画像から関節点251を推定する(S104)。
【0073】
制御部110は、推定された関節点251の、正解データに対するロスを算出する(S105)。
【0074】
制御部110は、すべての値域についてロスを算出したかどうか判断する(S106)。制御部110は、すべての値域についてロスを算出したと判断した場合は(S106:YES)、ステップS107を実行する。制御部110は、すべての値域についてロスを算出していないと判断した場合は(S106:NO)、ステップS102を実行する。
【0075】
制御部110は、ロスが最小となったときの仮設定された値域を、対象層の値域として決定する(S107)。
【0076】
制御部110は、ディープラーニングモデルのすべての層について値域を決定したかどうか判断する(S108)。制御部110は、ディープラーニングモデルのすべての層について値域を決定したと判断した場合は(S108:YES)、処理を終了する。制御部110は、ディープラーニングモデルのすべての層について値域を決定していないと判断した場合は(S108:NO)、対象層を1層下層にして、ステップS102~ステップS107を実行する。
【0077】
本実施形態は、以下の効果を奏する。
【0078】
ディープラーニングモデルのパラメーターの量子化における値域を順次変えて、パラメーターを量子化するとともに、入力データに基づくディープラーニングモデルによる推定結果の正解データに対するロスを算出して、ロスが最小になるときの値域を決定する。これにより、パラメーターの量子化によって、高精度かつ軽量な量子化ディープラーニングモデルを得ることができる。
【0079】
さらに、モデルパラメーターの量子化における値域を順次変えて、パラメーターを量子化して、ディープラーニングモデルを学習用教師データを用いて学習するとともに、学習後のディープラーニングモデルによる入力データに基づく推定結果の正解データに対するロスを算出して、ロスが最小になるときの値域を決定する。これにより、量子化ディープラーニングモデルによる推定精度をより向上できる。
【0080】
さらに、所定の対象層について、ディープラーニングモデルのパラメーターの量子化における値域を順次変えて、パラメーターを量子化して、対象層または指定した層を学習するとともに、入力データに基づくディープラーニングモデルによる推定結果の正解データに対するロスを算出して、ロスが最小になるときの値域を決定する。これにより、より簡単かつ柔軟に、高精度かつ軽量な量子化ディープラーニングモデルを得ることができる。
【0081】
さらに、所定の対象層から最下層に向かって1層ごとに、ディープラーニングモデルのパラメーターの量子化における値域を順次変えて、パラメーターを量子化するとともに、入力データに基づくディープラーニングモデルによる推定結果の正解データに対するロスを算出して、ロスが最小になるときの値域を決定する。これにより、ディープラーニングモデル下層にて上層の量子化誤差が吸収されるため、より効果的に、高精度かつ軽量な量子化ディープラーニングモデルを得ることができる。
【0082】
さらに、対象層の初期値を最上層とする。これにより、さらに効果的に、高精度かつ軽量な量子化ディープラーニングモデルを得ることができる。
【0083】
さらに、対象層の初期値を最上層以外の層とする。これにより、効果的かつ柔軟に、高精度かつ軽量な量子化ディープラーニングモデルを得ることができる。
【0084】
さらに、ディープラーニングモデルの層ごとの学習を、次の順番で行う。biasのモデルパラメーターを固定して、weightを学習する。その後、weightを固定してbiasを学習する。これにより、量子化ディープラーニングモデルによる推定精度をさらに向上できる。
【0085】
さらに、biasの値域を、当該biasの層と同じ層のweightの値域と、biasの層の1層上層のoutputの値域とに基づいて算出する。これにより、既存のハードウェア構成を変えることなく、より簡単に、高精度かつ軽量な量子化ディープラーニングモデルを得ることができる。
【0086】
さらに、畳み込み層の下層がrelu層であるディープラーニングモデルの場合、畳み込み層の値域を当該relu層の値域と同一にする。これにより、特定の場合に、より簡単に、高精度かつ軽量な量子化ディープラーニングモデルを得ることができる。
【0087】
以上に説明した、ディープラーニングモデルの値域決定プログラム、値域決定システム10、および値域決定方法の構成は、上述の実施形態の特徴を説明するにあたって主要構成を説明したのであって、上述の構成に限られず、特許請求の範囲内において、種々改変することができる。また、一般的な位置推定システムおよび値域決定装置が備える構成を排除するものではない。
【0088】
例えば、値域決定装置100が有する機能を、コンピューターを内蔵する撮影装置200が備えるようにしてもよい。
【0089】
また、値域決定装置100、および撮影装置200は、それぞれ複数の装置により構成されてもよく、いずれか複数の装置が単一の装置として構成されてもよい。
【0090】
また、上述したフローチャートは、一部のステップを省略してもよく、他のステップが追加されてもよい。また各ステップの一部は同時に実行されてもよく、一つのステップが複数のステップに分割されて実行されてもよい。
【0091】
また、実施形態においては、32ビットの浮動小数点で表現されたモデルパラメーターを、8ビットの固定小数点に変換することを量子化の例として説明したが、量子化には、32ビットの浮動小数点で表現されたモデルパラメーターを、32ビット未満の浮動小数点に変換すること等も含まれる。
【0092】
また、上述した値域決定システム10、値域決定装置100における各種処理を行う手段および方法は、専用のハードウェア回路、またはプログラムされたコンピューターのいずれによっても実現することが可能である。上記プログラムは、例えば、USBメモリやDVD(Digital Versatile Disc)-ROM等のコンピューター読み取り可能な記録媒体によって提供されてもよいし、インターネット等のネットワークを介してオンラインで提供されてもよい。この場合、コンピューター読み取り可能な記録媒体に記録されたプログラムは、通常、ハードディスク等の記憶部に転送され記憶される。また、上記プログラムは、単独のアプリケーションソフトとして提供されてもよいし、一機能としてその撮影装置等の装置のソフトウエアに組み込まれてもよい。
【0093】
本出願は、2020年8月6日に出願された日本特許出願(特願2020-133972号)に基づいており、その開示内容は、参照され、全体として、組み入れられている。
【符号の説明】
【0094】
10 値域決定システム、
100 値域決定装置、
110 制御部、
111 取得部、
112 推定部、
113 値域仮設定部、
114 ロス算出部、
115 値域決定部、
116 学習用ロス算出部、
120 記憶部、
130 通信部、
140 入力部、
150 通信部、
200 撮影装置、
250 入力画像、
251 関節点、
500 対象者。
図1
図2
図3
図4
図5
図6
図7
図8
図9