(57)【要約】【課題】推論処理に必要なメモリの容量を低減できるようにする。【解決手段】処理対象データに対して、推論処理を実行する処理装置１００において、推論処理を構成する複数の処理レイヤー（レイヤー１〜レイヤーＮ）におけるそれぞれの部分処理を実行する複数の処理部（１１−１〜１１−ｎ）と、推論処理を構成する複数の処理レイヤーにおける部分処理に使用される処理係数に対応する処理係数情報が処理レイヤーの実行順に従って並べられたストリームデータを取得し、ストリームデータから処理係数情報を取出し、処理係数情報に対応する処理係数を使用する処理部（１１−１〜１１−ｎ）に対して、処理係数情報に対応する処理係数を供給する処理制御部１０と、を備えるように構成する。【選択図】図１
2020123384.tif 000002
【特許請求の範囲】
【請求項１】
処理対象データに対して、推論処理を実行する処理装置であって、
前記推論処理を構成する複数の処理レイヤーにおけるそれぞれの部分処理を実行する複数の部分処理部と、
少なくとも１以上の前記部分処理部において使用される処理係数を圧縮した圧縮処理係数を記憶するメモリ部と、
前記推論処理における第１部分処理を実行する際に、前記第１部分処理を実行する第１部分処理部が使用する処理係数に対応する圧縮処理係数を前記メモリ部から読み出す読出制御部と、
読み出された前記圧縮処理係数を伸長し、伸長した処理係数を前記第１部分処理部に渡す伸長処理部と、
を備える処理装置。
【請求項２】
前記読出制御部は、前記第１部分処理部からの前記処理係数の要求に基づいて、前記メモリ部から前記圧縮処理係数を読み出し、
前記第１部分処理部は、前記第１部分処理部による前記第１部分処理を実行する直前、または、比較的近い処理レイヤーの処理が実行されている場合に、前記処理係数の要求を行う
請求項１に記載の処理装置。
【請求項３】
処理対象データに対して、推論処理を実行する処理装置による推論処理方法であって、
前記処理装置は、前記推論処理を構成する複数の処理レイヤーにおけるそれぞれの部分処理を実行する複数の部分処理部と、少なくとも１以上の前記部分処理部において使用される処理係数を圧縮した圧縮処理係数を記憶するメモリ部とを有しており、
前記推論処理における第１部分処理を実行する際に、前記第１部分処理を実行する第１部分処理部が使用する処理係数に対応する圧縮処理係数を前記メモリ部から読み出し、
読み出された前記圧縮処理係数を伸長し、伸長した処理係数を前記第１部分処理部に渡す
推論処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、画像認識等の推論処理を実行する処理装置等に関する。
【背景技術】
【０００２】
従来、画像認識等の推論処理を行うために、畳み込みニューラルネットワーク（ＣＮＮ：Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ）を実装した計算機が用いられている。計算機においてＣＮＮを実装する場合においては、ディープラーニング等によって予め得られたＣＮＮで使用する係数を含む学習済みデータを計算機のメインメモリに無歪（非圧縮）の状態で格納させるか、或いは、単純なベクトル量子化された状態で格納させている。
【０００３】
例えば、学習済みデータは、ネットワークを介して計算機に対して提供される場合がある。学習済みデータは、例えば、無歪の状態であれば、２００ＭＢ等のように比較的データサイズが大きいので、ネットワークを介して送信すると、ネットワークに負荷がかかると共に、送信コストが高くなるという問題がある。
【０００４】
これに対して、例えば、学習済みデータを圧縮して送信する技術が提案されている（例えば、非特許文献１参照）。
【０００５】
なお、ノイマン型の計算機と異なるニューロコンピュータにおいて、メモリ空間を有効活用する技術として、従来のニューロコンピュータに、主メモリユニット、圧縮ユニット、展開ユニットを付加し、１６ビットの重み値入力データを４段階に分類し、出現頻度の高い順に低位ビットに割当てることにより、データ圧縮を行う技術が知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平６−１７６０００号公報
【非特許文献】
【０００７】
【非特許文献１】Ｄｅｅｐ−Ｃｏｍｐｒｅｓｓｉｏｎ−ＡｌｅｘＮｅｔ、インターネット（URL:https://github.com/songhan/Deep-Compression-AlexNet）
【発明の概要】
【発明が解決しようとする課題】
【０００８】
例えば、非特許文献１による技術によると、ネットワークにおける学習済みデータの転送を比較的高速に行うことができるようになる。しかしながら、計算機において推論処理を行う場合においては、推論処理に使用する学習済みデータの全てを無歪の状態としてメモリ上に展開させることとなるので、多くのメモリが消費されてしまう。
【０００９】
本発明は、上記事情に鑑みなされたものであり、その目的は、推論処理に必要なメモリの容量を低減させることのできる技術を提供することにある。
【課題を解決するための手段】
【００１０】
上記目的を達成するため、第１の観点に係る処理装置は、処理対象データに対して、推論処理を実行する処理装置であって、推論処理を構成する複数の処理レイヤーにおけるそれぞれの部分処理を実行する複数の部分処理部と、推論処理を構成する複数の処理レイヤーにおける部分処理に使用される処理係数に対応する処理係数情報が処理レイヤーの実行順に従って並べられたストリームデータを取得するストリームデータ取得部と、ストリームデータから処理係数情報を取出し、処理係数情報に対応する処理係数を使用する部分処理部に対して、処理係数情報に対応する処理係数を供給する処理係数供給部と、を備える。
【００１１】
上記処理装置において、ストリームデータにおける少なくとも一部の処理係数情報は、処理係数が圧縮された圧縮処理係数であり、処理係数供給部は、圧縮処理係数を伸長し、伸長された処理係数を部分処理部に供給するようにしてもよい。
【００１２】
また、上記処理装置において、ストリームデータは、複数の処理レイヤーにおけるそれぞれの部分処理を特定する部分処理特定情報を含み、ストリームデータの部分処理特定情報に基づいて、部分処理を実行する部分処理部を構築する部分処理部構築部をさらに有するようにしてもよい。
【００１３】
また、上記処理装置において、ストリームデータは、圧縮処理係数における処理係数の圧縮方法を示す圧縮情報を含み、処理係数供給部は、圧縮情報に基づいて、圧縮処理係数を伸長するようにしてもよい。
【００１４】
また、上記処理装置において、処理係数は、２次元平面の各領域に対応する値を含むフィルタデータを含み、フィルタデータを圧縮させた圧縮処理係数は、フィルタデータを予測符号化した圧縮フィルタデータであり、圧縮情報には、フィルタデータを予測符号化した際に使用した予測方向を示す予測方向情報を含み、処理係数供給部は、予測方向情報が示す予測方向に基づいて、圧縮フィルタデータを伸長するようにしてもよい。
【００１５】
また、上記処理装置において、複数の部分処理部は、畳み込み処理を実行する畳込処理部を含み、処理係数は、畳み込み処理に使用する複数のフィルタのデータであってもよい。
【００１６】
また、上記処理装置において、画像処理の実行に適した画像処理プロセッサを備え、畳込処理部は、画像処理プロセッサを用いて構成されていてもよい。
【００１７】
また、上記処理装置において、複数の部分処理部は、直前の処理レイヤーの部分処理部の処理結果のすべてを入力として処理を行う全結合処理部を含み、処理係数は、全結合処理部に入力される処理結果のそれぞれに対する重み付けの係数であってもよい。
【００１８】
また、上記処理装置において、ストリームデータは、通信ネットワークを介して外部装置から受信されてもよい。
【００１９】
また、上記目的を達成するため、第２の観点に係る処理装置は、処理対象データに対して、推論処理を実行する処理装置であって、推論処理を構成する複数の処理レイヤーにおけるそれぞれの部分処理を実行する複数の部分処理部と、少なくとも１以上の部分処理部において使用される処理係数を圧縮した圧縮処理係数を記憶するメモリ部と、推論処理における第１部分処理を実行する際に、第１部分処理を実行する第１部分処理部が使用する処理係数に対応する圧縮処理係数をメモリ部から読み出す読出制御部と、読み出された圧縮処理係数を伸長し、伸長した処理係数を第１部分処理部に渡す伸長処理部と、を備える。
【００２０】
また、上記目的を達成するため、第３の観点に係る推論処理方法は、処理対象データに対して、推論処理を実行する処理装置による推論処理方法であって、処理装置には、推論処理を構成する複数の処理レイヤーにおけるそれぞれの部分処理を実行する複数の部分処理部が構築され、推論処理を構成する複数の処理レイヤーにおける部分処理に使用される処理係数に対応する処理係数情報を前記処理レイヤーの実行順に従って並べたストリームデータを取得し、ストリームデータの先頭から順に処理係数情報を取出し、処理係数情報に対応する処理係数を使用する部分処理部に対して、処理係数情報に基づく処理係数を供給する。
【００２１】
また、上記目的を達成するため、第４の観点に係る推論処理方法は、処理対象データに対して、推論処理を実行する処理装置による推論処理方法であって、処理装置は、推論処理を構成する複数の処理レイヤーにおけるそれぞれの部分処理を実行する複数の部分処理部と、少なくとも１以上の部分処理部において使用される処理係数を圧縮した圧縮処理係数を記憶するメモリ部とを有しており、推論処理における第１部分処理を実行する際に、第１部分処理を実行する第１部分処理部が使用する処理係数に対応する圧縮処理係数をメモリ部から読み出し、読み出された圧縮処理係数を伸長し、伸長した処理係数を第１部分処理部に渡す。
【発明の効果】
【００２２】
本発明によれば、推論処理に必要なメモリの容量を低減できる。
【図面の簡単な説明】
【００２３】
【図１】図１は、第１実施形態に係る処理装置の機能構成図である。
【図２】図２は、第１実施形態に係るストリームデータのフォーマットを説明する図である。
【図３】図３は、第１実施形態に係るストリームヘッダ部と、レイヤーヘッダ部のフォーマットを説明する図である。
【図４】図４は、第１実施形態に係るレイヤー固有情報部のフォーマットを説明する図である。
【図５】図５は、第１実施形態に係る処理装置のハードウェア構成図である。
【図６】図６は、第２実施形態に係る処理装置の機能構成図である。
【図７】図７は、第３実施形態に係る処理装置の機能構成図である。
【発明を実施するための形態】
【００２４】
いくつか実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００２５】
まず、第１実施形態に係る処理装置について説明する。
【００２６】
図１は、第１実施形態に係る処理装置の機能構成図である。
【００２７】
処理装置１００は、処理制御部１０と、１以上の処理部（部分処理部の一例）１１（１１−１〜１１−ｎ）と、１以上のデコーダ１２（１２−１，１２−３，１２−ｎ−１等）とを備える。ここで、処理制御部１０は、ストリームデータ取得部、部分処理部構築部に対応する。処理制御部１０及びデコーダ１２は、処理係数供給部に対応する。
【００２８】
処理装置１００には、推論処理を実行する畳み込みニューラルネットワーク（ＣＮＮ）が実装されている。ＣＮＮは、複数の処理レイヤー（レイヤー）により構成されている。図１の例では、ＣＮＮは、レイヤー１〜レイヤーＮにより構成されている。各レイヤーにおける処理（部分処理）は、各処理部１１によって実行される。ＣＮＮは、例えば、処理対象とする画像データが何を表しているか（例えば、人、犬、猫等の何が含まれているか）を推論する推論処理を実行して推論結果を出力する。ＣＮＮにおけるレイヤー数や、各レイヤーで実行する部分処理の種類は、任意に設定することができる。本実施形態では、レイヤー数や、各レイヤーで実行する部分処理については、後述するストリームデータ５０の内容に応じて変えることができる。
【００２９】
図１に示すＣＮＮを構成するレイヤーにおける部分処理の種類は、一例であるが、図１に示す例では、処理部１１としては、レイヤー１の部分処理を実行する畳込処理部１１−１、レイヤー２の部分処理を実行するＲｅｌｕ処理部１１−２、レイヤー３の部分処理を実行する畳込処理部１１−３、レイヤーＮ−１の部分処理を実行する全結合処理部１１−ｎ−１、レイヤーＮの部分処理を実行するＳｏｆｔＭａｘ処理部１１−ｎ等がある。
【００３０】
畳込処理部１１−１，１１−３は、入力された画像データに対して、複数のフィルタデータ（処理係数の一例）のそれぞれを用いて畳込処理を行う。Ｒｅｌｕ処理部１１−２は、直前のレイヤーで生成された各画像に対して、Ｒｅｌｕ（Ｒｅｃｔｉｆｉｅｄ  Ｌｉｎｅａｒ  Ｕｎｉｔ  Ｒｅｃｔｉｆｉｅｒ：正規化線形関数）を適用する処理（Ｒｅｌｕ処理という）を実行する。全結合処理部１１−ｎ−１は、直前のレイヤーによる複数の結果の全てを入力として複数の重み係数（処理係数の一例）を用いて結合する処理を実行する。
【００３１】
デコーダ１２は、処理制御部１０から渡された圧縮データ（圧縮処理係数：圧縮フィルタデータ、圧縮重みデータ）を伸長し、伸長によって得られたデータ（処理係数）を処理部１１に渡す。
【００３２】
処理制御部１０は、ストリームデータ５０を取得し、ストリームデータ５０に従って、ＣＮＮにおける処理部１１の構築や、ストリームデータ５０中の圧縮データをデコーダ１２に伸長させる制御等を行う。ストリームデータ５０は、例えば、後述するメインメモリ１０２（図５参照）や補助記憶装置１０６（図５参照）から取り出してもよく、通信Ｉ／Ｆ１０５及びネットワークを介して外部装置から受信してもよい。ネットワークを介して外部装置から受信するようにする場合には、ストリームデータ５０の全ての受信が完了する前から、前の方のレイヤーから処理部１１を構築して、ＣＮＮにおける推論処理を開始することができ、必要なデータの全てを受信した後に推論処理を開始する場合に比して、早期に推論処理を完了させることができる。
【００３３】
ここで、処理制御部１０の動作を詳細に説明する前に、ストリームデータ５０のフォーマットについて詳細に説明する。
【００３４】
図２は、第１実施形態に係るストリームデータのフォーマットを説明する図である。図３は、第１実施形態に係るストリームヘッダ部と、レイヤーヘッダ部のフォーマットを説明する図である。図４は、第１実施形態に係るレイヤー固有情報部のフォーマットを説明する図である。
【００３５】
ストリームデータ５０は、ストリームヘッダ部５１と、ＣＮＮを構成する各レイヤーに対応する１以上のレイヤー部５２とを含む。各レイヤー部５２は、ＣＮＮにおけるレイヤーの実行順に従った順番で並んでいる。レイヤー部５２は、レイヤーヘッダ部６１と、レイヤー固有情報部６２と、１以上のチャンネル部６３とを含む。なお、レイヤー部５２に対応するＣＮＮのレイヤーの種別によっては、レイヤー固有情報部６２や、チャンネル部６３が存在しない場合がある。チャンネル部６３は、１以上のチャンネルデータ７１を含む。
【００３６】
ストリームヘッダ部５１は、図３（ａ）に示すように、識別子、バージョン、ヘッダサイズ、ストリームサイズ、レイヤー数、出力ベクトルサイズ、ＣＮＮ入力画像縦幅、ＣＮＮ入力画像横幅、ＣＮＮ入力画像フォーマット、ＣＮＮチャンネル数、フラグ等のフィールドを含む。
【００３７】
識別子フィールドには、ストリームデータ５０を識別する識別子が格納される。バージョンフィールドには、ストリームデータ５０が対応しているバージョンが格納される。ヘッダサイズフィールドには、ストリームヘッダ部５１のサイズ（例えば、８バイト単位）が格納される。ストリームサイズフィールドには、ストリームデータ５０のサイズ（例えば、８バイト単位）が格納される。レイヤー数フィールドには、ストリームデータ５０に対応するＣＮＮのレイヤー数が格納される。出力ベクトルサイズフィールドには、ＣＮＮの結果として出力されるベクトルのサイズが格納される。ＣＮＮ入力画像縦幅フィールドには、ＣＮＮに入力される画像データの縦幅（縦の画素数）が格納される。ＣＮＮ入力画像横幅フィールドには、ＣＮＮに入力される画像データの横幅（横の画素数）が格納される。ＣＮＮ入力画像フォーマットフィールドには、ＣＮＮに入力される画像データのフォーマット（画像フォーマット）を示す情報が格納される。画像フォーマットを示す情報としては、例えば、８ビット整数型を示す“ＦＩＸＥＤ８”や、半精度浮動小数点型（ＦＰ１６）等がある。ＣＮＮ入力チャンネル数フィールドには、ＣＮＮにおける入力チャンネル数（例えば、１つの処理対象として入力される画像データ数等）が格納される。フラグフィールドには、各種情報が含まれる。
【００３８】
レイヤーヘッダ部６１は、図３（ｂ）に示すように、識別子、ヘッダサイズ、レイヤーサイズ、レイヤー種別等のフィールドを含む。識別子フィールドには、レイヤーを識別する識別子が格納される。ヘッダサイズフィールドには、レイヤーヘッダ部６１のサイズ（例えば、８バイト単位）が格納される。レイヤーサイズフィールドには、レイヤー部５２のサイズ（例えば、８バイト単位）が格納される。レイヤー種別フィールドには、ＣＮＮを構成するレイヤーの種別を示す情報（レイヤ種別情報）が格納される。レイヤー種別情報としては、例えば、Ｃｏｎｖｏｌｕｔｉｏｎ（畳込）処理を行うＣｏｎｖｏｌｕｔｉｏｎレイヤーを示す“１”、Ｐｏｏｌｉｎｇ（プーリング）処理を行うｐｏｏｌｉｎｇレイヤーを示す“２”、Ｒｅｌｕ処理を行うＲｅｌｕレイヤーを示す“３”、ＦｕｌｌＣｏｎｎｅｃｔｉｏｎ（全結合）処理を行うＦｕｌｌＣｏｎｎｅｃｔｉｏｎレイヤーを示す“４”、ＳｏｆｔＭａｘ処理を行うＳｏｆｔＭａｘレイヤーを示す“５”がある。
【００３９】
レイヤー固有情報部６２は、例えば、対応するレイヤーヘッド部６１のレイヤー種別フィールドのレイヤー種別が、Ｃｏｎｖｏｌｕｔｉｏｎレイヤー、Ｐｏｏｌｉｎｇレイヤー、ＦｕｌｌＣｏｎｎｅｃｔｉｏｎレイヤーである場合に存在し、レイヤー種別が、Ｒｅｌｕレイヤー、ＳｏｆｔＭａｘレイヤーである場合には、存在しない。
【００４０】
レイヤー種別が、Ｃｏｎｖｏｌｕｔｉｏｎレイヤーである場合のレイヤー固有情報部６２は、図４（ａ）に示すように、入力チャンネル数、出力チャンネル数、ストライド、カーネルサイズ、パディング、重み圧縮方式のフィールドを含む。
【００４１】
入力チャンネル数フィールドには、このレイヤーに入力されるチャンネルの数が格納される。出力チャンネル数フィールドには、このレイヤーから出力されるチャンネルの数が格納される。ストライドフィールドには、畳込処理において畳み込みフィルタを移動させる量（ストライド）が格納される。カーネルサイズフィールドには、畳込処理において使用する畳み込みフィルタのカーネルサイズが格納される。パディングフィールドには、入力されるデータの回りに追加するパディングの量が格納される。重み圧縮方式フィールドには、このレイヤーに使用されるフィルタのデータ（フィルタデータ）に対する圧縮方法を示す情報（圧縮情報）が格納される。本実施形態では、圧縮情報として、無圧縮の場合には“０”とし、Ｐｒｕｎｉｎｇ符号化の場合には、“１”とし、Ｗｅｉｇｈｔ  Ｓｈａｒｉｎｇ符号化の場合には、“２”とし、予測符号化の場合には、“３”としている。
【００４２】
レイヤー種別が、Ｐｏｏｌｉｎｇレイヤーである場合のレイヤー固有情報部６２は、図４（ｂ）に示すように、入力チャンネル数、出力チャンネル数、ストライド、カーネルサイズのフィールドを含む。
【００４３】
入力チャンネル数フィールドには、このレイヤーに入力されるチャンネルの数が格納される。出力チャンネル数フィールドには、このレイヤーから出力されるチャンネルの数が格納される。ストライドフィールドには、プーリング処理において処理範囲を移動させる量（ストライド）が格納される。カーネルサイズフィールドには、プーリング処理を行うカーネルサイズが格納される。
【００４４】
レイヤー種別が、全結合レイヤーである場合のレイヤー固有情報部６２は、図４（ｃ）に示すように、入力チャンネル数、出力チャンネル数、重み圧縮方式のフィールドを含む。
【００４５】
入力チャンネル数フィールドには、このレイヤーに入力されるチャンネルの数が格納される。出力チャンネル数フィールドには、このレイヤーから出力されるチャンネルの数が格納される。重み圧縮方式フィールドには、この全結合レイヤーに使用される、各入力チャンネルのデータに対する重みに対する圧縮方法を示す情報（圧縮情報）が格納される。本実施形態では、圧縮情報として、無圧縮の場合には“０”とし、Ｐｒｕｎｉｎｇ符号化の場合には、“１”とし、Ｗｅｉｇｈｔ  Ｓｈａｒｉｎｇ符号化の場合には、“２”とし、予測符号化の場合には、“３”としている。
【００４６】
チャンネル部６３は、例えば、対応するレイヤーヘッド部６１のレイヤー種別フィールドのレイヤー種別が、Ｃｏｎｖｏｌｕｔｉｏｎレイヤー、ＦｕｌｌＣｏｎｎｅｃｔｉｏｎレイヤーである場合に存在する。
【００４７】
チャンネル部６３のチャンネルデータ７１には、チャンネル部６３に対応するレイヤー固有情報部６２の重み圧縮方式フィールドに格納された圧縮情報に対応する圧縮方法により圧縮されたデータ（処理係数情報、圧縮処理係数：例えば、畳込レイヤーの場合には、フィルタデータ（処理係数）の圧縮データ、全結合レイヤーの場合には、各入力チャンネルに対する重み（処理係数）の圧縮データ）が格納される。フィルタデータは、例えば、予測符号化によって圧縮されていてもよい。フィルタデータの予測符号化は、例えば、基準とするフィルタデータ（例えば、直前のフィルタデータ）と、所定の位置（例えば、上端又は左端）の画素を基準とした予測方向に基づいて予測した予測フィルタデータとの差分値を所定の符号化（例えば、Ｐｒｕｎｉｎｇ符号化及びＷｅｉｇｈｔ  Ｓｈａｒｉｎｇ符号化等）により符号化することにより、データを圧縮させる方法である。なお、このようにデータが予測符号化により圧縮されている場合には、各チャンネルデータ７１の先頭には、そのチャンネルデータ７１を予測符号化する際に使用した予測方向を示す情報（予測方向情報）が格納される。
【００４８】
図１に戻り、処理制御部１０の処理動作について説明する。
【００４９】
処理制御部１０は、ストリームデータ５０を先頭から順に読み込み、レイヤー部５２を読んだ場合には、レイヤー部５２のレイヤーヘッダ部６１のレイヤー種別フィールドに格納されているレイヤー種別に対応する処理部１１を構築する。例えば、レイヤー種別が、Ｃｏｎｖｏｌｕｔｉｏｎに対応する場合には、畳込処理部を構築し、Ｐｏｏｌｉｎｇに対応する場合には、Ｐｏｏｌｉｎｇ処理部を構築し、Ｒｅｌｕに対応する場合には、Ｒｅｌｕ処理部を構築し、全結合に対応する場合には、全結合処理部を構築し、ＳｏｆｔＭａｘに対応する場合には、ＳｏｆｔＭａｘ処理部を構築する。また、処理制御部１０は、レイヤーヘッダ部６１の次に、レイヤー固有情報部６２が存在すれば、そのレイヤー固有情報部６２の各フィールドの内容に従って、構築する処理部１１の設定を行う。
【００５０】
また、処理制御部１０は、レイヤー部５２のレイヤー固有情報部６２に重み圧縮方式フィールドがある場合（すなわち、レイヤーが畳込レイヤー、又は全結合レイヤーである場合）には、重み圧縮方式フィールドの圧縮情報に従って、チャンネル部６３のチャンネルデータ７１に対する伸長処理を実行させ、そのレイヤーの処理を実行する処理部１１に対して伸長処理後のデータを渡すように動作させるようにデコーダ１２を生成（又は設定）して、制御する。これにより、処理制御部１０は、処理部１１に対して必要なデータを渡すことができる。ここで、チャンネルデータ７１の先頭に、予測符号化の予測方向情報が含まれている場合には、デコーダ１２は、その予測方向情報に基づいて、予測符号化されているデータを伸長する。
【００５１】
次に、処理装置１００のハードウェア構成について詳細に説明する。
【００５２】
図５は、第１実施形態に係る処理装置のハードウェア構成図である。
【００５３】
処理装置１００は、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎ  Ｕｎｉｔ）１０１と、メインメモリ１０２と、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０３と、リーダライタ１０４と、通信インターフェース（通信Ｉ／Ｆ）１０５と、補助記憶装置１０６と、入出力インターフェース（入出力Ｉ／Ｆ）１０７と、表示装置１０８と、入力装置１０９とを備えるコンピュータにより構成される。ＣＰＵ１０１、メインメモリ１０２、ＧＰＵ１０３、リーダライタ１０４、通信Ｉ／Ｆ１０５、補助記憶装置１０６、入出力Ｉ／Ｆ１０７、及び表示装置１０８は、バス１１０を介して接続されている。
【００５４】
ＣＰＵ１０１は、処理装置１００の全体を統括制御する。ＣＰＵ１０１は、補助記憶装置１０６に格納されてプログラムをメインメモリ１０２に読み出して実行することにより各種処理を実行する。本実施形態では、ＣＰＵ１０１は、補助記憶装置１０６に格納された処理プログラムを実行することにより、例えば、処理制御部１０、Ｒｅｌｕ処理部１１−２、ＳｏｆｔＭａｘ処理部１１ｎ、及びデコーダ１２を構成する。
【００５５】
メインメモリ１０２は、例えば、ＲＡＭ、ＲＯＭ等であり、ＣＰＵ１０１に実行されるプログラム（処理プログラム等）や、各種情報を記憶する。補助記憶装置１０６は、例えば、ＨＤＤ（Ｈａｒｄ  ＤＩＳＫ  Ｄｒｉｖｅ）、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の非一時的記憶デバイス（不揮発性記憶デバイス）であり、ＣＰＵ１０１で実行されるプログラムや、各種情報を記憶する。各種情報としては、例えば、図２に示すようなストリームデータや、例えば、画像データ等の処理対象データがある。処理対象データが画像データである場合には、例えば、処理装置１００の図示しないカメラにより撮像された画像データであってもよい。
【００５６】
ＧＰＵ１０３は、例えば、画像処理等の特定の処理の実行に適しているプロセッサであり、例えば、並列的に行われる処理の実行に適している。本実施形態では、ＧＰＵ１０３は、ＣＰＵ１０１の指示に従って所定の処理を実行する。本実施形態では、ＧＰＵ１０３は、例えば、畳込処理部１１-１、全結合処理部１１−ｎ−１等を構成する。
【００５７】
リーダライタ１０４は、記録媒体１１１を着脱可能であり、記録媒体１１１からのデータの読み出し、及び記録媒体１１１へのデータの書き込みを行う。記録媒体１１１としては、例えば、ＳＤメモリーカード、ＦＤ（フロッピーディスク：登録商標）、ＣＤ、ＤＶＤ、ＢＤ（登録商標）、フラッシュメモリ等の非一時的記録媒体（不揮発性記録媒体）がある。本実施形態においては、記録媒体１１１に、処理プログラムを格納しておき、リードライタ１０４により、これを読み出して、利用するようにしてもよい。また、記録媒体１１１に、ストリームデータを格納しておき、リードライタ１０４により、これを読み出して利用するようにしてもよい。また、記録媒体１１１に、処理対象データを格納しておき、リードライタ１０４により、これを読み出して利用するようにしてもよい。
【００５８】
通信Ｉ／Ｆ１０５は、ネットワーク（通信ネットワーク）に接続されており、ネットワークに接続された他の装置（外部装置）との間でのデータの送受信を行う。例えば、ストリームデータ、処理対象データ等を通信Ｉ／Ｆ１０５を介してネットワークに接続された他の装置から受信するようにしてもよい。
【００５９】
入出力Ｉ／Ｆ１０７は、例えば、マウス、キーボード等の入力装置１０９と接続されており、入力装置１０９からのユーザによる操作入力を受け付ける。
【００６０】
表示装置１０８は、例えば、液晶ディスプレイ等のディスプレイ装置であり、各種情報を表示出力する。
【００６１】
次に、図１に示す処理装置１００における処理動作について説明する。
【００６２】
処理装置１００の処理制御部１０は、推論処理を実行するために利用する所定のストリームデータ５０の取得を開始する。処理制御部１０は、取得したストリームデータ５０のＣＮＮのレイヤー１の畳込処理部１１−１に対応するレイヤー部５２を受信すると、畳込処理部１１−１を生成し、デコーダ１２-１を生成する。次いで、処理制御部１０は、このレイヤー部５２の各チャンネルデータ７１に含まれる圧縮フィルタデータをデコーダ１２−１に逐次供給する。処理制御部１０が圧縮フィルタデータをデコーダ１２−１に供給するタイミングとしては、例えば、畳込処理部１１−１からのフィルタデータの要求に応じたタイミングとしてもよい。
【００６３】
一方、処理制御部１０は、処理対象データである画像データをレイヤー１の畳込処理部１１−１に入力する。畳込処理部１１−１は、入力された画像データに対して、デコーダ１２−１から供給される各フィルタデータを用いて畳込処理を実行し、各フィルタデータを用いた全ての実行結果を後段のレイヤー２の処理部１１（図１の例では、Ｒｅｌｕ処理部１１−２）に渡すように出力する。ここで、レイヤー２の処理部１１に対して実行結果を直接渡すことが可能である場合には、直接渡してもよく、また、直接渡すことが不可能な場合には、レイヤー２の処理部１１が読み込み可能な所定のバッファに一時的に格納してもよい。
【００６４】
また、処理制御部１０は、ストリームデータ５０のＣＮＮのレイヤー２のＲｅｌｕ処理部１１−２に対応するレイヤー部５２を受信すると、ＣＮＮのレイヤー２のＲｅｌｕ処理部１１−２を生成する。Ｒｅｌｕ処理部１１−２は、畳込処理部１１−１による各処理結果の画像のそれぞれを入力として、Ｒｅｌｕ処理を実行し、後段のレイヤー３に渡すように出力する。
【００６５】
同様にして、処理制御部１０は、ストリームデータ５０の次のレイヤーに対応するレイヤー部５２を受信すると、レイヤー毎に処理部１１（畳込処理部１１−３、全結合処理部１１−ｎ−１、ＳｏｆｔＭａｘ処理部１１ｎ等）を生成し、必要な場合には、その処理部１１に対してデータを伸長して供給するデコーダ１２（１２−３，１２−ｎ−１等）を生成する。このような一連の処理が実行されることにより、ＣＮＮの最終のレイヤーからは推論処理の結果（推論結果）が出力される。なお、推論結果は、メインメモリ１０２等に出力するようにしてもよい。処理装置１００は、この推論結果を表示装置１０８に表示したり、この推論結果に基づいて処理を実行したりしてもよい。
【００６６】
上記した第１実施形態に係る処理装置１００によると、ストリームデータ５０に従って、ＣＮＮの各レイヤーを適切に構築でき、レイヤーの処理を実行する部分処理部で必要なデータをストリームデータ５０から取得して供給することができる。このため、メインメモリ１０２に予めＣＮＮの全てのレイヤーの処理部で使用する全ての係数を記憶させておいたり、ＣＮＮの全体のレイヤー構成の情報についてメインメモリ１０２に格納させておいたりする必要がなくなる。これにより、メインメモリ１０２に必要な容量を低減することができる。また、ストリームデータ５０に従って、ＣＮＮの各レイヤーを適切に構築できるので、ストリームデータ５０の内容を変えることにより、所望する推論処理を実行するＣＮＮを容易に構築することができる。また、ストリームデータ５０中のチャネルデータについては、圧縮データとすることができるので、ストリームデータ５０のデータ量を低減することができ、ストリームデータ５０の読出しや、送信等に係る処理時間を低減することができる。
【００６７】
次に、第２実施形態に係る処理装置について説明する。なお、第２実施形態においては、第１実施形態に係る処理装置と同様な部分には、同一の符号を付す。
【００６８】
図６は、第２実施形態に係る処理装置の機能構成図である。
【００６９】
第２実施形態に係る処理装置１００Ａは、１以上の処理部（部分処理部）１１（１１−１〜１１−ｎ）と、１以上のデコーダ１３（１３−１，１３−３，１３−ｎ−１等）と、ＦＩＦＯ（Ｆｉｒｓｔ  ＩＮ，  Ｆｉｒｓｔ  Ｏｕｔ）１４と、構築部１５と、メモリ部１６とを備える。本実施形態におけるストリームデータは、第１実施形態におけるストリームデータ５０の内のＣＮＮの構成に関するデータを除いたデータ、例えば、処理部１１に設定するデータ（処理係数情報）が含まれたチャンネル部６３のみを含むデータとなっている。ここで、処理装置１００Ａは、図５に示すハードウェアで構成してもよく、例えば、構築部１５、Ｒｅｌｕ処理部１１−２、全結合処理部１１−ｎ−１、ＳｏｆｔＭａｘ処理部１１ｎ、及びデコーダ１３は、ＣＰＵ１０１によって構成してもよい。また、ＦＩＦＯ１４は、ＣＰＵ１０１及びメインメモリ１０２で構成してもよい。また、メモリ部１６は、メインメモリ１０２で構成してもよい。また、畳込処理部１１−１，１１−３等は、ＧＰＵ１０３で構成してもよい。
【００７０】
メモリ部１６は、ＣＮＮの各レイヤーの構造を示す情報（ニューラルネットワーク構造情報）１６ａを記憶する。ニューラルネットワーク構造情報１６ａは、ＣＮＮにおいて、各レイヤーがどのような処理部、デコーダ、ＦＩＦＯ等で構成され、どのような接続関係にあるかを特定可能な情報である。
【００７１】
構築部１５は、メモリ部１６のニューラルネットワーク構造情報１６ａに基づいて、ＣＮＮを構成する各処理部１１、各デコーダ１３、及び各ＦＩＦＯ１４を作成し、それらの間での接続関係を設定する。
【００７２】
デコーダ１３は、ストリームデータ中のチャンネル部６３のデータを使用する各処理部１１に対応して配置され、上流側からストリームデータを取得し、その中から自身に対応する処理部１１で使用するデータを含むチャンネル部６３のデータを抽出し、そのデータを伸長して対応する処理部１１に供給する。また、デコーダ１３は、ストリームデータ中の自身に対応する処理部１１のデータを格納しているチャンネル部６３以降のデータについては、下流側に接続されたＦＩＦＯ１４にそのまま渡す。
【００７３】
ＦＩＦＯ１４は、上流側のデコーダ１３から入力されるストリームデータのデータを格納し、最初に入力されたデータから下流側のデコーダ１３に渡す。
【００７４】
上記した第２実施形態に係る処理装置１００Ａによると、処理部１１で使用する処理係数情報をストリームデータとして送信することにより、各処理部１１における部分処理を実行させることができる。このため、メインメモリ１０２にＣＮＮの全てのレイヤーの処理部１１で使用する全ての処理係数を予め記憶させておく必要がなくなる。これにより、必要なメインメモリ１０２の容量を抑制できる。また、ストリームデータ中のチャネル部６３に格納させる処理係数情報について、圧縮させたデータとしているので、ストリームデータのデータ量を低減することができ、ストリームデータの読出しや、送信等に係る処理時間を低減することができる。
【００７５】
次に、第３実施形態に係る処理装置について説明する。なお、第３実施形態においては、第１実施形態、第２実施形態に係る処理装置と同様な部分には、同一の符号を付す。
【００７６】
図７は、第３実施形態に係る処理装置の機能構成図である。
【００７７】
第３実施形態に係る処理装置１００Ｂは、１以上の処理部（部分処理部）１１（１１−１〜１１−ｎ）と、１以上のデコーダ（伸長処理部）１２（１２−１，１２−３，１２−ｎ−１等）と、読出制御部１７と、メモリ部１６とを備える。ここで、処理装置１００Ｂは、図５に示すハードウェアで構成してもよく、例えば、読出制御部１７、Ｒｅｌｕ処理部１１−２、全結合処理部１１−ｎ−１、ＳｏｆｔＭａｘ処理部１１ｎ、及びデコーダ１２は、ＣＰＵ１０１によって構成してもよい。また、畳込処理部１１−１，１１−３等は、ＧＰＵ１０３によって構成してもよい。また、メモリ部１６は、メインメモリ１０２で構成してもよい。
【００７８】
メモリ部１６は、ニューラルネットワーク構造情報１６ａと、圧縮係数情報の一例としての圧縮フィルタデータ１６ｂと、圧縮係数情報の一例としての圧縮重みデータ１６ｃとを記憶する。圧縮フィルタデータ１６ｂは、ＣＮＮのすべての畳込処理部１１−１、１１−３等で使用されるフィルタデータを圧縮したデータであり、圧縮重みデータ１６ｃは、全結合処理部１１−ｎ−１で使用される複数の重みを圧縮したデータである。
【００７９】
読出制御部１７は、ＣＮＮの処理部１１からの処理の実行に必要な処理係数の要求を受けて、この処理部１１で使用する要求を受けた処理係数を圧縮させてある圧縮係数データ（圧縮フィルタデータ１６ｂ又は圧縮重みデータ１６ｃの一部）をメモリ部１６から取得し、処理部１１に接続されているデコーダ１２に対して圧縮係数データを送信する。なお、処理部１１による処理の実行に必要な処理係数の要求は、例えば、処理部１１が処理を実行する直前に行われるようにしてもよく、また、比較的近いレイヤーの処理が実行されている場合に行われるようにしてもよい。
【００８０】
上記した第３実施形態に係る処理装置１００Ｂによると、メインメモリ１０２において、処理部１１で使用する係数データを圧縮して記憶させているので、メインメモリ１０２に必要とされる容量を抑制できる。また、比較的処理が近いレイヤーの処理部１１が処理係数を要求するようにしているので、処理係数を要求する処理部１１の数を抑えることができ、ＣＰＵ１０１への負荷や、メインメモリ１０２の使用容量を比較的低減できる。
【００８１】
なお、本発明は、上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で、適宜変形して実施することが可能である。
【００８２】
例えば、上記各実施形態においては、画像認識を行うＣＮＮが構成される処理装置に対して本発明を適用した例を示していたが、本発明は、画像認識以外の推論処理を実行するニューラルネットワークが構成される処理装置に対しても適用することができる。
【００８３】
また、上記第１及び第２実施形態においては、ストリームデータ５０において、処理部１１に利用されるフィルタデータ等の処理係数を圧縮させて含ませるようにしていたが、本発明はこれに限られず、これら処理係数の少なくとも一部を圧縮させずにストリームデータ５０に含ませるようにしてもよい。このようにしても、メインメモリ１０２に、ストリームデータ５０の全体を記憶させておく必要が無いので、メインメモリ１０２に要求される容量を抑えることができ、メインメモリ１０２における他の処理に利用可能な容量を適切に増加させることができる。
【００８４】
また、上記第２実施形態においては、デコーダ１３とデコーダ１３との間に、ＦＩＦＯ１４を備えるようにしていたが、本発明はこれに限られず、デコーダ１３内にＦＩＦＯ１４の機能を備えるようにしてもよい。
【００８５】
また、上記各実施形態において、ＣＰＵ１０１又はＧＰＵ１０３がプログラムを実行することにより構成していた機能部の少なくとも一部を、別のプロセッサや、特定の処理を実行するハードウェア回路で構成するようにしてもよい。例えば、ＧＰＵ１０３により構成していた処理部１１（例えば、畳込処理部１１−１，１１−３等）を、ＣＰＵ１０１により構成するようにしてもよく、別のハードウェア回路で構成してもよい。また、ＣＰＵ１０１により構成していたデコーダ１３を別のハードウェア回路で構成するようにしてもよい。
【符号の説明】
【００８６】
１０…処理制御部、１１…処理部、１２，１３…デコーダ、１４…ＦＩＦＯ、１５…構築部、１６…メモリ部、１７…読出制御部、５０…ストリームデータ、１００，１００Ａ，１００Ｂ…処理装置、１０１…ＣＰＵ、１０２…メインメモリ、１０３…ＧＰＵ
【図１】
2020123384.tif 000003
【図２】
2020123384.tif 000004
【図３】
2020123384.tif 000005
【図４】
2020123384.tif 000006
【図５】
2020123384.tif 000007
【図６】
2020123384.tif 000008
【図７】
2020123384.tif 000009