(57)【要約】【課題】ＣＮＮに含まれる畳込み層を効率的に軽量化することを可能とする。【解決手段】実施形態のＤＮＮ軽量化装置は、一例として、畳込みディープニューラルネットワークの畳込み層において用いられる複数のフィルタを含むフィルタブロックを記憶する全フィルタ格納部と、フィルタブロックを分解し、フィルタブロックから分解した複数のフィルタを、類似するフィルタを集めた複数のグループにクラスタリングし、グループ毎に、当該グループに含まれるフィルタを代表する代表フィルタを生成するフィルタクラスタリング部と、代表フィルタと、当該代表フィルタと同じグループにクラスタリングされた各フィルタが属するフィルタブロックと、当該フィルタブロックにおいて各フィルタを適用する順番と、を示すフィルタインデックスを算出するフィルタインデックス算出部と、代表フィルタを記憶する代表フィルタ格納部と、フィルタインデックスを記憶するフィルタインデックス格納部と、を備える。【選択図】図３
2020087288.tif 000002
【特許請求の範囲】
【請求項１】
畳込みディープニューラルネットワークの畳込み層において用いられる複数のフィルタを含むフィルタブロックを記憶する全フィルタ格納部と、
前記フィルタブロックを分解し、前記フィルタブロックから分解した前記複数のフィルタを、類似するフィルタを集めた複数のグループにクラスタリングし、前記グループ毎に、当該グループに含まれる前記フィルタを代表する代表フィルタを生成するフィルタクラスタリング部と、
前記代表フィルタ、および前記フィルタクラスタリング部によるクラスタリングの結果に基づいて、前記代表フィルタと、当該代表フィルタと同じ前記グループにクラスタリングされた前記各フィルタが属する前記フィルタブロックと、当該フィルタブロックにおいて前記各フィルタを適用する順番と、を示すフィルタインデックスを算出するフィルタインデックス算出部と、
前記代表フィルタを記憶する代表フィルタ格納部と、
前記フィルタインデックスを記憶するフィルタインデックス格納部と、
を備えるＤＮＮ軽量化装置。
【請求項２】
前記フィルタクラスタリング部は、確率的勾配法によって前記代表フィルタの勾配を算出し、算出した前記勾配に基づいて前記代表フィルタを更新し、前記代表フィルタの更新結果に基づいて、前記複数のフィルタを前記複数のグループにクラスタリングし直す請求項１に記載のＤＮＮ軽量化装置。
【請求項３】
畳込みディープニューラルネットワークの畳込み層において用いられるフィルタブロックを複数のフィルタに分解して類似する前記フィルタでクラスタリングした各グループの代表フィルタを記憶する代表フィルタ格納部と、
前記代表フィルタと、当該代表フィルタと同じ前記グループにクラスタリングされた前記各フィルタが属する前記フィルタブロックと、当該フィルタブロックにおいて前記各フィルタを適用する順番と、を示すフィルタインデックスを記憶するフィルタインデックス格納部と、
前記代表フィルタ格納部に記憶される前記代表フィルタおよび前記フィルタインデックス格納部に記憶される前記フィルタインデックスに基づいて、前記フィルタを前記代表フィルタにより置き換えた前記フィルタブロックを生成し、当該生成したフィルタブロックを用いて、画像データに対して畳込み演算を実行する畳込み演算部と、
を備えるＤＮＮ軽量化装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ＤＮＮ軽量化装置に関する。
【背景技術】
【０００２】
深層ディープニューラルネットワーク（以下、ＤＮＮと言う）は、様々な分野で広く適用されている。特に、画像処理の分野では、畳込み演算を利用したＤＮＮである畳込みニューラルネットワーク（以下、ＣＮＮと言う）が使用されており、ＣＮＮを用いた推論器が様々なタスクにおいて従来の技術を凌駕する性能を示している。ＣＮＮの特徴は、通常のＤＮＮで用いられる全結合層だけでなく、畳込み演算を行う畳込み層を有することであり、ＣＮＮは、これらの２種類の層を多層に積み重ねることによって構成される。
【０００３】
ところで、高性能な深層学習を小型の機器において実現するためには、ＤＮＮの軽量化が必須である。ＤＮＮを軽量化する手段としては、蒸留、枝刈り、行列分解の３つの手段が広く知られている。蒸留とは、学習済みの軽量化されていないＤＮＮ、および学習データを用いて、小さなＤＮＮを効率的に再学習させる手法である。この蒸留によれば、学習データだけを用いて小さなＤＮＮを学習させるよりも高い性能のＤＮＮが得られ易く、かつＤＮＮの軽量化を実現できる。
【０００４】
枝刈りは、ニューラルネットワークにおけるニューロン同士を結ぶ結合のうち、結合の弱いものを削除することによって、ＤＮＮを軽量化する手法である。また、行列分解は、ニューラルネットワークにおけるニューロンの結合をひとつのテンソル（高階の行列）とみなし、これを小さな行列の掛け合わせで表現することによってＤＮＮを軽量化する手法である。
【先行技術文献】
【特許文献】
【０００５】
【非特許文献１】G.Hinton、他２名、“Distilling  the  Knowledge  in  a  Neural  Network”、［online］、平成２７年３月９日、arXiv、［平成３０年１０月１９日検索］インターネット＜https://arxiv.org/＞
【非特許文献２】I.Cugu、他２名、“MicroExpNet:  An  Extremely  Small  and  Fast  Model  For  Expression  Recognition  From  Frontal  Face  Images”、［online］、平成３０年８月１３日、arXiv、［平成３０年１０月１９日検索］インターネット＜https://arxiv.org/＞
【非特許文献３】S.Han、他２名、“Deep  Compression:  Compressing  Deep  Neural  Networks  with  Pruning,  Trained  Quantization  and  Huffman  Coding”、［online］、平成２８年２月１５日、arXiv、［平成３０年１０月１９日検索］インターネット＜https://arxiv.org/＞
【非特許文献４】Y.Kim、他５名、“Compression  of  Deep  Convolutional  Neural  Networks  for  Fast  and  Low  Power  Mobile  Applications”、［online］、平成２８年２月２４日、arXiv、［平成３０年１０月１９日検索］インターネット＜https://arxiv.org/＞
【非特許文献５】D.P.Kingma、他１名、“Adam:  A  Method  for  Stochastic  Optimization”、［online］、平成２９年１月３０日、arXiv、［平成３０年１０月１９日検索］インターネット＜https://arxiv.org/＞
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、ＤＤＮを軽量化する手段のうち蒸留は、学習データを必要とするため、学習データが無い場合には、実施することができない。また、枝刈りは、ＤＮＮの層のうち全結合層には、軽量化の効果が非常に高いが、畳込み層に対しては軽量化の効果が小さく、畳込み層に対して枝刈りによる軽量化をさらに進めると、ＤＮＮの精度が急激に劣化することがある。また、行列分解も、枝刈りと同様に、全結合層に対しては軽量化に対して一定の効果が得られるが、畳込み層に対しては軽量化の効果が小さい。
【０００７】
そこで、実施形態の課題の一つは、ＤＮＮが有する畳込み層を効率的に軽量化することが可能なＤＮＮ軽量化装置提供することである。
【課題を解決するための手段】
【０００８】
実施形態のＤＮＮ軽量化装置は、一例として、畳込みディープニューラルネットワークの畳込み層において用いられる複数のフィルタを含むフィルタブロックを記憶する全フィルタ格納部と、フィルタブロックを分解し、フィルタブロックから分解した複数のフィルタを、類似するフィルタを集めた複数のグループにクラスタリングし、グループ毎に、当該グループに含まれるフィルタを代表する代表フィルタを生成するフィルタクラスタリング部と、代表フィルタと、当該代表フィルタと同じグループにクラスタリングされた各フィルタが属するフィルタブロックと、当該フィルタブロックにおいて各フィルタを適用する順番と、を示すフィルタインデックスを算出するフィルタインデックス算出部と、代表フィルタを記憶する代表フィルタ格納部と、フィルタインデックスを記憶するフィルタインデックス格納部と、を備える。よって、一例として、ＣＮＮの畳込み層を効率的に軽量化することができる。
【０００９】
また、実施形態のＤＮＮ軽量化装置は、一例として、フィルタクラスタリング部は、確率的勾配法によって代表フィルタの勾配を算出し、算出した勾配に基づいて代表フィルタを更新し、当該更新後の代表フィルタに基づいて、複数のフィルタを複数のグループにクラスタリングし直す。よって、一例として、短時間に、代表フィルタを更新することができる。
【００１０】
また、実施形態のＤＮＮ軽量化装置は、一例として、畳込みディープニューラルネットワークの畳込み層において用いられるフィルタブロックを複数のフィルタに分解して類似するフィルタでクラスタリングした各グループの代表フィルタを記憶する代表フィルタ格納部と、代表フィルタと、当該代表フィルタと同じグループにクラスタリングされた各フィルタが属するフィルタブロックと、当該フィルタブロックにおいて各フィルタを適用する順番と、を示すフィルタインデックスを記憶するフィルタインデックス格納部と、代表フィルタ格納部に記憶される代表フィルタおよびフィルタインデックス格納部に記憶されるフィルタインデックスに基づいて、フィルタを代表フィルタにより置き換えたフィルタブロックを生成し、当該生成したフィルタブロックを用いて、画像データに対して畳込み演算を実行する畳込み演算部と、を備える。よって、一例として、ＣＮＮの畳込み層を効率的に軽量化することができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、本実施形態にかかるサーバのハードウェア構成の一例を示すブロック図である。
【図２】図２は、本実施形態にかかる車両に搭載される車両制御システムのシステム構成の一例を示すブロック図である。
【図３】図３は、本実施形態にかかるサーバおよびＥＣＵの機能構成の一例を示すブロック図である。
【図４】図４は、本実施形態にかかるサーバによるＣＮＮの軽量化処理の流れの一例を示すフローチャートである。
【図５】図５は、本実施形態にかかるサーバによるフィルタブロックのフィルタクラスタリングの一例を説明するための図である。
【図６】図６は、本実施形態にかかる車両が有するＥＣＵによるＣＮＮの軽量化処理の流れの一例を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、本発明の例示的な実施形態が開示される。以下に示される実施形態の構成、ならびに当該構成によってもたらされる作用、結果、および効果は、一例である。本発明は、以下の実施形態に開示される構成以外によって実現可能であるとともに、基本的な構成に基づく種々の効果や、派生的な効果のうち、少なくとも１つを得ることが可能である。
【００１３】
まず、図１を用いて、本実施形態にかかる車両における深層ニューラルネットワーク（以下、ＤＮＮと言う）を用いた画像処理の軽量化に関わるサーバのハードウェア構成について説明する。
【００１４】
図１は、本実施形態にかかるサーバのハードウェア構成の一例を示すブロック図である。図１に示すように、本実施形態にかかるサーバ１００は、ＰＣ（Personal  Computer）等の一般的な情報処理装置と同様のコンピュータ資源を有している。
【００１５】
図１に示す例において、サーバ１００は、ＣＰＵ（Central  Processing  Unit）１０１と、ＲＯＭ（Read  Only  Memory）１０２と、ＲＡＭ（Random  Access  Memory）１０３と、通信インターフェース（Ｉ／Ｆ）１０４と、入出力インターフェース（Ｉ／Ｆ）１０５と、ＳＳＤ（Solid  State  Drive）１０６と、を有している。これらのハードウェアは、データバス１０７を介して互いに接続されている。
【００１６】
ＣＰＵ１０１は、サーバ１００を統括的に制御するハードウェアプロセッサである。ＣＰＵ１０１は、ＲＯＭ１０２等に記憶された各種の制御プログラム（コンピュータプログラム）を読み出し、当該各種の制御プログラムに規定されたインストラクションにしたがって各種の機能を実現する。
【００１７】
ＲＯＭ１０２は、上述した各種の制御プログラムの実行に必要なパラメータなどを記憶する不揮発性の主記憶装置である。
【００１８】
ＲＡＭ１０３は、ＣＰＵ１０１の作業領域を提供する揮発性の主記憶装置である。
【００１９】
通信インターフェース１０４は、サーバ１００と外部装置との間の通信を実現するインターフェースである。例えば、通信インターフェース１０４は、サーバ１００と車両との間の無線通信による信号の送受信を実現する。
【００２０】
入出力インターフェース１０５は、サーバ１００と外部装置との接続を実現するインターフェースである。外部装置としては、例えば、サーバ１００のオペレータが使用する入出力デバイスなどが考えられる。
【００２１】
ＳＳＤ１０６は、書き換え可能な不揮発性の補助記憶装置である。本実施形態にかかるサーバ１００においては、補助記憶装置として、ＳＳＤ１０６に替えて（またはＳＳＤ１０６に加えて）、ＨＤＤ（Hard  Disk  Drive）が設けられてもよい。
【００２２】
次に、図２を用いて、本実施形態にかかる車両に搭載される車両制御システムのシステム構成について説明する。図２は、本実施形態にかかる車両に搭載される車両制御システムのシステム構成の一例を示すブロック図である。
【００２３】
図２に示すように、車両制御システムは、車載カメラ２０１と、ドライバモニタカメラ２０２と、ＥＣＵ（Electronic  Control  Unit）２０３と、表示装置２０４と、を有している。
【００２４】
車載カメラ２０１は、車両の周囲を撮像可能である。例えば、車載カメラ２０１は、車両の前方、後方、および側方（左右両方）の路面を含む領域を撮像するように複数設けられる。車載カメラ２０１によって得られる画像データは、車両の周辺の状況の監視（障害物の検出等）に使用される。車載カメラ２０１は、ＣＣＤ（Charge  Coupled  Device）またはＣＩＳ（CMOS  Image  Sensor）等の撮像素子を有するデジタルカメラである。車載カメラ２０１は、所定のフレームレートで車両の周囲を撮像可能である。そして、車載カメラ２０１は、車両の周囲を撮像して得られた画像データ（撮像画像）をＥＣＵ２０３に出力する。
【００２５】
ドライバモニタカメラ２０２は、車両を運転する運転者を撮像可能である。ドライバモニタカメラ２０２は、ＣＣＤやＣＩＳ等の撮像素子を有するデジタルカメラである。ドライバモニタカメラ２０２は、車両の運転席に着座する乗員（すなわち、運転者）の顔が、視野の中心に位置するように、視野角および姿勢が調整されている。そして、ドライバモニタカメラ２０２は、運転者の顔を順次撮像し、当該撮像により得られる画像データ（撮像画像）をＥＣＵ２０３に順次出力する。
【００２６】
表示装置２０４は、車両の車室内のダッシュボード等に設けられ、ＥＣＵ２０３の指示に応じて画像を表示する装置である。表示装置２０４は、例えば、液晶ディスプレイ（ＬＣＤ：Liquid  Crystal  Display）や、有機ＥＬ（ＯＥＬＳ：Organic  Electroluminescent  Display）等によって構成される。
【００２７】
ＥＣＵ２０３は、コンピュータ等で構成され、ハードウェアとソフトウェアが協働することにより、車両の制御全般を司る。具体的には、ＥＣＵ２０３は、例えば、ＣＰＵ２０３ａ、ＲＯＭ２０３ｂ、ＲＡＭ２０３ｃ、ＳＳＤ２０３ｄ等を有している。
【００２８】
ＣＰＵ２０３ａは、車両全体の制御を行う。ＣＰＵ２０３ａは、ＲＯＭ２０３ｂ等の不揮発性の記憶装置にインストールされ記憶されたプログラムを読み出し、当該プログラムに従って演算処理を実行する。例えば、ＣＰＵ２０３ａは、車載カメラ２０１またはドライバモニタカメラ２０２の撮像により得られた画像データに対するＤＮＮを用いた画像処理や、表示装置２０４に表示させる画像データの合成等を実行する。
【００２９】
ＲＯＭ２０３ｂは、各種プログラムおよび当該プログラムの実行に必要なパラメータ等を記憶する。ＲＡＭ２０３ｃは、ＣＰＵ２０３ａでの演算に用いられる各種のデータを一時的に記憶する。ＳＳＤ２０３ｄは、書き換え可能な不揮発性の記憶部であって、ＥＣＵ２０３の電源がオフされた場合にあってもデータを記憶することができる。
【００３０】
ＣＰＵ２０３ａや、ＲＯＭ２０３ｂ、ＲＡＭ２０３ｃ等は、同一パッケージ内に集積されうる。また、ＥＣＵ２０３は、ＣＰＵ２０３ａに替えて、ＤＳＰ（Digital  Signal  Processor）等の他の論理演算プロセッサや論理回路等が用いられる構成であってもよい。また、ＳＳＤ２０３ｄに替えてＨＤＤ（Hard  Disk  Drive）が設けられてもよいし、ＳＳＤ２０３ｄやＨＤＤは、ＥＣＵ２０３とは別に設けられてもよい。
【００３１】
ところで、畳込み演算を行う畳込み層を含むＤＮＮである畳込みニューラルネットワーク（以下、ＣＮＮと言う）を用いた画像処理には、畳込み層の軽量化が求められている。特に、高性能なＣＮＮを、車両が有するＥＣＵ２０３等の小型の機器に組み込むためには、畳込み層の軽量化が必要である。ＤＮＮを軽量化する手段として、蒸留や、枝刈り、行列分解等の手法が知られている。しかしながら、これらの手法では、ＤＮＮが含む全結合層を軽量化することはできるが、畳込み層を効率的に軽量化することは難しい。
【００３２】
そこで、本実施形態では、サーバおよびＥＣＵ２０３に対して以下のような機能を持たせることで、ＣＮＮにおける畳込み層を軽量化することを実現する。本実施形態では、サーバ１００およびＥＣＵ２０３それぞれが、ＤＮＮ軽量化装置の一例として機能する。本実施形態では、サーバ１００をＤＮＮ軽量化装置の一例として用いているが、これに限定するものではなく、ワークステーション等の演算装置をＤＮＮ軽量化装置として用いることも可能である。
【００３３】
次に、図３を用いて、本実施形態にかかるサーバ１００およびＥＣＵ２０３の機能構成の一例について説明する。図３は、本実施形態にかかるサーバおよびＥＣＵの機能構成の一例を示すブロック図である。図３に示すサーバ１００およびＥＣＵ２０３において実現される機能は、ソフトウェアとハードウェアとの協働によって実現される。つまり、図３に示す例において、サーバ１００の機能は、ＣＰＵ１０１がＲＯＭ１０２などに記憶されたプログラムを読み出して実行した結果として実現され、ＥＣＵ２０３の機能は、ＣＰＵ２０３ａがＲＯＭ２０３ｂなどに記憶されたプログラムを読み出して実行した結果として実現される。図３に示すサーバおよびＥＣＵ２０３の機能の一部または全部が専用のハードウェア（回路）によって実現されても良い。
【００３４】
図３に示すように、本実施形態にかかるサーバ１００は、機能構成として、全フィルタ格納部３０１、フィルタクラスタリング部３０２、フィルタインデックス算出部３０３、フィルタインデックス格納部３０４、および代表フィルタ格納部３０５を有している。
【００３５】
全フィルタ格納部３０１は、サーバ１００が有するＲＯＭ１０２やＳＳＤ１０６等の不揮発性の記憶媒体により実現され、複数のフィルタブロックを有するフィルタブロック群を記憶する記憶部である。ここで、フィルタブロックは、ＣＮＮが含む畳込み層において用いられる複数のフィルタを有する。これらのフィルタブロックは、全フィルタ格納部３０１に対して、予め保存されているものとする。本実施形態では、全フィルタ格納部３０１に記憶されるフィルタブロックは、車両が有するＥＣＵ２０３におけるＣＮＮには用いられない。
【００３６】
フィルタクラスタリング部３０２は、全フィルタ格納部３０１に記憶されるフィルタブロックを複数のフィルタに分解して、当該複数のフィルタを、類似するフィルタを集めたグループにクラスタリング（以下、フィルタクラスタリングと言う）する。次いで、フィルタクラスタリング部３０２は、フィルタクラスタリングしたグループ毎に、当該グループに含まれるフィルタを代表する代表フィルタを生成する。そして、フィルタクラスタリング部３０２は、生成した代表フィルタを代表フィルタ格納部３０５に保存する。代表フィルタ格納部３０５は、ＳＳＤ１０６等の書き換え可能な不揮発性の記憶媒体により実現される。
【００３７】
本実施形態では、フィルタクラスタリング部３０２は、図３に示すように、初期代表フィルタ生成部３０２ａ、確率的勾配算出部３０２ｂ、および代表フィルタ更新部３０２ｃを有する。初期代表フィルタ生成部３０２ａは、全フィルタ格納部３０１に記憶されるフィルタブロックを複数のフィルタに分解する。次いで、初期代表フィルタ生成部３０２ａは、フィルタブロックから分解した複数のフィルタを、類似するフィルタを集めた複数のグループにフィルタクラスタリングする。
【００３８】
そして、初期代表フィルタ生成部３０２ａは、各グループに含まれる複数のフィルタから、任意のフィルタを、当該グループに含まれるフィルタを代表するフィルタ（以下、代表フィルタと言う）の初期値として生成する。その際、初期代表フィルタ生成部３０２ａは、各グループに含まれる複数のフィルタから、ランダムに選択したフィルタを、代表フィルタとして生成する。
【００３９】
確率的勾配算出部３０２ｂは、確率的勾配法によって、代表フィルタの勾配を算出する。代表フィルタ更新部３０２ｃは、代表フィルタの勾配の算出結果に基づいて、各グループの代表フィルタを更新する。そして、代表フィルタ更新部３０２ｃは、更新した代表フィルタを、代表フィルタ格納部３０５に保存する。代表フィルタ格納部３０５は、ＳＳＤ１０６等の書き換え可能な不揮発性の記憶媒体により実現される。さらに、代表フィルタ更新部３０２ｃは、各グループの代表フィルタの更新結果に基づいて、複数のフィルタを複数のグループにクラスタリングし直す。
【００４０】
フィルタインデックス算出部３０３は、代表フィルタ、およびフィルタクラスタリング部３０２によるフィルタクラスタリングの結果に基づいて、フィルタインデックスを算出する。ここで、フィルタインデックスは、代表フィルタと、当該代表フィルタと同じグループにクラスタリングされた各フィルタが属するフィルタブロックと、当該フィルタブロックにおいて各フィルタを適用する順番と、を示す情報である。言い換えると、フィルタインデックス算出部３０３は、フィルタクラスタリング部３０２によるフィルタクラスタリングの結果に基づいて、各フィルタブロックに含まれる各フィルタが属するグループを示すフィルタインデックスを算出する。
【００４１】
そして、フィルタインデックス算出部３０３は、算出したフィルタインデックスをフィルタインデックス格納部３０４に保存する。フィルタインデックス格納部３０４は、ＳＳＤ１０６等の書き換え可能な不揮発性の記憶媒体により実現される。
【００４２】
これにより、車両が有するＥＣＵ２０３において、ＣＮＮを用いた画像処理を実行する場合に、ＣＮＮの畳込み演算に用いるフィルタブロックを構成する全てのフィルタを記憶していなくても、当該フィルタブロックを生成して、当該生成したフィルタブロックを用いて畳込み演算を実行できる。その結果、ＣＮＮの畳込み層を効率的に軽量化することができる。
【００４３】
次に、図３を用いて、本実施形態にかかるＥＣＵ２０３の機能構成について説明する。本実施形態にかかるＥＣＵ２０３は、機能構成として、入力画像格納部３１１、前処理部３１２、畳込み演算部３１３、特徴量処理部３１４、出力データ格納部３１５、代表フィルタ格納部３１６、およびフィルタインデックス格納部３１７を有している。
【００４４】
入力画像格納部３１１は、ＳＳＤ２０３ｄ等の書き換え可能な不揮発性の記憶媒体により実現され、ＥＣＵ２０３においてＣＮＮを用いた画像処理を実行する画像データを記憶する。本実施形態では、入力画像格納部３１１は、車載カメラ２０１またはドライバモニタカメラ２０２の撮像により得られる画像データを記憶する。
【００４５】
本実施形態では、入力画像格納部３１１は、ＣＮＮを用いた画像処理を実行する画像データとして、車載カメラ２０１またはドライバモニタカメラ２０２の撮像により得られる画像データを記憶しているが、これに限定するものではない。例えば、入力画像格納部３１１は、車両が有するＬＩＤＡＲ（Light  Detection  and  Ranging）、ＴＯＦ（Time  Of  Flight）カメラ、ミリ波レーダー、超音波センサ等によって計測した車両と周辺の物体との間の距離の測定結果を表す画像データを記憶しても良い。
【００４６】
代表フィルタ格納部３１６は、ＲＯＭ２０３ｂやＳＳＤ２０３ｄ等の不揮発性の記憶媒体により実現され、サーバ１００により生成される代表フィルタを記憶する。本実施形態では、代表フィルタ格納部３１６には、ＥＣＵ２０３を出荷する際に、サーバ１００により生成される代表フィルタが保存される。
【００４７】
フィルタインデックス格納部３１７は、ＲＯＭ２０３ｂやＳＳＤ２０３ｄ等の不揮発性の記憶媒体により実現され、サーバ１００により算出されるフィルタインデックスを記憶する。本実施形態では、フィルタインデックス格納部３１７には、ＥＣＵ２０３を出荷する際に、サーバ１００により算出されるフィルタインデックスが保存される。
【００４８】
前処理部３１２は、入力画像格納部３１１に記憶される画像データに対して、ＥＣＵ２０３において実行するＣＮＮに必要な前処理を実行する。ここで、前処理は、例えば、画像データのサイズに調整や、画像データに含まれるノイズの除去等である。
【００４９】
畳込み演算部３１３は、ＥＣＵ２０３において実行するＣＮＮに含まれる畳込み層の畳込み演算を実行する。本実施形態では、畳込み演算部３１３は、代表フィルタ格納部３１６に記憶される代表フィルタおよびフィルタインデックス格納部３１７に記憶されるフィルタインデックスに基づいて、入力画像格納部３１１に記憶される画像データに対して畳込み演算を実行する。
【００５０】
具体的には、畳込み演算部３１３は、代表フィルタおよびフィルタインデックスに基づいて、フィルタを代表フィルタにより置き換えてフィルタブロックを生成する。そして、畳込み演算部３１３は、生成したフィルタブロック（言い換えると、代表フィルタにより構成されるフィルタブロック）を用いて、前処理を実行した画像データに対して畳込み演算を実行する。
【００５１】
これにより、車両が有するＥＣＵ２０３において、ＣＮＮを用いた画像処理を実行する場合に、ＣＮＮの畳込み演算に用いるフィルタブロックを構成する全てのフィルタを記憶していなくても、代表フィルタによりフィルタブロックを生成して畳込み演算を実行できる。その結果、ＣＮＮの畳込み層を効率的に軽量化することができる。
【００５２】
特徴量処理部３１４は、畳込み演算部３１３における畳込み演算によって抽出される画像データの特徴量に基づいて、ＣＮＮに含まれる畳込み演算以外の処理（以下、後処理と言う。例えば、プーリング層や、全結合層、出力層）を実行する。そして、特徴量処理部３１４は、後処理の実行結果（例えば、画像データに含まれる顔画像が笑顔か否かの判定結果、画像データに含まれる人物の肩や腕の位置の判定結果、画像データに含まれる腕の形状、車両の走行位置の判定結果、車両が駐車可能な否かの判定結果）を出力データとして出力データ格納部３１５に保存する。出力データ格納部３１５は、ＳＳＤ２０３ｄ等の書き換え可能な不揮発性の記憶媒体により実現される。
【００５３】
次に、図４を用いて、本実施形態にかかるサーバ１００によるＣＮＮの軽量化処理の流れの一例について説明する。図４は、本実施形態にかかるサーバによるＣＮＮの軽量化処理の流れの一例を示すフローチャートである。
【００５４】
まず、初期代表フィルタ生成部３０２ａは、全フィルタ格納部３０１に記憶されるフィルタブロックを複数のフィルタに分解し、分解した複数のフィルタを、複数のグループにフィルタクラスタリングする（ステップＳ４０１）。
【００５５】
一般に、クラスタリングでは、K-Meansと呼ばれる手法が広く知られているが、ＣＮＮの畳込み層において用いられるフィルタのように、その数が多い場合（例えば、フィルタの枚数が、数十万枚から数千万枚である場合）、K-Meansによるクラスタリングでは、その計算に時間がかかる。そのため、K-Meansによるクラスタリングでは、フィルタクラスタリングにかけることができる時間（以下、実時間と言う）内に、有益なクラスタリングの結果を得ることが難しい場合がある。
【００５６】
そこで、通常、K-Meansでは、勾配法と呼ばれる最適化手法によってクラスタリングを行っているが、本実施形態では、初期代表フィルタ生成部３０２ａは、ＳＧＤや、ＲＭＳＰｒоｐ、Ａｄａｍ等の確率的勾配法によってフィルタクラスタリングを実行する。これにより、有益なフィルタクラスタリングの結果を、実時間内に得ることができる。
【００５７】
次いで、初期代表フィルタ生成部３０２ａは、各グループの代表フィルタを生成する（ステップＳ４０２）。本実施形態では、初期代表フィルタ生成部３０２ａは、各グループに属する複数のフィルタの中からランダムにフィルタを選択し、当該選択したフィルタを代表フィルタの初期値とする。
【００５８】
確率的勾配算出部３０２ｂは、確率的勾配法によって、各グループの代表フィルタの勾配を算出する（ステップＳ４０３）。確率的勾配算出部３０２ｂは、K-Meansで使用される目的関数と同一の目的関数を用いて、代表フィルタの勾配を算出するものとする。代表フィルタの勾配の算出には、いずれの確率的勾配法を用いても良い。例えば、確率的勾配算出部３０２ｂは、フィルタブロックから分解した複数のフィルタの中から予め設定された数の一部のフィルタを選択し、選択したフィルタの中から、ランダムに代表フィルタを選択した選択した代表フィルタの勾配を算出する。これにより、全てのフィルタからランダムに代表フィルタを選択し、当該選択した代表フィルタの勾配を算出し、その算出結果に基づいて代表フィルタを更新する場合と比較して、短時間に、代表フィルタを更新することができる。
【００５９】
代表フィルタ更新部３０２ｃは、確率的勾配算出部３０２ｂにより算出される代表フィルタの勾配に基づいて、各グループの代表フィルタを更新し、かつ代表フィルタの更新結果に基づいて、複数のフィルタを複数のグループにクラスタリングし直す（ステップＳ４０４）。
【００６０】
次いで、確率的勾配算出部３０２ｂは、各グループの代表フィルタの更新を、予め設定された繰返回数、繰り返したか否かを判断する（ステップＳ４０５）。本実施形態では、代表フィルタの更新を繰り返した回数に基づいて、代表フィルタを更新するか否かを判断しているが、これに限定するものではなく、予め設定された終了条件に基づいて、代表フィルタを更新するか否かを判断しても良い。
【００６１】
各グループの代表フィルタの更新が、予め設定された繰返回数、繰り返されていない場合（ステップＳ４０５：Ｎｏ）、確率的勾配算出部３０２ｂは、再び、確率的勾配法によって、各グループの更新後の代表フィルタの勾配を算出する（ステップＳ４０３）。そして、代表フィルタ更新部３０２ｃは、更新後の代表フィルタの勾配に基づいて、各グループの代表フィルタを更新し、かつ代表フィルタの更新結果に基づいて、複数のフィルタを複数のグループにクラスタリングし直す（ステップＳ４０４）。
【００６２】
各グループの代表フィルタの更新が予め設定された繰返回数、繰り返された場合（ステップＳ４０５：Ｙｅｓ）、代表フィルタ更新部３０２ｃは、更新後の代表フィルタを、代表フィルタ格納部３０５に保存する（ステップＳ４０６）。さらに、フィルタインデックス算出部３０３は、フィルタインデックスを算出し、当該算出したフィルタインデックスをフィルタインデックス格納部３０４に保存する（ステップＳ４０７）。
【００６３】
ここで、図５を用いて、本実施形態にかかるサーバ１００によるフィルタブロックのフィルタクラスタリングの一例について説明する。図５は、本実施形態にかかるサーバによるフィルタブロックのフィルタクラスタリングの一例を説明するための図である。
【００６４】
図５に示すように、初期代表フィルタ生成部２０２ａは、全フィルタ格納部３０１に記憶される３つのフィルタブロックＦ１〜Ｆ３を、複数のフィルタＦ−１−１，Ｆ−１−２，Ｆ−１−３，Ｆ−１−４，Ｆ−１−５，Ｆ−１−６，Ｆ−２−１，Ｆ−２−２，Ｆ−２−３，Ｆ−２−４，Ｆ−２−５，Ｆ−２−６，Ｆ−３−１，Ｆ−３−２，Ｆ−３−３，Ｆ−３−４，Ｆ−３−５，Ｆ−３−６に分解する。
【００６５】
次に、初期代表フィルタ生成部２０２ａは、図５に示すように、分解したフィルタＦ−１−１，Ｆ−１−２，Ｆ−１−３，Ｆ−１−４，Ｆ−１−５，Ｆ−１−６，Ｆ−２−１，Ｆ−２−２，Ｆ−２−３，Ｆ−２−４，Ｆ−２−５，Ｆ−２−６，Ｆ−３−１，Ｆ−３−２，Ｆ−３−３，Ｆ−３−４，Ｆ−３−５，Ｆ−３−６を、類似するフィルタを集めた３つのグループＧ１〜Ｇ３にフィルタクラスタリングする。
【００６６】
そして、初期代表フィルタ生成部３０２ａは、図５に示すように、グループＧ１〜Ｇ３のそれぞれから、ランダムに代表フィルタを選択する。確率的勾配算出部３０２ｂは、確率的勾配法によって、代表フィルタの勾配を算出する。
【００６７】
代表フィルタ更新部３０２ｃは、代表フィルタの勾配の算出結果に基づいて、代表フィルタを更新するとともに、代表フィルタの更新結果に基づいて、フィルタＦ−１−１，Ｆ−１−２，Ｆ−１−３，Ｆ−１−４，Ｆ−１−５，Ｆ−１−６，Ｆ−２−１，Ｆ−２−２，Ｆ−２−３，Ｆ−２−４，Ｆ−２−５，Ｆ−２−６，Ｆ−３−１，Ｆ−３−２，Ｆ−３−３，Ｆ−３−４，Ｆ−３−５，Ｆ−３−６を、複数のグループにフィルタクラスタリングし直す。代表フィルタ更新部３０２ｃは、代表フィルタの更新を、予め設定された繰返回数、繰り返す。その後、代表フィルタ更新部３０２ｃは、代表フィルタＦ−２−１，Ｆ−１−４，Ｆ−３−５を、代表フィルタ格納部３０５に保存する。
【００６８】
また、フィルタインデックス算出部３０３は、図５に示すように、代表フィルタＦ−２−１，Ｆ−１−４，Ｆ−３−５、およびフィルタクラスタリングの結果に基づいて、フィルタインデックスを算出して、フィルタインデックス格納部３０４に保存する。例えば、フィルタインデックス算出部３０３は、図５に示すように、代表フィルタＦ−２−１と、当該代表フィルタＦ−２−１と同じグループＧ１にクラスタリングされたフィルタＦ−１−１が属するフィルタブロックＦ−１と、当該フィルタブロックＦ−１においてフィルタＦ−１−１を適用する順番（１番目）と、をフィルタインデックスとして算出する。
【００６９】
次に、図６を用いて、本実施形態にかかる車両が有するＥＣＵ２０３によるＣＮＮの軽量化処理の流れの一例について説明する。図６は、本実施形態にかかる車両が有するＥＣＵによるＣＮＮの軽量化処理の流れの一例を示すフローチャートである。
【００７０】
まず、ＥＣＵ２０３は、ＣＮＮによる画像処理を実行する画像データを予め入力画像格納部３１１に保存する（ステップＳ６０１）。前処理部３１２は、入力画像格納部３１１に記憶される画像データに対して、ＣＮＮに必要な前処理を実行する（ステップＳ６０２）。
【００７１】
畳込み演算部３１３は、代表フィルタ格納部３１６に記憶される代表フィルタおよびフィルタインデックス格納部３１７に記憶されるフィルタインデックスに基づいて、前処理を実行した画像データに対して畳込み演算を実行する（ステップＳ６０３）。
【００７２】
具体的には、畳込み演算部３１３は、代表フィルタおよびフィルタインデックスに基づいて、フィルタを代表フィルタにより置き換えたフィルタブロックを生成する。次いで、畳込み演算部３１３は、生成したフィルタブロック（言い換えると、代表フィルタにより構成されるフィルタブロック）を用いて、前処理を実行した画像データに対して畳込み演算を実行する。これにより、ＥＣＵ２０３が、畳込み演算に用いるフィルタブロックを構成する全てのフィルタを記憶する必要が無くなるので、畳込み層を効率的に軽量化することができる。
【００７３】
特徴量処理部３１４は、畳込み演算部３１３における畳込み演算によって抽出された画像データの特徴量に基づいて、後処理を実行する（ステップＳ６０４）。そして、特徴量処理部３１４は、後処理の実行結果を出力データとして出力データ格納部３１５に保存する（ステップＳ６０５）。
【００７４】
このように、本実施形態にかかるサーバ１００および車両によれば、畳込み演算を行うＥＣＵ２０３が、畳込み演算に用いるフィルタブロックを構成する全てのフィルタを記憶する必要が無くなるので、畳込み層を効率的に軽量化することができる。
【符号の説明】
【００７５】
１００  サーバ
１０１，２０３ａ  ＣＰＵ
１０２，２０３ｂ  ＲＯＭ
１０３，２０３ｃ  ＲＡＭ
１０４  通信Ｉ／Ｆ
１０５  入出力Ｉ／Ｆ
１０６，２０３ｄ  ＳＳＤ
１０７  データバス
２０１  車載カメラ
２０２  ドライバモニタカメラ
２０３  ＥＣＵ
２０４  表示装置
３０１  全フィルタ格納部
３０２  フィルタクラスタリング部
３０２ａ  初期代表フィルタ生成部
３０２ｂ  確率的勾配算出部
３０２ｃ  代表フィルタ更新部
３０３  フィルタインデックス算出部
３０４，３１７  フィルタインデックス格納部
３０５，３１６  代表フィルタ格納部
３１１  入力画像格納部
３１２  前処理部
３１３  畳込み演算部
３１４  特徴量処理部
３１５  出力データ格納部
【図１】
2020087288.tif 000003
【図２】
2020087288.tif 000004
【図３】
2020087288.tif 000005
【図４】
2020087288.tif 000006
【図５】
2020087288.tif 000007
【図６】
2020087288.tif 000008