(57)【要約】【課題】使用するセンサの種類に関わらず、ニューラルネットワークの推論処理の効率の低下を抑止する。【解決手段】  前処理を実行する第１の前処理演算装置と、後処理を実行する第１の後処理演算装置とを有する情報処理装置において、前記第１の前処理演算装置は、前記第１のセンサからの前記アナログデータを入力し、デジタルデータに変換する第１の変換部と、前記デジタルデータに対する特徴量抽出処理を実行した結果に基づいて、特徴量データを出力する第１の前処理演算部と、前記特徴量データを出力する第１の出力部を有し、前記第１の後処理演算装置は、前記特徴量データを入力する第１の入力部と、前記特徴量データを記憶する第１の記憶部と、前記特徴量データに対する識別処理を実行した結果に基づいて、識別結果データを前記第１の記憶部に記憶させる第１の後処理演算部を有する。【選択図】図１
2020129296.tif 000002
【特許請求の範囲】
【請求項１】
第１のセンサからのアナログデータに対する前処理を実行する第１の前処理演算装置と、前記第１の前処理演算装置に接続され、前記第１の前処理演算装置が出力した第１の前処理済みデータに対する後処理を実行する第１の後処理演算装置とを有する情報処理装置において、
前記第１の前処理演算装置は、
前記第１のセンサからの前記アナログデータを入力し、デジタルデータに変換する第１の変換部と、
前記デジタルデータに対する特徴量抽出処理を実行した結果に基づいて、特徴量データを出力する第１の前処理演算部と、
前記特徴量データを出力する第１の出力部を有し、
前記第１の後処理演算装置は、
前記特徴量データを入力する第１の入力部と、
前記特徴量データを記憶する第１の記憶部と、
前記特徴量データに対する識別処理を実行した結果に基づいて、識別結果データを前記第１の記憶部に記憶させる第１の後処理演算部を有する情報処理装置。
【請求項２】
前記第１の前処理演算装置において、
前記第１のセンサは、画像センサであり、
前記第１の変換部は、前記画像センサからのアナログ画像データを入力し、デジタル画像データに変換し、
前記第１の前処理演算部は、前記デジタル画像データに対する特徴量抽出処理を実行した結果に基づいて、画像特徴量データを出力し、
前記第１の後処理演算装置において、
前記第１の入力部は、前記画像特徴量データを入力し、
前記第１の記憶部は、前記画像特徴量データを記憶し、
前記第１の後処理演算部は、前記画像特徴量データに対する識別処理を実行した結果に基づいて、画像識別結果データを前記第１の記憶部に記憶させる、
請求項１記載の情報処理装置。
【請求項３】
前記第１の前処理演算装置において、
前記第１のセンサは、音声センサであり、
前記第１の変換部は、前記音声センサからのアナログ音声データを入力し、デジタル音声データに変換し、
前記第１の前処理演算部は、前記デジタル音声データに対する特徴量抽出処理を実行した結果に基づいて、音声特徴量データを出力し、
前記第１の後処理演算装置において、
前記第１の入力部は、前記音声特徴量データを入力し、
前記第１の記憶部は、前記音声特徴量データを記憶し、
前記第１の後処理演算部は、前記音声特徴量データに対する識別処理を実行した結果に基づいて、音声識別結果データを前記第１の記憶部に記憶させる、
請求項１記載の情報処理装置。
【請求項４】
前記第１の前処理演算装置において、
前記第１のセンサは、モーションセンサであり、
前記第１の変換部は、前記モーションセンサからのアナログモーションデータを入力し、デジタルモーションデータに変換し、
前記第１の前処理演算部は、前記デジタルモーションデータに対する特徴量抽出処理を実行した結果に基づいて、モーション特徴量データを出力し、
前記第１の後処理演算装置において、
前記第１の入力部は、前記モーション特徴量データを入力し、
前記第１の記憶部は、前記モーション特徴量データを記憶し、
前記第１の後処理演算部は、前記モーション特徴量データに対する識別処理を実行した結果に基づいて、モーション識別結果データを前記第１の記憶部に記憶させる、
請求項１記載の情報処理装置。
【請求項５】
前記第１の後処理演算装置はさらに、音声データを処理する第２の前処理演算装置とアナログモーションデータを処理する第３の前処理演算装置とに接続され、
第２の前処理演算装置は、
音声センサからのアナログ音声データを入力し、デジタル音声データに変換する第２の変換部と、
前記デジタル音声データに対する特徴量抽出処理を実行した結果に基づいて、音声特徴量データを出力する第２の前処理演算部を有し、
第３の前処理演算装置は、
モーションセンサからのアナログモーションデータを入力し、デジタルモーションデータに変換する第３の変換部と、
前記デジタルモーションデータに対する特徴量抽出処理を実行した結果に基づいて、モーション特徴量データを出力する第３の前処理演算部を有し、
前記第１の後処理演算装置において、
前記第１の入力部は、前記画像特徴量データと前記音声特徴量データと前記モーション特徴量データとを入力し、
前記第１の記憶部は、前記画像特徴量データと前記音声特徴量データと前記モーション特徴量データとをそれぞれ記憶し、
前記第１の後処理演算部は、前記画像特徴量データと前記音声特徴量データと前記モーション特徴量データに対する識別処理をそれぞれ実行した結果に基づいて、画像識別結果データと音声識別結果データとモーション識別結果データを前記第１の記憶部に記憶させる、
請求項２記載の情報処理装置。
【請求項６】
前記第１の後処理演算装置はさらに、       
第１のデータ型の特徴量データを第２のデータ型の特徴量データに変換する第１の後処理変換部と、
前記第２のデータ型の特徴量データを第３のデータ型の特徴量データに変換する第２の後処理変換部を有し、
前記第１の後処理演算装置において、
前記第１の後処理変換部は、前記第１の入力部からの前記第１のデータ型の特徴量データを前記第２のデータ型の特徴量データに変換して、前記第１の記憶部に記憶させ、
前記第１の後処理演算部は、前記第１の記憶部が記憶する前記第２のデータ型の特徴量データに対する正規化処理を実行した結果に基づいて、第２のデータ型の正規化済み特徴量データを前記第１の記憶部に記憶させ、
前記第２の後処理変換部は、前記第１の記憶部が記憶する前記第２のデータ型の正規化済み特徴量データを、前記第３のデータ型の正規化済み特徴量データに変換して、前記第１の記憶部に記憶させ、
前記第１の後処理演算部は、前記第１の記憶部が記憶する前記第３のデータ型の正規化済み特徴量データに対する識別処理を実行した結果に基づいて、前記識別結果データを前記第１の記憶部に記憶させる請求項１記載の情報処理装置。
【請求項７】
前記情報処理装置はさらに、
前記第１の後処理演算装置に接続される第２の後処理演算装置を有し、
前記第１の後処理演算装置はさらに、
第１のデータ型の特徴量データを第２のデータ型の特徴量データに変換する第１の後処理変換部と、
前記第２のデータ型の特徴量データを第３のデータ型の特徴量データに変換する第２の後処理変換部を有し、
前記第１の後処理演算装置において、
前記第１の後処理変換部は、前記第１の入力部からの前記第１のデータ型の特徴量データを前記第２のデータ型の特徴量データに変換して、前記第１の記憶部に記憶させ、
前記第１の後処理演算部は、前記第１の記憶部が記憶する前記第２のデータ型の特徴量データに対する正規化処理を実行した結果に基づいて、第２のデータ型の正規化済み特徴量データを前記第１の記憶部に記憶させ、
前記第２の後処理変換部は、前記第１の記憶部が記憶する前記第２のデータ型の正規化済み特徴量データを、前記第３のデータ型の正規化済み特徴量データに変換して出力し、
前記第２の後処理演算装置は、
前記第３のデータ型の正規化済み特徴量データを入力する第２の入力部と、
前記第３のデータ型の正規化済み特徴量データを記憶する第２の記憶部と、
前記第３のデータ型の正規化済み特徴量データに対する識別処理を実行した結果に基づいて、前記識別結果データを前記第２の記憶部に記憶させる第２の後処理演算部を有する請求項１記載の情報処理装置。
【請求項８】
前記第１の前処理演算部は、特徴量データとともに、特徴量データのデータ型の変換仕様を示す第１の仕様情報を、前記第１の出力部を介して前記第１の後処理演算装置に出力し、
前記第１の後処理変換部は、前記第１の仕様情報に基づいて特徴量データのデータ型を変換し、
前記第１の後処理演算部は、正規化済みの特徴量データとともに、正規化済みの特徴量データのデータ型の変換仕様を示す第２の仕様情報を生成し、
前記第２の後処理変換部は、前記第２の仕様情報に基づいて特徴量データのデータ型を変換する、
請求項６または請求項７記載の情報処理装置。
【請求項９】
前記第１の前処理演算装置はさらに、
特徴量データを圧縮済み特徴量データに圧縮する第１の圧縮部を有し、
前記第１の後処理演算装置はさらに、
前記圧縮済み特徴量データに対する復号処理と識別処理とを実行する疎行列演算部を有し、
前記第１の前処理演算装置において、
前記第１の圧縮部は、前記特徴量データを前記圧縮済み特徴量データに圧縮し、
前記第１の後処理演算装置において、
前記第１の記憶部は、前記圧縮済み特徴量データを記憶し、
前記疎行列演算部は、前記第１の記憶部が記憶する前記圧縮済み特徴量データを復号した復号済み特徴量データに対する識別処理を実行した結果に基づいて、前記識別結果データを前記第１の記憶部に記憶させる請求項１記載の情報処理装置。
【請求項１０】
前記第１の圧縮部は、
複数の特徴量データのうち、絶対値が他より大きい所定数の特徴量データを圧縮済み特徴量データとして選択し、圧縮前の特徴量データの配列順を示す配列情報ともに前記第１の後処理演算装置に出力し、
前記第１の記憶部は、特徴量データと演算する変数を、特徴量データの配列順に対応して保持し、
前記疎行列演算部は、前記配列情報に基づいて、圧縮済み特徴量データに含まれる特徴量データと演算させる変数を前記第１の記憶部から読み出して識別処理を実行する、
請求項９記載の情報処理装置。
【請求項１１】
圧縮済み特徴量データに含まれる各特徴量データは、浮動小数点数データであり、
前記第１の圧縮部は、圧縮済み特徴量データに含まれる各特徴量データの仮数部の下位ビットを前記配列情報に置き換える、
請求項１０記載の情報処理装置。
【請求項１２】
前記第１の圧縮部は、圧縮の単位である所定数の特徴量データの配列のうち、所定の位置の特徴量データを常に選択し、
前記疎行列演算部は、前記所定の位置の特徴量データに対応する配列情報に基づいて、特徴量データの配列の繰り返しを判定する、
請求項１０または請求項１１記載の情報処理装置。
【請求項１３】
センサからのアナログデータを入力してデジタルデータに変換する変換部と、前記デジタルデータに対する特徴量抽出処理を実行した結果に基づいて特徴量データを出力する前処理演算部と、前記特徴量データを出力する出力部とを有する前処理演算装置に接続され、前記前処理演算装置が出力した前処理済みデータに対する後処理を実行する演算処理装置において、
前記特徴量データを入力する入力部と、
前記特徴量データを記憶する記憶部と、
前記特徴量データに対する識別処理を実行した結果に基づいて、識別結果データを前記記憶部に記憶させる後処理演算部を有する演算処理装置。
【請求項１４】
センサからのアナログデータに対する前処理を実行する前処理演算装置と、前記前処理演算装置に接続され、前記前処理演算装置が出力した第１の前処理済みデータに対する後処理を実行する後処理演算装置とを有する情報処理装置の制御方法において、
前記前処理演算装置が有する変換部が、前記センサからの前記アナログデータを入力し、デジタルデータに変換し、
前記前処理演算装置が有する前処理演算部が、前記デジタルデータに対する特徴量抽出処理を実行した結果に基づいて、特徴量データを出力し、
前記前処理演算装置が有する出力部が、前記特徴量データを出力し、
前記後処理演算装置が有する入力部が、前記特徴量データを入力し、
前記後処理演算装置が有する記憶部が、前記特徴量データを記憶し、
前記後処理演算装置が有する後処理演算部が、前記特徴量データに対する識別処理を実行した結果に基づいて、識別結果データを前記記憶部に記憶させる情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、演算処理装置および情報処理装置の制御方法に関する。
【背景技術】
【０００２】
ディープニューラルネットワーク（以下、ＤＮＮとも称する）等のニューラルネットワークでは、各層に含まれる複数のニューロンの各々が、他の層に含まれる複数のニューロンに接続され、各ニューロンが積和演算等を実行するため、計算量が膨大になる。そこで、計算量を削減するために、ニューラルネットワークに含まれるニューロンの一部が除去され、または、パラメータ行列の次元が削減される（例えば、特許文献１、２参照）。あるいは、計算量を削減するために、特徴量を検出する層のニューロンの出力値が所定の閾値以下の場合、出力値をメモリに格納せず、次の層の演算では、メモリに格納されていない出力値の代わりに０が使用される（例えば、特許文献３参照）。また、パラメータ量が入力データに比べて小さい処理と、パラメータ量が入力データ量に比べて大きい処理とを、それぞれメモリ容量が異なる処理装置で実行することで、処理効率が向上される（例えば、特許文献４参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１８−１２９０３３号公報
【特許文献２】特開２０１８−１０９９４７号公報
【特許文献２】特開２００５−３４６４７２号公報
【特許文献２】特開２０１７−１９１４５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
例えば、複数種のセンサが計測するデータの特徴量をそれぞれ抽出し、抽出した特徴量に基づいて識別結果を得るマルチモーダルＤＮＮ推論システムでは、アーキテクチャが最適化された演算処理装置（半導体チップ）が設計され、システムに実装される。一方、所定のマルチモーダルＤＮＮ推論システム用にアーキテクチャが最適化された演算処理装置を利用して、当該複数種のセンサとは異なる別種のセンサが計測するデータに基づく推論処理を実行する場合、当該別種のセンサ用のアーキテクチャに演算処理装置が最適化されていないため、処理性能が低下する場合がある。処理性能の低下を抑止するためには、別種のセンサ用にアーキテクチャが最適化された演算処理装置を用いる必要がある。この場合、システムコストが増加し、また、マルチモーダルＤＮＮ推論システムをユーザーに提供するまでの時間が増加する。
【０００５】
１つの側面では、本発明は、使用するセンサの種類に関わらず、ニューラルネットワークの推論処理の処理性能の低下を抑止することを目的とする。
【課題を解決するための手段】
【０００６】
一つの観点によれば、第１のセンサからのアナログデータに対する前処理を実行する第１の前処理演算装置と、前記第１の前処理演算装置に接続され、前記第１の前処理演算装置が出力した第１の前処理済みデータに対する後処理を実行する第１の後処理演算装置とを有する情報処理装置において、前記第１の前処理演算装置は、前記第１のセンサからの前記アナログデータを入力し、デジタルデータに変換する第１の変換部と、前記デジタルデータに対する特徴量抽出処理を実行した結果に基づいて、特徴量データを出力する第１の前処理演算部と、前記特徴量データを出力する第１の出力部を有し、前記第１の後処理演算装置は、前記特徴量データを入力する第１の入力部と、前記特徴量データを記憶する第１の記憶部と、前記特徴量データに対する識別処理を実行した結果に基づいて、識別結果データを前記第１の記憶部に記憶させる第１の後処理演算部を有する。
【発明の効果】
【０００７】
１つの側面では、本発明は、使用するセンサの種類に関わらず、ニューラルネットワークの推論処理の処理性能の低下を抑止することができる。
【図面の簡単な説明】
【０００８】
【図１】一実施形態における情報処理装置の一例を示す図である。
【図２】別の実施形態における情報処理装置の一例を示す図である。
【図３】図２の情報処理装置により実現されるマルチモーダルＤＮＮ推論システムの一例を示す図である。
【図４】図２のセンサＳｏＣ２０Ａの一例を示す図である。
【図５】図２のセンサＳｏＣ２０Ｂの一例を示す図である。
【図６】図２のセンサＳｏＣ２０Ｃの一例を示す図である。
【図７Ａ】図２の情報処理装置がマルチモーダルＤＮＮによる推論処理を実行する場合の動作フローの一例を示す図である。
【図７Ｂ】図７Ａの続きを示す図である。
【図８】他の情報処理装置の一例を示す図である。
【図９】図８の情報処理装置１１０がマルチモーダルＤＮＮによる推論処理を実行する場合の動作フローの一例を示す図である。
【図１０】別の実施形態における情報処理装置の一例を示す図である。
【図１１】図１０の型変換部の一例を示す図である。
【図１２】図１１の型変換部によるデータの型変換仕様の一例を示す図である。
【図１３】図１０の情報処理装置がマルチモーダルＤＮＮによる推論処理を実行する場合の動作フローの一例を示す図である。
【図１４】別の実施形態における情報処理装置の一例を示す図である。
【図１５Ａ】図１４の情報処理装置がマルチモーダルＤＮＮによる推論処理を実行する場合の動作フローの一例を示す図である。
【図１５Ｂ】図１５Ａの続きを示す図である。
【図１６】別の実施形態における情報処理装置の一例を示す図である。
【図１７】図１６のセンサＳｏＣが、特徴量データを抽出する動作サイクル毎に出力する特徴量データのデータ数の一例を示す図である。
【図１８】図１６の圧縮部の一例を示す図である。
【図１９】図１８のデータソート回路の一例を示す図である。
【図２０】図１９の各比較回路の動作の一例を示す図である。
【図２１】図１８のオフセットソート回路の一例を示す図である。
【図２２】図２１の各比較回路の動作の一例を示す図である。
【図２３】図１８の圧縮部による圧縮動作の一例を示す図である。
【図２４】図１８の圧縮部による圧縮動作の動作フローの一例を示す図である。
【図２５】図１６の疎行列演算部の一例を示す図である。
【図２６】図１６のエッジＳｏＣに接続されるメモリが保持する重み行列の一例を示す図である。
【図２７】図２５の疎行列演算部による復号動作の一例を示す図である。
【図２８】図２５の疎行列演算部による復号動作の動作フローの一例を示す図である。
【図２９】図１６の情報処理装置による特徴量データの圧縮および復号の概要を示す図である。
【図３０】別の実施形態における情報処理装置の一例を示す図である。
【図３１】図３０のセンサＳｏＣが、特徴量データを抽出する動作サイクル毎に出力する特徴量データのサイズの一例を示す図である。
【図３２】図３０の圧縮部の一例を示す図である。
【図３３】圧縮率が２５％に固定された圧縮部の例を示す図である。
【図３４】別の実施形態における情報処理装置の一例を示す図である。
【図３５】図３４の圧縮部の一例を示す図である。
【図３６】図３５のデータソート回路の一例を示す図である。
【図３７】図３５のオフセットソート回路の一例を示す図である。
【図３８】図３５の圧縮部による圧縮動作の一例を示す図である。
【図３９】図３５の圧縮部による圧縮動作の動作フローの一例を示す図である。
【図４０Ａ】図３４の疎行列演算部の一例を示す図である。
【図４０Ｂ】図４０Ａの疎行列演算部による復号動作の動作フローの一例を示す図である。
【図４１】別の実施形態における情報処理装置の一例を示す図である。
【図４２Ａ】図４１の情報処理装置がマルチモーダルＤＮＮによる推論処理を実行する場合の動作フローの一例を示す図である。
【図４２Ｂ】図４２Ａの続きを示す図である。
【図４３】別の実施形態における情報処理装置の一例を示す図である。
【図４４】別の実施形態における情報処理装置の一例を示す図である。
【発明を実施するための形態】
【０００９】
以下、図面を用いて実施形態が説明される。
【００１０】
図１は、一実施形態における情報処理装置の一例を示す。図１に示す情報処理装置１００は、複数の演算装置２（２Ａ、２Ｂ、２Ｃ）および演算装置６を有し、マルチモーダルＤＮＮの推論処理を実行する。演算装置２Ａ、２Ｂ、２Ｃは、第１の前処理演算装置の一例であり、演算装置６は、第１の後処理演算装置および演算処理装置の一例である。
【００１１】
演算装置２Ａは、変換部３Ａ、演算部４Ａおよび出力部５Ａを有する。演算装置２Ｂは、変換部３Ｂ、演算部４Ｂおよび出力部５Ｂを有する。演算装置２Ｃは、変換部３Ｃ、演算部４Ｃおよび出力部５Ｃを有する。変換部３（３Ａ、３Ｂ、３Ｃ）は、第１の変換部の一例であり、演算部４（４Ａ、４Ｂ、４Ｃ）は、第１の前処理演算部の一例である。出力部５（５Ａ、５Ｂ、５Ｃ）は、第１の出力部の一例である。例えば、演算装置２Ａ、２Ｂ、２Ｃは、それぞれ半導体チップまたは半導体パッケージの形態を有する。
【００１２】
変換部３Ａは、演算装置２Ａに接続されたセンサ１Ａから入力するデータを演算部４Ａで処理可能なデータに変換する。演算部４Ａは、変換部３Ａにより変換されたデータの特徴量を抽出する処理を実行し、実行結果である特徴量データを出力する。演算部４Ａは、センサ１Ａが計測するデータの特徴量を抽出するために、アーキテクチャが最適化されている。出力部５Ａは、演算部４Ａが出力する特徴量データを演算装置６に出力する。
【００１３】
変換部３Ｂは、演算装置２Ｂに接続されたセンサ１Ｂから入力するデータを演算部４Ｂで処理可能なデータに変換する。演算部４Ｂは、変換部３Ｂにより変換されたデータの特徴量を抽出する処理を実行し、実行結果である特徴量データを出力する。演算部４Ｂは、センサ１Ｂが計測するデータの特徴量を抽出するために、アーキテクチャが最適化されている。出力部５Ｂは、演算部４Ｂが出力する特徴量データを演算装置６に出力する。
【００１４】
変換部３Ｃは、演算装置２Ｃに接続されたセンサ１Ｃから入力するデータを演算部４Ｃで処理可能なデータに変換する。演算部４Ｃは、変換部３Ｃにより変換されたデータの特徴量を抽出する処理を実行し、実行結果である特徴量データを出力する。演算部４Ｃは、センサ１Ｃが計測するデータの特徴量を抽出するために、アーキテクチャが最適化されている。出力部５Ｃは、演算部４Ｃが出力する特徴量データを演算装置６に出力する。
【００１５】
以下では、センサ１Ａ、１Ｂ、１Ｃを区別なく示す場合、センサ１とも称する。センサ１Ａ、１Ｂ、１Ｃは、第１のセンサの一例である。例えば、センサ１Ａは、画像センサであり、演算装置２Ａは、画像センサが出力する画像データの特徴量を抽出する機能を有する。例えば、センサ１Ｂは、音声センサであり、演算装置２Ｂは、音声センサが出力する音声データの特徴量を抽出する機能を有する。例えば、センサ１Ｃは、モーションセンサであり、演算装置２Ｃは、モーションセンサが出力するモーションデータの特徴量を抽出する機能を有する。
【００１６】
このように、センサ１Ａ、１Ｂ、１Ｃの種類は、互いに異なり、センサ１Ａ、１Ｂ、１Ｃが出力するデータの形式およびデータ量は、互いに異なる。また、演算装置２Ａに接続されるセンサ１Ａの種類（例えば、画像センサ）は、予め決められる。演算装置２Ｂに接続されるセンサ１Ｂの種類（例えば、音声センサ）は、予め決められる。演算装置２Ｃに接続されるセンサ１Ｃの種類（例えば、モーションセンサ）は、予め決められる。換言すれば、センサ１の種類毎に演算装置２が決められる。
【００１７】
例えば、各変換部３は、ニューラルネットワークによる推論処理を実行する場合、所定の周期で各センサ１から入力するデータを順次変換する。各演算部４は、各変換部３から入力するデータの特徴量を抽出する特徴量抽出処理を順次実行し、特徴量データを生成する。そして、各出力部５は、各変換部３から受信した特徴量データを演算装置６の入力部７に出力する。
【００１８】
例えば、画像センサとモーションセンサから取得するデータを用いることで、スマートフォン等の携帯端末の自己位置を推定する処理をニューラルネットワークにより実現することができる。また、ランドマークの見え方と加速度情報とから、携帯端末の現在位置（絶対座標）や向いている方向（姿勢）を推定する処理をニューラルネットワークにより実現することができる。さらに、画像センサと音声センサから取得するデータを用いることで、音声データにより音声認識に加えて、動画像から検出される話者の唇の動きによる音声認識を実行することで、高精度の音声認識を実現することができる。
【００１９】
演算装置６は、バス６ａを介して互いに接続された入力部７、演算部８および記憶部９を有する。入力部７および演算部８は、１つの半導体チップまたは１つの半導体パッケージに含まれてもよく、プリント基板等のシステム基板上に配置されてもよい。記憶部９は、メモリモジュールとしてシステム基板上に配置されてもよい。入力部７は、第１の入力部の一例である。演算部８は、第１の後処理演算部の一例である。記憶部９は、第１の記憶部の一例である。
【００２０】
入力部７は、演算装置２Ａ、２Ｂ、２Ｃから特徴量データを入力する毎に、入力した特徴量データを記憶部９に記憶させる。図１に示す例では、入力部７は、演算装置２Ａ、２Ｂ、２Ｃからの特徴量データをそれぞれ入力する複数の入力ポートを有するが、図示しないセレクタを介して演算装置２Ａ、２Ｂ、２Ｃからの特徴量データを入力してもよい。
【００２１】
演算部８は、記憶部９に記憶された複数種の特徴量データを用いて各センサが計測したデータに基づく推論処理を実行し、推論処理の実行結果である識別結果データを記憶部９に記憶させる。この後、記憶部９に記憶された識別結果データは、演算装置６が有するＣＰＵ（Central  Processing  Unit）等のプロセッサが実行するアプリケーションプログラムにより、各種処理や各種サービスを実行するために使用される。各種処理は、例えば、情報処理装置１００に接続されたアクチュエータ等の制御機器を制御する処理である。アプリケーションプログラムを実行するＣＰＵは、演算部８に含まれてもよい。
【００２２】
図１に示す情報処理装置１００では、演算装置６には、最大の接続可能数以下の任意の数の演算装置２を接続することができる。入力部７に任意の演算装置２を接続するために、各演算装置２と演算装置６とは、共通のインタフェース仕様により接続される。共通のインタフェース仕様にすることで、情報処理装置１００は、演算装置２を介して様々なセンサ１を、共通の演算装置６に接続して推論処理を実行することができる。すなわち、情報処理装置１００は、１種類の演算装置６を使用して様々な推論処理を実行することができる。
【００２３】
なお、入力部７に接続される演算装置２Ａ、２Ｂ、２Ｃの順序および数は、図１に示す例に限定されない。例えば、センサ１Ａに対応する演算装置２Ａのみが演算装置６に接続されてもよい。また、センサ１Ａ、１Ｃに対応する演算装置２Ａ、２Ｃが演算装置６に接続されてもよい。さらに、４種類以上のセンサ１の各々に対応する４つの演算装置２が演算装置６に接続されてもよい。この場合、演算装置６の入力部７は、４以上の入力ポートを有する。すなわち、情報処理装置１００は、センサ１Ａ、１Ｂ、１Ｃ以外のセンサから出力されるデータを使用して特徴量データを抽出し、特徴量データの識別処理を実行してもよい。この場合にも、例えば、モーションセンサであるセンサ１Ｃの代わりに圧力センサ、温度センサまたは光センサ等が使用されてもよく、使用するセンサが出力するデータの特徴量データを抽出する演算装置が演算装置２Ｃの代わりに演算装置６に接続される。
【００２４】
このように、情報処理装置１００は、センサ１の種類毎にアーキテクチャが最適化された演算部４を含む演算装置２を、共通の演算装置６に接続することで、ニューラルネットワークによる推論処理を実行することができる。これにより、処理性能を低下させることなく、各演算装置２による特徴量データの抽出を実行することができる。なお、特徴量データを用いた識別処理の性能（処理時間）は、特徴量データのサイズにより変化するが、センサ１の種類に依存しない。このため、演算装置６は、特徴量データを用いた識別処理に特化して設計することが可能であり、複数種の演算装置２に共通にする場合にも、アーキテクチャを最適化することができる。
【００２５】
以上、図１に示す実施形態では、複数種のセンサ１のそれぞれが取得したデータから特徴量データを抽出する処理と、複数種の特徴量データを用いてセンサ１が検出した情報を識別する処理とを、互いに異なる演算装置２、６により実行する。これにより、任意の種類のセンサ１に対応する演算装置２により特徴量データを抽出し、抽出した特徴量データを用いて演算装置６により識別処理を実行することができる。この結果、使用するセンサ１の種類に関わらず、複数の演算装置２を演算装置６に接続して、ニューラルネットワークの推論処理を実行することができ、センサ１を自由に組み合わせる場合にも、推論処理の効率が低下することを抑止できる。換言すれば、情報処理装置１００は、センサ１を自由に組み合わせて、マルチモーダルＤＮＮによる推論処理を実行することができる。また、組み合わせるセンサ１に対応して新たな演算装置２を設計することなく、推論処理を実行することができる。
【００２６】
演算装置２と演算装置６とを、共通のインタフェース仕様により接続することで、演算装置６の入力部７の任意の入力ポートに演算装置２を接続することができる。各演算装置２は、接続するセンサ１に対応して設計されるため、センサ１毎の特徴量データの抽出処理に特化することができる。この結果、各演算装置２のアーキテクチャを最適化することができ、チップサイズを最小にすることができる。演算装置６は、特徴量データを用いた識別処理に特化して設計されるため、アーキテクチャを最適化することができ、演算部８を含む半導体チップのチップサイズを最小にすることができる。この結果、例えば、システムコストを抑えたマルチモーダルＤＮＮ推論システムをユーザーに提供することができる。
【００２７】
図２は、別の実施形態における情報処理装置の一例を示す。図１と同様の要素については、詳細な説明は省略する。図２に示す情報処理装置１０１は、イメージセンサ１０Ａ、マイクロフォン１０Ｂ、ジャイロセンサ１０Ｃ、複数のセンサＳｏＣ（System  on  a  Chip）２０（２０Ａ、２０Ｂ、２０Ｃ）、エッジＳｏＣ６０、セレクタ７７およびメモリ９０を有する。エッジＳｏＣ６０、セレクタ７７およびメモリ９０は、情報処理装置１０１のマザーボードＢＲＤに実装される。例えば、各センサＳｏＣ２０は、ＰＣＩ（Peripheral  Component  Interconnect）カードに実装され、図示しないコネクタを介してマザーボードＢＲＤのＰＣＩバスに接続されてもよい。情報処理装置１０１は、図１に示す情報処理装置１００と同様に、マルチモーダルＤＮＮの推論処理を実行する。
【００２８】
センサＳｏＣ２０Ａは、第１の前処理演算装置の一例である。センサＳｏＣ２０Ｂは、第１の前処理演算装置または第２の前処理演算装置の一例である。センサＳｏＣ２０Ｃは、第１の前処理演算装置または第３の前処理演算装置の一例である。エッジＳｏＣ６０は、第１の後処理演算装置および演算処理装置の一例である。
【００２９】
センサＳｏＣ２０Ａは、バス２１Ａを介して互いに接続されたＡ／Ｄ（Analog  to  Digital）変換器３０Ａ、演算コア４０Ａ、Ｉ／Ｏ（Input/Output）コントローラ５０Ａおよびメモリ５５Ａを有する。Ａ／Ｄ変換器３０Ａは、イメージセンサ１０Ａからのアナログ画像データを入力し、アナログ画像データをデジタル画像データに変換する。演算コア４０Ａは、デジタル画像データに対して特徴量の抽出処理を実行し、抽出した画像特徴量データをメモリ５５Ａに記憶させる。例えば、メモリ５５Ａは、ＳＲＡＭ（Static  Random  Access  Memory）である。
【００３０】
Ｉ／Ｏコントローラ５０Ａは、メモリ５５Ａに記憶された画像特徴量データを読み出してセレクタ７７に出力する。Ｉ／Ｏコントローラ５０Ａは、エッジＳｏＣ６０からの情報を受信する機能を有してもよい。イメージセンサ１０Ａは、第１のセンサの一例である。Ａ／Ｄ変換器３０Ａは、第１の変換部の一例である。演算コア４０Ａは、第１の前処理演算部の一例である。Ｉ／Ｏコントローラ５０Ａは、第１の出力部の一例である。
【００３１】
センサＳｏＣ２０Ｂは、バス２１Ｂを介して互いに接続されたＡ／Ｄ変換器３０Ｂ、演算コア４０Ｂ、Ｉ／Ｏコントローラ５０Ｂおよびメモリ５５Ｂを有する。Ａ／Ｄ変換器３０Ｂは、マイクロフォン１０Ｂからのアナログ音声データを入力し、アナログ音声データをデジタル音声データに変換する。演算コア４０Ｂは、デジタル音声データに対して特徴量の抽出処理を実行し、抽出された音声特徴量データをメモリ５５Ｂに記憶させる。例えば、メモリ５５Ｂは、ＳＲＡＭである。
【００３２】
Ｉ／Ｏコントローラ５０Ｂは、メモリ５５Ｂに記憶された音声特徴量データを読み出してセレクタ７７に出力する。Ｉ／Ｏコントローラ５０Ｂは、エッジＳｏＣ６０からの情報を受信する機能を有してもよい。マイクロフォン１０Ｂは、第１のセンサまたは音声センサの一例である。Ａ／Ｄ変換器３０Ｂは、第１の変換部または第２の変換部の一例である。演算コア４０Ｂは、第１の前処理演算部または第２の前処理演算部の一例である。Ｉ／Ｏコントローラ５０Ｂは、第１の出力部の一例である。
【００３３】
センサＳｏＣ２０Ｃは、バス２１Ｃを介して互いに接続されたＡ／Ｄ変換器３０Ｃ、演算コア４０Ｃ、Ｉ／Ｏコントローラ５０Ｃおよびメモリ５５Ｃを有する。Ａ／Ｄ変換器３０Ｃは、ジャイロセンサ１０Ｃからのアナログモーションデータを入力し、アナログモーションデータをデジタルモーションデータに変換する。演算コア４０Ｃは、デジタルモーションデータに対して特徴量の抽出処理を実行し、抽出されたモーション特徴量データをメモリ５５Ｃに記憶させる。例えば、メモリ５５Ｃは、ＳＲＡＭである。
【００３４】
Ｉ／Ｏコントローラ５０Ｃは、メモリ５５Ｃに記憶されたモーション特徴量データを読み出してセレクタ７７に出力する。Ｉ／Ｏコントローラ５０Ｃは、エッジＳｏＣ６０からの情報を受信する機能を有してもよい。ジャイロセンサ１０Ｃは、第１のセンサまたはモーションセンサの一例である。Ａ／Ｄ変換器３０Ｃは、第１の変換部または第３の変換部の一例である。演算コア４０Ｃは、第１の前処理演算部または第３の前処理演算部の一例である。Ｉ／Ｏコントローラ５０Ｃは、第１の出力部の一例である。
【００３５】
セレクタ７７は、Ｉ／Ｏコントローラ５０Ａ、５０Ｂ、５０Ｃの出力の各々にそれぞれ接続される３つの入力ポートと、エッジＳｏＣ６０に接続される出力ポートとを有する。例えば、セレクタ７７は、入力ポート毎に特徴量データを保持するキューを有し、キューに保持された特徴量データを宛先（例えば、宛先で示されるメモリ９０の領域）に向けて転送する。これにより、Ｉ／Ｏコントローラ５０Ａ、５０Ｂ、５０Ｃが出力する特徴量データは、エッジＳｏＣ６０に順次転送される。
【００３６】
なお、セレクタ７７が有する入力ポートの数は、４以上でもよい。例えば、セレクタ７７の入力ポート数が足りなくなった場合、セレクタ７７をポート数が多い他のセレクタと交換することが可能である。この結果、エッジＳｏＣ６０を再設計することなく、エッジＳｏＣ６０に接続可能なセンサＳｏＣ２０の数を増やすことができ、異なる種類のマルチモーダルＤＮＮの推論処理を実行することができる。
【００３７】
エッジＳｏＣ６０は、バス６１を介して互いに接続されたＩ／Ｏコントローラ７０、演算コア８０および通信インタフェース８５を有する。バスにはメモリ９０も接続される。例えば、メモリ９０は、主記憶装置であり、ＳＤＲＡＭ（Synchronous  Dynamic  Random  Access  Memory）を含むメモリモジュールでもよく、積層された複数のメモリチップを含んでもよい。メモリ９０は、ＳＤＲＡＭ以外のメモリが採用されてもよい。Ｉ／Ｏコントローラ７０は、第１の入力部の一例である。演算コア８０は、第１の後処理演算部の一例である。メモリ９０は、第１の記憶部の一例である。
【００３８】
Ｉ／Ｏコントローラ７０は、セレクタ７７から転送される特徴量データをメモリ９０に記憶させる。Ｉ／Ｏコントローラ７０は、セレクタ７７を介して、エッジＳｏＣ６０の外部にデータ等を出力する機能を有してもよい。演算コア８０は、メモリ９０に記憶された画像特徴量データ、音声特徴量データおよびモーション特徴量データを読み出し、これら特徴量データに対する識別処理を実行する。演算コア８０は、識別処理で得られた識別結果データをメモリ９０に記憶させる。識別結果データは、画像データの識別結果である画像識別結果データ、音声データの識別結果である音声識別結果データ、またはモーションデータの識別結果であるモーション識別結果データの一例である。通信インタフェース８５は、例えば、マザーボードＢＲＤ上に実装されるＣＰＵ等の他のプロセッサとの間での通信を制御する機能を有してもよく、マザーボードＢＲＤに接続される他のデバイスとの間での通信を制御する機能を有してもよい。
【００３９】
Ｉ／Ｏコントローラ５０（５０Ａ、５０Ｂ、５０Ｃ）、セレクタ７７およびＩ／Ｏコントローラ７０は、互いに共通のインタフェース仕様を有しており、Ｉ／Ｏコントローラ５０Ａ、５０Ｂ、５０Ｃは、セレクタ７７の入力ポートのいずれに接続されてもよい。また、共通のインタフェース仕様を有する他のＩ／Ｏコントローラ５０を含むセンサＳｏＣがセレクタ７７の入力ポートに接続されてもよい。すなわち、図２に示す情報処理装置１０１では、センサＳｏＣ２０を介してエッジＳｏＣ６０に接続されるセンサ１０の種類や数は、識別処理に使用する特徴量データに応じて自由に切り換えることができる。また、エッジＳｏＣ６０（すなわち、マザーボードＢＲＤ）は、識別処理に使用する特徴量データのサイズ等に応じて自由に切り替えることができる。任意の種類と数のセンサＳｏＣ２０と任意のエッジＳｏＣ６０との組み合わせが可能なため、様々な推論を実行するマルチモーダルＤＮＮ推論システムを、情報処理装置１０１により実現することができる。
【００４０】
例えば、共通のインタフェース仕様は、ＰＣＩｅ（登録商標）バスでもよい。また、各センサＳｏＣ２０により抽出された特徴量データは、ＤＭＡ（Direct  Memory  Access）によりエッジＳｏＣ６０を介してメモリ９０に転送されてもよい。センサ１０の種類毎に対応するセンサＳｏＣ２０により、センサ１０が取得したデータから特徴量データを抽出することで、抽出処理用にアーキテクチャを最適化したセンサＳｏＣ２０を設計することができる。アーキテクチャを最適化したセンサＳｏＣ２０の例は、図４から図６に示される。
【００４１】
図３は、図２の情報処理装置１０１により実現されるマルチモーダルＤＮＮ推論システムの一例を示す。図３に示すマルチモーダルＤＮＮ推論システムは、特徴量データの抽出処理を実行する３つのセンサＳｏＣ２０Ａ、２０Ｂ、２０Ｃと、特徴量データを使用して識別処理を実行するエッジＳｏＣ６０を含む。各センサＳｏＣ２０は、各センサ１０による計測値であるデータを取得した後、特徴量データの抽出処理の前に処理Ｓ１、Ｓ２、Ｓ３を実行する。
【００４２】
計測値が画像データの場合、処理Ｓ１において、センサＳｏＣ２０Ａは、イメージセンサ１０Ａからのアナログ画像データを、例えば、ＪＰＥＧ形式のデジタルデータに変換する。また、センサＳｏＣ２０Ａは、ＪＰＥＧ形式のデジタルデータを３次元配列（縦２５６画素、横２５６画素、ＲＧＢなど）に変換し、さらに、後段の処理に合わせて画像データのデータ構造を変換する。処理Ｓ１は、演算コア４０Ａにより実行されてもよく、専用のハードウェアにより実行されてよく、ソフトウェアにより実行されてもよい。処理Ｓ１の後、センサＳｏＣ２０Ａは、演算コア４０Ａを使用して、例えば、畳み込み層による畳み込み処理およびプーリング層によるプーリング処理を実行する処理Ｃにより画像データの特徴量データを抽出する。
【００４３】
計測値が音声データの場合、処理Ｓ２において、センサＳｏＣ２０Ｂは、マイクロフォン１０Ｂから取得したアナログ音声データを離散フーリエ変換し、デジタル音声データを生成する。処理Ｓ２は、Ａ／Ｄ変換器３０Ｂにより実行されてもよく、演算コア４０Ｂにより実行されてもよく、専用のハードウェアにより実行されてよく、または、ソフトウェアにより実行されてもよい。処理Ｓ２の後、センサＳｏＣ２０Ｂは、演算コア４０Ｂを使用して、例えば、リカレントニューラルネットワーク（ＲＮＮ：Recurrent  neural  network）におけるＬＳＴＭ（Long  Short-Term  Memory）による処理Ｌにより、音声データの特徴量データを抽出する。
【００４４】
計測値がモーションデータの場合、処理Ｓ３において、センサＳｏＣ２０Ｃは、ジャイロセンサ１０Ｃから取得したアナログモーションデータをデジタルモーションデータに変換する。処理Ｓ３の後、センサＳｏＣ２０Ｃは、演算コア４０Ｃを使用して、全結合層（Fully  Connected  Layer、Dense  layer）による行列ベクトル積を算出する処理Ｆ１により特徴量データを抽出する。
【００４５】
なお、マルチモーダルＤＮＮ推論システムに使用可能なセンサは、センサ１０Ａ、１０Ｂ、１０Ｃに限定されない。例えば、気圧センサ、圧力センサまたは照度センサ等が使用されてもよい。また、センサＳｏＣ２０で実行される演算処理は、畳み込み層による処理、ＬＳＴＭによる処理および全結合層による処理に限定されない。
【００４６】
エッジＳｏＣ６０は、抽出された特徴量データに基づく識別処理Ｆ２と、識別結果に基づく処理Ａ（アプリケーション）とを実行する。例えば、識別処理Ｆ２では、全結合層による行列ベクトル積の算出（式１）や、ソフトマックス層によるソフトマックス関数演算（式２）が実行される。二重線で示すＲは、実数の集合を示し、Ｒの右上の数字は要素数を示す。
【００４７】
式（１）おいて、ｘ１、ｘ２、ｘ３は、それぞれセンサＳｏＣ２０Ａ、２０Ｂ、２０ＣからエッジＳｏＣ６０へ転送する特徴量データを示し、ｘ１は、要素数２０４８のベクトル、ｘ２、ｘ３は、要素数１０２４のベクトルであるとする。特徴量データの総数ｘは、ｘ１、ｘ２、ｘ３の総数（＝４０９６）である。式（１）において、Ｗは予め実行された学習処理により得られた学習済みの重み行列で、１０００行４０９６列の行列である。そして、行列の積（Ｗｘ）により要素数１０００のベクトルである出力ｏが生成される。式（２）に示すｓｏｆｔｍａｘ関数は式（３）で定義される非線形関数である。数（２）のｙは要素数１０００のベクトルで、マルチモーダルＤＮＮの最終的な識別結果に相当する。
【００４８】
【数１】
2020129296.tif 000003
【００４９】
【数２】
2020129296.tif 000004
【００５０】
【数３】
2020129296.tif 000005
【００５１】
なお、図３に示すマルチモーダルＤＮＮ推論システムは、図１に示す情報処理装置１００によっても実現可能である。この場合、図２のセンサＳｏＣ２０Ａ、２０Ｂ、２０Ｃは、図１の演算装置２Ａ、２Ｂ、２Ｃに置き換えられ、図２のエッジＳｏＣ６０は、図１の演算装置６に置き換えられる。
【００５２】
例えば、図３に示す処理Ｃ、処理Ｌ、処理Ｆ１、Ｆ２は、３２ビット（単精度）の浮動小数点数データＦＰ３２（以下、ＦＰ３２）を使用して実行される。なお、処理Ｃ、処理Ｌ、処理Ｆ１、Ｆ２は、ＦＰ３２以外のデータ型を使用して実行されてもよい。
【００５３】
図４は、図２のセンサＳｏＣ２０Ａの一例を示す。センサＳｏＣ２０Ａは、畳み込み層による畳み込み処理用にアーキテクチャを最適化しており、演算コア４０Ａは、二次元に配列された複数のベクタ演算器（Vector  ALU（Arithmetic  and  Logic  Unit））と、メモリ５５Ａに比べて高速な高速メモリとを有する。ベクタ演算器は、複数のデータに対して同一の演算を並列に実行するベクトル演算が可能であり、畳み込み処理に適している。二次元配列のベクタ演算器は、あるベクタ演算器から隣接する別のベクタ演算器に演算に用いたデータをフォワーディング可能であるため、畳み込み処理を実行するのに適している。
【００５４】
例えば、高速メモリは、ＳＲＡＭであるが、強誘電体メモリ、ＭＲＡＭ（Magnetic  Random  Access  Memory）またはＲｅＲＡＭ（Resistive  Random  Access  Memory）が使用されてもよい。高速メモリの記憶容量は、畳み込むカーネル（フィルタ）のうち出力チャンネル１枚分のカーネル（縦×横×入力チャンネル数）に対応する演算対象データが収まるサイズであればよい。なお、演算コア４０Ａは、図４に示す構成に限定されない。また、センサＳｏＣ２０Ａは、複数の演算コア４０Ａを有してもよく、演算コア４０Ａが有するベクタ演算器の数は９個に限定されない。
【００５５】
図５は、図２のセンサＳｏＣ２０Ｂの一例を示す。センサＳｏＣ２０Ｂは、ＬＳＴＭの処理に特化するためにアーキテクチャを最適化しており、バスに接続された複数の演算コア４０Ｂを有する。ＬＳＴＭによる主な演算内容は、行列演算と非線形関数演算であるため、各演算コア４０Ｂは、ＦＭＡ（Fused  Multiply-Add）、ＳＰＦ（SPecial  Function  unit）および高速メモリを有する。ＦＭＡは、アキュムレータ付きの積和演算器であり、行列積の高速化に有効である。ＳＰＦは、シグモイド関数や双曲線正接（tanh）関数など、ＤＮＮで頻繁に使用される非線形関数用の演算器を含む。また、高速メモリは、ＳＲＡＭ、強誘電体メモリ、ＭＲＡＭまたはＲｅＲＡＭ等であり、ＬＳＴＭによる演算に使用するデータを記憶する。なお、センサＳｏＣ２０Ｂが有する演算コア４０Ｂの数は、４つに限定されない。
【００５６】
図６は、図２のセンサＳｏＣ２０Ｃの一例を示す。センサＳｏＣ２０Ｃは、全結合層による行列ベクトル積の演算用にアーキテクチャを最適化しており、演算コア４０Ｃは、複数のＦＭＡと複数のＳＰＦと重みメモリとを有する。重みメモリには、全結合層の演算で使用する学習済みの重みデータが予め格納される。重みメモリの容量は、図４および図5に示す高速メモリの容量より大きいことが望ましい。重みメモリは、ＳＲＡＭ、強誘電体メモリ、ＭＲＡＭまたはＲｅＲＡＭ等である。演算コア４０Ｃは、レジスタファイルを介さずに重みメモリからＦＭＡに演算対象データを直接供給する構成を採用してもよい。これにより、重みメモリから非常に長いデータをシーケンシャルに連続して読み出し、読み出したデータを各ＦＭＡに供給することができ、全結合層による演算を効率的に実行することができる。なお、ＦＭＡの数およびＳＰＦの数は、図６に示す例に限定されない。
【００５７】
図４から図６に示すように、ＤＮＮによる演算処理の内容により、センサＳｏＣ２０の最適なアーキテクチャは異なる。すなわち、データを取得するセンサ１０の種類により、センサＳｏＣ２０の最適なアーキテクチャは異なる。例えば、センサ１０の種類毎、あるいは、ＤＮＮによる演算処理の種類毎に、アーキテクチャを最適化したＳｏＣ２０を用意することで、複数種のセンサ１０に共通のセンサＳｏＣを使用する場合に比べて、ＤＮＮの処理性能を向上させることができる。
【００５８】
図７Ａおよび図７Ｂは、図２の情報処理装置１０１がマルチモーダルＤＮＮによる推論処理を実行する場合の動作フローの一例を示す。すなわち、図７Ａおよび図７Ｂは、情報処理装置１０１の制御方法の一例を示す。例えば、図７Ａおよび図７Ｂに示す動作は、情報処理装置１０１が、マルチモーダルＤＮＮの推論処理によるサービスの要求をユーザーから受けたことに基づいて、推論処理が完了するまで繰り返し実行される。図７Ａおよび図７Ｂに示す開始から終了までの処理の期間は、動作サイクルと称される。以下では、センサＳｏＣ２０Ａ、２０Ｂ、２０Ｃは、それぞれセンサＳｏＣ１、ＳｏＣ２、ＳｏＣ３とも称し、エッジＳｏＣ６０は、エッジＳｏＣとも称する。また、センサＳｏＣ１、ＳｏＣ２、ＳｏＣ３を区別なく説明する場合、センサＳｏＣとも称する。後述する実施形態でも同様である。センサＳｏＣ１、ＳｏＣ２、ＳｏＣ３は、互いに並列に動作し、エッジＳｏＣは、全てのセンサＳｏＣから完了通知を受信したことに基づいて識別処理を実行する。
【００５９】
センサＳｏＣ１は、処理Ｓ１を実行するステップＳ１０１において、イメージセンサ１０Ａに計測要求を送信し、イメージセンサ１０Ａが撮影（計測）したアナログ画像データ（計測値）を受信する。センサＳｏＣ１は、受信したアナログデータをデジタル画像データに変換した後、メモリ５５Ａに書き込む。次に、センサＳｏＣ１は、処理Ｃを実行するステップＳ１０２において、ＤＮＮ演算処理として、メモリ５５Ａに保持された画像データを使用して畳み込み層による特徴量の抽出処理を実行し、得られた特徴量データをメモリ５５Ａに書き込む。その後、センサＳｏＣ１は、エッジＳｏＣへ完了通知を送信する。
【００６０】
センサＳｏＣ２は、処理Ｓ２を実行するステップＳ２０１において、マイクロフォン１０Ｂに計測要求を送信し、マイクロフォン１０Ｂが録音（計測）したアナログ音声データ（計測値）を受信する。センサＳｏＣ２は、受信したアナログ音声データをデジタル音声データに変換した後、メモリ５５Ｂに書き込む。次に、センサＳｏＣ２は、処理Ｌを実行するステップＳ２０２において、ＤＮＮ演算処理として、メモリ５５Ｂに保持された音声データを使用してＬＳＴＭによる特徴量の抽出処理を実行し、得られた特徴量データをメモリ５５Ｂに書き込む。その後、センサＳｏＣ２は、エッジＳｏＣへ完了通知を送信する。
【００６１】
センサＳｏＣ３は、処理Ｓ３を実行するステップＳ３０１において、ジャイロセンサ１０Ｃに計測要求を送信し、ジャイロセンサ１０Ｃが計測したアナログ計測データを受信する。センサＳｏＣ３は、受信したアナログ計測データをデジタル計測データに変換した後、メモリ５５Ｃに書き込む。次に、センサＳｏＣ３は、処理Ｆ１を実行するステップＳ３０２において、ＤＮＮ演算処理として、メモリ５５Ｃに保持されたデジタル計測データを使用して全結合層による特徴量の抽出処理を実行し、得られた特徴量データをメモリ５５Ｃに書き込む。その後、センサＳｏＣ３は、エッジＳｏＣへ完了通知を送信する。なお、各種センサ１０を常時動作させ、センサＳｏＣは、推論処理を実行する動作サイクルの開始タイミングに合わせて、各種センサ１０が出力するアナログデータを取得してもよい。
【００６２】
エッジＳｏＣは、ステップＳ４０１において、センサＳｏＣのいずれかからの完了通知を待ち、センサＳｏＣのいずれかから完了通知を受信した場合、動作をステップＳ４０２に移行する。エッジＳｏＣは、推論処理を実行する動作サイクル毎にセンサＳｏＣからの完了通知を保持する機能を有する。エッジＳｏＣは、ステップＳ４０２において、当該動作サイクル中にセンサＳｏＣ１から完了通知を初めて受信した場合、センサＳｏＣ１にデータ転送要求を発行し、動作を図７ＢのステップＳ４０３に移行する。エッジＳｏＣは、センサＳｏＣ１から完了通知を受信しない場合、または、当該動作サイクルにおいて完了通知を受信済みの場合、動作をステップＳ４０３に移行する。センサＳｏＣ１は、ステップＳ１０３において、データ転送要求を受信した場合、メモリ５５Ａが保持する特徴量データをエッジＳｏＣに転送する。エッジＳｏＣは、センサＳｏＣ１から受信した特徴量データをメモリ９０に格納する。センサＳｏＣ１からメモリ９０への特徴量データの転送は、セレクタ７７を介してセンサＳｏＣ１をエッジＳｏＣに接続した状態で実行される。
【００６３】
エッジＳｏＣは、図７ＢのステップＳ４０３において、当該動作サイクル中にセンサＳｏＣ２から完了通知を受信した場合、センサＳｏＣ２にデータ転送要求を発行し、動作をステップＳ４０４に移行する。エッジＳｏＣは、センサＳｏＣ２から完了通知を受信しない場合、または、当該動作サイクルにおいて完了通知を受信済みの場合、動作をステップＳ４０４に移行する。センサＳｏＣ２は、ステップＳ２０３において、データ転送要求を受信した場合、メモリ５５Ｂが保持する特徴量データをエッジＳｏＣに転送する。エッジＳｏＣは、センサＳｏＣ２から受信した特徴量データをメモリ９０に格納する。センサＳｏＣ２からメモリ９０への特徴量データの転送は、セレクタ７７を介してセンサＳｏＣ２をエッジＳｏＣに接続した状態で実行される。
【００６４】
エッジＳｏＣは、ステップＳ４０４において、当該動作サイクル中にセンサＳｏＣ３から完了通知を受信した場合、センサＳｏＣ３にデータ転送要求を発行し、動作をステップＳ４０５に移行する。エッジＳｏＣは、センサＳｏＣ３から完了通知を受信しない場合、または、当該動作サイクルにおいて完了通知を受信済みの場合、動作をステップＳ４０５に移行する。センサＳｏＣ３は、ステップＳ３０３において、データ転送要求を受信した場合、メモリ５５Ｃが保持する特徴量データをエッジＳｏＣに転送する。エッジＳｏＣは、センサＳｏＣ３から受信した特徴量データをメモリ９０に格納する。センサＳｏＣ３からメモリ９０への特徴量データの転送は、セレクタ７７を介してセンサＳｏＣ３をエッジＳｏＣに接続した状態で実行される。
【００６５】
エッジＳｏＣは、ステップＳ４０５において、全てのセンサＳｏＣから完了通知を受信済みの場合、動作をステップＳ４０６に移行し、完了通知を受信していないセンサＳｏＣがある場合、動作をステップＳ４０１に戻す。例えば、ステップＳ４０１からステップＳ４０５の処理は、演算コア８０（図２）が実行する制御プログラムによる制御により実行されてもよく、エッジＳｏＣが有するコントローラ（ハードウェア）により実行されてもよい。
【００６６】
演算コア８０は、ステップＳ４０６において、ＤＮＮ演算処理として処理Ｆ２を実行し、メモリ９０に保持された特徴量データを使用して識別処理を実行し、識別結果を得る。演算コア８０は、得られた識別結果をメモリ９０に格納する。
【００６７】
次に、ステップＳ４０８において、演算コア８０は、処理Ａとして、メモリ９０に保持された識別結果を入力とするアプリケーション（プログラム）を実行し、各種サービスの処理を実行し、または、アクチュエータ等の制御機器を制御する処理を実行する。各種サービスの処理、または、制御機器を制御する処理は、通信インタフェース８５を介して、エッジＳｏＣ６０の外部のＣＰＵ等のプロセッサにより実行されてもよい。そして、当該動作サイクルでのマルチモーダルＤＮＮの推論処理の実行が終了する。
【００６８】
図８は、他の情報処理装置の一例を示す。図２に示す情報処理装置１０１と同様の要素については、同じ符号を付し、詳細な説明は省略する。図８に示す情報処理装置１１０は、イメージセンサ１０Ａ、マイクロフォン１０Ｂ、ジャイロセンサ１０Ｃ、ＳｏＣ６００およびメモリ９０を有する。情報処理装置１１０は、図２に示す情報処理装置１０１と同様に、マルチモーダルＤＮＮの推論処理を実行する。
【００６９】
ＳｏＣ６００は、ＤＮＮ用の汎用チップであり、各種センサ１０Ａ、１０Ｂ、１０Ｃからのアナログデータをデジタルデータに変換する複数のＡ／Ｄ変換器６１２、セレクタ６１４および演算コア６１６を有する。セレクタ６１４は、Ａ／Ｄ変換器６１２のいずれかの出力を、バスを介してメモリ９０に接続し、センサ１０Ａ、１０Ｂ、１０Ｃが計測したアナログデータから変換されたデジタルデータをメモリ９０に格納する。
【００７０】
演算コア６１６は、ＦＭＡ、ＳＰＦ、ベクタ演算器（Vector  ALU）および高速メモリを有する汎用のコアであり、畳み込み層、ＬＳＴＭおよび全結合層の機能を実現可能である。このため、１つのＳｏＣ６００により、図３に示す処理Ｓ１、Ｓ２、Ｓ３、Ｃ、Ｌ、Ｆ１、Ｆ２、Ａの全てを実行することができる。
【００７１】
一方で、例えば、チップサイズの制限によりベクタ演算器の搭載数が制限されるため、ＳｏＣ６００は、図４のセンサＳｏＣ２０Ａに比べて、畳み込み層としての演算性能は低い。また、チップサイズの制限によりＦＭＡ、ＳＰＦの搭載数が制限されるため、ＳｏＣ６００は、図５のセンサＳｏＣ２０Ｂに比べて、ＬＳＴＭの処理層としての演算性能は低い。同様に、チップサイズの制限により、ＳＰＦ、ＦＭＡの搭載数が制限されるため、ＳｏＣ６００は、図６のセンサＳｏＣ２０ＣおよびエッジＳｏＣ６０に比べて、全結合層としての演算性能は低い。
【００７２】
すなわち、ＳｏＣ６００は、様々な種類のＤＮＮによる処理を実行できる反面、センサデータ毎の特徴量データの抽出処理および識別処理に対するアーキテクチャの最適化がなされていない。このため、情報処理装置１１０によるマルチモーダルＤＮＮの推論処理の性能は、図２に示した情報処理装置１０１によるマルチモーダルＤＮＮの推論処理の性能より低くなる。特定の推論処理の性能を上げるためにＳｏＣ６００のアーキテクチャを最適化した場合、そのアーキテクチャに適さない他の推論処理に対して処理性能が低下してしまう。処理性能の低下を抑止するためには、推論処理の種類毎にＳｏＣ６００を設計する必要が生じる。
【００７３】
さらに、図８では、例えば、図２の３つのセンサＳｏＣおよびエッジＳｏＣの機能を１つのＳｏＣで実現するため、チップサイズが大きくなり、チップの良品率である歩留まりが低下し、チップコストが増大する。これにより、センサ毎の特徴量データの抽出処理と識別処理とをそれぞれ別の半導体チップで実行する場合に比べて、情報処理装置１１０のコストが増加する。
【００７４】
図９は、図８の情報処理装置１１０がマルチモーダルＤＮＮによる推論処理を実行する場合の動作フローの一例を示す。図７Ａおよび図７Ｂと同様の動作については、詳細な説明は省略する。図９に示す動作は、図７Ａおよび図７Ｂと同様に、情報処理装置１１０が、マルチモーダルＤＮＮの推論処理によるサービスの要求をユーザーから受けたことに基づいて開始される。
【００７５】
汎用のＳｏＣ６００は、ステップＳ６０１において、イメージセンサ１０Ａに計測要求を発行する。次に、ＳｏＣ６００は、ステップＳ６０２において、イメージセンサ１０Ａから受信した画像データをデジタル値に変換してメモリ９０に書き込む処理Ｓ１を実行する。ＳｏＣ６００は、ステップＳ６０３において、マイクロフォン１０Ｂに計測要求を発行する。次に、ＳｏＣ６００は、ステップＳ６０４において、マイクロフォン１０Ｂから受信した音声データをデジタル値に変換してメモリ９０に書き込む処理Ｓ２を実行する。ＳｏＣ６００は、ステップＳ６０５において、ジャイロセンサ１０Ｃに計測要求を発行する。次に、ＳｏＣ６００は、ステップＳ６０６において、ジャイロセンサ１０Ｃから受信したモーションデータをデジタル値に変換してメモリ９０に書き込む処理Ｓ３を実行する。
【００７６】
次に、ステップＳ６０７において、演算コア６１６は、ＤＮＮ演算処理として、処理Ｃ、処理Ｌおよび処理Ｆ１を実行し、画像データ、音声データおよびモーションデータのそれぞれの特徴量データを抽出する。処理Ｃ、処理Ｌおよび処理Ｆ１の内容は、図７ＡのステップＳ１０２、Ｓ２０２、Ｓ３０２と同様に、それぞれ畳み込み層、ＬＳＴＭ、全結合層に対応する。
【００７７】
次に、ステップＳ６０８において、演算コア６１６は、ＤＮＮ演算処理として、メモリ９０に保持された特徴量データを使用して識別処理Ｆ２を実行して識別結果を得る。次に、ステップＳ６０９において、演算コア６１６は、処理Ａとして、識別結果を入力とするアプリケーションを実行し、各種サービスの処理を実行し、または、アクチュエータ等の制御機器を制御する。そして、マルチモーダルＤＮＮの推論処理の実行が終了する。
【００７８】
以上、図２から図７Ｂに示す実施形態においても、図１に示す実施形態と同様に、任意の種類のセンサ１０を組み合わせて複数のセンサＳｏＣ２０により特徴量データを抽出し、抽出した特徴量データを用いてエッジＳｏＣ６０により識別処理を実行することができる。例えば、情報処理装置１０１は、イメージセンサ１０Ａ、マイクロフォン１０Ｂおよびジャイロセンサ１０Ｃがそれぞれ取得するデータを用いて、マルチモーダルＤＮＮによる推論処理を実行することができる。換言すれば、センサ１０を自由に組み合わせる場合にも、ニューラルネットワークの推論処理の効率が低下することを抑止できる。
【００７９】
複数のセンサＳｏＣ２０とエッジＳｏＣ６０とを、共通のインタフェース仕様により接続することで、セレクタ７７の任意の入力ポートにセンサＳｏＣ２０を接続することができる。各センサＳｏＣ２０を、センサ１０毎の特徴量データの抽出処理に特化して設計できるため、各センサＳｏＣ２０のアーキテクチャを最適化することができ、チップサイズを最小にすることができる。また、エッジＳｏＣ６０を、特徴量データを用いた識別処理に特化して設計できるため、エッジＳｏＣ６０のアーキテクチャを最適化することができ、エッジＳｏＣ６０のチップサイズを最小にすることができる。
【００８０】
図１０は、別の実施形態における情報処理装置の一例を示す。図２と同様の要素については、同じ符号を付し、詳細な説明は省略する。図１０に示す情報処理装置１０２は、図２に示すエッジＳｏＣ６０の代わりにエッジＳｏＣ６２を有することを除き、図２に示す情報処理装置１０１と同様である。情報処理装置１０２は、図２に示す情報処理装置１０１と同様に、マルチモーダルＤＮＮの推論処理を実行する。
【００８１】
エッジＳｏＣ６２は、図２に示す演算コア８０の代わりに演算コア８２を有する。例えば、演算コア８２は、正規化層による正規化処理と、全結合層による行列ベクトル積の演算用とにアーキテクチャを最適化している。また、エッジＳｏＣ６２は、図２に示すエッジＳｏＣ６０に、Ｉ／Ｏコントローラ７０の出力とバス６１とに接続された型変換部７２を追加している。演算コア８２の動作の例は、図１３で説明される。型変換部７２は、型変換回路７２Ａ、７２Ｂ、７２Ｃを有する。型変換回路７２Ａは、１６ビット（半精度）の浮動小数点数データＦＰ１６（以下、ＦＰ１６）を３２ビット（単精度）の浮動小数点数データＦＰ３２（以下、ＦＰ３２）に変換する。型変換回路７２Ｂは、１６ビットの固定小数点数データＩＮＴ１６（以下、ＩＮＴ１６）をＦＰ３２に変換する。型変換回路７２Ｃは、ＦＰ３２をＩＮＴ１６に変換する。
【００８２】
エッジＳｏＣ６２は、第１の後処理演算装置および演算処理装置の一例であり、演算コア８２は、第１の後処理演算部の一例である。型変換回路７２Ａは、第１の後処理変換部の一例であり、型変換回路７２Ｃは、第２の後処理変換部の一例である。
【００８３】
センサＳｏＣ２０Ａの演算コア４０Ａは、ＦＰ３２用やＦＰ６４用（６４ビットの浮動小数点数データ）の演算器の代わりに、ＦＰ１６用の演算器を有しており、ＦＰ１６を使用して特徴量データを抽出する。同様に、センサＳｏＣ２０Ｂの演算コア４０Ｂは、ＦＰ３２用やＦＰ６４用の演算器の代わりに、ＦＰ１６用の演算器を有しており、ＦＰ１６を使用して特徴量データを抽出する。
【００８４】
これにより、ＦＰ３２用やＦＰ６４用の演算器を有する場合に比べて演算コア４０Ａ、４０Ｂの回路規模を小さくすることができ、センサＳｏＣ２０Ａ、２０Ｂのチップサイズを小さくすることができる。また、ＦＰ３２やＦＰ６４を使用して特徴量データを抽出する場合に比べて、処理時間を削減でき、使用するメモリ領域を削減でき、消費電力を削減できる。
【００８５】
なお、各演算コア４０Ａ、４０Ｂは、ＦＰ３２用またはＦＰ６４用の演算器を有し、ＳＩＭＤ（Single  Instruction  Multiple  Data）命令を使用して、複数のＦＰ１６の演算を並列に実行してもよい。センサＳｏＣ２０Ｃの演算コア４０Ｃは、ＦＰ３２用の演算器を有しており、ＦＰ３２を使用して特徴量データを抽出する。
【００８６】
図１１は、図１０の型変換部７２の一例を示す。型変換部７２は、キュー７２０、型変換回路７２２、７２４、７２６、７２８、７３０、７３２、加算器７３４、セレクタ７３５、７３６、７３７、７３８、７３９およびインバータＩＮＶを有する。クロック入力を示す三角形を含む矩形は、ラッチを示す。型変換部７２は、キュー７２０の先頭から順次取り出されるデータｄａｔａ（特徴量データ）のデータ型をモード信号ｍｏｄｅに応じて変換し、データｄａｔａ＿ｏとして出力する機能を有する。
【００８７】
各信号名の後に付したかぎ括弧内の数値および信号線に付した”／”の後の数値は、信号のビット数を示す。”１’ｂ０”は、２進表現での１ビット＝”０”を示し、”１’ｂ１”は、２進表現での１ビット＝”１”を示す。”１６’ｈ００００”は、１６進表現での１６ビット（オールゼロ）を示し、”３２’ｈ００００＿０００４”は、１６進表現での３２ビット（＝４）を示す。
【００８８】
キュー７２０は、バリッド信号ｖａｌｉｄ＿ｉ、モード信号ｍｏｄｅ＿ｉ、アドレス信号ａｄｒｓ＿ｉおよびデータｄａｔａ＿ｉを保持する複数のエントリを有する。バリッド信号ｖａｌｉｄ＿ｉは、モード信号ｍｏｄｅ＿ｉ、アドレス信号ａｄｒｓ＿ｉおよびデータｄａｔａ＿ｉが有効であるか否かを示す。モード信号ｍｏｄｅ＿ｉは、型変換の仕様を示し、第１の仕様情報および第２の仕様情報の一例である。アドレス信号ａｄｒｓ＿ｉは、データ型を変換したデータｄａｔａ＿ｏの転送先を示す。データｄａｔａ＿ｉは、データ型が変換される前の特徴量データを示す。キュー７２０は、読み出し信号が有効状態（＝”１”）の場合、図示しない読み出しポインタを更新する。
【００８９】
図１２は、図１１の型変換部７２によるデータｄａｔａの型変換仕様の一例を示す。モード信号ｍｏｄｅ＿ｉ＝”０”は、２つのＦＰ１６から２つのＦＰ３２への変換を示す。変換により生成された２つのＦＰ３２は、２クロックサイクルに分けて出力される。モード信号ｍｏｄｅ＿ｉ＝”１”は、２つのＩＮＴ１６から２つのＦＰ３２への変換を示す。変換により生成された２つのＦＰ３２は、２クロックサイクルに分けて出力される。モード信号ｍｏｄｅ＿ｉ＝”２”は、ＦＰ３２を変換せずに出力することを示す。
【００９０】
モード信号ｍｏｄｅ＿ｉ＝”３”は、ＦＰ３２からＦＰ１６への変換を示す。変換により生成されたＦＰ１６が出力されるデータｄａｔａ＿ｏの上位１６ビットは”０”で埋められる。モード信号ｍｏｄｅ＿ｉ＝”４”は、ＦＰ３２からＩＮＴ１６への変換を示す。変換により生成されたＩＮＴ１６が出力されるデータｄａｔａ＿ｏの上位１６ビットは”０”で埋められる。以下では、型変換のモードは、モード信号ｍｏｄｅ＿ｉの値に対応させて、モード０、モード１、モード２、モード３、モード４と称される。例えば、モード０は、ＦＰ１６からＦＰ３２への変換を示し、モード４は、ＦＰ３２からＩＮＴ１６への変換を示す。
【００９１】
図１１に戻って、各型変換回路７２２、７２４、７２６、７２８、７３０、７３２は、クロックサイクル毎に動作し、バリッド信号ｖａｌｉｄが有効か無効かを問わず、データ線ｄａｔａ上のデータｄａｔａのデータ型を変換する。セレクタ７３５は、モード信号ｍｏｄｅで示されるモード応じて選択した値を読み出し信号としてキュー７２０に出力する。型変換回路７２２、７３０は、図１０の型変換回路７２Ａに対応し、型変換回路７２４、７３２は、図１０の型変換回路７２Ｂに対応する。型変換回路７２８は、図１０の型変換回路７２Ｃに対応する。
【００９２】
セレクタ７３５は、モード０、１では、クロックサイクルに応じて論理が反転するサイクル信号ｐ＿２ｎｄ＿ｃｙｃｌｅを読み出し信号として出力する。モード０、１では、読み出し信号は、最初のサイクルで”０”に設定され（読み出しポインタの更新なし）、インバータＩＮＶを介して論理が反転された読み出し信号により、次のサイクルで”１”に設定される（読み出しポインタを更新）。このため、モード０（またはモード１）では、最初のサイクルでキュー７２０から読み出された２つのＦＰ１６（または２つのＩＮＴ１６）が２クロックサイクルで２つのＦＰ３２に変換される。
【００９３】
一方、セレクタ７３５は、モード２、３、４では、読み出し信号を、クロックサイクルにかかわらず”１”に固定し、クロックサイクル毎に読み出しポインタを更新する。なお、モード２、３、４では、クロックサイクル毎にデータｄａｔａのデータ型が変換されるため、サイクル信号ｐ＿２ｎｄ＿ｃｙｃｌｅは、クロックサイクル毎に初期化され、”０”に維持される。
【００９４】
型変換回路７２２は、データｄａｔａの下位１６ビットで示されるＦＰ１６をＦＰ３２に変換する。型変換回路７２４は、データｄａｔａの下位１６ビットで示されるＩＮＴ１６をＦＰ３２に変換する。型変換回路７２６は、データｄａｔａ（ＦＰ３２）をＦＰ１６に変換し、下位１６ビットに出力する。型変換回路７２８は、データｄａｔａ（ＦＰ３２）をＩＮＴ１６に変換し、下位１６ビットに出力する。型変換回路７３０は、データｄａｔａの上位１６ビットで示されるＦＰ１６をＦＰ３２に変換する。型変換回路７３２は、データｄａｔａの上位１６ビットで示されるＩＮＴ１６をＦＰ３２に変換する。
【００９５】
セレクタ７３６は、モード信号ｍｏｄｅで示されるモードに応じて型変換回路７２２、７２４、７２６、７２８のいずれかの出力またはデータｄａｔａを選択する。セレクタ７３７は、モード信号ｍｏｄｅで示されるモードに応じて型変換回路７３０、７３２のいずれかの出力またはオール０を選択する。
【００９６】
セレクタ７３８は、サイクル信号ｐ＿２ｎｄ＿ｃｙｃｌｅが”０”のとき、セレクタ７３６の出力を選択し、サイクル信号ｐ＿２ｎｄ＿ｃｙｃｌｅが”１”のとき、セレクタ７３７の出力を選択する。すなわち、サイクル信号ｐ＿２ｎｄ＿ｃｙｃｌｅが”０”のとき、下位１６ビットのＦＰ１６（またはＩＮＴ１６）から変換されたＦＰ３２か、元のＦＰ３２か、またはＦＰ３２から変換されたＦＰ１６（またはＩＮＴ１６）かが、データｄａｔａ＿ｏとして選択される。サイクル信号ｐ＿２ｎｄ＿ｃｙｃｌｅが”１”のとき、上位１６ビットのＦＰ１６（またはＩＮＴ１６）から変換されたＦＰ３２か、またはオール０かが、データｄａｔａ＿ｏとして選択される。
【００９７】
セレクタ７３９は、サイクル信号ｐ＿２ｎｄ＿ｃｙｃｌｅが”０”のとき、キュー７２０から出力されるアドレス信号ａｄｒｓをアドレス信号ａｄｒｓ＿ｏとして出力する。セレクタ７３９は、サイクル信号ｐ＿２ｎｄ＿ｃｙｃｌｅが”１”のとき、加算器７３４から出力されるアドレス信号ａｄｒｓ＋４をアドレス信号ａｄｒｓ＿ｏとして出力する。すなわち、サイクル信号ｐ＿２ｎｄ＿ｃｙｃｌｅが”１”で、上位１６ビットのＦＰ１６（またはＩＮＴ１６）から変換されたＦＰ３２が、データｄａｔａ＿ｏとして出力される場合、アドレス信号ａｄｒｓ＿ｏは、４バイトの領域分更新される。これにより、２つのＦＰ１６または２つのＩＮＴ１６から変換された２つのＦＰ３２が、重複したメモリ領域に格納されることを抑止することができる。なお、バリッド信号ｖａｌｉｄ＿ｉは、バリッド信号ｖａｌｉｄ＿ｏとしてそのまま出力され、モード信号ｍｏｄｅ＿ｉは、モード信号ｍｏｄｅ＿ｏとしてそのまま出力される。
【００９８】
型変換部７２から出力される３２ビットのデータｄａｔａ＿ｏは、図１０に示すメモリ９０に書き込まれた後、演算コア８２により読み出され、図１３で説明するように、正規化処理または識別処理に使用される。
【００９９】
図１３は、図１０の情報処理装置１０２がマルチモーダルＤＮＮによる推論処理を実行する場合の動作フローの一例を示す。すなわち、図１３は、情報処理装置１０２の制御方法の一例を示す。図７Ａおよび図７Ｂと同様の動作については詳細な説明は省略する。センサＳｏＣ３（すなわち、センサＳｏＣ２０Ｃ）の動作は、図７Ａおよび図７Ｂと同じであるため省略する。なお、情報処理装置１０２は、センサＳｏＣ３を持たなくてもよい。例えば、図１３に示す動作は、情報処理装置１０２が、マルチモーダルＤＮＮの推論処理によるサービスの要求をユーザーから受けたことに基づいて、推論処理が完了するまで繰り返し実行される。
【０１００】
この実施形態では、センサＳｏＣ１（すなわち、センサＳｏＣ２０Ａ）は、ステップＳ１０２での畳み込み層での処理ＣをＦＰ１６のデータを使用して実行する。センサＳｏＣ２（すなわち、センサＳｏＣ２０Ｂ）は、ステップＳ２０２でのＬＳＴＭでの処理ＬをＦＰ１６のデータを使用して実行する。畳み込み処理およびＬＳＴＭの処理を、ＦＰ１６を使用して実行することで、ＦＰ３２を使用する場合に比べて、演算効率および電力効率を向上することができる。すなわち、ＦＰ３２を使用する場合に比べて、特徴量データの抽出を、短時間かつ少ない電力で実行することができる。センサＳｏＣ３は、全結合層での処理Ｆ２をＩＮＴ１６のデータを使用して実行する。
【０１０１】
なお、畳み込み処理およびＬＳＴＭの処理は、ＩＮＴ１６やＩＮＴ８（８ビットの固定小数点数データ）を使用して実行されてもよい。この場合、推論用に特化したセンサＳｏＣ１、ＳｏＣ２の演算コア４０Ａ、４０Ｂは、ＩＮＴ１６用の演算コアやＩＮＴ８用の演算コアの実装により、チップサイズを小さくし、消費電力を抑えることができる。ＩＮＴ８を使用する場合、型変換部７２には、ＩＮＴ８をＩＮＴ３２に変換する型変換回路が設けられる。
【０１０２】
エッジＳｏＣの演算コア８２（図１０）は、図７Ａおよび図７ＢのステップＳ４０１−Ｓ４０５と同様に、各センサＳｏＣからの完了通知を待ち、完了通知の発行元のセンサＳｏＣにデータ転送要求を出力する。センサＳｏＣ１は、データ転送要求に基づいて、メモリ５５Ａが保持する特徴量データ（ＦＰ１６）を、バリッド信号ｖａｌｉｄ＿ｉ＝１、モード信号ｍｏｄｅ＿ｉ＝０およびアドレス信号ａｄｒｓ＿ｉとともにメモリ９０に向けて出力する。センサＳｏＣ２は、データ転送要求に基づいて、メモリ５５Ｂが保持する特徴量データ（ＦＰ１６）を、バリッド信号ｖａｌｉｄ＿ｉ＝１、モード信号ｍｏｄｅ＿ｉ＝０およびアドレス信号ａｄｒｓ＿ｉとともにメモリ９０に向けて出力する。センサＳｏＣ３は、データ転送要求に基づいて、メモリ５５Ｃが保持する特徴量データ（ＦＰ３２）を、バリッド信号ｖａｌｉｄ＿ｉ＝１、モード信号ｍｏｄｅ＿ｉ＝２およびアドレス信号ａｄｒｓ＿ｉとともにメモリ９０に向けて出力する。モード信号ｍｏｄｅ＿ｉ＝０は、ＦＰ１６からＦＰ３２への変換を示し、モード信号ｍｏｄｅ＿ｉ＝２は、ＦＰ３２を変換せずにＦＰ３２として出力することを示す。
【０１０３】
型変換部７２は、センサＳｏＣ１、ＳｏＣ２からメモリ９０に転送される特徴量データをモード信号ｍｏｄｅ＿ｉ等とともに受信した場合、ステップＳ４１０において、ＦＰ１６の特徴量データをＦＰ３２に変換する処理（型変換０）を実行する。型変換部７２は、ＦＰ３２に変換した特徴量データ（ｄａｔａ＿ｏ）を、バリッド信号ｖａｌｉｄ＿ｏ＝１およびアドレス信号ａｄｒｓ＿ｏとともにメモリ９０に出力し、特徴量データをメモリ９０に記憶させる。なお、センサＳｏＣ３からメモリ９０に転送される特徴量データをモード信号ｍｏｄｅ＿ｉ＝２とともに受信した場合、特徴量データのデータ型を変換することなくメモリ９０に記憶させる。
【０１０４】
次に、演算コア８２は、ステップＳ４１２において、メモリ９０が保持する変換後のＦＰ３２の特徴量データを使用して、正規化層による正規化処理Ｆ１を実行し、正規化された特徴量データをメモリ９０に記憶させる。また、演算コア８２は、正規化した特徴量江データ（ＦＰ３２）をＩＮＴ１６に変換するためのモード信号ｍｏｄｅ＿ｉ＝４を生成し、正規化した特徴量データとともにメモリ９０に記憶させる。例えば、正規化層としてＬＲＮ（Local  Response  Normalization）層やBatch  Normalization層が使用されてもよい。
【０１０５】
正規化層は、ＤＮＮの学習処理の収束速度を向上させる効果や、ＤＮＮの認識精度を向上させる効果がある。一方、正規化層の処理は、除算や指数関数による演算が含まれるため、ＦＰ１６等のビット幅の少ないデータ形式を使用する場合、計算誤差への影響が大きくなり、ＤＮＮの認識精度が低下するおそれがある。このため、ＤＮＮの認識精度の悪化を抑止するために、正規化層の処理は、ＦＰ３２やＦＰ６４（６４ビットの浮動小数点数データ）を使用することが望ましい。
【０１０６】
但し、認識精度の低下を抑止するため、正規化に適したデータのビット幅に合わせて、センサＳｏＣにより畳み込み処理等の他の処理を実行する場合、処理時間が長くなり、電力も増加してしまう。この実施形態では、正規化処理のみＦＰ３２を使用することで、認識精度の低下を抑止することができる。
【０１０７】
次に、型変換部７２は、ステップＳ４１４において、メモリ９０が保持する正規化処理後のＦＰ３２の特徴量データを、メモリ９０が保持するモード信号ｍｏｄｅ＿ｉ＝４に基づいてＩＮＴ１６に変換する処理（型変換４）を実行する。例えば、型変換部７２への変換指示（モード信号ｍｏｄｅ＿ｉ、アドレス信号ａｄｒｓ＿ｉ等）は、型変換するデータとともに、正規化処理を実行する演算コア８２によりメモリ９０に書き込まれる。演算コア８２によりモード信号ｍｏｄｅ＿ｉ等の変換指示を生成することで、センサＳｏＣからの特徴量データを型変換する型変換部７２を使用して、正規化後の特徴量データの型変換を実行することができる。
【０１０８】
ＩＮＴ１６に変換された特徴量データは、アドレス信号ａｄｒｓ＿ｏにしたがってメモリ９０に格納される。次に、演算コア８２は、ステップＳ４０６において、図７Ｂと同様に、メモリ９０に保持された正規化後のＩＮＴ１６の特徴量データを使用して全結合層による識別処理Ｆ２を実行し、得られた識別結果をメモリ９０に記憶させる。
【０１０９】
次に、演算コア８２は、ステップＳ４０８において、図７Ｂと同様に、メモリ９０に保持された識別結果を入力とするアプリケーションを実行し、各種サービスの処理を実行し、または、アクチュエータ等の制御機器を制御する処理を実行する。そして、１サイクルにおけるマルチモーダルＤＮＮの推論処理の実行が終了する。
【０１１０】
エッジＳｏＣ６２が型変換部７２を持たない場合、データの型変換は、演算コア８２で実行される。この場合、型変換の実行中は、全結合層による演算処理等を実行できず、演算コア８２の処理効率が低下する。そこで、この実施形態では、Ｉ／Ｏコントローラ７０と演算コア８２との間のデータ転送経路上に、データの型変換を実行する専用の型変換部７２を設けることで、型変換による負荷が演算コア８２に掛かることを抑止している（型変換オーバーヘッドの隠蔽）。これにより、演算コア８２は、全結合層による識別処理に専念することができる。また、型変換部７２は、セレクタ７７とメモリ９０との間に配置されるため、センサＳｏＣ１、ＳｏＣ２から転送され、メモリ９０に格納される前の特徴量データのデータ型を変換することができる。この結果、メモリ９０への転送頻度を削減することができる。
【０１１１】
以上により、特徴量データの抽出処理をＦＰ１６により実行し、正規化層の処理をＦＰ３２により実行することで、演算効率および電力効率を向上させつつ、推論処理の処理時間を低減することができ、ＤＮＮの認識精度の悪化を抑止することができる。さらに、正規化処理の結果をＩＮＴ１６に変換後、全結合層による識別処理を実行することで、識別処理の演算効率および電力効率を向上することができる。
【０１１２】
また、特徴量データの抽出処理および全結合層による識別処理を１６ビットのデータ表現を用いて実行することで、処理に使用するメモリ領域を削減することができる。なお、学習済みＤＮＮを使用した推論処理では、ＦＰ１６またはＩＮＴ１６等のビット幅の小さいデータ表現を用いても、演算結果の誤差がＤＮＮの認識精度に及ぼす影響は小さい。
【０１１３】
専用の型変換部７２を設けることで、データの型変換をセンサＳｏＣ２０による処理およびエッジＳｏＣ６０による処理と並行して実行することができるため、型変換オーバーヘッドを隠蔽することができる。この結果、データ表現の最適化によるＤＮＮの推論処理の性能向上とＤＮＮの認識精度の向上とを両立することができる。
【０１１４】
以上、図１０から図１３に示す実施形態においても、図１から図９に示す実施形態と同様の効果を得ることができる。さらに、図１０から図１３に示す実施形態では、特徴量データの抽出処理をＦＰ１６により実行し、正規化層の処理をＦＰ３２により実行し、全結合層による識別処理をＩＮＴ１６により実行する。これにより、演算効率および電力効率を向上させつつ、推論処理のトータルの処理時間を低減することができ、ＤＮＮの認識精度の悪化を抑止することができる。また、特徴量データの抽出処理および全結合層による識別処理に使用するメモリ領域を削減することができる。
【０１１５】
専用の型変換部７２を設けることで、データの型変換をセンサＳｏＣ２０による処理およびエッジＳｏＣ６０による処理と並行して実行することができるため、型変換オーバーヘッドを隠蔽することができる。この結果、データ表現の最適化によるＤＮＮの推論処理の性能向上とＤＮＮの認識精度の向上とを両立することができる。演算コア８２によりモード信号ｍｏｄｅ＿ｉ等の変換指示を生成することで、センサＳｏＣからの特徴量データを型変換する型変換部７２を使用して、正規化後の特徴量データの型変換を実行することができる。
【０１１６】
図１４は、別の実施形態における情報処理装置の一例を示す。図２および図１０と同様の要素については、詳細な説明は省略する。図１４に示す情報処理装置１０３は、図１０に示すセレクタ７７の代わりにセレクタ７８を有すること、および図１０に示すエッジＳｏＣ６２の代わりにエッジＳｏＣ６３、６４を有することを除き、図１０に示す情報処理装置１０２と同様である。エッジＳｏＣ６３、６４は、セレクタ７８およびメモリ９０、９４とともに情報処理装置１０３のマザーボードＢＲＤに実装される。情報処理装置１０３は、図１０に示す情報処理装置１０２と同様に、マルチモーダルＤＮＮの推論処理を実行する。
【０１１７】
セレクタ７８は、図１０に示すセレクタ７７の機能に加えて、Ｉ／Ｏコントローラ７０の出力をエッジＳｏＣ６４の入力に接続する機能を有する。エッジＳｏＣ６３は、演算コア８２の代わりに演算コア８３を有することを除き、図１０に示すエッジＳｏＣ６２と同様の機能を有する。エッジＳｏＣ６３は、第１の後処理演算装置および演算処理装置の一例である。演算コア８３は、ＦＰ３２の特徴量データを正規化する正規化層用にアーキテクチャが最適化されていることを除き、図１０に示す演算コア８２と同様の機能を有する。図１０で説明したように、型変換部７２は、ＦＰ１６をＦＰ３２に変換する機能と、ＩＮＴ１６をＦＰ３２に変換する機能と、ＦＰ３２をＩＮＴ１６に変換する機能とを有する。
【０１１８】
エッジＳｏＣ６４は、バス６９を介して互いに接続されたＩ／Ｏコントローラ７１、演算コア８４および通信インタフェース８６を有する。バス６９には、メモリ９４が接続される。メモリ９４は、メモリ９０と同様に主記憶装置を含む。Ｉ／Ｏコントローラ７１は、Ｉ／Ｏコントローラ７０から転送される正規化後の特徴量データをメモリ９４に記憶させる機能を有する。演算コア８４は、正規化された特徴量データに対するＤＮＮの識別処理用にアーキテクチャが最適化されていることを除き、図１０に示す演算コア８２と同様の機能を有する。通信インタフェース８６は、通信インタフェース８５と同様の機能を有する。エッジＳｏＣ６４は、第２の後処理演算装置および演算処理装置の一例であり、Ｉ／Ｏコントローラ７１は、第２の入力部の一例である。演算コア８４は、第２の後処理演算部の一例であり、メモリ９４は、第２の記憶部の一例である。
【０１１９】
図１５Ａおよび図１５Ｂは、図１４の情報処理装置１０３がマルチモーダルＤＮＮによる推論処理を実行する場合の動作フローの一例を示す。すなわち、図１５Ａおよび図１５Ｂは、情報処理装置１０３の制御方法の一例を示す。図７Ａ、図７Ｂおよび図１３と同じ動作については詳細な説明は省略する。センサＳｏＣ３（すなわち、センサＳｏＣ２０Ｃ）の動作は、図７Ａおよび図７Ｂと同じであるため省略する。なお、情報処理装置１０３は、センサＳｏＣ３を持たなくてもよい。例えば、図１５Ａおよび図１５Ｂに示す動作は、情報処理装置１０３が、マルチモーダルＤＮＮの推論処理によるサービスの要求をユーザーから受けたことに基づいて、推論処理が完了するまで繰り返し実行される。センサＳｏＣ１（すなわち、センサＳｏＣ２０Ａ）の動作およびセンサＳｏＣ２（すなわち、センサＳｏＣ２０Ｂ）の動作は、図１３と同様である。
【０１２０】
エッジＳｏＣ６３の動作は、図１３に示すエッジＳｏＣ６２の動作からステップＳ４０６、Ｓ４０８が削除され、新たにステップＳ４１６の動作が追加されている。すなわち、型変換部７２は、ステップＳ４１０において、センサＳｏＣ２０Ａ、２０Ｂから転送されるＦＰ１６の特徴量データをＦＰ３２の特徴量データに変換し、メモリ９０に格納する。演算コア８３は、ステップＳ４１２において、メモリ９０に保持されたＦＰ３２の特徴量データを使用して正規化層による正規化処理を実行する。
【０１２１】
演算コア８３は、正規化処理の完了後、完了通知をエッジＳｏＣ６４の演算コア８４に発行する。完了通知は、Ｉ／Ｏコントローラ７０、セレクタ７８およびＩ／Ｏコントローラ７１を介して送信されてよく、通信インタフェース８５、８６を介して送信されてもよい。エッジＳｏＣ６４の演算コア８４は、ステップＳ５０２において、演算コア８３からの完了通知を待ち、完了通知を受信した場合、エッジＳｏＣ６３にデータ転送要求を発行し、動作をステップＳ５０６に移行する。
【０１２２】
エッジＳｏＣ６３の演算コア８３は、演算コア８４からデータ転送要求を受信した場合、正規化後の特徴量データのデータ型を変換させる指示（モード信号ｍｏｄｅ＿ｉ、アドレス信号ａｄｒｓ＿ｉ等）を生成し、型変換部７２に発行する。なお、型変換部７２への指示は、演算コア８３が実行する制御プログラムによる制御により実行されてもよく、エッジＳｏＣ６３が有するコントローラ（ハードウェア）により実行されてもよい。
【０１２３】
型変換部７２は、ステップＳ４１４において、メモリ９０に格納された正規化処理後のＦＰ３２の特徴量データを読み出し、ＩＮＴ１６の特徴量データに変換し、変換した特徴量データをＩ／Ｏコントローラ７０に転送する。ステップＳ４１６において、Ｉ／Ｏコントローラ７０は、型変換部７２から転送される正規化後の特徴量データ（ＩＮＴ１６）をエッジＳｏＣ６４に転送する。エッジＳｏＣ６４に転送された正規化後の特徴量データは、メモリ９４に格納される。
【０１２４】
正規化後の特徴量データがメモリ９４に格納された後、演算コア８４は、ステップＳ５０６、Ｓ５０８を順次実行する。ステップＳ５０６の処理は、図１３に示すステップＳ４０６の処理と同じであり、ステップＳ５０８の処理は、図１３に示すステップＳ４０８の処理と同じである。そして、当該動作サイクルにおけるマルチモーダルＤＮＮの推論処理の実行が終了する。
【０１２５】
以上、図１４から図１５Ｂに示す実施形態においても、図１から図１３に示す実施形態と同様の効果を得ることができる。さらに、図１４および図１５Ｂに示す実施形態では、情報処理装置１０３は、正規化層による正規化処理を実行するためにアーキテクチャを最適化した演算コア８３と、全結合層による識別処理を実行するためにアーキテクチャを最適化した演算コア８４とを有する。これにより、図１０に示す情報処理装置１０２に比べて、正規化処理および識別処理の処理効率を向上することができ、処理時間を短縮することができる。
【０１２６】
図１６は、別の実施形態における情報処理装置の一例を示す。図２および図１０と同様の要素については、同じ符号を付し、詳細な説明は省略する。図１６に示す情報処理装置１０４は、図１０に示すセンサＳｏＣ２０Ａに、バス２１Ａに接続された圧縮部５６を追加している。圧縮部５６は第１の圧縮部の一例である。センサＳｏＣ２０Ａの圧縮部５６は、演算コア４０Ａが抽出した画像データの特徴量データの情報量を圧縮する機能を有する。圧縮部５６の例は、図１８から図２４で説明する。情報処理装置１０４は、図２のジャイロセンサ１０ＣおよびセンサＳｏＣ２０Ｃを持たない。
【０１２７】
また、情報処理装置１０４のエッジＳｏＣ６３は、図１０に示す型変換部７２の代わりにバス６１に接続された疎行列演算部７４（復号回路）を有する。エッジＳｏＣ６３は、セレクタ７７を介して、センサＳｏＣ２０Ａ、２０Ｂから特徴量データを受信する。エッジＳｏＣ６３の疎行列演算部７４は、センサＳｏＣ２０Ａからメモリ９０に転送される圧縮された特徴量データを復号する機能を有する。疎行列演算部７４の例は、図２５から図２８で説明する。
【０１２８】
情報処理装置１０４のその他の構成は、図１０に示す情報処理装置１０２と同様である。情報処理装置１０４は、イメージセンサ１０Ａが計測する画層データとマイクロフォン１０Ｂが計測する音声データとを用いて、図１０に示す情報処理装置１０２と同様に、マルチモーダルＤＮＮの推論処理を実行する。
【０１２９】
図１７は、図１６のセンサＳｏＣ２０Ａ、２０Ｂが、特徴量データを抽出する毎に出力する特徴量データのデータ数の一例を示す。例えば、センサＳｏＣ２０Ａ、２０Ｂによる特徴量データの抽出は、イメージセンサ１０Ａが画像データを取得する毎に実行される（例えば、１秒間に３０回程度）。図７Ａおよび図７Ｂの説明と同様に、特徴量データを抽出して識別処理を実行する期間は、動作サイクルと称される。センサＳｏＣ２０Ａは、演算コア４０Ａが動作サイクル毎に抽出する２０４８個の特徴量データを、圧縮部５６を使用して１０２４個に圧縮し、エッジＳｏＣ６３に向けて出力する。センサＳｏＣ２０Ｂは、演算コア４０Ｂが動作サイクル毎に抽出する１０２４個の特徴量データを、エッジＳｏＣ６３に向けて出力する。センサＳｏＣ２０Ａ、２０Ｂが抽出する特徴量データの数の合計は、３０７２個であり、センサＳｏＣ２０Ａ、２０ＢがエッジＳｏＣ６３に出力する特徴量データの数の合計は、２０４８個である。
【０１３０】
図１８は、図１６の圧縮部５６の一例を示す。クロック入力を示す三角形を含む矩形は、ラッチを示す。圧縮部５６は、データソート回路５６０、オフセットソート回路５７０および複数のパッキング回路５８０を有する。
【０１３１】
圧縮部５６は、クロックサイクル毎に、８個の特徴量データ（ｄｉｎ０−ｄｉｎ８）を４個の特徴量データ（ｏｕｔｄ０−ｏｕｔｄ３）に圧縮する（圧縮率＝５０％）。特徴量データｏｕｔｄ０−ｏｕｔｄ３は、圧縮済み特徴量データの一例である。特徴量データｏｕｔｄ０−ｏｕｔｄ３として出力されない４個の特徴量データは、切り捨てられるため、圧縮部５６は、データを不可逆に圧縮することになる。図１８では、説明を分かりやすくするために、８個のデータｄｉｎのうちの４個を選択的に出力する例を示す。しかしながら、入力するデータｄｉｎの数および出力するデータｏｕｔｄの数は、データｄｉｎの数＞データｏｕｔｄの数であれば、図１８に示す例に限定されない。例えば、データｄｉｎのデータ型は、ＦＰ３２であるが、他のデータ型のデータｄｉｎが使用されてもよい。
【０１３２】
データソート回路５６０は、クロックサイクル毎に、演算コア４０Ａが抽出した８個の特徴量データであるデータｄｉｎ（ｄｉｎ０−ｄｉｎ７）と、データｄｉｎのデータソート回路５６０への入力位置を示すオフセットｏｆｔ（ｏｆｔ０−ｏｆｔ７）とを受ける。オフセットｏｆｔは、データｄｉｎの配列の順序を定めるために、データｄｉｎに対応して付加され、番号が互いに同じデータｄｉｎとオフセットｏｆｔとがペアになる。なお、オフセットｏｆｔは、データソート回路５６０が、データｄｉｎを受ける端子に対応してデータｄｉｎ毎に付加してもよい。オフセットｏｆｔは、配列情報の一例である。
【０１３３】
データソート回路５６０は、予め指定された番号のオフセットｏｆｔに対応するデータｄｉｎと、他の７個のオフセットｏｆｔに対応する７個のデータｄｉｎのうち絶対値が大きい３個のデータｄｉｎとの４個をソートデータｓｄ（ｓｄ０−ｓｄ３）として出力する。ソートデータｓｄは、ソートデータｓｄに対応するオフセットｓｏｆｔ（ｓｏｆｔ０−ｓｏｆｔ３）とともに出力される。
【０１３４】
以下では、オフセットｏｆｔ０が予め指定され、オフセットｏｆｔ０に対応するデータｄｉｎ０がソートデータｓｄ０として常に出力されるとする。この場合、データソート回路５６０は、データｄｉｎ０と、７個のデータｄｉｎ１−ｄｉｎ７のうち絶対値が大きい３個のデータｄｉｎとをソートデータｓｄ（ｓｄ０−ｓｄ３）としてオフセットｓｏｆｔ（ｓｏｆｔ０−ｓｏｆｔ３）とともに出力する。オフセットソート回路５７０は、４個のソートデータｓｄをオフセットｓｏｆｔが小さい順に並べ替え、ソートデータｔｍｐｄ（ｔｍｐｄ０−ｔｍｐｄ３）およびオフセットｔｍｐｏｆｔ（ｔｍｐｏｆｔ０−ｔｍｐｏｆｔ３）として出力する。
【０１３５】
パッキング回路５８０は、オフセットソート回路５７０が出力するソートデータｔｍｐｄにオフセットｔｍｐｏｆｔの値を埋め込み、データｏｕｔ（ｏｕｔ０−ｏｕｔ３）として出力する。例えば、パッキング回路５８０は、浮動小数点数のｔｍｐｄの仮数部の下位３ビット（値が小さい側の３ビット）をオフセットｔｍｐｏｆｔに置き換えたデータｏｕｔｄを生成する。ＦＰ３２のデータｄｉｎ、ｓｄ、ｔｍｐｄが、ＩＥＥＥ（The  Institute  of  Electrical  and  Electronics  Engineers）７５４のフォーマットで表現される場合、データｔｍｐｄの２３ビットの仮数部の下位３ビットがオフセットｔｍｐｏｆｔに置き換えられ、データｏｕｔｄとして出力される。
【０１３６】
図１９は、図１８のデータソート回路５６０の一例を示す。データソート回路５６０は、２つのデータの絶対値の大小を比較する複数の比較回路５６２を有する。各比較回路５６２は、データｉｎｄ０、ｉｎｄ１と、データｉｎｄ０、ｉｎｄ１に対応するオフセットｉｎｏｆｔ０、ｉｎｏｆｔ１とを受け、データｉｎｄ０、ｉｎｄ１の絶対値の大小を比較する。
【０１３７】
各比較回路５６２は、データｉｎｄ０、ｉｎｄ１の比較結果に基づいて、絶対値が大きいデータと、絶対値が大きいデータに対応するオフセットとを、データｇｄおよびオフセットｇｏｆｔとして出力する。各比較回路５６２は、２つのデータの比較結果に基づいて、絶対値が小さいデータと、絶対値が小さいデータに対応するオフセットとを、データｌｄおよびオフセットｌｏｆｔとして出力する。図１９では、各比較回路５６２の上側からデータｇｄとオフセットｇｏｆｔとが出力され、各比較回路５６２の下側からデータｌｄとオフセットｌｏｆｔが出力される。
【０１３８】
なお、データソート回路５６０は、常に選択されるデータｄｉｎ０と、データｄｉｎ０に対応するオフセットｏｆｔ０を、比較回路５６２により比較することなく、ソートデータｓｄ０およびオフセットｓｏｆｔ０として出力する。以上により、データソート回路５６０は、データｄｉｎ０であるソートデータｓｄ０と、絶対値が大きい順に並べられた３つのソートデータｓｄ１−ｓｄ３とを、オフセットｓｏｆｔ０−３ともに出力する。ソートデータｓｄ１−ｓｄ３の絶対値は、ｓｄ１＞ｓｄ２＞ｓｄ３の順に大きい（絶対値が等しい場合を含む）。
【０１３９】
データｄｉｎ０を常に選択することで、データｄｉｎ０と他のデータｄｉｎとを比較する比較回路５６２を不要にすることができる。これにより、全てのデータｄｉｎ０−ｄｉｎ７を比較する場合に比べて、データソート回路５６０の回路規模を削減することができる。
【０１４０】
なお、任意の番号のオフセットｏｆｔに対応するデータｄｉｎを絶対値の大きさに関係なく常に選択する場合、図１８に示す圧縮部５６は、初段のラッチとデータソート回路５６０との間に、図示しない入れ替え回路を有してもよい。入れ替え回路は、任意に指定されたオフセットｏｆｔと、指定されたオフセットｏｆｔに対応するデータｄｉｎとを、オフセットｏｆｔ０とデータｄｉｎ０としてデータソート回路５６０に供給する。例えば、オフセットｏｆｔ２が指定された場合、オフセットｏｆｔ２およびデータｄｉｎ２がオフセットｏｆｔ０およびデータｄｉｎ０としてデータソート回路５６０に供給される。ラッチで受けるオフセットｏｆｔ０およびデータｄｉｎ０は、オフセットｏｆｔ１およびデータｄｉｎ１としてデータソート回路５６０に供給される。ラッチで受けるオフセットｏｆｔ１およびデータｄｉｎ１は、オフセットｏｆｔ２およびデータｄｉｎ２としてデータソート回路５６０に供給される。
【０１４１】
図２０は、図１９の各比較回路５６２の動作の一例を示す。まず、ステップＳ１０において、比較回路５６２は、入力されたデータｉｎｄ０、ｉｎｄ１の絶対値（ａｂｓ）を比較する。比較回路５６２は、データｉｎｄ０の絶対値がデータｉｎｄ１の絶対値以上の場合、動作をステップＳ１２に移行し、データｉｎｄ０の絶対値がデータｉｎｄ１の絶対値より小さい場合、動作をステップＳ１４に移行する。
【０１４２】
ステップＳ１２において、比較回路５６２は、データｉｎｄ０をデータｇｄとして出力し、オフセットｉｎｏｆｔ０をオフセットｇｏｆｔとして出力する。また、比較回路５６２は、データｉｎｄ１をデータｌｄとして出力し、オフセットｉｎｏｆｔ１をオフセットｌｏｆｔとして出力し、比較動作を終了する。
【０１４３】
ステップＳ１４において、比較回路５６２は、データｉｎｄ１をデータｇｄとして出力し、オフセットｉｎｏｆｔ１をオフセットｇｏｆｔとして出力する。また、比較回路５６２は、データｉｎｄ０をデータｌｄとして出力し、オフセットｉｎｏｆｔ０をオフセットｌｏｆｔとして出力し、比較動作を終了する。
【０１４４】
図２１は、図１８のオフセットソート回路５７０の一例を示す。オフセットソート回路５７０は、２つのオフセットの大小を比較する複数の比較回路５７２を有する。各比較回路５７２は、データｉｎｄ０、ｉｎｄ１と、データｉｎｄ０、ｉｎｄ１に対応するオフセットｉｎｏｆｔ０、ｉｎｏｆｔ１とを受け、オフセットｉｎｏｆｔ０、ｉｎｏｆｔ１の値の大小を比較する。
【０１４５】
各比較回路５７２は、オフセットｉｎｏｆｔ０、ｉｎｏｆｔ１の比較結果に基づいて、値が小さいオフセットと、値が小さいオフセットに対応するデータとを、オフセットｌｏｆｔおよびデータｌｄとして出力する。また、各比較回路５７２は、オフセットｉｎｏｆｔ０、ｉｎｏｆｔ１の比較結果に基づいて、値が大きいオフセットと、値が大きいオフセットに対応するデータとを、オフセットｇｏｆｔおよびデータｇｄとして出力する。図２１では、各比較回路５７２の上側からオフセットｌｏｆｔとデータｌｄとが出力され、各比較回路５７２の下側からオフセットｇｏｆｔとデータｇｄとが出力される。
【０１４６】
なお、オフセットソート回路５７０は、常に選択することを指定されたデータｄｉｎ０に対応するソートデータｓｄ０とオフセットｓｏｆｔ０とを、比較回路５７２により比較することなく、ソートデータｔｍｐｄ０およびオフセットｔｍｐｏｆｔ０として出力する。このため、オフセットソート回路５７０は、ソートデータｓｄ０（＝データｄｉｎ０）であるソートデータｔｍｐｄ０と、絶対値が大きいと判定された３つのソートデータｔｍｐｄ１−ｔｍｐｄ３とを、オフセットｔｍｐｏｆｔの値が小さい順に並べて出力する。オフセットｔｍｐｏｆｔの値は、ｔｍｐｏｆｔ０＜ｔｍｐｏｆｔ１＜ｔｍｐｏｆｔ２＜ｔｍｐｏｆｔ３の順で小さい。ソートデータｓｄ０を常に選択することで、オフセットｓｏｆｔ０と他のオフセットｓｏｆｔとを比較する比較回路５７２を不要にすることができる。これにより、全てのオフセットｓｏｆｔ０−ｓｏｆｔ３を比較する場合に比べて、オフセットソート回路５７０の回路規模を削減することができる。
【０１４７】
図２２は、図２１の各比較回路５７２の動作の一例を示す。まず、ステップＳ２０において、比較回路５７２は、入力されたオフセットｉｎｏｆｔ０、ｉｎｏｆｔ１の大きさを比較する。比較回路５７２は、オフセットｉｎｏｆｔ０がオフセットｉｎｏｆｔ１以上の場合、動作をステップＳ２２に移行し、オフセットｉｎｏｆｔ０がオフセットｉｎｏｆｔ１より小さい場合、動作をステップＳ２４に移行する。
【０１４８】
ステップＳ２２において、比較回路５７２は、データｉｎｄ０をデータｇｄとして出力し、オフセットｉｎｏｆｔ０をオフセットｇｏｆｔとして出力する。比較回路５７２は、データｉｎｄ１をデータｌｄとして出力し、オフセットｉｎｏｆｔ１をオフセットｌｏｆｔとして出力し、比較動作を終了する。
【０１４９】
ステップＳ２４において、比較回路５７２は、データｉｎｄ１をデータｇｄとして出力し、オフセットｉｎｏｆｔ１をオフセットｇｏｆｔとして出力する。また、比較回路５７２は、データｉｎｄ０をデータｌｄとして出力し、オフセットｉｎｏｆｔ０をオフセットｌｏｆｔとして出力し、比較動作を終了する。
【０１５０】
図２３は、図１８の圧縮部５６による圧縮動作の一例を示す。図２３では、説明を分かりやすくするため、１４個の要素（特徴量データ）が８個に圧縮される例を示す。実際の例では、図１７で説明したように、動作サイクル毎にセンサＳｏＣ２０Ａが生成する特徴量データの数は、２０４８個でもよい。特徴量データは、圧縮部５６の構成に合わせて８個ずつサブ配列に分けられ、サブ配列毎に特徴量データ（ｄｉｎ）の先頭側から順にオフセット０−７が割り当てられる。
【０１５１】
インデックスｘで識別される特徴量データは、動作サイクル毎に抽出された全ての特徴量データと配列内での位置とを示す。圧縮部５６は、サブ配列毎に、先頭（オフセット＝０）の特徴量データを選択する。また、圧縮部５６は、サブ配列中の残りの７個の特徴量データのうち、絶対値が大きい３つを選択する。そして、圧縮部５６は、配列毎に選択した４つの特徴量データをオフセットが小さい順に並べ替え、圧縮後の特徴量データとする。したがって、圧縮率は５０％である。圧縮後の特徴量データは、インデックスｘｓｐｒｓにより識別される。この後、特徴量データにオフセットが埋め込まれ、サブ配列毎に、図１８に示すデータｏｕｔｄ０−ｏｕｔｄ３として出力される。
【０１５２】
図２４は、図１８の圧縮部５６による圧縮動作の動作フローの一例を示す。なお、ステップＳ３０、Ｓ３２は、圧縮部５６をＦＰＧＡ等により実装する場合の条件設定を示している。圧縮部５６のハードウェア（回路素子）がセンサＳｏＣ２０Ａに実装済みの場合、ステップＳ３０、Ｓ３２の動作は省略され、圧縮動作は、ステップＳ３４から開始される。
【０１５３】
ステップＳ３０において、圧縮部５６を構成する条件として、オフセットのビット数Ｋが設定され、圧縮前の特徴量データｄｉｎの要素数Ｎが設定される。また、圧縮部５６を構成する条件として、圧縮後の特徴量データｏｕｔｄの要素数Ｌが設定され、常に選択する特徴量データに対応するオフセット番号Ｙが設定され、圧縮する特徴量データ（配列）が設定される。図２３に示す例では、ビット数Ｋ＝３、要素数Ｎ＝１４、要素数Ｌ＝８、オフセット番号Ｙ＝０が設定される。また、図１７に示すセンサＳｏＣ２０Ａの例では、ビット数Ｋ＝３、要素数Ｎ＝２０４８、要素数Ｌ＝１０２４、オフセット番号Ｙ＝０が設定される。
【０１５４】
次に、ステップＳ３２において、圧縮部５６を構成する条件として、圧縮する特徴量データのサブ配列の要素数Ｓ（＝８）が、２Ｋを演算することで算出され、式（４）により、圧縮後の特徴量データの要素数Ｄ（＝４）が算出される。
ｃｅｉｌ（Ｎ／Ｓ）＝＝ｃｅｉｌ（Ｌ／Ｄ）  …（４）
式（４）において、”ｃｅｉｌ”は、切り上げた整数を示す。
【０１５５】
そして、ステップＳ３４から特徴量データの圧縮動作が実行される。ステップＳ３４において、圧縮部５６は、特徴量データをｃｅｉｌ（Ｎ／Ｓ）個のサブ配列に分ける。次に、ステップＳ３６において、圧縮部５６は、サブ配列毎にステップＳ３６１−Ｓ３６４を実行する。
【０１５６】
ステップＳ３６１において、圧縮部５６は、圧縮処理の対象のサブ配列中のＳ個の特徴量データにオフセットを割り当てる。次に、ステップＳ３６２において、圧縮部５６は、オフセット番号＝Ｙの特徴量データを選択し、残りのＳ−１個の特徴量データの中から、絶対値の大きい順にＤ−１個の特徴量データを選択する。次に、ステップＳ３６３において、圧縮部５６は、選択したＤ個の特徴量データをオフセット番号順に並び替える。次に、ステップＳ３６４において、圧縮部５６は、選択した特徴量データの各々にオフセット値を埋め込む。そして、ステップＳ３６１からＳ３６４が繰り返されることで、圧縮対象の全てのサブ配列中の特徴量データが圧縮される。圧縮後の特徴量データは、インデックスｘｓｐｒｓにより識別される。
【０１５７】
図２５は、図１６の疎行列演算部７４の一例を示す。疎行列演算部７４は、キュー７４１、ノアゲート７４２、加算器７４３、セレクタ７４４、乗算器７４５、加算器７４６、積和演算器７４７および複数のラッチを有する。キュー７４１、ノアゲート７４２、加算器７４３、セレクタ７４４、乗算器７４５、加算器７４６は、特徴量データの復号処理を実行する復号回路として機能する。積和演算器７４７は、復号された特徴量データに基づいて、図３で説明した識別処理Ｆ２を実行する。
【０１５８】
キュー７４１は、センサＳｏＣ２０Ａから転送される圧縮後の特徴量データ（ｘｓｐｒｓ）を保持する複数のエントリを有し、キュー７４１に保持した順に特徴量データを出力する。キュー７４１から出力される３２ビットの特徴量データは、仮数部の下位３ビットに埋め込まれたオフセットと、仮数部の下位３ビットが欠落した２９ビットの浮動小数点数の特徴量データに分離される。３ビットのオフセットは、ノアゲート７４２と加算器７４６に供給される。２９ビットの特徴量データの仮数部の下位３ビットには、”３’ｂ０００”で示す２進数の”０００”が追加され、３２ビットの浮動小数点数ＦＰ３２が復号される。なお、図２３で説明したように、圧縮後の特徴量データに対応するオフセットは、飛び飛びの値を取り得る。
【０１５９】
ノアゲート７４２は、オフセットの値が”０”の場合、論理１をセレクタ７４４に出力し、オフセットの値が”０”以外の場合、論理０をセレクタ７４４に出力する。加算器７４３の入力に接続されたラッチは、動作サイクル毎にオール１に初期化される。加算器７４３およびセレクタ７４４は、キュー７４１からオフセット＝”０”が出力される毎にカウントアップするカウンタとして機能し、ノアゲート７４２の出力は、カウンタをカウントアップするインクリメント信号として機能する。セレクタ７４４は、サブ配列を識別するサブ配列番号を出力する。換言すれば、加算器７４３の入力に接続されたラッチが出力する変数ｊは、サブ配列番号を示す。なお、サブ配列は、特徴量データだけでなく、特徴量データに対応する重みデータの配列としても使用される。
【０１６０】
乗算器７４５は、セレクタ７４４から出力される値に、サブ配列の要素数である”８”を乗じて、加算器７４６に出力する。加算器７４６は、乗算器７４５の出力値にオフセット値を加算することで、サブ配列中の復号された特徴量データに対応してメモリ９０内に保持された重みを識別する重みインデックスを生成する。すなわち、オフセットが飛び飛びの値を取る場合にも、特徴量データに対応する重みＷを識別する重みインデックスが生成されることで、各特徴量データの復号処理を完了することができる。なお、重みインデックスは、演算対象の重みＷが格納された領域の識別に使用されるとともに、演算対象の特徴量データの識別に使用されてもよい。
【０１６１】
疎行列演算部７４は、演算に使用する重みＷを識別する重みインデックスが特定できた場合、メモリ９０にリード要求を発行し、メモリ９０から重みＷを取得する。積和演算器７４７（Fused  Multiply-Add）は、特徴量データとメモリ９０から取得した重みＷとを乗じる。積和演算器７４７は、動作サイクルにおいて、キュー７４１から出力された復号された特徴量データと、重みインデックスに応じてメモリ９０から読み出される重みＷとの積を順次積算し、処理Ｆ２の演算結果としてメモリ９０に格納する。
【０１６２】
なお、積和演算器７４７の出力を受けるラッチは、積算結果を保持するアキュムレータとして機能し、動作サイクルの開始前に”０”に初期化される。アキュムレータが保持する積算値は、動作サイクルの完了時に式（５）に示す値になる。但し、式（５）において、圧縮処理により間引かれた特徴量データに対応する”ｉ”の要素は、除外して演算される。
【０１６３】
【数４】
2020129296.tif 000006
【０１６４】
式（５）において、ｗ［ｉ］は、重みインデックスにより識別される重みＷを示し、ｘ［ｉ］は、特徴量のインデックスにより識別される特徴量データを示す。
【０１６５】
図２６は、図１６のエッジＳｏＣ６３に接続されるメモリ９０が保持する重み行列の一例を示す。重み行列は、動作サイクル毎に使用される２０４８個の重みＷを保持する領域であって、重みインデックスにより識別される領域を有する。重みインデックスが飛び飛びの値を取ることで、重み行列中の一部の重みＷが読み出される。
【０１６６】
図２７は、図２５の疎行列演算部７４による復号動作の一例を示す。図２７では、圧縮率が５０％の場合に、サブ配列毎に、復号前（すなわち、圧縮後）の４個の特徴量データを使用して、８個の特徴量データが復号される例が示される。例えば、各動作サイクルでは、２５６個のサブ配列に含まれる１０２４個の特徴量データから２０４８個の特徴量データが復号される。
【０１６７】
疎行列演算部７４は、復号前の特徴量データからオフセットを取り出し、オフセットを取り出した特徴量データを用いて特徴量データを復号する。疎行列演算部７４は、取り出したオフセットの値に対応するインデックスｘで識別されるメモリ９０内の領域に、復号した特徴量データを格納する。この実施形態では、オフセット＝０に対応する特徴量データが常に復号後の特徴量データとして含まれるため、オフセット＝０により、特徴量データのサブ配列の繰り返しを判定することができる。
【０１６８】
メモリ９０において、復号した特徴量データを格納する領域には、動作サイクルの開始前に予め定数Ｚが書き込まれる。このため、復号した特徴量データを格納する領域は、復号処理の完了後、復号した特徴量データと定数Ｚとのいずれかを保持する。定数Ｚの値は任意であるが、特徴量データの圧縮時に特徴量データを選択する基準が、絶対値の大きい
順であるため、定数Ｚは、”０”とするのが妥当である。
【０１６９】
ＤＮＮの推論処理では、復号後の特徴量データは、例えば、式（１）で示される全結合層（行列ベクトル積）に使用される。復号処理によって定数Ｚに置き換えられる特徴量データや、特徴量データに対応する重みＷは、演算しなくてよい。そこで、特徴量データおよび重みＷに対する演算およびメモリアクセスを省略することで、圧縮しない場合に比べて、エッジＳｏＣ６３で実行する演算量を削減することができ、演算に要するクロックサイクル数を削減することができる。
【０１７０】
なお、本実施形態では、定数Ｚ（＝０）に置き換えられた特徴量データは、処理Ｆ２による演算がスキップされるが、これは、復号された有効な特徴量データと重みＷとの積と、定数Ｚ（＝０）と重みＷの積（＝０）とが積算されることと等価である。このため、演算量の制限がない場合、定数Ｚ（＝０）と重みＷの積が演算されてもよい。
【０１７１】
図２８は、図２５の疎行列演算部７４による復号動作の動作フローの一例を示す。なお、ステップＳ４０、Ｓ４２は、疎行列演算部７４が出力をＦＰＧＡ等により実装する場合の条件設定を示している。疎行列演算部７４のハードウェア（回路素子）がエッジＳｏＣ６３に実装済みの場合、ステップＳ４０、Ｓ４２の動作は省略され、圧縮動作は、ステップＳ４４から開始される。
【０１７２】
ステップＳ４０において、疎行列演算部７４を構成する条件として、オフセットのビット数Ｋが設定され、圧縮前の特徴量データｄｉｎの要素数Ｎが設定される。また、疎行列演算部７４を構成する条件として、圧縮後の特徴量データｏｕｔｄの要素数Ｌが設定され、定数Ｚが設定され、復号する特徴量データｘｓｐｒｓ（配列）が設定される。図２７に示す復号動作では、ビット数Ｋ＝３、要素数Ｎ＝１４、要素数Ｌ＝８が設定される。また、図１７に示す特徴量データの場合、ビット数Ｋ＝３、要素数Ｎ＝２０４８、要素数Ｌ＝１０２４が設定される。
【０１７３】
次に、ステップＳ４２において、疎行列演算部７４を構成する条件として、圧縮する特徴量データのサブ配列の要素数Ｓ（＝８）が、２Ｋを演算することで算出され、式（６）により、復号前の特徴量データの要素数Ｄ（＝４）が算出される。
Ｄ＝Ｌ／ｃｅｉｌ（Ｎ／Ｓ）  ‥（６）
【０１７４】
次に、ステップＳ４４において、疎行列演算部７４は、復号後の特徴量データの格納領域を定数Ｚで初期化する。例えば、格納領域は、２０４８個の特徴量データが格納できるようにメモリ９０内に割り当てられる。疎行列演算部７４は、ステップＳ４６以降で使用する変数ｊを”−１”に初期化する。
【０１７５】
次に、ステップＳ４６において、疎行列演算部７４は、Ｌ個の特徴量データを復号する動作サイクル毎にステップＳ４６１−Ｓ４６３を実行する。ステップＳ４６１において、疎行列演算部７４は、例えば、図２７に示す復号前の複数の特徴量データ（オフセットを含む）から、インデックスｘｓｐｒｓ［ｉ］に対応する特徴量データを取得する。次に、ステップＳ４６２において、疎行列演算部７４は、オフセットが”０”の場合、変数ｊをインクリメントする。すなわち、疎行列演算部７４は、サブ配列の境界を検出する毎に、変数ｊをインクリメントする。図２５に示す疎行列演算部７４では、変数ｊは、セレクタ７４４から出力される。
【０１７６】
次に、ステップＳ４６３において、疎行列演算部７４は、変数ｊとサブ配列の要素数Ｓとオフセットとを演算して復号後の特徴量データを識別するインデックスｘを算出する。図２５に示す疎行列演算部７４では、インデックスｘは、乗算器７４５および加算器７４６により算出される重みインデックスに等しい。そして、疎行列演算部７４は、復号後の特徴量データにインデックスｘを割り当てる。割り当てられたインデックスｘは、図２３の圧縮前のインデックスｘに対応している。そして、ステップＳ４６１からＳ４６３が繰り返されることで、全てのサブ配列中の特徴量データが復号される。
【０１７７】
この実施形態では、絶対値が相対的に小さく、圧縮時に間引かれた特徴量データは、復号後に定数Ｚ（例えば、”０”）に置き換えられ、定数Ｚに置き換えられた特徴量データを使用する演算は、スキップされる。例えば、復号した特徴量データを使用して処理Ｆ２（全結合層）で実行される演算処理は、式（１）に示す行列ベクトル積であるため、絶対値が小さい特徴量データを”０”と見なしても処理Ｆ２の結果に与える影響は小さい。全結合層による処理だけでなく、畳み込み層による処理やＬＳＴＭの処理においても、絶対値が小さい特徴量データを”０”と見なして演算を実行しても処理結果に与える影響は小さい。したがって、ＤＮＮの最終的な識別結果に与える影響を抑えつつ、エッジＳｏＣ６３で実行すべき演算量を削減することができる。また、センサＳｏＣ２０ＡからエッジＳｏＣ６３に転送するデータ量を削減することができ、メモリ９０の使用量を削減することが出来る。
【０１７８】
図２９は、図１６の情報処理装置１０４による特徴量データの圧縮および復号の概要を示す。図２９において、斜線で示す矩形は、圧縮により間引かれて演算に使用されない特徴量データまたは演算に使用されない重みＷを示す。したがって、斜線で示す特徴量データは、実際には存在しない。なお、後述する図３０に示す実施形態において、センサＳｏＣ２０Ａが抽出する特徴量データをエッジＳｏＣ６３により演算し、センサＳｏＣ２０Ｂが抽出する特徴量データをエッジＳｏＣ６３により演算する場合の動作の概要も図２９と同様である。また、後述する図３４において、センサＳｏＣ２０Ａが抽出する特徴量データをエッジＳｏＣ６３により演算する場合の動作の概要も図２９と同様である。
【０１７９】
センサＳｏＣ２０Ａの圧縮部５６は、Ｎ個の特徴量データｘ［１］−ｘ［Ｎ］のうち、絶対値が大きい所定数の特徴量データを選択することで圧縮し、特徴量データｘｓｐｒｓ［１］、［Ｌ］として、エッジＳｏＣ６３に接続されたメモリ９０に格納する。図示していないが、特徴量データｘｓｐｒｓ［１］、［Ｌ］は、オフセットを含む。
【０１８０】
疎行列演算部７４は、メモリ９０が保持する圧縮後の特徴量データｘｓｐｒｓ［１］、［Ｌ］からオフセットを取り出し、特徴量データｘｓｐｒｓ［１］、［Ｌ］を復号する。疎行列演算部７４は、取り出したオフセットに基づいて、復号した特徴量データｘｓｐｒｓ［１］、［Ｌ］に対応する重みＷ［ｊ，２］、［ｊ，Ｎ］をメモリ９０から読み出す。疎行列演算部７４の積和演算器７４７は、特徴量データｘｓｐｒｓ［１］、［Ｌ］と重みＷ［ｊ，２］、［ｊ，Ｎ］との積和演算を実行し、実行結果をメモリ９０に書き戻す。
【０１８１】
以上、図１６から図２８に示す実施形態においても、図１から図９に示す実施形態と同様の効果を得ることができる。さらに、図１６から図２９に示す実施形態では、圧縮部５６により、特徴量データを圧縮してエッジＳｏＣ６３に転送することで、センサＳｏＣ２０ＡとエッジＳｏＣ６３との間でのデータ転送量を削減することができる。これにより、より多くのセンサ１０の計測値を用いて、ＤＮＮの推論処理を実行することが可能になる。
【０１８２】
また、圧縮により切り捨てられる特徴量データは、絶対値が他より小さいため、処理Ｆ２の結果に与える影響を小さくして、ＤＮＮの推論処理を実行することができる。したがって、ＤＮＮの最終的な識別結果に与える影響を抑えつつ、エッジＳｏＣ６３で実行すべき演算量を削減することができ、演算に要するクロックサイクル数を削減することができる。また、特徴量データの数を減らすことで、メモリ９０の使用量を削減することが出来る。
【０１８３】
特徴量データの圧縮処理において、複数の特徴量データのうち、オフセットが同じ特徴量データを常に選択することで、オフセットを用いてサブ配列の境界を検出することができ、検出した境界に基づいて、特徴量データを復号することができる。この結果、常に選択されるオフセットを持たない場合に比べて、疎行列演算部７４におけるサブ配列の境界を検出する回路を簡易にすることができ、疎行列演算部７４の回路規模を削減することができる。
【０１８４】
また、オフセットが同じ特徴量データを常に選択することで、データソート回路５６０およびオフセットソート回路５７０の回路規模を削減することができる。例えば、データｄｉｎ０を常に選択することで、データｄｉｎ０と他のデータｄｉｎとを比較する比較回路５６２を不要にすることができる。すなわち、全てのデータｄｉｎ０−ｄｉｎ７を比較する場合に比べて、データソート回路５６０の回路規模を削減することができる。ソートデータｓｄ０を常に選択することで、オフセットｓｏｆｔ０と他のオフセットｓｏｆｔとを比較する比較回路５７２を不要にすることができる。すなわち、全てのオフセットｓｏｆｔ０−ｓｏｆｔ３を比較する場合に比べて、オフセットソート回路５７０の回路規模を削減することができる。
【０１８５】
図３０は、別の実施形態における情報処理装置の一例を示す。図１０および図１６と同様の要素については、同じ符号を付し、詳細な説明は省略する。図３０に示す情報処理装置１０５は、図１６に示す圧縮部５６の代わりに圧縮部５７を有する。また、情報処理装置１０５は、バス２１Ｂに接続された圧縮部５７をセンサＳｏＣ２０Ｂに追加し、図１０に示すジャイロセンサ１０ＣおよびセンサＳｏＣ２０Ｃを有する。圧縮部５７は、圧縮率を５０％または２５％のいずれかに選択可能である。例えば、センサＳｏＣ２０Ａの圧縮部５７の圧縮率は２５％に設定され、センサＳｏＣ２０Ｂの圧縮部５７の圧縮率は５０％に設定される。
【０１８６】
センサＳｏＣ２０Ｂの圧縮部５７は、演算コア４０Ｂが抽出した音声データの特徴量データの情報量を圧縮する機能を有する。なお、センサＳｏＣ２０Ｂは、圧縮部５７の代わりに図１６に示した圧縮部５６を有してもよい。情報処理装置１０５のその他の構成は、図１６に示す情報処理装置１０４と同様である。情報処理装置１０５は、図１６に示す情報処理装置１０４と同様に、マルチモーダルＤＮＮの推論処理を実行する。
【０１８７】
図３１は、図３０のセンサＳｏＣが、特徴量データを抽出する動作サイクル毎に出力する特徴量データのサイズの一例を示す。センサＳｏＣ２０Ａは、演算コア４０Ａが動作サイクル毎に抽出する２０４８個の特徴量データを、圧縮部５７を使用して５１２個に圧縮し、エッジＳｏＣ６３に向けて出力する（圧縮率＝２５％）。センサＳｏＣ２０Ｂは、演算コア４０Ｂが動作サイクル毎に抽出する１０２４個の特徴量データを、圧縮部５７を使用して５１２個に圧縮し、エッジＳｏＣ６３に向けて出力する（圧縮率＝５０％）。
【０１８８】
センサＳｏＣ２０Ｃは、演算コア４０Ｃが動作サイクル毎に抽出する１０２４個の特徴量データを、エッジＳｏＣ６３に向けて出力する。センサＳｏＣ２０Ａ、２０Ｂ、２０Ｃが抽出する特徴量データの数の合計は、３５８４個である。一方、センサＳｏＣ２０Ａ、２０Ｂ、２０ＣがエッジＳｏＣ６３に出力する特徴量データの数の合計は、図１７と同じ２０４８個である。すなわち、図２９のエッジＳｏＣ６３に転送される特徴量データの転送レートを、図１６のエッジＳｏＣ６３に転送される特徴量データの転送レートと等しくすることができる。
【０１８９】
この実施形態では、センサＳｏＣ２０Ａの圧縮率を高め、センサＳｏＣ２０Ｂに圧縮機能を追加することで、センサＳｏＣ２０Ｃが追加される場合にも、エッジＳｏＣ６３への特徴量データの転送レートが変化することを抑止することができる。すなわち、センサＳｏＣの数が増え、推論に使用する特徴量データのサイズが増える場合にも、エッジＳｏＣ６３へのデータ転送量の増加を抑えることができ、エッジＳｏＣ６３での演算量の増加を抑えることができる。この結果、マルチモーダルＤＮＮの推論処理の実行効率が低下することを抑止できる。
【０１９０】
さらに、センサＳｏＣ２０の圧縮率を可変にすることで、エッジＳｏＣ６３に接続されるセンサＳｏＣ２０の数に関わらず、エッジＳｏＣ６３への特徴量データの転送レートを一定にすることができる。この結果、エッジＳｏＣ６３の演算コア８２のアーキテクチャに適合する最適なサイズの特徴量データを転送することができ、推論処理の実行効率を最適にでき、かつ、推論処理の実行時間を一定にすることができる。
【０１９１】
図３２は、図３０の圧縮部５７の一例を示す。図１８に示す圧縮部５６と同様の要素については同じ符号を付し、詳細な説明は省略する。圧縮部５７は、データソート回路５６０とオフセットソート回路５７０の間に、セレクタ５９１、５９２を有する。セレクタ５９１は、モード信号ＭＤＣが論理０の場合、オフセットｓｏｆｔ２をオフセットソート回路５７０に供給し、モード信号ＭＤＣが論理１の場合、”３’ｂ１１１”で示す２進数の”１１１”をオフセットソート回路５７０に供給する。セレクタ５９２は、モード信号ＭＤＣが論理０の場合、オフセットｓｏｆｔ３をオフセットソート回路５７０に供給し、モード信号ＭＤＣが論理１の場合、”３’ｂ１１１”で示す２進数の”１１１”をオフセットソート回路５７０に供給する。
【０１９２】
モード信号ＭＤＣは、８個の特徴量データから４つを選択する場合に論理０に設定され、８個の特徴量データから２つを選択する場合に論理１に設定される。すなわち、モード信号ＭＤＣは、圧縮率を５０％にする場合、論理０に設定され、圧縮率を２５％にする場合、論理１に設定される。センサＳｏＣ２０Ａの圧縮部５７は、モード信号ＭＤＣ＝”１”を受け、圧縮率＝２５％で動作する。センサＳｏＣ２０Ｂの圧縮部５７は、モード信号ＭＤＣ＝”０”を受け、圧縮率＝５０％で動作する。なお、図１６に示したセンサＳｏＣ２０Ａの圧縮部５６の代わりに圧縮部５７を実装し、モード信号ＭＤＣ＝”０”（圧縮率＝５０％）で動作させてもよい。
【０１９３】
オフセットソート回路５７０は、モード信号ＭＤＣが論理１の場合、”３’ｂ１１１”のオフセットｓｏｆｔ２、ｓｏｆｔ３を受ける。この場合、オフセットソート回路５７０は、ソートデータｓｄ０、ｓｄ１をこの順にソートデータｔｍｐｄ０、ｔｍｐｄ１として出力し、オフセットｓｏｆｔ０、ｓｏｆｔ１をこの順にオフセットｔｍｐｏｆｔ０、ｔｍｐｏｆｔ１として出力する。また、オフセットソート回路５７０は、ソートデータｓｄ２、ｓｄ３をソートデータｔｍｐｄ２、ｔｍｐｄ３として出力し、オフセットｓｏｆｔ２、ｓｏｆｔ２をオフセットｔｍｐｏｆｔ２、ｔｍｐｏｆｔ３として出力する。特徴量データｏｕｔｄ０、ｏｕｔｄ１は、圧縮済み特徴量データの一例である。これにより、圧縮部５８の圧縮率を２５％に設定することができる。
【０１９４】
図３３は、圧縮率が２５％に固定された圧縮部５８の例を示す。図１８に示す圧縮部５６と同様の要素については同じ符号を付し、詳細な説明は省略する。図３２に示す圧縮部５７が存在せず、センサＳｏＣ２０Ａに圧縮部５８を実装する場合、センサＳｏＣ２０Ｂには、図１８に示す圧縮部５６が実装される。
【０１９５】
図３３に示す圧縮部５８は、オフセットソート回路５７０およびデータｏｕｔｄ２、ｏｕｔｄ３に対応するパッキング回路５８０を持たない。圧縮部５８は、ソートデータｓｄ０、ｓｄ１をこの順にソートデータｔｍｐｄ０、ｔｍｐｄ１として常にパッキング回路５８０に出力する。また、圧縮部５８は、オフセットｓｏｆｔ０、ｓｏｆｔ１をこの順にオフセットｔｍｐｏｆｔ０、ｔｍｐｏｆｔ１としてパッキング回路５８０に出力する。これにより、圧縮部５８の圧縮率を２５％に設定することができる。
【０１９６】
なお、図１６に示す圧縮部５６、図３０に示す圧縮部５７および図３３に示す圧縮部５８は、ＦＰＧＡ（Field  Programmable  Gate  Array）等の再構成可能な要素を用いて実装されてもよい。この場合、圧縮部を実装するセンサＳｏＣは、ＦＰＧＡを有する。圧縮部で使用するパラメータ等が再設定される毎に論理を再構成することで、圧縮部５６、５７、５８のいずれか１つまたは複数を実装することができる。これにより、共通のセンサＳｏＣ２０を使用して、圧縮率や動作サイクル毎に抽出する特徴量データの数等を変更することができる。
【０１９７】
以上、図３０から図３３に示す実施形態においても、図１から図９、図１６から図２８に示す実施形態と同様の効果を得ることができる。さらに、図３０から図３３に示す実施形態では、センサＳｏＣの数が増減し、推論に使用する特徴量データのサイズが増減する場合にも、エッジＳｏＣ６３へのデータ転送レートを一定にすることができ、エッジＳｏＣ６３での演算量の増加を抑えることができる。この結果、マルチモーダルＤＮＮの推論処理の実行効率が低下することを抑止できる。また、エッジＳｏＣ６３の演算コア８２のアーキテクチャに適合する最適なサイズの特徴量データを転送することができるため、推論処理の実行効率を最適にでき、かつ、推論処理の実行時間を一定にすることができる。
【０１９８】
図３４は、別の実施形態における情報処理装置の一例を示す。図１６と同様の要素については、同じ符号を付し、詳細な説明は省略する。図３４に示す情報処理装置１０６は、図１６に示すセンサＳｏＣ２０Ａの圧縮部５６の代わりに圧縮部５９を有し、エッジＳｏＣ６３の疎行列演算部７４の代わりに疎行列演算部７５を有する。情報処理装置１０６のその他の構成は、図１６に示す情報処理装置１０４と同様である。情報処理装置１０６は、図１６に示す情報処理装置１０４と同様に、マルチモーダルＤＮＮの推論処理を実行する。
【０１９９】
圧縮部５９は、サブ配列毎に入力する全ての特徴量データの絶対値を比較し、絶対値の大きい順に所定数の特徴量データを選択する点が、図１６に示す圧縮部５６と相違する。すなわち、圧縮部５９では、オフセット番号Ｙ（＝”０”）の指定により常に選択されるオフセットはない。このため、疎行列演算部７５は、固定のオフセットを用いないでサブ配列の境界を検出する回路を含む。
【０２００】
センサＳｏＣ２０Ａは、抽出した特徴量データ（ＦＰ３２）を圧縮部５９により圧縮し、エッジＳｏＣ６３に向けて転送する。センサＳｏＣ２０Ｂは、抽出した特徴量データ（ＦＰ３２）を圧縮することなく、エッジＳｏＣ６３に向けて転送する。各センサＳｏＣ２０Ａ、２０Ｂの特徴量データのサイズは、図１７と同様である。
【０２０１】
図３５は、図３４の圧縮部５９の一例を示す。圧縮部５９は、図１８の圧縮部５６のデータソート回路５６０の代わりにデータソート回路５６１を有し、図１８の圧縮部５６のオフセットソート回路５７０の代わりにオフセットソート回路５７１を有する。
【０２０２】
図３６は、図３５のデータソート回路５６１の一例を示す。図１９に示すデータソート回路５６０と同様の構成については、詳細な説明は省略する。データソート回路５６１は、図１９に示すデータソート回路５６０に３つの比較回路５６３を追加している。比較回路５６３の構成は、比較回路５６２の構成と同じであり、比較回路５６３の動作は、図２０に示す比較回路５６２の動作と同じである。
【０２０３】
データソート回路５６１は、入力する全ての特徴量データ（ｄｉｎ０−ｄｉｎ７）の絶対値の大小を２つずつ比較し、絶対値の大きい４つの特徴量データをソートデータｓｄ０−ｓｄ３としてオフセットｓｏｆｔ０−ｓｏｆｔ３とともに出力する。全ての特徴量データ（ｄｉｎ０−ｄｉｎ７）の絶対値を比較するため、データソート回路５６１の回路規模は、図１９に示すデータソート回路５６０の回路規模より大きい。
【０２０４】
図３７は、図３５のオフセットソート回路５７１の一例を示す。図２１に示すオフセットソート回路５７０と同様の構成については、詳細な説明は省略する。オフセットソート回路５７１は、図２１に示すオフセットソート回路５７１に２つの比較回路５７３を追加している。比較回路５７３の構成は、比較回路５７２の構成と同じであり、比較回路５７３の動作は、図２２に示す比較回路５７２の動作と同じである。
【０２０５】
オフセットソート回路５７１は、入力する全てのオフセットｓｏｆｔ０−ｓｏｆｔ３の値の大小を２つずつ比較し、ソートデータｔｍｐｄ０−ｔｍｐｄ３を、オフセットｔｍｐｏｆｔの値が小さい順に並べて出力する。全てのオフセットｓｏｆｔ０−ｓｏｆｔ３の値を比較するため、オフセットソート回路５７１の回路規模は、図２１に示すオフセットソート回路５７０の回路規模より大きい。
【０２０６】
図３８は、図３５の圧縮部５９による圧縮動作の一例を示す。図２３と同様の動作については、詳細な説明は省略する。図３８では、図２３と同様に、１４個の要素（特徴量データ）が８個に圧縮される例を示す。
【０２０７】
圧縮部５９は、サブ配列中の８個の特徴量データのうち、絶対値が大きい４つを選択する。そして、圧縮部５９は、配列毎に選択した４つの特徴量データをオフセットが小さい順に並べ替え、圧縮後の特徴量データとする。このため、最初のサブ配列において、図２３では選択されたインデックスｘ［０］の特徴量データは選択されず、図２３では選択されないインデックスｘ［３］の特徴データが選択される。２番目のサブ配列では、インデックスｘ［８］の特徴量データの絶対値が他の特徴量データより大きいため、図２３に示す動作と同じ動作が実行される。
【０２０８】
図３９は、図３５の圧縮部５９による圧縮動作の動作フローの一例を示す。図２４と同様の動作については、詳細な説明は省略する。圧縮部５９の動作フローは、図２４のステップＳ３０の代わりにステップＳ３０Ａが実行され、図２４のステップＳ３６２の代わりにステップＳ３６２Ａが実行されることを除き、図２４の動作フローと同様である。
【０２０９】
ステップＳ３０Ａは、常に選択する特徴量データに対応するオフセット番号Ｙが設定されないことを除き、図２４に示すステップＳ３０と同様である。ステップＳ３６２Ａでは、圧縮部５９は、Ｓ個の特徴量データの中から、絶対値の大きい順にＤ個の特徴量データを選択する。
【０２１０】
図４０Ａは、図３４の疎行列演算部７５の一例を示す。図２５と同様の要素については、同じ符号を付し、詳細な説明は省略する。疎行列演算部７５は、図２５に示す疎行列演算部７４のノアゲート７４２の代わりに、比較回路７５１、７５２、加算器７５３およびセレクタ７５４を有する。疎行列演算部７５のその他の構成は、図２５に示す疎行列演算部７４と同様である。
【０２１１】
比較回路７５１、７５２の入力に接続されるラッチは、３ビットの変数ｋを出力し、変数ｋは、４クロックサイクル毎に”０”に初期化される。比較回路７５１は、変数ｋが”０”の場合、論理１を出力し、変数ｋが”０”以外の場合、論理０を出力する。比較回路７５２は、変数ｋが”３”のとき、論理１を出力し、変数ｋが”３”以外のとき、論理０を出力する。
【０２１２】
比較回路７５２、加算器７５３およびセレクタ７５４は、変数ｋが”３”以外のとき、変数ｋをインクリメントし、変数ｋが”３”のとき、変数ｋを”０”にリセットするカウンタとして動作する。これにより、オフセット＝”０”を使用することなく、４個の要素を含む圧縮後のサブ配列の境界毎に、変数ｊをインクリメントすることができる。
【０２１３】
図４０Ｂは、図４０Ａの疎行列演算部７５による復号動作の動作フローの一例を示す。図２８と同様の動作については、詳細な説明は省略する。疎行列演算部７５の動作フローは、図２８のステップＳ４４の代わりにステップＳ４４Ａが実行され、図２８のステップＳ４６２の代わりにステップＳ４６２Ａが実行され、図２８のステップＳ４６３の後にステップＳ４６４Ａが追加されることを除き、図２８の動作フローと同様である。すなわち、ステップＳ４６では、疎行列演算部７５は、Ｌ個の特徴量データを復号する動作サイクル毎にステップＳ４６１、Ｓ４６２Ａ、Ｓ４６３、Ｓ４６４Ａを実行する。
【０２１４】
ステップＳ４４Ａでは、図２８のステップＳ４４に、変数ｋを”０”に初期化する動作が追加される。ステップＳ４６２Ａでは、疎行列演算部７５は、変数ｋが”０”の場合、変数ｊをインクリメントする。すなわち、疎行列演算部７５は、サブ配列の境界を検出する毎に、変数ｊをインクリメントする。ステップＳ４６４Ａでは、疎行列演算部７５は、変数ｋが”Ｄ−１”の場合、変数ｋを”０”にリセットし、変数ｋが”Ｄ−１”以外の場合、変数ｋをインクリメントする。そして、ステップＳ４６１からＳ４６４Ａが繰り返されることで、全てのサブ配列中の特徴量データが復号される。
【０２１５】
以上、図３４から図４０Ｂに示す実施形態においても、図１から図９、図１６から図３３に示す実施形態と同様の効果を得ることができる。さらに、図３４から図３９に示す実施形態では、センサＳｏＣ２０で抽出されたサブ要素毎の８個の特徴量データのうち、絶対値が大きい４個の特徴量データを常に選択できる。このため、オフセット番号Ｙの特徴量データが常に選択される場合に比べて、識別処理Ｆ２の精度を向上することができる。
【０２１６】
図４１は、別の実施形態における情報処理装置の一例を示す。上述した実施形態と同様の要素および機能については、同じ符号を付し、詳細な説明は省略する。図４１に示す情報処理装置１０７は、自動運転可能な車両２００に実装されるイメージセンサ１０Ａ、マイクロフォン１０Ｂ、ジャイロセンサ１０ＣおよびセンサＳｏＣ２０Ａ、２０Ｂ、２０Ｃと、サーバ３００に実装されたエッジＳｏＣ６６を有する。例えば、サーバ３００は、データセンターに設置される。なお、サーバ３００は、クラウドコンピュータとして機能させてもよい。情報処理装置１０７は、マルチモーダルＤＮＮ推論システムとして機能する。車両２００は、道路を走行する乗用車、トラック、バス等であるが、自動運転が可能な環境で走行する車両であれば、これらに限定されない。
【０２１７】
車両２００とサーバ３００とは、無線通信等のデータ転送路を介して接続される。すなわち、センサＳｏＣ２０Ａ、２０Ｂ、２０Ｃは、車両に搭載される通信インタフェースを介して、無線でエッジＳｏＣ６６に接続される。イメージセンサ１０Ａは、車両２００の前方に設置され、マイクロフォン１０Ｂは、運転席の近くに設置される。
【０２１８】
センサＳｏＣ２０Ａは、イメージセンサ１０Ａが撮影した車両２００の周囲の画像を、処理可能な画像データに変換する（処理Ｓ１）。センサＳｏＣ２０Ａは、変換した画像データの特徴量データを抽出し（処理Ｃ）、抽出した特徴量データを、セレクタ７７を介してエッジＳｏＣ６６に転送する（処理Ｄ１）。
【０２１９】
センサＳｏＣ２０Ｂは、マイクロフォン１０Ｂが取得した運転者等のユーザーの音声を、処理可能な音声データに変換する（処理Ｓ２）。センサＳｏＣ２０Ｂは、変換した音声データの特徴量データを抽出し（処理Ｌ）、抽出した特徴量データを、セレクタ７７を介してエッジＳｏＣ６６に転送する（処理Ｄ１）。
【０２２０】
センサＳｏＣ２０Ｃは、ジャイロセンサ１０Ｃが取得した車両の加速度を処理可能な加速度データに変換し（処理Ｓ３）、変換した加速度データの特徴量データを抽出する（処理Ｆ１）。また、センサＳｏＣ２０Ｃは、特徴量データを圧縮する圧縮部５６を有しており、抽出した特徴量データを圧縮し（圧縮処理）、圧縮した特徴量データを、セレクタ７７を介してエッジＳｏＣ６６に転送する（処理Ｄ３）。
【０２２１】
センサＳｏＣ２０Ａの構成は、図４と同様であり、センサＳｏＣ２０Ｂの構成は、図５と同様である。センサＳｏＣ２０Ｃの構成は、図６のセンサＳｏＣ２０Ｃと同様であるが、バス２１Ｃに圧縮部５６が接続されることが図６と相違する。また、センサＳｏＣ２０Ａ、２０Ｂ、２０ＣおよびエッジＳｏＣ６６による処理は、扱うデータのデータ型が異なることと、型変換処理、圧縮処理および復号処理が含まれることを除き、図３に示すマルチモーダルＤＮＮ推論システムによる処理と同様である。
【０２２２】
エッジＳｏＣ６６は、型変換部７２と、復号回路７６と、識別処理Ｆ２および処理Ａ（アプリケーション）を実行する演算コア８３（図示せず）とを有する。型変換部７２は、センサＳｏＣ２０Ａ、２０Ｂから転送される特徴量データ（ＦＰ１６）をＦＰ３２に型変換する。復号回路７６は、センサＳｏＣ２０Ｃから転送される圧縮された特徴量データ（ＦＰ３２）を復号する。例えば、復号回路７６は、図２５に示すキュー７４１、ノアゲート７４２、加算器７４３、セレクタ７４４、乗算器７４５、加算器７４６を有する。なお、エッジＳｏＣ６６は、演算コア８３の他に、図２５に示す疎行列演算部７４を持ち、加速度データから抽出されて圧縮された特徴量データの復号処理と処理Ｆ２の一部とを疎行列演算部７４により実行してもよい。
【０２２３】
図４１の情報処理装置１０７は、車両２００に乗っているユーザーによる音声の指示に基づいて、指示に対応した動作を実行する。以下では、一例として、ユーザーが”スーツケースを持っている人の前で止まって”と指示した場合について説明する。
【０２２４】
音声での指示を受けた情報処理装置１０７は、イメージセンサ１０Ａによる撮影で得た画像データの中から、ユーザーが音声で指示した内容に合致する人物Ｐの検出処理（object  detection）を実行する。画像データだけでなく音声データを用いることで検出対象（人物Ｐ）を音声で指示することができる。また、情報処理装置１０７は、ジャイロセンサ１０Ｃが取得した加速度データを用いることで、車両２００の揺れ等に起因する画像データのブレを補正しつつ、検出処理を実行することができる。
【０２２５】
エッジＳｏＣ６６は、画像データと加速度データとから抽出された特徴量データに基づいて識別処理Ｆ２を実行することにより、ユーザーから音声で指示された人物Ｐを画像データ中から検出し、その位置を特定する。そして、エッジＳｏＣ６６は、識別処理Ｆ２の実行結果に基づいて処理Ａを実行し、特定した人物Ｐの位置に基づいて、車両２００を停止させる位置を示す情報を車両２００に指示する。車両２００への指示は、車両を停止させる位置情報だけでもよく、車両２００のアクセル、ブレーキおよびステアリング等を制御する制御部への指示を含んでもよい。サーバ３００から指示を受けた車両２００は、指示にしたがって、例えば、車両２００を、車道の端に寄せ、ユーザーが音声で指示した人物Ｐが居る位置で停止させる制御を実行する。
【０２２６】
なお、車両２００が空港等を走行し、スーツケースを持っている複数の人の中からチェックの青いジャケットを着ている人物Ｐの前で車両２００を停止させたいとする。この場合、ユーザーは、例えば、”チェックの青いジャケットと着てスーツケースを持っている人の前で止まって”と指示することで、車両２００を人物Ｐが居る場所で停止することができる。すなわち、この実施形態のマルチモーダルＤＮＮ推論システムでは、ユーザーは、マイクロフォン１０Ｂを使って任意の特徴を指示することで、指示した特徴を有する人物Ｐの前に車両２００を停止させることができる。また、建物の形状の特徴や色、あるいは看板の特徴等を指定することで、建物や任意の場所に車両２００を停止させることもできる。
【０２２７】
図４２Ａおよび図４２Ｂは、図４１の情報処理装置１０７がマルチモーダルＤＮＮによる推論処理を実行する場合の動作フローの一例を示す。すなわち、図４２Ａおよび図４２Ｂは、情報処理装置１０７の制御方法の一例を示す。図７Ａ、図７Ｂおよび図１３と同様の動作については、詳細な説明は省略する。マルチモーダルＤＮＮの推論処理は、ユーザーが対象物（例えば、図４１に示した人物Ｐ）の特徴と動作を音声で指示することにより開始される。図４２Ａおよび図４２Ｂに示す動作は、ユーザーからの指示を受けた後、推論処理が完了するまで（すなわち、人物Ｐが居る位置で車両２００が停止するまで）繰り返し実行される。
【０２２８】
センサＳｏＣ２０Ａ、２０Ｂの動作は、図７Ａ、図７Ｂおよび図１３に示すセンサＳｏＣ２０Ａ、２０Ｂの動作と同様である。センサＳｏＣ２０Ｃの動作は、ステップＳ３０２で特徴量データの抽出後、ステップＳ３０３で圧縮部５６による圧縮処理が実行されることを除き、図７Ａおよび図７Ｂに示すセンサＳｏＣ２０Ｃの動作と同様である。
【０２２９】
エッジＳｏＣ６６は、センサＳｏＣ２０Ａから受信した画像の特徴量データ（ＦＰ１６）をＦＰ３２に変換する動作を、ステップＳ４１２において型変換部７２により実行する。また、エッジＳｏＣ６６は、センサＳｏＣ２０Ｂから受信した音声の特徴量データ（ＦＰ１６）をＦＰ３２に変換する動作をステップＳ４１３で実行する。また、エッジＳｏＣ６６は、センサＳｏＣ２０Ｃから受信した加速度の特徴量データ（圧縮データ）を復号する動作を、ステップＳ４１４において復号回路７６により実行する。エッジＳｏＣ６６のその他の動作は、図７Ａおよび図７ＢのエッジＳｏＣ６０の動作と同様である。そして、エッジＳｏＣ６６は、処理Ｆ２において、特徴量データを入力とする識別処理を実行し、その結果としてユーザーが音声で指示した人物Ｐを検出する。エッジＳｏＣ６６は、処理Ａでは、処理Ｆ２の結果に基づいて、車両２００を車道の端に寄せた後、ユーザーが音声で指示した人物Ｐのところで停止するよう車両２００を制御する。
【０２３０】
なお、センサＳｏＣ２０Ａ、２０Ｂの一方または両方は、特徴量データを圧縮する圧縮部を有してもよい。この場合、復号回路７６は、センサＳｏＣ２０Ｃで圧縮された特徴量データだけでなく、センサＳｏＣ２０ＡまたはセンサＳｏＣ２０Ｂで圧縮された特徴量データを復号する。また、エッジＳｏＣ６６の型変換部７２は、センサＳｏＣ２０Ｃから転送される特徴量データの型を変換してもよい。
【０２３１】
以上、図４１から図４２Ｂに示す実施形態においても、図１から図４０Ｂに示す実施形態と同様の効果を得ることができる。さらに、図４１から図４２Ｂに示す実施形態では、センサＳｏＣ２０Ａ、２０Ｂ、２０Ｃを車両２００に実装し、サーバ３００と無線通信することで、マルチモーダルＤＮＮ推論システムを実現することができる。車両２００に実装される部品数を少なくできるため、車両２００のコストを削減することができる。例えば、より高精細なイメージセンサが開発された場合、センサＳｏＣ２０Ａのみを置き換えることで、認識精度を向上したマルチモーダルＤＮＮ推論システムを構築することができる。また、エッジＳｏＣ６６の仕様を変更する場合にも、データセンターのサーバ３００をバージョンアップすればよく、車両２００の変更をしなくてよい。エッジＳｏＣ６６の処理能力に余裕がある場合、複数の車両２００に対する処理を並列に実行することができる。
【０２３２】
図４３は、別の実施形態における情報処理装置の一例を示す。上述した実施形態と同様の要素および機能については、同じ符号を付し、詳細な説明は省略する。図４３に示す情報処理装置１０８は、スマートフォン等の携帯端末４００に組み込まれるセンサＳｏＣ２０Ｄ、２０ＥおよびエッジＳｏＣ６７を有し、マルチモーダルＤＮＮ推論システムとして機能する。携帯端末４００は、加速度センサ１０Ｄおよび無線ＬＡＮ（Local  Area  Network）等の無線通信モジュール１０Ｅを含む。加速度センサ１０Ｄは、携帯端末４００に掛かる加速度を計測する。計測された加速度データは、センサＳｏＣ２０Ｄで処理可能なデータに変換される（処理Ｓ２）。無線通信モジュール１０Ｅは、店舗等の屋内に設置された複数の無線アクセスポイント５００と通信し、無線アクセスポイント５００の無線信号の強度（以下、信号強度と称される）を計測する。計測された強度データは、センサＳｏＣ２０Ｅで処理可能なデータに変換される（処理Ｓ３）。
【０２３３】
センサＳｏＣ２０Ｄは、加速度センサ１０Ｄが計測により得た加速度データに対してＬＳＴＭによる処理Ｌ１を実行するＬＳＴＭブロックを有し、加速度データから特徴量データを抽出する。センサＳｏＣ２０Ｄは、抽出した特徴量データをエッジＳｏＣ６７に転送する処理Ｄ２を実行する。
【０２３４】
センサＳｏＣ２０Ｅは、無線通信モジュール１０Ｅから得られる複数の無線アクセスポイントの信号強度を示す強度データに対して全結合層による処理Ｆ１を実行することで、強度データから特徴量データを抽出する。センサＳｏＣ２０Ｅは、抽出した特徴量データをエッジＳｏＣ６７に転送する処理Ｄ３を実行する。
【０２３５】
エッジＳｏＣ６７は、センサＳｏＣ２０Ｄ、２０Ｅから転送される特徴量データに基づく識別処理Ｆ２と、識別結果に基づく処理Ａ（アプリケーション）とを実行する。識別処理Ｆ２では、加速度センサ１０Ｄの動作に基づく特徴量データと、無線通信モジュール１０Ｅの動作に基づく特徴量データとから携帯端末４００の位置が推定される。エッジＳｏＣ６７は、処理Ａでは、店舗内での携帯端末４００の推定位置に基づいて、ユーザーの近くに存在する商品に関する情報を携帯端末４００に提示する。
【０２３６】
近時、スマートフォン等の携帯端末４００は、ＧＰＳ（Global  Positioning  System）受信機を内蔵しており、ＧＰＳの電波を取得することで携帯端末４００の位置を検出することができる。しかしながら、ＧＰＳの電波が届かない屋内では位置を検出することができない場合がある。この実施形態では、ＧＰＳの電波の届かない屋内においても、加速度データと無線の信号強度とに基づいて携帯端末４００の位置を推定することができる。これにより、店舗内でのユーザーの位置を示す位置情報に基づいて、商品の購買を勧める等の様々なサービスを提供することができる。
【０２３７】
加速度データおよび信号強度の両方を利用することで、加速度データまたは信号強度の一方のみを利用する場合に比べて、位置情報を高精度に推定することができる。また、携帯端末４００およびアクセスポイント５００以外の設備を追加することなく、位置情報を高精度に推定することができる。
【０２３８】
なお、センサＳｏＣ２０Ｄ、２０Ｅの一方または両方は、特徴量データを圧縮する圧縮部を有してもよく、この場合、エッジＳｏＣ６７は、圧縮された特徴量データを復号する復号回路を有する。圧縮部および復号回路の構成、機能および動作は、図１８から図２８、図３２、図３３、図３５から図４０Ａに示す構成、機能および動作と同様である。また、エッジＳｏＣ６７は、センサＳｏＣ２０Ｄ、２０Ｅの一方または両方から転送される特徴量データのデータ型を変換する型変換部を有してもよい。型変換部の構成および機能は、図１１および図１２に示す構成および機能と同様である。以上、図４３に示す実施形態においても、図１から図４０Ｂに示す実施形態と同様の効果を得ることができる。
【０２３９】
図４４は、別の実施形態における情報処理装置の一例を示す。上述した実施形態と同様の要素および機能については、同じ符号を付し、詳細な説明は省略する。図４４に示す情報処理装置１０９は、田畑、果樹園または温室等に設置される複数の無線端末６００の各々により実現される。各無線端末６００は、センサＳｏＣ２０Ｆ、２０Ｇ、２０ＨおよびエッジＳｏＣ６８を有し、マルチモーダルＤＮＮ推論システムとして機能する。
【０２４０】
各無線端末６００は、無線端末６００が内蔵するバッテリーにより動作し、温度センサ１０Ｆ、湿度センサ１１Ｆ、太陽電池モジュール１０Ｇおよびバッテリー残量計１０Ｈ等の複数のセンサを含む。各無線端末６００は、屋内に設置されたホスト端末７００との間で無線通信し、計測した温度および湿度を示す情報をホスト端末７００に転送する。
【０２４１】
ホスト端末７００は、転送された温度および湿度を表示装置に表示するとともに、温度および湿度を監視し、温度および湿度に異常がある場合、アラーム等を出力する。複数個所での温度および湿度等の環境情報を数値化して表示装置に表示することで、作物の生育管理等を容易にすることができる。また、無線端末６００が温室に設置される場合、ホスト端末７００は、転送された温度および湿度の情報に基づいて、温室の窓の開閉、換気扇の動作または空調装置の制御等を実行する。このように、情報処理装置１０９により、いわゆるスマート農業を実現することができる。
【０２４２】
温度センサ１０Ｆは、無線端末６００の周囲の温度を計測し、湿度センサ１１Ｆは、無線端末６００の周囲の湿度を計測する。計測された温度および湿度は、センサＳｏＣ２０Ｆで処理可能なデータに変換される（処理Ｓ１）。太陽電池モジュール１０Ｇは、太陽光を受けて発電し、発電した電力をバッテリーに供給するとともに、現在の出力電圧を示す電圧情報を生成する。電圧情報は、センサＳｏＣ２０Ｇで処理可能なデータに変換される（処理Ｓ２）。バッテリー残量計１０Ｈは、バッテリーの電力の残量を計測する。計測された電力の残量は、センサＳｏＣ２０Ｈで処理可能なデータに変換される（処理Ｓ３）。
【０２４３】
センサＳｏＣ２０Ｆは、温度センサ１０Ｆが計測により得た温度データおよび湿度センサ１１Ｆが計測により得た湿度データに対してＬＳＴＭによる処理Ｌ１を実行するＬＳＴＭブロックを有し、温度データおよび湿度データから特徴量データを抽出する。センサＳｏＣ２０Ｆは、抽出した特徴量データをエッジＳｏＣ６８に転送する処理Ｄ１を実行する。
【０２４４】
センサＳｏＣ２０Ｇは、太陽電池モジュール１０Ｇが出力する出力電圧データに対してＬＳＴＭによる処理Ｌ２を実行するＬＳＴＭブロックを有し、出力電圧データから特徴量データを抽出する。センサＳｏＣ２０Ｇは、抽出した特徴量データをエッジＳｏＣ６８に転送する処理Ｄ２を実行する。
【０２４５】
センサＳｏＣ２０Ｈは、バッテリー残量計１０Ｈが出力する残量データに対して全結合層による処理Ｆ２を実行することで、残量データから特徴量データを抽出する。センサＳｏＣ２０Ｈは、抽出した特徴量データをエッジＳｏＣ６８に転送する処理Ｄ３を実行する。
【０２４６】
エッジＳｏＣ６８は、センサＳｏＣ２０Ｆ、２０Ｇ、２０Ｈから転送される特徴量データに基づく識別処理Ｆ３と、識別結果に基づく処理Ａ（アプリケーション）とを実行する。識別処理Ｆ３において、エッジＳｏＣ６８は、センサＳｏＣ２０Ｆからの温度と湿度の特徴量データに基づいて、計測した温度、湿度の重要度を判定する。例えば、温度または湿度の一方または両方が前回の計測された値から所定量以上変化している場合、重要度が高いと判定される。また、識別処理Ｆ３において、エッジＳｏＣ６８は、太陽電池モジュール１０Ｇからの出力電圧の特徴量データと、バッテリー残量計１０Ｈからの残量データの特徴量データに基づいて、バッテリーの持続時間を推定する。
【０２４７】
処理Ａにおいて、エッジＳｏＣ６８は、温度、湿度の重要度が高いほど、センシングの間隔およびホスト端末７００との通信間隔を短くし、温度、湿度の重要度が低いほど、センシングの間隔およびホスト端末７００との通信間隔を長くする。また、エッジＳｏＣ６８は、バッテリーの持続時間の推定値が長いほど、センシングの間隔およびホスト端末７００との通信間隔を短くし、バッテリーの持続時間の推定値が短いほど、センシングの間隔およびホスト端末７００との通信間隔を長くする。実際には、温度、湿度の重要度とバッテリーの持続時間の推定値との組合せに基づいて、センシングの間隔およびホスト端末７００との通信間隔が調整される。
【０２４８】
近時、センサ素子や無線機能を有するＩＣ（Integrated  Circuit）の価格の低下に伴い、無線センサネットワークの実現が期待されている。無線センサネットワークは、センサを含む多数の無線端末を広範囲に分散して配置し、広範囲でのセンシングを可能にする技術で、ＩｏＴ（Internet  of  Things）のコア技術の１つとされている。無線センサネットワークは、センサを含む端末を有線で接続したセンサネットワークに比べて、設置の手間を省き、センシング範囲を容易に拡張することができる。
【０２４９】
ただし、センサ付きの無線端末は、バッテリーと太陽電池とから供給される電力により動作するため、電源線を介して電力が常時供給される端末に比べて稼働時間が短い。この実施形態では、温度、湿度の重要度とバッテリー残量とに応じて、センシングの頻度および無線通信の頻度を変えることで、無線端末６００の稼働時間を延ばすことができる。この結果、無線センサネットワークの運用の手間を省いて、運用コストを削減することができる。
【０２５０】
なお、センサＳｏＣ２０Ｆ、２０Ｇ、２０Ｈの１つまたは複数は、特徴量データを圧縮する圧縮部を有してもよく、この場合、エッジＳｏＣ６８は、圧縮された特徴量データを復号する復号回路を有する。圧縮部および復号回路の構成、機能および動作は、図１８から図２８、図３２、図３３、図３５から図４０Ａに示す構成、機能および動作と同様である。また、エッジＳｏＣ６８は、センサＳｏＣ２０Ｆ、２０Ｇ、２０Ｈの１つまたは複数から転送される特徴量データのデータ型を変換する型変換部を有してもよい。型変換部の構成および機能は、図１１および図１２に示す構成および機能と同様である。以上、図４４に示す実施形態においても、図１から図４０Ｂに示す実施形態と同様の効果を得ることができる。
【０２５１】
なお、上述した実施形態で説明したセンサＳｏＣは、シングルボードコンピュータ、ＰＣＩカードまたはスマートフォンやゲーム機等の携帯端末に実装可能である。また、上述した実施形態で説明したエッジＳｏＣは、シングルボードコンピュータ、デスクトップパソコンまたはデータセンターに設置されたサーバ等に実装可能である。また、センサＳｏＣとエッジＳｏＣとの間の通信は、有線通信または無線通信が可能である。有線通信として、ＰＣＩｅ、ＩＥＥＥ８０２．３、ＩｎｆｉｎｉＢａｎｄ等があり、無線通信として、ＩＥＥＥ８０２．１１、Ｂｌｕｅｔｏｏｔｈ（登録商標）、Ｚｉｇｂｅｅ（登録商標）、３Ｇ、４Ｇ等のモバイル通信規格等がある。
【０２５２】
センサＳｏＣに接続されるセンサとして、上述した実施形態で使用したセンサの他に、振動センサ、気圧センサ、圧力センサ、照度センサ、地磁気センサ、レーザーレンジファインダ（測域センサ）等が挙げられる。
【０２５３】
センサＳｏＣとエッジＳｏＣとを含む情報処理装置（すなわち、マルチモーダルＤＮＮ推論システム）として、以下の構成例がある。
（１）センサＳｏＣを搭載したシングルボードコンピュータと、データセンターに設置されたエッジＳｏＣを搭載したサーバを、モバイル通信規格を用いて接続する。
（２）センサＳｏＣを搭載したＰＣＩカードを、デスクトップパソコンのＰＣＩスロットに装着する。この例でのエッジＳｏＣはデスクトップパソコンのＣＰＵにより実現される。
（３）センサＳｏＣを搭載したシングルボードコンピュータとエッジＳｏＣを搭載したシングルボードコンピュータとを、ＵＳＢ（Universal  Serial  Bus）を用いて接続する。
（４）センサＳｏＣとエッジＳｏＣとを一つのシングルボードコンピュータ等の基板に搭載する。センサＳｏＣとエッジＳｏＣとは、基板上に配線されたＰＣＩ  Ｅｘｐｒｅｓｓバスで接続される。
【０２５４】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【０２５５】
１Ａ、１Ｂ、１Ｃ  センサ
２Ａ、２Ｂ、２Ｃ  演算装置
３Ａ、３Ｂ、３Ｃ  変換部
４Ａ、４Ｂ、４Ｃ  演算部
５Ａ、５Ｂ、５Ｃ  出力部
７                入力部
８                演算部
９                記憶部
１０Ａ            イメージセンサ
１０Ｂ            マイクロフォン
１０Ｃ            ジャイロセンサ
１０Ｄ            加速度センサ
１０Ｅ            無線通信モジュール
１０Ｆ            温度センサ
１１Ｆ            湿度センサ
１０Ｇ            太陽電池モジュール
１０Ｈ            バッテリー残量計
２０Ａ、２０Ｂ、２０Ｃ  センサＳｏＣ
２０Ｄ、２０Ｅ          センサＳｏＣ
２０Ｆ、２０Ｇ、２０Ｈ  センサＳｏＣ
３０Ａ、３０Ｂ、３０Ｃ  Ａ／Ｄ変換器
４０Ａ、４０Ｂ、４０Ｃ  演算コア
５０Ａ、５０Ｂ、５０Ｃ  Ｉ／Ｏコントローラ
５５Ａ、５５Ｂ、５５Ｃ  メモリ
５６、５６、５７、５８、５９  圧縮部
６０、６２、６３、６４  エッジＳｏＣ
６６、６７、６８        エッジＳｏＣ
７７、７８              セレクタ
７０、７１              Ｉ／Ｏコントローラ
７２                    型変換部
７４、７５              疎行列演算部
８０、８２、８３、８４  演算コア
９０                    メモリ
１００、１０１−１０９  情報処理装置
２００                  車両
３００                  サーバ
４００                  携帯端末
５００                  無線アクセスポイント
６００                  無線端末
７００                  ホスト端末
【図１】
2020129296.tif 000007
【図２】
2020129296.tif 000008
【図３】
2020129296.tif 000009
【図４】
2020129296.tif 000010
【図５】
2020129296.tif 000011
【図６】
2020129296.tif 000012
【図７Ａ】
2020129296.tif 000013
【図７Ｂ】
2020129296.tif 000014
【図８】
2020129296.tif 000015
【図９】
2020129296.tif 000016
【図１０】
2020129296.tif 000017
【図１１】
2020129296.tif 000018
【図１２】
2020129296.tif 000019
【図１３】
2020129296.tif 000020
【図１４】
2020129296.tif 000021
【図１５Ａ】
2020129296.tif 000022
【図１５Ｂ】
2020129296.tif 000023
【図１６】
2020129296.tif 000024
【図１７】
2020129296.tif 000025
【図１８】
2020129296.tif 000026
【図１９】
2020129296.tif 000027
【図２０】
2020129296.tif 000028
【図２１】
2020129296.tif 000029
【図２２】
2020129296.tif 000030
【図２３】
2020129296.tif 000031
【図２４】
2020129296.tif 000032
【図２５】
2020129296.tif 000033
【図２６】
2020129296.tif 000034
【図２７】
2020129296.tif 000035
【図２８】
2020129296.tif 000036
【図２９】
2020129296.tif 000037
【図３０】
2020129296.tif 000038
【図３１】
2020129296.tif 000039
【図３２】
2020129296.tif 000040
【図３３】
2020129296.tif 000041
【図３４】
2020129296.tif 000042
【図３５】
2020129296.tif 000043
【図３６】
2020129296.tif 000044
【図３７】
2020129296.tif 000045
【図３８】
2020129296.tif 000046
【図３９】
2020129296.tif 000047
【図４０Ａ】
2020129296.tif 000048
【図４０Ｂ】
2020129296.tif 000049
【図４１】
2020129296.tif 000050
【図４２Ａ】
2020129296.tif 000051
【図４２Ｂ】
2020129296.tif 000052
【図４３】
2020129296.tif 000053
【図４４】
2020129296.tif 000054