(57)【要約】【課題】  階層型ニューラルネットワークにおいて全ての階層で特徴画像を読み出すためのメモリアクセスパターンが同じでなくても、１サイクルで読み出すことを可能にする技術を提供すること。【解決手段】  第１方向に並ぶ着目画素ブロック列を所定個数の画素ブロックのグループを単位に分割した場合に、それぞれのグループについて、該グループに属する前記所定個数の画素ブロックを前記所定個数のメモリに格納した場合、着目画素ブロック列において所定個数におけるある順位のメモリに格納された画素ブロックの直下の画素ブロックを、該順位と所定個数とで定まる順位のメモリに格納する。【選択図】  図１
2020191012.tif 000002
【特許請求の範囲】
【請求項１】
階層型ニューラルネットワークの各階層における演算を行う複数の演算部を有する画像処理装置であって、
前記演算部が処理対象とする階層の特徴画像を分割したそれぞれの画素ブロックを所定個数のメモリのいずれかに格納する格納制御手段と、
前記特徴画像に対する演算に関する情報に基づいて前記メモリから画素ブロックを読み出すパターンであるメモリアクセスパターンを決定する決定手段と、
前記メモリから前記メモリアクセスパターンに従って画素ブロックを読み出す読み出し手段と
を備え、
前記格納制御手段は、
前記特徴画像において第１方向に並ぶ着目画素ブロック列を前記所定個数の画素ブロックのグループを単位に分割した場合に、それぞれのグループについて、該グループに属する前記所定個数の画素ブロックを前記所定個数のメモリに格納した場合、前記着目画素ブロック列において前記所定個数におけるある順位のメモリに格納された画素ブロックの直下の画素ブロックを、該順位と前記所定個数とで定まる順位のメモリに格納し、
前記読み出し手段は、前記メモリアクセスパターンに従って前記所定個数のメモリから１サイクルで画素ブロックを読み出す
ことを特徴とする画像処理装置。
【請求項２】
前記所定個数は、ある整数をＮとしてＮ２で表されることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記所定個数のメモリは、メモリ０〜メモリ（Ｎ２−１）からなり、
前記格納制御手段は、
前記特徴画像において第１方向に並ぶ着目画素ブロック列をＮ２個の画素ブロックのグループを単位に分割した場合に、それぞれのグループについて、該グループに属する画素ブロック０〜（Ｎ２−１）をメモリ０〜（Ｎ２−１）のそれぞれに格納した場合、前記着目画素ブロック列においてメモリｐ（ｐ＝０〜（Ｎ２−１））に格納された画素ブロックの直下の画素ブロックを、メモリｑ（ｑ＝ｍｏｄ（ｐ＋Ｎ，Ｎ２））に格納することを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記読み出し手段は、前記メモリアクセスパターンに従ってメモリ０〜（Ｎ２−１）から１サイクルで画素ブロックを読み出すことを特徴とする請求項２または３に記載の画像処理装置。
【請求項５】
前記決定手段は、前記階層型ニューラルネットワークにおける、プーリングの有無、プーリングウインドウサイズ、カーネルサイズ、の組み合わせに対応するメモリアクセスパターンを決定することを特徴とする請求項１に記載の画像処理装置。
【請求項６】
前記決定手段は、前記階層型ニューラルネットワークにおけるサンプリングの有無、サンプリングレートの組み合わせに対応するメモリアクセスパターンを決定することを特徴とする請求項１に記載の画像処理装置。
【請求項７】
前記階層は、前記階層型ニューラルネットワークにおけるサイドアウトプットの階層を含むことを特徴とする請求項６に記載の画像処理装置。
【請求項８】
前記Ｎの値は、前記階層型ニューラルネットワークの全階層の中で使われる最大のカーネルサイズ、最大のプーリングウインドウサイズ、サンプリングレート、ストライド間隔の何れかに応じて決定されることを特徴とする請求項２乃至７の何れか１項に記載の画像処理装置。
【請求項９】
前記Ｎの値は、前記演算部のスループットまたはリソースに応じて決定されることを特徴とする請求項２乃至７の何れか１項に記載の画像処理装置。
【請求項１０】
撮像により画像を取得する画像入力手段と、
請求項１乃至９の何れか１項に記載の画像処理装置による前記画像に対する演算結果を出力する出力手段と
を備えることを特徴とする撮像装置。
【請求項１１】
前記出力手段は、前記階層型ニューラルネットワークに対して画像を入力することで該階層型ニューラルネットワークから出力された結果に基づく、該画像からの物体の検出結果を出力することを特徴とする請求項１０に記載の撮像装置。
【請求項１２】
階層型ニューラルネットワークの各階層における演算を行う複数の演算部を有する画像処理装置が行う画像処理方法であって、
前記画像処理装置の格納制御手段が、前記演算部が処理対象とする階層の特徴画像を分割したそれぞれの画素ブロックを所定個数のメモリのいずれかに格納する格納制御工程と、
前記画像処理装置の決定手段が、前記特徴画像に対する演算に関する情報に基づいて前記メモリから画素ブロックを読み出すパターンであるメモリアクセスパターンを決定する決定工程と、
前記画像処理装置の読み出し手段が、前記メモリから前記メモリアクセスパターンに従って画素ブロックを読み出す読み出し工程と
を備え、
前記格納制御工程では、
前記特徴画像において第１方向に並ぶ着目画素ブロック列を前記所定個数の画素ブロックのグループを単位に分割した場合に、それぞれのグループについて、該グループに属する前記所定個数の画素ブロックを前記所定個数のメモリに格納した場合、前記着目画素ブロック列において前記所定個数におけるある順位のメモリに格納された画素ブロックの直下の画素ブロックを、該順位と前記所定個数とで定まる順位のメモリに格納し、
前記読み出し工程では、前記メモリアクセスパターンに従って前記所定個数のメモリから１サイクルで画素ブロックを読み出す
ことを特徴とする画像処理方法。
【請求項１３】
コンピュータを、請求項１乃至９の何れか１項に記載の画像処理装置の各手段として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、階層型ニューラルネットワークを用いた画像処理技術に関するものである。
【背景技術】
【０００２】
近年、深層学習の進歩により、画像認識の精度が上がった。畳込みニューラルネットワーク（Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋｓ：ＣＮＮ）は深層学習に用いられる手法として知られている。
【０００３】
ＣＮＮでは複数の階層が階層的に接続されている。各階層には複数の特徴画像が含まれている。ＣＮＮでは、事前の学習で決定されたフィルタ係数と特徴画像の画素（特徴データ）とを用いたフィルタ処理演算や、プーリング、活性化等の処理を特徴画像毎、階層毎に繰り返していく。フィルタ処理は積和演算からなる。ＣＮＮでは上記の階層構造やフィルタ係数等の組み合わせによって多様な認識処理を実現している。
【０００４】
特許文献１には、ＣＮＮのハードウェアアーキテクチャが開示されている。このアーキテクチャは特徴データを保持するメモリ、積和演算パラメータを保持するメモリ、特徴画像を並列に処理可能な複数の積和演算器、を有している。メモリから読み出した積和演算パラメータに応じて複数の積和演算器の設定を適応的に変更することで、別のメモリに保持された特徴データに対して多様な演算を施すことを可能としている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許第９７１０２６５号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、積和演算パラメータに応じて積和演算器が必要とする特徴データの処理対象領域は異なる。例えば、積和演算器が３×３の畳込み演算を行う場合は３行分の特徴データ、１×１の畳込み演算を行う場合は１行分の特徴データをメモリから取得する必要がある。仮に特徴画像を８画素×１画素を単位に分割し、この単位でメモリの１アドレスに格納する場合を考える。一回のメモリアクセスに１クロックサイクルを要するとすると、１×１の畳込み演算に必要な画素は１クロックサイクルで取得可能である。一方で、３×３の畳込み演算に必要な画素の取得には３クロックサイクルを要するので、この間、積和演算器は処理対象画素の演算を完了させることができない。これはプーリング（Ｐｏｏｌｉｎｇ）処理部がプーリングを行う場合も同様で、必要な行数の特徴データを取得するまで、その処理を完了させることができない。
【０００７】
特徴画像を画素ブロックを単位に分割し、それらを複数のシングルポート型メモリに分散して保持する場合でも、演算器が処理対象とするデータが同一メモリの異なるアドレスに配置されている場合は、処理対象データを一度に取得することはできない。ＣＮＮでは階層毎に演算器の処理対象領域が異なるので、同一メモリに対する複数回のアクセスが発生してしまう可能性がある。デュアルポート型メモリのように、同時アクセス可能なポート数を増やしたメモリを採用してもこの問題を完全に解決することはできない。
【０００８】
このように、特許文献１に記載の技術は多様な演算に対応できるが、積和演算パラメータによっては、メモリアクセスに要するクロックサイクル数が律速要因となり、積和演算器が処理対象画素の演算を完了させるまでのクロックサイクル数が増加してしまう。結果として演算器が１クロックサイクルあたりに処理する画素数が低下するため、演算器の利用効率が低下するという問題がある。
【０００９】
本発明では、階層型ニューラルネットワークにおいて全ての階層で特徴画像を読み出すためのメモリアクセスパターンが同じでなくても、１サイクルで読み出すことを可能にする技術を提供する。
【課題を解決するための手段】
【００１０】
本発明の一様態は、階層型ニューラルネットワークの各階層における演算を行う複数の演算部を有する画像処理装置であって、前記演算部が処理対象とする階層の特徴画像を分割したそれぞれの画素ブロックを所定個数のメモリのいずれかに格納する格納制御手段と、前記特徴画像に対する演算に関する情報に基づいて前記メモリから画素ブロックを読み出すパターンであるメモリアクセスパターンを決定する決定手段と、前記メモリから前記メモリアクセスパターンに従って画素ブロックを読み出す読み出し手段とを備え、前記格納制御手段は、前記特徴画像において第１方向に並ぶ着目画素ブロック列を前記所定個数の画素ブロックのグループを単位に分割した場合に、それぞれのグループについて、該グループに属する前記所定個数の画素ブロックを前記所定個数のメモリに格納した場合、前記着目画素ブロック列において前記所定個数におけるある順位のメモリに格納された画素ブロックの直下の画素ブロックを、該順位と前記所定個数とで定まる順位のメモリに格納し、前記読み出し手段は、前記メモリアクセスパターンに従って前記所定個数のメモリから１サイクルで画素ブロックを読み出すことを特徴とする。
【発明の効果】
【００１１】
本発明の構成によれば、階層型ニューラルネットワークにおいて全ての階層で特徴画像を読み出すためのメモリアクセスパターンが同じでなくても、１サイクルで読み出すことができる。
【図面の簡単な説明】
【００１２】
【図１】認識処理部１６０１の構成例を示すブロック図。
【図２】画像処理システムの動作を示すフローチャート。
【図３】ステップＳ２０６における処理の詳細を示すフローチャート。
【図４】画素ブロックとメモリとの関係を示す図。
【図５】アクセスパターンの決定方法の一例を示す図。
【図６】１×１カーネル演算を実施する場合のタイミングチャートの一例を示す図。
【図７】２×２カーネル演算を実施する場合のタイミングチャートの一例を示す図。
【図８】２×２プーリング演算後に１×１カーネル演算を実施する場合のタイミングチャートの一例を示す図。
【図９】演算部１０１が入力されたデータをマルチクロックサイクルで処理する場合のタイミングチャートの一例を示す図。
【図１０】認識処理部１６０１の構成例を示すブロック図。
【図１１】ステップＳ２０６における処理の詳細を示すフローチャート。
【図１２】サンプリング処理無しの場合における処理のタイミングチャートの一例を示す図。
【図１３】サンプリング処理有の場合における処理のタイミングチャートの一例を示す図。
【図１４】Ｎ＝３、４の場合のメモリ割り当て例を示す図。
【図１５】メモリ割り当て例を示す図。
【図１６】画像処理システムの構成例を示すブロック図。
【図１７】ＣＮＮの構成例を示す図。
【発明を実施するための形態】
【００１３】
以下、添付図面を参照して実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る発明を限定するものでない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
【００１４】
［第１の実施形態］
先ず、本実施形態に係る画像処理システムの構成例について、図１６のブロック図を用いて説明する。本実施形態に係る画像処理システムは、入力された画像から特定の物体を検出する機能を有するものであり、例えば、撮像した画像から特定の物体を検出する撮像装置である。
【００１５】
画像入力部１６００は、光学系、ＣＣＤ又はＣＭＯＳセンサ等の光電変換デバイス及びセンサを制御するドライバ回路／ＡＤコンバータ／各種画像補正を司る信号処理回路／フレームバッファ等を有し、外界を撮像した撮像画像を生成して出力する。ＣＣＤ、ＣＭＯＳはそれぞれ、Ｃｈａｒｇｅ−Ｃｏｕｐｌｅｄ  Ｄｅｖｉｃｅｓ、Ｃｏｍｐｌｉｍｅｎｔａｒｙ  Ｍｅｔａｌ  Ｏｘｉｄｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ、の略語である。
【００１６】
認識処理部１６０１は、画像処理装置として機能し、画像入力部１６００によって撮像された撮像画像を入力画像とし、該入力画像から特定の物体を検出する処理を行う。認識処理部１６０１の詳細については図１を用いて後述する。
【００１７】
ＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）１６０２は、画像バス１６０３上の各処理部と、ＣＰＵバス１６０４上の各処理部と、の間のデータ転送を司るデータ転送部として機能する。画像バス１６０３には、画像入力部１６００、認識処理部１６０１、前処理部１６０６、ＤＭＡＣ１６０２が接続されており、ＣＰＵバス１６０４には、ＣＰＵ１６０７、ＲＯＭ１６０８、ＲＡＭ１６０９が接続されている。
【００１８】
ブリッジ１６０５は、画像バス１６０３とＣＰＵバス１６０４との間のブリッジ機能を提供する。画像バス１６０３上の各処理部と、ＣＰＵバス１６０４上の各処理部と、の間のデータ転送は、このブリッジ１６０５を介して行われる。
【００１９】
前処理部１６０６は、画像入力部１６００が撮像した撮像画像に対し、認識処理部１６０１による処理を効果的に行うための各種の前処理を行う。具体的には、前処理部１６０６は、撮像画像に対し、色変換処理／コントラスト補正処理等の画像変換処理を行う。このような画像変換処理は、例えば、画像処理用のハードウェアを用いて実施する。
【００２０】
ＣＰＵ１６０７は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１６０８やＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１６０９に格納されているコンピュータプログラムやデータを用いて各種の処理を実行する。これによりＣＰＵ１６０７は、画像処理システム全体の動作制御を行うと共に、画像処理システムが行うものとして後述する各処理を実行若しくは制御する。
【００２１】
ＲＯＭ１６０８には、画像処理システムが行うものとして後述する各処理をＣＰＵ１６０７に実行若しくは制御させるためのコンピュータプログラムやデータ、認識処理部１６０１を動作せるためのデータセット、等が格納されている。このデータセットには、認識処理部１６０１が入力画像から特定の物体を検出するために用いるＣＮＮを規定するパラメータが含まれている。
【００２２】
本実施形態に係るＣＮＮは、例えば、図１７（ａ）や図１７（ｂ）に示す如く、階層構造を有し、各階層で特徴画像に対する各種の演算処理を行うものである。図１７（ａ）の構成例（ＣＮＮ階層例１）では、入力画像１７０１（入力階層）が階層１７０２に入力され、階層１７０２〜１７０６のそれぞれの階層で該入力画像に基づく特徴画像に対して各種の演算処理を行っている。図１７（ｂ）の構成例（ＣＮＮ階層例２）では、入力画像１７０１が階層１７０２に入力され、それぞれの階層で該入力画像に基づく特徴画像に対して各種の演算処理を行っている。図１７において階層間をつなぐ直線は、これらの積和演算、活性化処理を意味する。また階層によってはプーリングの処理を含む場合もある。
【００２３】
ＲＯＭ１６０８に格納されているデータセットは、ＤＭＡＣ１６０２により認識処理部１６０１に転送され、認識処理部１６０１は、この転送されたデータセットを用いてＣＮＮを設定する。
【００２４】
ＲＡＭ１６０９は、画像入力部１６００によって撮像された撮像画像、ＲＯＭ１６０８からロードされたコンピュータプログラムやデータ、認識処理部１６０１から転送されたデータ、等を格納するためのエリアを有する。さらにＲＡＭ１６０９は、ＣＰＵ１６０７が各種の処理を実行する際に用いるワークエリアを有する。このようにＲＡＭ１６０９は、各種のエリアを適宜提供することができる。
【００２５】
なお、図１６に示した構成は、本実施形態に係る画像処理システムに適用可能な構成の一例に過ぎない。次に、上記の認識処理部１６０１の構成例について、図１のブロック図を用いて説明する。
【００２６】
演算部１０１は、複数の論理演算器を有する。保持部１０２はＮ２個（所定個数）のメモリ（メモリ０〜メモリ（Ｎ２−１））を有する（Ｎは整数）。Ｎ２個のメモリ（メモリ０〜メモリ（Ｎ２−１））のそれぞれには特徴画像の画素（特徴データ）が格納される（格納制御）。管理部１０３は、保持部１０２へのアクセス（メモリアクセス）を管理する。保持部１０４には、ＤＭＡＣ１６０２によりＲＯＭ１６０８から転送された制御パラメータが格納される。制御パラメータについては後述する。制御部１０５は、認識処理部１６０１全体の動作制御を行うものであり、例えば、保持部１０４に格納されている制御パラメータを演算部１０１や管理部１０３に供給してこれらの動作を制御する。
【００２７】
次に、本実施系に係る画像処理システムの動作について、図２のフローチャートに従って説明する。ステップＳ２０２では、画像入力部１６００は撮像を行うことで撮像画像を生成し、ＣＰＵ１６０７はＤＭＡＣ１６０２を制御して、該画像入力部１６００によって生成された撮像画像を入力画像としてＲＡＭ１６０９に格納する。
【００２８】
ステップＳ２０３では、前処理部１６０６は、ステップＳ２０２でＲＡＭ１６０９に格納された入力画像に対して上記の前処理を行う。そしてＣＰＵ１６０７による制御の元、前処理部１６０６によって前処理が行われた入力画像はＤＭＡＣ１６０２によって認識処理部１６０１に対して出力される。認識処理部１６０１の制御部１０５は、前処理部１６０６から出力された入力画像を複数の画素ブロックに分割し、それぞれの画素ブロックをメモリ０〜（Ｎ２−１）のいずれかに格納する。メモリ０〜（Ｎ２−１）への画素ブロックの格納については後述する。
【００２９】
ステップＳ２０４ではＤＭＡＣ１６０２は、ＲＯＭ１６０８に格納されているデータセットに含まれている「ＣＮＮにおける複数の階層のうち、これから演算処理を行う階層（処理対象階層）における積和演算用のパラメータ」を認識処理部１６０１に転送する。認識処理部１６０１の制御部１０５は、ＤＭＡＣ１６０２によりＲＯＭ１６０８から転送された積和演算用のパラメータを用いて、ＣＮＮにおける処理対象階層を設定する。
【００３０】
ステップＳ２０５ではＤＭＡＣ１６０２は、ＲＯＭ１６０８に格納されている「処理対象階層における処理に関する情報」である制御パラメータを認識処理部１６０１に転送する。認識処理部１６０１の制御部１０５は、ＤＭＡＣ１６０２によってＲＯＭ１６０８から転送された制御パラメータを保持部１０４に格納する。また認識処理部１６０１の制御部１０５は、メモリ０〜（Ｎ２−１）に格納されている画素ブロックのうち、処理対象階層にて処理対象となる画素ブロックのアドレスを管理部１０３に通知する。
【００３１】
ステップＳ２０６では、演算部１０１は、ＣＮＮの処理対象階層における演算処理を実行し、該処理対象階層における演算が完了すると、その処理結果（特定の物体の検出結果や中間階層の特徴データ）を出力する。この処理結果はＤＭＡＣ１６０２によってＲＡＭ１６０９に転送される。ステップＳ２０６における処理の詳細については、図３を用いて後述する。
【００３２】
ステップＳ２０７では、演算部１０１は、ＣＮＮにおける全ての階層についてステップＳ２０４〜Ｓ２０６の処理を行ったか否かを判断する。この判断の結果、ＣＮＮにおける全ての階層についてステップＳ２０４〜Ｓ２０６の処理を行った場合には、図２のフローチャートに従った処理は完了する。一方、ＣＮＮにおける全ての階層のうちステップＳ２０４〜Ｓ２０６の処理を行っていない階層が残っている場合には、この階層についてステップＳ２０４〜Ｓ２０６の処理を行うべく、処理はステップＳ２０４に戻る。
【００３３】
組み込み機器向けの小規模なＣＮＮでは、全階層を一度に処理することが可能であるため、処理はステップＳ２０７を介して終了する。一方、大規模なＣＮＮの処理では、一度にすべての階層を処理することができないため、ＣＮＮを時分割で処理することとなる。このような場合、処理はステップＳ２０７を介してステップＳ２０４に戻って残りの階層について演算処理を行う。
【００３４】
次に、上記のステップＳ２０６における処理の詳細について、図３のフローチャートに従って説明する。ステップＳ３０２では、制御部１０５は、保持部１０４に格納されている制御パラメータにおいて、これから行う特徴量演算に対応するパラメータを演算部１０１および管理部１０３に供給してこれらの動作を制御する。そして制御部１０５は、演算部１０１および管理部１０３に対して処理開始を指示する。
【００３５】
ステップＳ３０３では、管理部１０３は、処理開始を指示されると、制御パラメータが示す「処理対象階層における演算処理の内容」に基づいて、メモリ０〜（Ｎ２−１）へのアクセスパターン（メモリアクセスパターン）を決定する。制御パラメータに基づくメモリアクセスパターンの決定方法については後述する。
【００３６】
ステップＳ３０４では、管理部１０３は、演算部１０１からメモリアクセス指示を受けると、ステップＳ３０３で決定したメモリアクセスパターンに従ってメモリ０〜（Ｎ２−１）における「制御部１０５から通知されたアドレス」にアクセスする。このアクセスにより、演算部１０１は、アクセス先のメモリに格納されている画素ブロック（特徴データ）を読み出すことができるため、この読み出した画素ブロックに対して処理対象階層の演算を行うことで、判定対象階層に対する特徴量演算を実施する。そして演算部１０１は、特徴量演算を行った結果（画素ブロック）をメモリ０〜（Ｎ２−１）のいずれかに格納する。メモリ０〜（Ｎ２−１）への画素ブロックの格納については後述する。また、ステップＳ３０４にて行う特徴量演算の詳細については後述する。
【００３７】
特徴量演算が完了すると、ステップＳ３０５では、演算部１０１は、処理対象階層の全特徴量演算が完了したかを判定する。この判断の結果、処理対象階層の全特徴量演算が完了した場合には、処理は上記のステップＳ２０７に進み、完了していない特徴量演算が残っている場合には、処理はステップＳ３０２に戻る。
【００３８】
次に、特徴量演算におけるメモリアクセスの詳細について説明する。以下では、Ｎ＝２の例について説明する。つまり、以下では、保持部１０２は４個のメモリ（メモリ０〜３）を有しているものとして説明する。しかし、Ｎの値は２に限らない。
【００３９】
保持部１０２は、対象画像（入力画像、特徴画像）を画素ブロックごとに保持し、管理部１０３は、画素ブロック単位で保持部１０２への読み書きを制御する。演算部１０１は、画素ブロックに対して、複数の論理演算器を並列動作させることで、入力された画素に対する演算を並列に実行する。演算部１０１が行う処理内容は、制御パラメータによって設定される。演算部１０１は、制御パラメータに基づき、活性化処理、カーネル演算、プーリング演算等を実行する。プーリング後にカーネル演算を実施、あるいはプーリング前にカーネル演算を実施といった各処理・演算の順序も設定に応じて可変である。
【００４０】
対象画像を画素ブロックを単位に分割した一例を図４（ａ）に示す。以下では、対象画像として特徴画像を用いるが、対象画像が入力画像であっても、以下の説明は同様である。
【００４１】
図４（ａ）では、画素ブロックのサイズを横８画素×縦１画素としており、特徴画像を横８画素×縦１画素のサイズを有する画素ブロックを単位に分割している。図４（ａ）において横軸をｘ軸、縦軸をｙ軸としている。左上隅の位置（０，０）における画素ブロックをｂｌｋ（０，０）と表しており、位置（ｘ、ｙ）における画素ブロックをｂｌｋ（ｘ、ｙ）と表している。
【００４２】
図４（ｂ）は、図４（ａ）のそれぞれの画素ブロックをメモリ０〜３の何れに格納するのかを表した図である。１行目の画素ブロックについては左から順に、メモリ０（Ｍ０）、メモリ１（Ｍ１）、メモリ２（Ｍ２）、メモリ３（Ｍ３）、メモリ０（Ｍ０）、メモリ１（Ｍ１）、…というように、Ｍ０〜Ｍ３のセットをこの順で繰り返し（周期的に）割り当てている。２行目の画素ブロックについては左から順に、メモリ２（Ｍ２）、メモリ３（Ｍ３）、メモリ０（Ｍ０）、メモリ１（Ｍ１）、メモリ２（Ｍ２）、…というように、Ｍ２，Ｍ３，Ｍ０，Ｍ１のセットをこの順で繰り返し（周期的に）割り当てている。３行目の画素ブロックについては左から順に、メモリ０（Ｍ０）、メモリ１（Ｍ１）、メモリ２（Ｍ２）、メモリ３（Ｍ３）、メモリ０（Ｍ０）、メモリ１（Ｍ１）、…というように、Ｍ０〜Ｍ３のセットをこの順で繰り返し（周期的に）割り当てている。
【００４３】
つまり、ｂｌｋ（ｘ、ｙ）に割り当てたメモリを、順位ｐ（ｐ＝０，１，２，３）におけるメモリｐとすると、ｂｌｋ（ｘ、ｙ＋１）に割り当てるメモリは、順位ｑ（ｑ＝ｍｏｄ（ｐ＋２，４））におけるメモリｑとなる。ここで、ｍｏｄ（ａ、ｂ）はａをｂで割ったときの余りを返す関数である。一般的には、画素ブロックに割り当てたメモリをメモリｐとすると、該画素ブロックの直下の画素ブロックに割り当てたメモリはメモリｑ（ｑ＝ｍｏｄ（ｐ＋Ｎ，Ｎ２））である。
【００４４】
よって、特徴画像において第１方向に並ぶ着目画素ブロック列を４個の画素ブロックのグループを単位に分割した場合に、それぞれのグループについて、該グループに属する画素ブロック０〜３をメモリ０〜３のそれぞれに割り当てたとする。そして第１方向と直交する第２方向に着目画素ブロックと隣接する隣接画素ブロック列を４個の画素ブロックのグループを単位に分割した場合、それぞれのグループについて該グループに属する画素ブロック０〜３をメモリ２、３、０、１のそれぞれに割り当てる。第１方向は水平方向、垂直方向の何れでも良い。
【００４５】
メモリ０〜３のそれぞれに格納された画素ブロックとそのアドレスを図４（ｃ）に示す。Ｎの値はＣＮＮの全階層の中で使われる最大のカーネルサイズ、最大のプーリングウインドウサイズ、サンプリングレート、ストライド間隔等に応じて決定される。処理対象領域が２画素×２画素の場合、垂直方向に２行を同時に読み出す必要があるため、Ｎ＝２となる。図４（ｂ）に示す割り当てでは、任意の４×１ブロック（３２画素×１画素）、２×２ブロック（１６画素×２画素）に対して同時アクセスが可能となり、１サイクルで必要な画素ブロックを読み出すことができる。
【００４６】
管理部１０３におけるアクセスパターンの決定方法の一例について図５を用いて説明する。図５のテーブルには、プーリングの有無、プーリングウインドウサイズ、カーネルサイズ、の組み合わせごとに、対応するアクセスパターンが登録されている。このテーブルは予め作成されてＲＯＭ１６０８などに格納されている。
【００４７】
プーリングの有無、プーリングウインドウサイズ、カーネルサイズ、は制御パラメータに含まれている情報であり、管理部１０３は、制御パラメータを参照することで、これらの情報の組み合わせに対応するアクセスパターンを図５のテーブルから取得する。
【００４８】
図５のテーブルによれば、プーリング処理が「無し」の場合、カーネルサイズに応じてアクセスパターンが決まる。プーリング処理が「無し」の場合で且つカーネルサイズが「１×１」の場合は、対応するアクセスパターンは「４×１ブロック」となる。また、プーリング処理が「無し」の場合で且つカーネルサイズが「２×２」の場合は、対応するアクセスパターンは「２×２ブロック」となる。一方、プーリング処理が「有り」の場合は、カーネルサイズが「２×２」であれば、対応するアクセスパターンは「４×１ブロック」となる。
【００４９】
管理部１０３は、アクセスパターンが決まると（図５のテーブルから対応するアクセスパターンを選択すると）、メモリ０〜３において処理対象階層の対象とする画素ブロックのアドレスを特定する。そして管理部１０３は、演算部１０１からの要求に応じて、該特定したアドレスにアクセスして画素ブロックを読み出す。
【００５０】
図５では、プーリングが有効な場合は、プーリング後にカーネル演算を実施する場合の選択方法を示しているが、これはあくまで一例であり、これに限定されるものではない。つまり、制御パラメータと１つの画素ブロックのサイズから、一度にメモリから読み出すべき特徴画像の行数または列数を判定し、アクセスパターンが選択できれば他の選択論理・方法でもよい。また、特徴画像の解像度を減らすプーリングだけでなく、解像度を上げるアンプーリングの設定に基づきアクセスパターンを選択してもよい。
【００５１】
図６は、１×１カーネル演算を実施する場合のタイミングチャートの一例である。管理部１０３は上記の通り、制御パラメータに含まれているプーリングの有無、プーリングウインドウサイズ、カーネルサイズ、の組み合わせに基づき、アクセスパターンを決定する。図６では１×１カーネル演算に応じた４×１ブロック（横３２画素×縦１画素）をアクセス単位と判定し、ｔ１では、Ｍ０〜Ｍ３に保持されたｂｌｋ（０，０）〜ｂｌｋ（３，０）の画素ブロック列６０１を同時に（１サイクルで）読み出す。図４（ａ）、（ｂ）に示したように、ｂｌｋ（０，０）〜ｂｌｋ（３，０）はそれぞれＭ０〜Ｍ３に保持されているため、同時アクセスが可能である。図６では各ブロックの処理順序を破線矢印で示している。
【００５２】
ｔ２では、演算部１０１において画素ブロック列６０１が処理されると共に、管理部１０３が画素ブロック列６０２を読み出す。ｔ３では、演算部１０１が画素ブロック列６０１の処理結果（横３２画素×縦１画素）を管理部１０３に返し、画素ブロック列６０２を処理する。管理部１０３は画素ブロック列６０３を読み出し、演算部１０１へと入力している。処理対象である画素ブロック列は各々別々のメモリに保持されているため、一度に読み出す・書き戻すことが可能となる。なお、管理部１０３は、演算部１０１から画素ブロック列６０１の処理結果（横３２画素×縦１画素）を受けると、画素ブロック列６０１におけるそれぞれの画素ブロック列の処理結果を、該画素ブロックが格納されていたメモリのアドレスに書き戻す。
【００５３】
図７は、２×２カーネル演算を実施する場合のタイミングチャートの一例である。１つの画素ブロックのサイズは図６と同じである（横８画素×縦１画素）。管理部１０３は上記の通り、制御パラメータに含まれているプーリングの有無、プーリングウインドウサイズ、カーネルサイズ、の組み合わせに基づき、２×２カーネル演算に応じた２×２ブロック（横１６画素×縦２画素）をアクセス単位と判定する。そして、ｔ１では、Ｍ０〜Ｍ３に保持されたｂｌｋ（０，０）、ｂｌｋ（１，０）、ｂｌｋ（０，１）、ｂｌｋ（１，１）の画素ブロック列７０１を同時に（１サイクルで）読み出す。図４（ａ）、（ｂ）に示したように、ｂｌｋ（０，０）、ｂｌｋ（１，０）、ｂｌｋ（０，１）、ｂｌｋ（１，１）はそれぞれＭ０〜Ｍ３に保持されているため、同時アクセスが可能である。図７でも各ブロックの処理順序を破線矢印で示している。
【００５４】
ｔ２では、管理部１０３が画素ブロック列７０２を読み出す。２×２ブロック以上のサイズのカーネル演算を行う場合、画素ブロック列７０１の右端画素の演算のためには、画素ブロック列７０２が必要となる。このため、１×１カーネル演算の場合（図６）とは異なり、ｔ２の時点では、画素ブロック列７０１のカーネル演算を実行することはできない。
【００５５】
次にｔ３では、演算部１０１において画素ブロック列７０１が処理されると共に、管理部１０３が画素ブロック列７０３を読み出す。ｔ４では、演算部１０１が画素ブロック列７０１の処理結果（横１６画素×縦２画素）を管理部１０３に返し、画素ブロック列７０２を処理する。なお、管理部１０３は、演算部１０１から画素ブロック列７０１の処理結果（横１６画素×縦２画素）を受けると、画素ブロック列７０１におけるそれぞれの画素ブロック列の処理結果を、後述するように、割り当てられたメモリのアドレスに書き込む。
【００５６】
図８は、２×２プーリング演算後に１×１カーネル演算を実施する場合のタイミングチャートの一例である。各時刻ｔ１〜ｔ４、ｔＮ〜ｔＮ＋２において、管理部１０３によるメモリアクセスパターンは図７と同様である。管理部１０３は、制御パラメータに含まれているプーリングの有無、プーリングウインドウサイズ、カーネルサイズ、の組み合わせから、２×２ブロックをアクセス単位と判定している。図７では画素ブロック列７０１の右端部処理のためには画素ブロック列７０２の入力が必要であったが、図８の条件下ではその必要はなく、画素ブロック列８０１が入力された時刻ｔ１の次の時刻ｔ２で該画素ブロック列８０１に対する演算は開始可能となる。
【００５７】
以上、図４から図８を用いて説明したように、管理部１０３は、特徴画像のメモリ割り当てを、取り得る最大カーネルサイズまたは最大プーリングウインドウサイズ、ブロックサイズに応じて実施する。これにより、処理対象のカーネルサイズやプーリングの有無、プーリングウインドウサイズが階層毎に動的に変更されても、管理部１０３は、演算部１０１が必要とする画素ブロック列を毎クロックサイクル供給可能である。このため、演算部１０１の待ち時間・停止期間が短縮され、利用効率が向上する。
【００５８】
また、図６から図８のタイミングチャートでは、管理部１０３は同一メモリに対する読出しと書き込みを同時に行っている。これは各メモリ（メモリ０〜（Ｎ２−１））がデュアルポート型で構成される場合であり、演算部１０１の処理性能（スループット）が高い場合に限定される。演算部１０１の処理性能や演算部リソースに制限がある場合は、演算部１０１へのデータ入力後、その演算結果を得るまでには数クロックサイクルの遅延が発生する。この場合はデュアルポート型でなく、シングルポート型メモリを適用することが可能である。
【００５９】
図９は、演算部１０１が入力されたデータを１クロックサイクルでなく、マルチクロックサイクルで処理する場合のタイミングチャートの一例である。時刻ｔ１で入力された画素ブロック列９０１は時刻ｔ２〜ｔ５で処理され、その演算結果は時刻ｔ６で出力される。管理部１０３は演算部１０１の処理性能に合わせて、データの読出しと書き込みを排他制御可能であり、この場合はシングルポート型のメモリで保持部１０２を構成可能である。演算部１０１の処理性能や演算部リソースに制約がある場合は、Ｎの値を最大カーネルサイズ、最大プーリングウインドウサイズ等ではなく、演算部１０１のスループットやリソースに応じて決定してもよい。
【００６０】
図６に示したように、１画素×１画素の演算を実施する場合は、演算部１０１の処理結果をそのまま入力データのアドレスに書き戻せばよい。例えば、図４のｂｌｋ（０，０）の演算結果はｂｌｋ（０，０）のアドレスに書き戻せばよい。演算部１０１が２画素×２画素以上の演算を実施する場合は、読出し時の画素サイズと、演算部１０１が返す画素サイズとが異なるため、そのまま書き戻すことができない。この場合は、保持部１０２において、読出し用、書込み用にそれぞれ異なる複数のメモリ（例えば、読出し用にＭ０〜Ｍ３、書込み用にＭ４〜Ｍ７）を用意し、割り当てるようにしてもよい。あるいは各メモリに対して、少なくとも特徴画像２面分のアドレス空間を確保しておき、読出し用のアドレス領域と書込み用のアドレス領域とを分離するようにしておいてもよい。また、管理部１０３内部で書込みデータを保持し、読出し時の形状（画素サイズ）と同じ形状になるまで書込みデータを保持してから、読出し時のアドレスに書き戻すようにしてもよい。
【００６１】
図４に示す割り当ての場合、管理部１０３は４×１ブロック、２×２ブロック以外にも、任意の１×１ブロック、２×１ブロック、３×１ブロック、１×２ブロックについても並列にアクセス可能である。また、画像処理システム全体の消費電力を削減するための低消費電力モード時や、画像処理システム全体の処理性能に余裕がある場合の低速動作モード時のアクセスパターンとして、これらのパターンを選択肢として図５のテーブルに追加するようにしてもよい。
【００６２】
以上説明したように、本実施形態によれば、階層型ニューラルネットワークにおいて全ての階層で特徴画像を読み出すためのメモリアクセスパターンが同じでなくても、１サイクルで読み出すことができる。これにより、演算部１０１の利用効率を向上させることが可能である。
【００６３】
なお、本実施形態で示した縦８画素×横１画素の画素ブロックサイズは具体的な説明を行うために一例としてあげたものであり、本実施形態は、任意の画素ブロックサイズに適用可能である。
【００６４】
［第２の実施形態］
以下では第１の実施形態との差分について説明し、以下で特に触れない限りは第１の実施形態と同様であるものとする。本実施形態では、サイドアウトプット（Ｓｉｄｅ−Ｏｕｔｐｕｔ）型のＣＮＮを用いた画像処理システムについて説明する。
【００６５】
本実施形態に係る認識処理部１６０１の構成例について、図１０のブロック図を用いて説明する。図１０において図１に示した機能部と同じ機能部には同じ参照番号を付しており、該機能部に係る説明は省略する。
【００６６】
第一演算部１００７および第二演算部１００１のそれぞれは、複数の演算器を有する。サンプリング部１００２はサンプリング処理を行う。第一管理部１００６は第一保持部１００５へのメモリアクセスを管理する。第二管理部１００３は第二保持部１００４へのメモリアクセスを管理する。
【００６７】
図１７（ｂ）にサイドアウトプット型のＣＮＮの階層例を示す。図１７（ｂ）において、入力画像（入力階層）１７０１〜階層１７０６までの構成は第１の実施形態（図１７（ａ））と同じである。
【００６８】
サイドアウトプット型のニューラルネットワークでは、これらの階層の特徴画像からさらにサイドアウトプット階層の特徴画像を生成して処理を行う。図１７（ｂ）では、階層１７０３〜１７０６のそれぞれにおける特徴画像に対してサンプリング処理を行うことで、サイドアウトプット階層用の入力データ１７０７〜１７１０を生成する。通常の階層（階層１７０２〜１７０６）の処理と同様に、サイドアウトプット階層の特徴画像１７１１〜１７１３に対しても、積和演算処理を繰り返し行う。本実施形態では、図４に示すメモリ構成をサイドアウトプット階層の特徴画像を保持する第二保持部１００４にも適用する。なお、第一保持部１００５、第一管理部１００６、第一演算部１００７はそれぞれ、第１の実施形態における保持部１０２、管理部１０３、演算部１０１に対応する。つまり、第一保持部１００５、第一管理部１００６、第一演算部１００７のそれぞれの機能や動作については、第１の実施形態で説明したように、階層１７０２〜１７０６に対して第１の実施形態で説明した処理を行う。また、第二保持部１００４の構成は第一保持部１００５の構成と同様であるものとする。
【００６９】
本実施形態に係る認識処理部１６０１の動作（上記のステップＳ２０６における処理の詳細）について、図１１のフローチャートに従って説明する。図１１において、図３と同じ処理ステップには同じステップ番号を付しており、該処理ステップに係る説明は省略する。
【００７０】
ステップＳ１１０３では第二管理部１００３は、処理開始を指示されると、制御パラメータが示す「サンプリング部１００２でのサンプリングの有無、サンプリングレート」の組み合わせに対応する、第二保持部１００４へのメモリアクセスパターンを決定する。制御パラメータに基づくメモリアクセスパターンの決定方法については、例えば、制御パラメータが示す「サンプリング部１００２でのサンプリングの有無、サンプリングレート」の組み合わせに対応するメモリアクセスパターンを特定する。
【００７１】
ステップＳ１１０４では特徴量演算が開始されると、第二管理部１００３は、ステップＳ１１０３で選択されたメモリアクセスパターンに従って、第二保持部１００４のサイドアウトプット階層の特徴データ（例えば、特徴画像１７１１）へのメモリアクセスを行う。これと並行して第一保持部１００５、第一管理部１００６、第一演算部１００７が通常の階層に対する処理を第１の実施形態と同様に開始する。第１の実施形態と異なる挙動として、第一演算部１００７はサンプリング部１００２に対しても特徴データを出力する。
【００７２】
サンプリング部１００２は制御部１０５に設定されたパラメータに従って特徴データ（例えば、階層１７０８）に対してサンプリング処理を行い、サンプリング処理を行った特徴データを第二演算部１００１に出力する。第二演算部１００１は、第二管理部１００３が読み出したサイドアウトプット階層の特徴データと、第一演算部１００７を介して読み出され、サンプリング部１００２でサンプリングされた通常の階層の特徴データと、を用いて積和演算を実施する。通常の階層（階層１７０２〜１７０６）に対する積和演算処理については第１の実施形態と同様であるため、これに係る説明は省略する。
【００７３】
図１２は、サンプリング処理無しの場合における処理のタイミングチャートの一例である。時刻ｔ１において、サンプリング部１００２に１６画素×２画素の画素ブロックが第一演算部１００７から入力される。
【００７４】
時刻ｔ２において、入力された１６画素×２画素の画素ブロックがそのままの形状で（サンプリングされずに）サンプリング部１００２から出力されると共に、次の１６画素×２画素がサンプリング部１００２に入力される。また時刻ｔ２において第二管理部１００３が読み出した、サイドアウトプット階層の特徴画像の画素ブロック列１２０１も第二演算部１００１へと出力される。サンプリング処理を行わない場合、第二管理部１００３はサンプリング部１００２の出力ブロックサイズと同等の画素ブロックｂｌｋ（ｘ、ｙ）、ｂｌｋ（ｘ＋１、ｙ）、ｂｌｋ（ｘ、ｙ＋１）、ｂｌｋ（ｘ＋１、ｙ＋１）をアクセスパターンとして判定する。
【００７５】
時刻ｔ３において、第二演算部１００１は入力された二つの特徴データを用いて、積和演算を実施する。サンプリング部１００２と第二管理部１００３は次の処理対象の特徴データを第二演算部１００１へと出力する。
【００７６】
時刻ｔ４において、第二演算部１００１は、画素ブロック列１２０１の演算結果を第二管理部１００３へと出力すると共に、画素ブロック１２０２列に対する積和処理を実行する。
【００７７】
図１３は、サンプリング処理有の場合における処理のタイミングチャートの一例である。サンプリング部１００２は時刻ｔ１〜ｔ４にかけて４つの画素ブロック（１６画素×２画素）を取得し、３２画素×１画素の画素ブロックにダウンサンプリングして、時刻ｔ５で第二演算部１００１へと出力する。時刻ｔ５において第二管理部１００３が読み出した、サイドアウトプット階層の特徴画像の画素ブロック群１３０１も第二演算部１００１へと出力される。サンプリング処理を行う場合、第二管理部１００３はサンプリング部１００２の出力ブロックサイズと同等の画素ブロックｂｌｋ（ｘ、ｙ）、ｂｌｋ（ｘ＋１、ｙ）、ｂｌｋ（ｘ＋２、ｙ）、ｂｌｋ（ｘ＋３、ｙ）をアクセスパターンとして判定する。時刻ｔ６において、第二演算部１００１の演算結果が第二管理部１００３へと出力される。
【００７８】
このように、本実施形態によれば、サイドアウトプット階層の特徴画像に対しても第１の実施形態に係るメモリ構成を適用することができる。サンプリングの有無、サンプリングレート等に応じて階層毎に可変となる複数のアクセスパターンに対して、第二演算部１００１が必要とする特徴データ（ブロック群）を一度に供給でき、第二演算部１００１の利用効率を向上させることが可能である。なお、第２の実施形態では、ダウンサンプリングを例に説明したが、アップサンプリングの場合も同様に適用可能である。
【００７９】
［第３の実施形態］
第１の実施形態および第２の実施形態で示した複数の処理部を一つに統合したり、１つの処理部を複数に分割してもよい。さらに１つの画素ブロックを複数のメモリに割り当ててもよい。
【００８０】
また第１の実施形態および第２の実施形態では、８画素×１画素の画素ブロック単位で一つのメモリに保持していた。しかし、例えばこの画素ブロックを２つの画素ブロック（４画素×１画素）に分割し、例えばＭ０をＭ０＿ＡとＭ０＿Ｂのように分割して、２つの画素ブロック（４画素×１画素）のそれぞれをＭ０＿Ａ、Ｍ０＿Ｂに格納するようにしても良い。
【００８１】
また、第１の実施形態および第２の実施形態では、Ｎ＝２とした例について説明したが、Ｎ＝３以上の場合にも同様に適用可能である。Ｎ＝３、４の場合のメモリ割り当て例をそれぞれ図１４（ａ）、（ｂ）に示す。任意の位置のＮ２×１の画素ブロック１４０１、１４０３とＮ×Ｎ以下の画素ブロック群１４０２、１４０４を同時に読出し可能である。
【００８２】
また、第１の実施形態でも説明したように、割り当てるメモリを垂直方向にＮだけずらす構成にも適用可能である。図１５はＮ＝４の場合で、ｘが増加する毎に垂直方向にＮだけずらす構成である。任意の位置の１×Ｎ２以下の画素ブロック１５０１とＮ×Ｎ以下の画素ブロック１５０２を同時に読出し可能である。管理部１０３や第二管理部１００３は、この同時アクセス可能な画素ブロックの範囲で任意の領域のアクセスパターンを判定することとなる。
【００８３】
なお、ニューラルネットワークを用いた認識処理では、予め学習によって決定されたパラメータが各階層に適用される。Ｎの値及び画素ブロックサイズは、処理対象のネットワークのパラメータから求まる同時にアクセスする必要がある特徴画像の行数、列数に応じて決定すればよい。その場合、固定された情報ではなく、ネットワーク構成や処理の種別などに応じて適宜変化する情報はＲＯＭ１６０８ではなく、読み書きが可能なＲＡＭ１６０９や不揮発性メモリなどに格納することになる。
【００８４】
また、学習時にＮの値や画素ブロックサイズを、カーネルサイズや、プーリングウインドウサイズ、サンプリングレートに対する制約として与えておくことで、特徴画像を保持するメモリへのアクセスを高速化することが可能である。
【００８５】
また、サンプリングやプーリングだけでなく、特徴画像の解像度（画像サイズ）を上げる逆畳込み処理（Ｄｅｃｏｎｖｏｌｕｔｉｏｎ）やアンプーリング（Ｕｎｐｏｏｌｉｎｇ）のように、階層毎に処理対象行数が可変となる処理を含む場合にも適用可能である。制御パラメータとして、これらの情報が含まれていればよい。
【００８６】
また、上記の各実施形態では、ニューラルネットワークを用いた認識処理について説明した。しかし、これに限定されるものではなく、任意の画像処理を対象としても構わない。
【００８７】
また、認識処理部１６０１を構成する各機能部はハードウェアで実装しても良い。しかし、一部の機能部、例えば、演算部１０１、管理部１０３、制御部１０５、第一演算部１００７、第一管理部１００６、第二演算部１００１、第二管理部１００３、サンプリング部１００２などをソフトウェア（コンピュータプログラム）で実装しても良い。この場合、このコンピュータプログラムはＲＯＭ１６０８などのメモリに格納され、ＲＡＭ１６０９にロードされて制御部１０５やＣＰＵ１６０７による処理対象となる。
【００８８】
また、第１，２の実施形態では、認識処理部１６０１を画像処理システムに組み込んだ例について説明したが、入力された画像に対する物体検出や認識などを行ってその結果を出力するような目的で他の装置に組み込んでも良い。また、認識処理部１６０１を単体の装置としても良い。また、上記の各実施形態の一部若しくは全部を適宜組み合わせて使用しても構わない。また、上記の各実施形態の一部若しくは全部を選択的に使用しても構わない。
【００８９】
（その他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００９０】
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
【符号の説明】
【００９１】
１０１：演算部  １０２：保持部  １０３：管理部  １０４：保持部  １０５：制御部
【図１】
2020191012.tif 000003
【図２】
2020191012.tif 000004
【図３】
2020191012.tif 000005
【図４】
2020191012.tif 000006
【図５】
2020191012.tif 000007
【図６】
2020191012.tif 000008
【図７】
2020191012.tif 000009
【図８】
2020191012.tif 000010
【図９】
2020191012.tif 000011
【図１０】
2020191012.tif 000012
【図１１】
2020191012.tif 000013
【図１２】
2020191012.tif 000014
【図１３】
2020191012.tif 000015
【図１４】
2020191012.tif 000016
【図１５】
2020191012.tif 000017
【図１６】
2020191012.tif 000018
【図１７】
2020191012.tif 000019