(57)【要約】      （修正有）【課題】ＤＮＮが有する畳込み層を高速化することを可能とする。【解決手段】ＤＮＮ高速化装置は、深層ディープニューラルネットワークを高速化するWinogradアルゴリズムにおける行列Ａ、Ｂ、Ｇを最適化する評価関数Ｖを算出する評価関数算出部と、評価関数Ｖが最小となる行列Ａ、Ｂ、Ｇを算出する最適化問題求解部と、最適化問題求解部により算出した行列Ａ、Ｂ、Ｇを記憶する行列格納部と、を備える。【選択図】図４
2020087335.tif 000002
【特許請求の範囲】
【請求項１】
深層ディープニューラルネットワークを高速化する下記の式（１）に示すWinogradアルゴリズムにおける行列Ａ，Ｂ，Ｇを最適化する下記の式（２）に示す評価関数Ｖを算出する評価関数算出部と、
前記評価関数Ｖが最小となる前記行列Ａ，Ｂ，Ｇを算出する最適化問題求解部と、
前記最適化問題求解部により算出した前記行列Ａ，Ｂ，Ｇを記憶する行列格納部と、
を備えるＤＮＮ高速化装置。
【数１】
2020087335.tif 000020
【数２】
2020087335.tif 000021
上記の式（１）において、ｘは信号を表し、ｆは深層ディープニューラルネットワークの畳込み演算で用いるフィルタを表す。また、上記の式（２）において、ｅｉは深層ディープニューラルネットワークの畳込み演算で用いるフィルタを表し、ｅｊは信号を表す。
【請求項２】
前記評価関数算出部は、下記の式（３）に示す前記評価関数Ｖを算出し、
前記最適化問題求解部は、近接勾配法によって、前記評価関数Ｖが最小となる前記行列Ａ，Ｂ，Ｇを算出する請求項１に記載のＤＮＮ高速化装置。
【数３】
2020087335.tif 000022
上記の式（３）において、||A||1、||B||1、||G||1、||A||2、||B||2、||G||2は、前記行列Ａ，Ｂ，ＧそれぞれのＬ１ノルムおよびＬ２ノルムであり、λ１、λ２は、予め設定された定数である。
【請求項３】
下記の式（４）に示す評価関数Ｖが最小となる、深層ディープニューラルネットワークを高速化する下記の式（５）に示すWinogradアルゴリズムにおける行列演算の行列Ａ，Ｂ，Ｇを記憶する行列格納部と、
前記行列格納部に記憶される前記行列Ａ，Ｂ，Ｇを含む下記の式（５）に示すWinogradアルゴリズムの行列演算に従って、画像データに対して畳込み演算を実行する畳込み演算部と、
を備えるＤＮＮ高速化装置。
【数４】
2020087335.tif 000023
【数５】
2020087335.tif 000024
上記の式（４）において、ｅｉは深層ディープニューラルネットワークの畳込み演算で用いるフィルタを表し、ｅｊは信号を表す。上記の式（５）において、ｘは信号を表し、ｆは深層ディープニューラルネットワークの畳込み演算で用いるフィルタを表す。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ＤＮＮ高速化装置に関する。
【背景技術】
【０００２】
深層ニューラルネットワーク（以下、ＤＮＮと言う）を高速化する手法として、Winogradアルゴリズムがある。Winogradアルゴリズムは、下記の式（１）に示す信号ｘと、下記の式（２）に示すフィルタｆと、による式（３）に示す畳込み演算を、下記の式（４）に示す行列演算によって代替することにより、畳込み演算を高速化する手法である。
【数１】
2020087335.tif 000003
【数２】
2020087335.tif 000004
【数３】
2020087335.tif 000005
【数４】
2020087335.tif 000006
【０００３】
具体的には、Winogradアルゴリズムは、信号ｘとフィルタｆに対して、式（２）と式（３）とが等価となる行列Ａ，Ｂ，Ｇを求めるアルゴリズムである。Winogradアルゴリズムによれば、式（３）に示す畳込み演算と比較して、演算の回数が減るため、畳込み演算を高速化することができる。
【先行技術文献】
【特許文献】
【０００４】
【非特許文献１】A.Lavin、他１名、“Fast  Algorithms  for  Convolutional  Neural  Networks”、［online］、平成２７年１１月１０日、arXiv、［平成３０年１０月１９日検索］インターネット＜https://arxiv.org/＞
【非特許文献２】B.Barabasz、他２名、“Improving  accuracy  of  Winograd  convolution  for  DNNs”、［online］、平成３０年９月２２日、arXiv、［平成３０年１０月１９日検索］インターネット＜https://arxiv.org/＞
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、Winogradアルゴリズムは、信号ｘやフィルタｆの長さが無くなると、対応できなくなる。具体的には、Winogradアルゴリズムは、信号ｘやフィルタｆの長さが長くなると、行列Ａ，Ｂ，Ｇが階乗的に大きくなってしまい、数値演算ができなくなる。
【０００６】
また、Winogradアルゴリズムは、畳込みにストライドが有った場合に、対応できなくなる。ここで、畳込みのストライドとは、信号ｘおよびフィルタｆを平行移動する際の移動量である。通常の畳込み演算では、ストライドは１であるが、ＤＮＮにおける畳込み演算では、ストライドが２以上となる場合がある。ストライドが２以上の場合、ストライドが１の場合と比較して、演算量が少なくなることが期待されるが、Winogradアルゴリズムにおいては、ストライドが２以上になることによる演算量の削減効果は期待できない。具体的には、Winogradアルゴリズムは、多項式イデアルに基づいて畳込み演算の高速化を図っているが、ストライドが存在する場合、畳込み演算を多項式イデアルにより適切に表現できないためである。
【０００７】
そこで、実施形態の課題の一つは、ＤＮＮが有する畳込み層を高速化することが可能なＤＮＮ高速化装置を提供することである。
【課題を解決するための手段】
【０００８】
実施形態のＤＮＮ高速化装置は、一例として、深層ディープニューラルネットワークを高速化する下記の式（５）に示すWinogradアルゴリズムにおける行列Ａ，Ｂ，Ｇを最適化する下記の式（６）に示す評価関数Ｖを算出する評価関数算出部と、評価関数Ｖが最小となる行列Ａ，Ｂ，Ｇを算出する最適化問題求解部と、最適化問題求解部により算出した行列Ａ，Ｂ，Ｇを記憶する行列格納部と、を備える。よって、一例として、ＤＮＮが有する畳込み層を高速化することができる。
【数５】
2020087335.tif 000007
【数６】
2020087335.tif 000008
上記の式（５）において、ｘは信号を表し、ｆは深層ディープニューラルネットワークの畳込み演算で用いるフィルタを表す。また、上記の式（６）において、ｅｉは深層ディープニューラルネットワークの畳込み演算で用いるフィルタを表し、ｅｊは信号を表す。
【０００９】
また、実施形態のＤＮＮ高速化装置は、一例として、評価関数算出部は、下記の式（７）に示す評価関数Ｖを算出し、最適化問題求解部は、近接勾配法によって、評価関数Ｖが最小となる前記行列Ａ，Ｂ，Ｇを算出する。よって、一例として、Winogradアルゴリズムにおける行列演算の行列Ａ，Ｂ，Ｇの各要素が大きくなり過ぎることを抑制することができる。
【数７】
2020087335.tif 000009
上記の式（７）において、||A||1、||B||1、||G||1、||A||2、||B||2、||G||2は、行列Ａ，Ｂ，ＧそれぞれのＬ１ノルムおよびＬ２ノルムであり、λ１、λ２は、予め設定された定数である。
【００１０】
また、実施形態のＤＮＮ高速化装置は、一例として、下記の式（８）に示す評価関数Ｖが最小となる、深層ディープニューラルネットワークを高速化する下記の式（９）に示すWinogradアルゴリズムにおける行列演算の行列Ａ，Ｂ，Ｇを記憶する行列格納部と、行列格納部に記憶される行列Ａ，Ｂ，Ｇを含む下記の式（９）に示すWinogradアルゴリズムの行列演算に従って、入力される画像データに対して畳込み演算を実行する畳込み演算部と、を備える。よって、一例として、ＤＮＮが有する畳込み層を高速化することができる。
【数８】
2020087335.tif 000010
【数９】
2020087335.tif 000011
上記の式（８）において、ｅｉは深層ディープニューラルネットワークの畳込み演算で用いるフィルタを表し、ｅｊは信号を表す。上記の式（９）において、ｘは信号を表し、ｆは深層ディープニューラルネットワークの畳込み演算で用いるフィルタを表す。
【図面の簡単な説明】
【００１１】
【図１】図１は、第１の実施形態にかかるサーバのハードウェア構成の一例を示すブロック図である。
【図２】図２は、第１の実施形態にかかる車両に搭載される車両制御システムのシステム構成の一例を示すブロック図である。
【図３】図３は、第１の実施形態にかかるサーバおよびＥＣＵの機能構成の一例を示すブロック図である。
【図４】図４は、第１の実施形態にかかるサーバによるＤＮＮの高速化処理の流れの一例を示すフローチャートである。
【図５】図５は、第１の実施形態にかかる車両が有するＥＣＵによるＤＮＮの流れの一例を示すフローチャートである。
【図６】図６は、第２の実施形態にかかるサーバおよびＥＣＵの機能構成の一例を示すブロック図である。
【発明を実施するための形態】
【００１２】
以下、本発明の例示的な実施形態が開示される。以下に示される実施形態の構成、ならびに当該構成によってもたらされる作用、結果、および効果は、一例である。本発明は、以下の実施形態に開示される構成以外によって実現可能であるとともに、基本的な構成に基づく種々の効果や、派生的な効果のうち、少なくとも１つを得ることが可能である。
【００１３】
（第１の実施形態）
まず、図１を用いて、本実施形態にかかる車両における深層ニューラルネットワーク（以下、ＤＮＮと言う）を用いた画像処理の高速化に関わるサーバのハードウェア構成について説明する。
【００１４】
図１は、第１の実施形態にかかるサーバのハードウェア構成の一例を示すブロック図である。図１に示すように、本実施形態にかかるサーバ１００は、ＰＣ（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）が設けられてもよいし、ＳＳＤ２０３ｄやＨＤＤは、ＥＣＵ２０３とは別に設けられてもよい。
【００３０】
ところで、ＤＮＮを高速化する手法として、Winogradアルゴリズムが開示されている。しかしながら、Winogradアルゴリズムは、信号やフィルタの長さが長くなると、高速化に対応することが難しい。具体的には、Winogradアルゴリズムは、信号やフィルタの長さが長くなると、ＤＮＮの信号およびフィルタを代替するWinogradアルゴリズムの行列演算の行列の要素が階乗的に大きくなり、数値演算ができなくなる。
【００３１】
また、Winogradアルゴリズムは、多項式イデアルに基づいて畳込み演算の高速化を図っているが、ＤＮＮに含まれる畳込み演算におけるストライドが２以上である場合、畳込み演算を多項式イデアルによって適切に表現できない。そのため、Winogradアルゴリズムは、ストライドが１の場合と比較して、ストライドが２以上の場合、畳込み演算の演算量の削減効果が期待できない。
【００３２】
そこで、本実施形態では、サーバ１００およびＥＣＵ２０３に対して以下のような機能を持たせることで、ＤＮＮを高速化することを実現する。本実施形態では、サーバ１００およびＥＣＵ２０３それぞれが、ＤＮＮ高速化装置の一例として機能する。本実施形態では、サーバ１００をＤＮＮ高速化装置の一例として用いているが、これに限定するものではなく、ワークステーション等の演算装置をＤＮＮ高速化装置として用いることも可能である。
【００３３】
次に、図３を用いて、本実施形態にかかるサーバ１００およびＥＣＵ２０３の機能構成の一例について説明する。図３は、第１の実施形態にかかるサーバおよびＥＣＵの機能構成の一例を示すブロック図である。図３に示すサーバ１００およびＥＣＵ２０３において実現される機能は、ソフトウェアとハードウェアとの協働によって実現される。つまり、図３に示す例において、サーバ１００の機能は、ＣＰＵ１０１がＲＯＭ１０２などに記憶されたプログラムを読み出して実行した結果として実現され、ＥＣＵ２０３の機能は、ＣＰＵ２０３ａがＲＯＭ２０３ｂなどに記憶されたプログラムを読み出して実行した結果として実現される。図３に示すサーバ１００およびＥＣＵ２０３の機能の一部または全部が専用のハードウェア（回路）によって実現されても良い。
【００３４】
図３に示すように、本実施形態にかかるサーバ１００は、機能構成として、評価関数算出部３０１、最適化問題求解部３０２、および行列格納部３０３を有している。
【００３５】
評価関数算出部３０１は、ＤＮＮを高速化するWinogradアルゴリズムにおける行列演算（下記の式（１０）に示す）の行列Ａ，Ｂ，Ｇを最適化する評価関数Ｖ（下記の式（１１）に示す）を算出する。下記の式（１０）において、ｘは信号（画像データ）を表し、ｆはＤＮＮの畳込み演算で用いるフィルタを表す。また、下記の式（１１）において、ｅｉはフィルタを表し、ｅｊは信号を表す。
【数１０】
2020087335.tif 000012
【数１１】
2020087335.tif 000013
【００３６】
本実施形態では、評価関数算出部３０１は、誤差項算出部３０１ａを含む。誤差項算出部３０１ａは、上記の式（１１）に示す評価関数Ｖが含む、ＤＮＮが含む畳込み演算のストライドを考慮した誤差項（上記の式（１１）に示す評価関数Ｖの第１項）を算出する。
【００３７】
最適化問題求解部３０２は、評価関数Ｖが最小となる行列Ａ，Ｂ，Ｇを算出する。ここで、評価関数Ｖが含む誤差項が十分に０に近くなると、行列Ａ，Ｂ，Ｇは、ＤＮＮが含む畳込み演算（上記の式（３）で示す）と、Winogradアルゴリズムの行列演算（上記の式（１０）で示す）とを等価にする行列になる。
【００３８】
これにより、信号やフィルタの長さが長くなると行列演算の行列の要素が階乗的に大きくなる演算ができなくなる点、およびストライドが２以上の場合に演算量が削減されない点などのWinogradアルゴリズムの弱点を克服する仕組みを明示的に組み込むことができるので、ＤＮＮが有する畳込み層を高速化することができる。
【００３９】
本実施形態では、最適化問題求解部３０２は、下記の式（１２）で示す操作を繰り返すことにより、最適な行列Ａ，Ｂ，Ｇを求めることができる。
【数１２】
2020087335.tif 000014
ここで、行列Ａ，Ｂ，Ｇは、下記の式（１３）を満たすものとする。
【数１３】
2020087335.tif 000015
上記の式（１２）のＸ†は、行列Ｘ（行列Ａ、行列Ｂ、または行列Ｇ）のMoor-Penroseの一般化行列を表す。上記の式（１２）で示す各操作は、行列Ｂ，Ｇを定数とみなした場合の行列Ａの最適値、行列Ａ，Ｇを定数とみなした場合の行列Ｂの最適値、および行列Ａ，Ｂを定数とみなした場合の行列Ｇの最適値を算出処理に相当する。
【００４０】
すなわち、上記の式（１１）で示す評価関数Ｖを、行列Ａ，Ｂ，Ｇに対して同時に最適化することは困難なため、行列Ａ，Ｂ，Ｇのいずれか１つのみを変数とみなした場合の各行列Ａ，Ｂ，Ｇの最適値を求める操作を繰り返す。これにより、最終的に、評価関数Ｖを最適化する行列Ａ，Ｂ，Ｇを求める。
【００４１】
行列格納部３０３は、ＳＳＤ１０６等の書き換え可能な不揮発性の記憶媒体により実現され、最適化問題求解部３０２により算出された行列Ａ，Ｂ，Ｇを記憶する。
【００４２】
次に、図３を用いて、本実施形態にかかるＥＣＵ２０３の機能構成について説明する。本実施形態にかかるＥＣＵ２０３は、機能構成として、入力画像格納部３１１、畳込み演算部３１２、出力データ格納部３１３、行列格納部３１４、前処理部３１５、および特徴量処理部３１６を有している。
【００４３】
入力画像格納部３１１は、ＳＳＤ２０３ｄ等の書き換え可能な不揮発性の記憶媒体により実現され、ＥＣＵ２０３においてＤＮＮを用いた画像処理を実行する画像データを記憶する。本実施形態では、入力画像格納部３１１は、車載カメラ２０１またはドライバモニタカメラ２０２の撮像により得られる画像データを記憶する。
【００４４】
本実施形態では、入力画像格納部３１１は、ＤＮＮを用いた画像処理を実行する画像データとして、車載カメラ２０１またはドライバモニタカメラ２０２の撮像により得られる画像データを記憶しているが、これに限定するものではない。例えば、入力画像格納部３１１は、車両が有するＬＩＤＡＲ（Light  Detection  and  Ranging）、ＴＯＦ（Time  Of  Flight）カメラ、ミリ波レーダー、超音波センサ等によって計測した車両と周辺の物体との間の距離の測定結果を表す画像データを記憶しても良い。
【００４５】
行列格納部３１４は、ＳＳＤ２０３ｄやＲＯＭ２０３ｂ等の不揮発性の記憶媒体により実現され、サーバ１００の行列格納部３０３に記憶される行列Ａ，Ｂ，Ｇを記憶する。本実施形態では、行列格納部３１４には、ＥＣＵ２０３を出荷する際に、サーバ１００により算出される行列Ａ，Ｂ，Ｇが保存される。
【００４６】
前処理部３１５は、入力画像格納部３１１に記憶される画像データに対して、ＥＣＵ２０３において実行するＤＮＮに必要な前処理を実行する。ここで、前処理は、例えば、画像データのサイズに調整や、画像データに含まれるノイズの除去等である。
【００４７】
畳込み演算部３１２は、畳込み層の畳込み演算を含むＤＮＮを実行する。具体的には、畳込み演算部３１２は、行列格納部３１４に記憶される行列Ａ，Ｂ，Ｇを含む上記の式（４）に示すWinogradアルゴリズムの行列演算に従って、入力画像格納部３１１に記憶される画像データに対して畳込み演算処理を実行する。
【００４８】
これにより、信号やフィルタの長さが長くなると行列演算の行列の要素が階乗的に大きくなる演算ができなくなる点、およびストライドが２以上の場合に演算量が削減されない点などのWinogradアルゴリズムの弱点を克服する仕組みを明示的に組み込むことができるので、ＤＮＮが有する畳込み層を高速化することができる。
【００４９】
特徴量処理部３１６は、畳込み演算部３１２における畳込み演算によって抽出される画像データの特徴量に基づいて、ＤＮＮに含まれる畳込み演算以外の処理（以下、後処理と言う。例えば、プーリング層や、全結合層、出力層）を実行する。
【００５０】
そして、特徴量処理部３１６は、後処理の実行結果（例えば、画像データに含まれる顔画像が笑顔か否かの判定結果、画像データに含まれる人物の肩や腕の位置の判定結果、画像データに含まれる腕の形状、車両の走行位置の判定結果、車両が駐車可能な否かの判定結果）を出力データとして出力データ格納部３１３に保存する。出力データ格納部３１３は、ＳＳＤ２０３ｄ等の書き換え可能な不揮発性の記憶媒体により実現される。
【００５１】
次に、図４を用いて、本実施形態にかかるサーバ１００によるＤＮＮの高速化処理の流れの一例について説明する。図４は、第１の実施形態にかかるサーバによるＤＮＮの高速化処理の流れの一例を示すフローチャートである。
【００５２】
まず、評価関数算出部３０１は、Winogradアルゴリズムにおける行列演算の行列Ａ，Ｂ，Ｇを最適化する評価関数Ｖを算出する（ステップＳ４０１）。
【００５３】
次いで、最適化問題求解部３０２は、評価関数算出部３０１により算出される評価関数Ｖが最小となる行列Ａ，Ｂ，Ｇを算出する（ステップＳ４０２）。
【００５４】
そして、最適化問題求解部３０２は、算出した行列Ａ，Ｂ，Ｇを行列格納部３０３に保存する（ステップＳ４０３）。
【００５５】
次に、図５を用いて、本実施形態にかかる車両が有するＥＣＵ２０３によるＤＮＮの流れの一例について説明する。図５は、第１の実施形態にかかる車両が有するＥＣＵによるＤＮＮの流れの一例を示すフローチャートである。
【００５６】
まず、ＥＣＵ２０３は、ＤＮＮによる画像処理を実行する画像データを予め入力画像格納部３１１に保存する（ステップＳ５０１）。
【００５７】
前処理部３１５は、入力画像格納部３１１に記憶される画像データに対して、ＥＣＵ２０３において実行するＤＮＮに必要な前処理を実行する（ステップＳ５０２）。
【００５８】
畳込み演算部３１２は、行列格納部３１４に記憶される行列Ａ，Ｂ，Ｇを用いたWinogradアルゴリズムの行列演算に従って、前処理が実行された画像データに対して畳込み演算を含むＤＮＮを実行する（ステップＳ５０３）。
【００５９】
特徴量処理部３１６は、畳込み演算部３１２における畳込み演算によって抽出される画像データの特徴量に基づいて、後処理を実行する（ステップＳ５０４）。
【００６０】
そして、特徴量処理部３１６は、ＤＮＮの実行結果を出力データとして出力データ格納部３１３に保存する（ステップＳ５０５）。
【００６１】
このように、第１の実施形態にかかるサーバ１００および車両によれば、信号やフィルタの長さが長くなると行列演算の行列の要素が階乗的に大きくなる演算ができなくなる点、およびストライドが２以上の場合に演算量が削減されない点などのWinogradアルゴリズムの弱点を克服する仕組みを明示的に組み込むことができるので、ＤＮＮが有する畳込み層を高速化することができる。
【００６２】
（第２の実施形態）
本実施形態は、近接勾配法によって、評価関数が最小となる行列Ａ，Ｂ，Ｇを算出する例である。以下の説明では、第１の実施形態と同様の構成については説明を省略する。
【００６３】
図６は、第２の実施形態にかかるサーバおよびＥＣＵの機能構成の一例を示すブロック図である。図６に示すように、本実施形態にかかるサーバ６００は、機能構成として、評価関数算出部６０２、最適化問題求解部６０１、および行列格納部３０３を有している。
【００６４】
評価関数算出部６０２は、下記の式（１４）に示す評価関数Ｖを算出する。下記の式（１４）において、||A||1、||B||1、||G||1、||A||2、||B||2、||G||2は、下記の式（１５）に示すように、それぞれの行列Ｘ（行列Ａ、行列Ｂ、または行列Ｇ）のＬ１ノルムおよびＬ２ノルムを表す。また、下記の式（１４）のλ１，λ２は、予め設定された定数である。
【数１４】
2020087335.tif 000016
【数１５】
2020087335.tif 000017
【００６５】
本実施形態では、評価関数算出部６０２は、誤差項算出部３０１ａに加えて、正則化項算出部６０２ａを有する。正則化項算出部６０２ａは、上記の式（１４）に示す評価関数Ｖのうち、Winogradアルゴリズムにおける行列演算の行列Ａ，Ｂ，Ｇの各要素が大きくなり過ぎることを抑制するための正則化項（上記の式（１４）に示す評価関数Ｖの第２，３項）を算出する。
【００６６】
上記の式（１４）で示す評価関数Ｖを最小化する際、様々な最適化手法を適用可能であるが、本実施形態では、最適化問題求解部６０１は、近接勾配法によって、評価関数Ｖが最小となる行列Ａ，Ｂ，Ｇを算出する。また、最適化問題求解部６０１は、下記の式（１６）を用いて、評価関数Ｖのうち微分可能な項（評価関数Ｖの第１項および第３項）の勾配を算出する。
【数１６】
2020087335.tif 000018
ここで、行列Ａ，Ｂ，Ｇは、下記の式（１７）を満たすものとする。
【数１７】
2020087335.tif 000019
【００６７】
これにより、第２の実施形態にかかるサーバ６００によれば、Winogradアルゴリズムにおける行列演算の行列Ａ，Ｂ，Ｇの各要素が大きくなり過ぎることを抑制することができる。
【符号の説明】
【００６８】
１００  サーバ
１０１，２０３ａ  ＣＰＵ
１０２，２０３ｂ  ＲＯＭ
１０３，２０３ｃ  ＲＡＭ
１０４  通信Ｉ／Ｆ
１０５  入出力Ｉ／Ｆ
１０６，２０３ｄ  ＳＳＤ
１０７  データバス
２０１  車載カメラ
２０２  ドライバモニタカメラ
２０３  ＥＣＵ
２０４  表示装置
３０１，６０２  評価関数算出部
３０１ａ  誤差項算出部
６０２ａ  正則化項算出部
３０２，６０１  最適化問題求解部
３０３，３１４  行列格納部
３１１  入力画像格納部
３１２  畳込み演算部
３１３  出力データ格納部
３１５  前処理部
３１６  特徴量処理部
【図１】
2020087335.tif 000025
【図２】
2020087335.tif 000026
【図３】
2020087335.tif 000027
【図４】
2020087335.tif 000028
【図５】
2020087335.tif 000029
【図６】
2020087335.tif 000030