JP6161266B2 - 情報処理装置及びその制御方法及び電子デバイス及びプログラム及び記憶媒体 - Google Patents

情報処理装置及びその制御方法及び電子デバイス及びプログラム及び記憶媒体 Download PDF

Info

Publication number
JP6161266B2
JP6161266B2 JP2012259059A JP2012259059A JP6161266B2 JP 6161266 B2 JP6161266 B2 JP 6161266B2 JP 2012259059 A JP2012259059 A JP 2012259059A JP 2012259059 A JP2012259059 A JP 2012259059A JP 6161266 B2 JP6161266 B2 JP 6161266B2
Authority
JP
Japan
Prior art keywords
information processing
cache
data
processing apparatus
processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2012259059A
Other languages
English (en)
Other versions
JP2014106736A5 (ja
JP2014106736A (ja
Inventor
伊藤 嘉則
嘉則 伊藤
英生 野呂
英生 野呂
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2012259059A priority Critical patent/JP6161266B2/ja
Priority to US14/084,211 priority patent/US9208374B2/en
Priority to CN201310618198.5A priority patent/CN103838570B/zh
Publication of JP2014106736A publication Critical patent/JP2014106736A/ja
Publication of JP2014106736A5 publication Critical patent/JP2014106736A5/ja
Application granted granted Critical
Publication of JP6161266B2 publication Critical patent/JP6161266B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/77Processing image or video features in feature spaces; using data integration or data reduction, e.g. principal component analysis [PCA] or independent component analysis [ICA] or self-organising maps [SOM]; Blind source separation
    • G06V10/774Generating sets of training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/94Hardware or software architectures specially adapted for image or video understanding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V40/00Recognition of biometric, human-related or animal-related patterns in image or video data
    • G06V40/10Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
    • G06V40/16Human faces, e.g. facial parts, sketches or expressions
    • G06V40/172Classification, e.g. identification

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Artificial Intelligence (AREA)
  • Medical Informatics (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • Oral & Maxillofacial Surgery (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Analysis (AREA)
  • Image Input (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Image Processing (AREA)

Description

本発明は、メモリ上に格納された画像等のデータの高速演算処理を実現する技術に関するものである。
従来、画像等のメモリ上に配列状に格納された多数の要素データに対し、所定の規則に則り特定位置の要素データを順次参照して演算処理を行い、結果を得る情報処理方法および情報処理装置が知られている。
例えば非特許文献1では、画像データ中に存在する人の顔等の対象物体を高速に検出するBoosting型識別器を用いた手法を提案している。この手法では、予め機械学習しておいたカスケード接続された弱判別器の辞書に基づき、検出枠(Sliding window)内の所定位置の特徴量を順次参照・演算したスコアを累積し、演算を打ち切るか、或いは最終的に対象物であるかを判別する。
ここで各弱判別器が参照する特徴量には、複数の局所的な矩形内総和値の線形和として計算されるHaar like特徴と呼ばれるものを用いている。矩形内総和値は、元の輝度画像から事前に生成しておいた、積分画像(Integral Image或いはSummed area table)と呼ばれる画像の4点のみを参照して加減算することにより、低負荷で計算することができる。
各弱判別器が参照する特徴量の位置は、多数のサンプルデータを用いた事前の学習において、その弱判別器が実行される時点での判別性能が最大になる特徴量が選ばれている。また、弱判別器で計算されたスコアにそれまでのスコアを加算した累積スコアが、所定の閾値に到達していない場合は、以後の演算を打ち切ることによって、全体の演算量を低減し高速化している。
また特許文献1では、特徴量として判別対象の輝度画像の中の弱判別器毎に事前に学習して定められた2点の輝度差を用いて、非特許文献1と同様の多数の弱判別器による高速な認識処理を実現している。
簡単な演算により2値の判別を行うノードを、多数組み合わせた多クラス識別器を構築し、高速かつ高精度な多クラス識別を実現する手法も提案されている。例えば、非特許文献2のRandomized treesと呼ばれる手法は、多数のノードを二分木で組み合わせた識別器を用いることで、不要な判別を行わないで済むようにしている。非特許文献3のRandom Fernsと呼ばれる手法では、同一階層では同一の2値特徴を用いた識別器を利用する、さらに高速な多クラス識別器を提案している。
上記のように従来の画像等の識別処理を行う情報処理方法においては、識別器の演算量の低減のみに着目して高速化を実現するものが多かった。
一方で、このような情報処理を実行するコンピュータ等の処理系の回路には、多種多様なメモリ・アーキテクチャが存在する。例えば、大容量ではあるが処理プロセッサからのアクセス時間が長いDRAMと、処理プロセッサの近傍に配置され高速にアクセス可能であるが容量の少ないSRAMの両方を備えたアーキテクチャは、一般的に良く使われている。
このようなアーキテクチャでは、DRAMからSRAMへの転送をバースト転送と呼ばれる所定のサイズの連続する領域を一度に転送することにより高速化するものがある。
或いは、DRAMのデータにアクセスする際には所定の範囲をSRAMにコピーし、次に同範囲内のデータを参照する場合にはSRAMのみをアクセスするようにしたキャッシュ機構も良く使われている。さらにキャッシュ機構には、ダイレクト・マップ方式やセット・アソシエイティブ・キャッシュ等、様々な方式が提案されている。
データを高速に演算処理するためには、演算量のみでなく、上述のようなメモリ・アーキテクチャを合わせて考慮し、データ・アクセスを実行する際に生ずる負荷(以後、参照負荷と呼ぶ)をなるべく低減してやることが有効である。
特許文献2は、判別器を前半部と後半部に分け、前半部の判別器が参照する局所特徴を、主走査方向に線状に長い形状に制限する。若しくは、1ライン置きに間引いた範囲の画素内に制限して選択する。これによりDRAMからSRAMへの転送時にバースト転送しやすくすることにより高速化を実現している。
特許文献3は、画像の各ブロックに対し識別処理辞書に相当するヒストグラムを参照して識別処理を行う処理である。ここでヒストグラムのビンの並びを通常と変えることで、ヒストグラム参照時のキャッシュ・ヒット率を向上させている。
特許第4553044号公報 特開2010−102584号公報 特開2005−190477号公報
"Rapid Object Detection using a Boosted Cascade of Simple Features", P. Viola and M. Jones, IEEE Conference on Computer Vision and Pattern Recognition 2001. "Keypoint recognition using randomized trees", V. Lepetit and P. Fua, IEEE Transaction on Pattern Analysis and Machine Intelligence, 28(9):1465-1479, Sept. 2006. "Keypoint recognition using Random Ferns", M. Ozuysal, M. Calonder, V. Lepetit, and P. Fua, IEEE Transaction on Pattern Analysis and Machine Intelligence, 32(3):448 -461, March 2010.
非特許文献1乃至3および特許文献1に開示される技術では、情報処理を実行する処理系のメモリ・アーキテクチャについては考慮していない。特許文献2に開示される技術は、主としてバースト転送のみに着目しており、キャッシュ・アーキテクチャについては直接的には考慮していない。特許文献3に開示される技術では、事前に生成しておいたヒストグラム、すなわちオブジェクト検出処理のための識別処理辞書データを参照する際のキャッシュ・ヒット率を向上するものであるが、処理対象の画像データそのものの参照については考慮していない。
本発明は、上記の課題に鑑みなされたものであり、画像データを構成する画素等の如く多数の要素を順次参照する処理を、それを実装するターゲットシステムのハードウェアの構成をも加味して効率化させるための情報を得る技術を提供しようとするものである。
この課題を解決するため、例えば本発明の情報処理装置は以下の構成を備える。すなわち、
プロセッサとメモリとを有するターゲットシステムにて、対象データの複数の要素に対して判別処理を順次実行するための情報処理規則を生成する情報処理装置であって、
前記ターゲットシステムの構成要素に係る構成情報と学習サンプルデータとを入力する入力手段と、
前記学習サンプルデータにおいて参照された要素の位置の履歴を保持する保持手段と、
前記学習サンプルデータに関して複数の要素の位置のそれぞれに対する判別処理の誤り率を算出する誤り率算出手段と、
入力した前記構成情報に従い、前記履歴に基づくキャッシュヒットに基づいて、前記プロセッサが前記判別処理を実行する際の、前記メモリにおける前記対象データの複数の要素の位置のそれぞれを参照するための参照負荷を算出する負荷算出手段と、
前記学習サンプルデータの複数の要素の位置のそれぞれに対する前記判別処理の誤り率と前記参照負荷とに基づいて前記対象データの複数の要素に対する判別処理において参照すべき前記要素の位置と参照順序を表わす情報処理規則を決定する決定手段とを有する。
本発明によれば、情報処理を実行するターゲットシステムのメモリ・アーキテクチャを考慮した上で、高速なアクセスが可能なように処理対象データのアクセス方法を決定するので、高速な情報処理を実現することが可能となる。
実施形態に係る画像識別処理用の辞書の学習処理のフローチャート。 実施形態に係る識別処理辞書を用いた識別処理を実行するターゲットシステムの構成例を示すブロック図。 実施形態に係る画像識別処理の流れを説明するブロック図。 実施形態に係るダイレクト・マップ方式のキャッシュアーキテクチャへの適用を説明する図。 実施形態に係るBoosting型のカスケード接続の識別器を模式的に表す図。 Boosting型識別器における2種類の閾値決定方法を説明する図。 学習処理におけるキャッシュヒット判定処理の一例を示すフローチャート。 Boosting型識別器による識別処理の流れを説明するフローチャート。 Sliding window処理を説明する図。 実施形態におけるダイレクトマップ方式のキャッシュアーキテクチャでSliding window処理を実行する場合の動作の説明図。 実施形態に係るセットアソシエイティブ方式のキャッシュアーキテクチャへの適用を説明する図。 メモリへの格納規則とアドレス計算方法の例を説明する図。 実施形態に係るTree型およびFern型の識別器を説明する図。 Fern型識別器に適用する一実施形態における学習処理のフローチャート。 Fern型識別器に適用する一実施形態におけるバイナリ特徴の並べ替え処理のフローチャート。 Fern型識別器に適用する一実施形態におけるバイナリ特徴の並べ替え処理の一例を説明する図。 Fern型識別器による識別処理の一例を示すフローチャート。 キャッシュヒット判定処理の他の例を示すフローチャート。 実施形態が適用する情報処理装置のブロック構成図。
図19は実施形態における情報処理装置のブロック構成図である。図示の如く、本装置は、装置全体の制御を司るCPU1901、BIOSやブートプログラムを格納しているROM1902、OSやアプリケーションをロードするため、並びに、CPU1901のワークエリアとして利用するためのRAM1903を有する。また、この装置は、大容量の記憶装置であるハードディスク(HDD)1904、キーボード1905、マウス等のポインティングデバイス1906、ビデオメモリを有し表示処理を司る表示制御部1907、液晶等で構成される表示装置、並びに、外部との通信を行うためのインタフェース(I/F)1909を有する。上記構成において、本装置の電源がONになると、CPU1901はROM1902のブートプログラムに従って実行し、HDD1904に格納されたオペレーティングシステム(OS)をRAM1903にロードする。この後、CPU1901は、そのOSの下でHDD1904に格納された、本実施形態におけるアプリケーションプログラムをRAM1903にロードし実行することで、本装置が、開発対象の製品における、処理規則情報の生成装置として機能することになる。
実施形態では、説明を簡単なものとするため、製品開発対象の電子デバイスがデジタルカメラ(撮像装置)であるものとして説明する。また、昨今のデジタルカメラには、被写体となる人物の顔認識等のクラス識別処理を実装するものが少なくない。そこで、本実施形態では、製品開発対象のデジタルカメラのハードウェアを構成する情報を加味した、クラス識別処理の最適化するための画素の参照順序を如何にすると効率的に行えるか(高速化できるか)を示す情報を決定する例を説明する。このため、製品開発対象のデジタルカメラの、プロセッサを含むハードウェアに係る情報(以下、ハードウェア構成情報)を先ず入力する必要がある。この入力は、インタフェース1909を介して行われるものとする。この場合のインタフェース1909を介する入力源は、ネットワークストレージ、USBメモリ等の記憶媒体等で良く、その種類は問わない。入力するハードウェア構成情報には、プロセッサのコアの数、キャッシュメモリのサイズ、方式、並びに、主記憶メモリ(多くの場合はDRAM)の容量、データバスのバス幅(ビット数)について記述がなされているものとする。上記を踏まえ、以下に本発明に係る実施形態を説明する。
[第1の実施形態]
<画像識別処理基本システム構成>
図2(a)は、製品開発対象のデジタルカメラにおける、ハードウェア構成情報で表わされるプロセッサ周辺の構成を示している。そして、この構成にて、画像が特定クラスであるかを識別するクラス識別処理を実行する場合の、効率的な要素データ(画素)の参照順序を規定する情報(情報処理規則)を生成する例を説明する。
尚、本明細書においては、クラス識別処理のような情報処理を実行する図2(a)のような処理系(実施形態ではデジタルカメラ)を、以降、ターゲットシステムと呼ぶ。このターゲットシステムが情報処理を実行する際には、機械学習等の技術により事前に生成された情報処理規則を用いる。この情報法処理規則の生成処理を実行する処理系は、ターゲットシステムと異なる処理系であっても構わない。
また図3は、本実施形態のターゲットシステムで実行される情報処理である、画像のクラス識別処理の大まかな流れを説明するブロック図である。
図2(a)のターゲットシステムにおいて、201はシステム・バスであって、システムの構成要素を相互接続しデータや信号のやり取りを可能とする。202はCPU等のプロセッサ・コアであって、各種演算やデータ処理を行う。尚、本システムは、プロセッサ・コアが1つのみのシングルプロセッサ構成として説明するが、本発明はこれに限定されるものではない。メイン・メモリ204はプロセッサ・コア202が演算処理を行う対象となるデータや、実行する処理プログラムを格納するメモリである。通常DRAMで構成され、比較的記憶容量は大きいが低速である。プロセッサ・コア202は、203のキャッシュ・アーキテクチャを介して、204のメイン・メモリ等にアクセスを行うことで高速化を実現している。キャッシュは通常SRAMで構成され、DRAMに比べて通常数十倍以上高速であるが、比較的記憶容量は少ない。本実施形態におけるキャッシュ・アーキテクチャについては後述する。205は入出力インターフェースであり、システム外部やユーザに対する入出力を司る。206は例えばハード・ディスク装置などの大容量不揮発性記憶装置であって、システムの実行するプログラムやパラメータ等を恒久的に記憶している。尚、本システムで実行されるプログラムは、システム起動時にハード・ディスク装置206から一旦メイン・メモリ204に転送され、プロセッサ・コア202は、メイン・メモリ204上のプログラム命令を順次読み取って実行する。
本実施形態における画像のクラス識別処理を実行する際は、まず図3の符号301に示すように、識別対象画像を入力、若しくは受け取る。本実施形態においては、説明を容易にするため、入力される処理対象画像(処理対象データ)は16×16画素サイズ固定とする。また、入力画像はRGBのカラー画像とする。処理対象画像はHDD206に既に格納されているものとする。ただし、その画像の発生源は、デジタルカメラやイメージスキャナでも構わないし、描画アプリケーションで作成された画像としても良く、その種類は問わない。
次に、図3の符号302にて、所定の前処理を行う。本実施形態では、同サイズのままモノクロ輝度画像化、コントラスト補正、ガウスぼかし処理を行うものとする。なお、この段階で、クラス識別処理の対象の画像は、モノクロ多値画像データとなっており、1画素につき8ビットとなっているものとする。尚、本発明の適用は、如何なる入力画像・前処理の組み合わせであっても良く、これを制限するものではない。
前処理302された処理対象画像は、メイン・メモリ204の所定アドレスに格納される。符号303に示す識別処理辞書(すなわち情報処理規則)は、当初はハード・ディスク装置206に記憶されており、システム起動時にメイン・メモリ204の所定アドレスに転送されている。図示の符号304の識別処理では、プロセッサ202が識別処理辞書303を順次参照し、識別辞書303の規定する処理規則に則って、メイン・メモリ204の所定アドレスに格納されている処理対象画像に対して、処理を実行する。ここで実行される処理の詳細については後述する。
識別処理結果は符号305にて出力され、ユーザや外部装置、或いは後処理等に通知される。
<ダイレクト・マップ方式>
本実施形態においては、ターゲットシステムのキャッシュ・アーキテクチャ203は、ダイレクト・マップ方式と呼ばれる構成を取っている。以下、本実施形態におけるキャッシュ・アーキテクチャを、図4を用いて説明する。
キャッシュの基本単位はキャッシュ・ラインと呼ばれる。キャッシュ・ラインのサイズは種々有って、通常、2のべき乗バイトとして設定される。本実施形態では、説明を容易にするため、ターゲットシステムのシステムのデータ・バス幅を8ビットとし、ライン・サイズを仮に4バイトとする。
但し、現在のシステムでは、データ・バスは32ビット以上で、キャッシュのライン・サイズも、通常は32バイト以上のより大きなサイズであることが多い。また、本実施形態では1段のみのキャッシュ構成を取るターゲットシステムで説明するが、これ以外にもL1からL3キャッシュまでの多段階構成のキャッシュ・アーキテクチャが存在する。多段構成のキャッシュ・アーキテクチャでは、通常プロセッサ・コアから遠くなる程、容量は増加し、ライン・サイズも併せて増加する傾向があるが、本発明の基本的な考え方を以下説明するのと同様に適用できることは言うまでもない。
図4(a)において、符号401は、キャッシュ・メモリを構成するデータ・アレイと呼ばれるメモリである。データ・アレイの1矩形がキャッシュのラインを表している。本キャッシュ・メモリは、index0から7までの8つのラインで構成されるものとしている。すなわち本キャッシュ・メモリの容量は、4×8の32バイトである。尚、ライン・サイズと同様、実際のキャッシュ・メモリではより大量のライン数を持つ場合が多く、総容量で数キロから数メガバイト程度のものもあるが、本実施形態では8ラインとしている。このように、本実施形態では最も簡単な構成で説明しているが、実際に用いられるキャッシュ構成に合わせて読みかえれば、本発明が適用可能であることは自明であろう。
符号403は、識別対象画像データ404を格納するよう定められたメイン・メモリ204の一部を示している。各マス目が4バイトであり、水平方向に連続する4画素分のデータを格納することになる。本実施形態においては、識別対象画像データ404は上述のとおり16×16画素である。従って、上述のキャッシュ・ラインの構成では、1ライン目を含む奇数ライン目の16×8画素のデータはメイン・メモリ403の左半分の領域に、2ライン目を含む偶数ライン目の16×8画素のデータは右半分の領域に格納される。
データ・アレイ401の各ラインが担当するメイン・メモリ204のアドレスは、それぞれ異なった範囲となるように設定されている。
メモリ・アドレスは図4(b)のように、下位ビット(LSB)から順に、411のライン内における位置(Position)、412のライン・インデクス(Line Index)、413のタグ(Tag)を連結したものと見なすことができる。本実施形態では、ライン・サイズは4バイトとするので、Positionを表すためには2ビットのアドレスが必要である。また、ライン数は8とするので、Line Indexは3ビットである。本システムにおけるバスのアドレス空間を仮に16ビットとすると、残りの11ビットがTagとなる(もちろん現在の実際のシステムでは、32ビットや64ビット等のより大きなアドレス空間を持つことが多く、キャッシュのライン・サイズも大きいが、考え方は同様である)。
データ・アレイの各ラインは、メイン・メモリのアドレスの3bitのLine Indexの部分が、自己のライン・インデックス0乃至7に一致する領域を担当する。例えば符号409のラインは、Line Index部分が0となるアドレスのメイン・メモリの領域を担当する。符号403のメイン・メモリの一部に対して、図中の各矢印(例えば410)で対応付けられた4バイト・ライン幅の縦の列が、各キャッシュ・ラインが担当するメイン・メモリの範囲であることを示している。すなわち、プロセッサ202が図示の符号411に示されるいずれかの矩形(4バイト)をアクセスすると、その4バイトがline Indexが0の破線409にキャッシュのDataarryに格納される。このように、プロセッサ202が、メイン・メモリの何れかのアドレスにアクセスすると、当該アドレスを担当するデータ・アレイのライン・メモリには、当該アドレスの1バイトを含む1キャッシュライン分(すなわち4バイト)のデータがキャッシュに格納される。次に、同範囲の別のアドレスをプロセッサ202が読み出す場合には、メイン・メモリ204にはアクセスせず、キャッシュ203のデータ・アレイ401の当該ラインに格納されている値を読み取るので、非常に高速なアクセスが可能となる。
このとき、各データ・アレイのラインに、メイン・メモリのどのアドレスの値が格納されているかを管理するのが、タグ・アレイ402である。対応するラインのタグ・アレイには、現在格納されているメモリのアドレスのTagの値が格納されている。プロセッサ202があるアドレスを読み出すと、アドレスを図4(b)のように分解し、Line Indexに対応するタグ・アレイの値と、アクセス・アドレスのTagが一致するかを判定する。これが一致する場合には、データ・アレイには所望のデータが既に格納されているので、バス201を介したメイン・メモリ204へのアクセスは行われずキャッシュ203内の値を読み取る。尚、これらの判定やアクセスの切換はキャッシュに内蔵される専用ハードウェアにより非常に高速に行われる。
また、プロセッサ202がメモリへの書き込み動作を行う場合も同様であるが、別途しかるべきタイミングでキャッシュ203からメイン・メモリ202への書き戻し動作(フラッシング)を行う必要がある。さらにマルチ・コア等、複数のバス・マスターがシステムに存在する場合には、アクセス・タイミングによる不整合を起こさないよう制御(キャッシュ・コヒーレンシ)する必要が有るが、詳細な説明は省略する。
ダイレクト・マップ方式のキャッシュ・アーキテクチャでは、データ・アレイ401は、ライン・インデックス毎に1ラインずつしか存在せず、対応するタグ・アレイも1つずつとなっている。従って、同ラインが担当するメイン・メモリの別のアドレスに対するアクセスが発生すると、キャッシュのラインの中身の入れ替えが発生する。これをスラッシングと呼ぶ。スラッシングが発生する度にメイン・メモリへのアクセスを行うことになるので、これが少ない程、高速な処理が可能となる。
例えば、画素405を参照し、次に画素406を参照する場合は、キャッシュ・ヒットするので非常に高速にアクセスでき参照負荷が低くなる。しかし画素405の次に407を参照しても、それ以前に407と同ライン内の画素がアクセスされていなければアクセスは遅い。画素405を参照した後に408を参照し、然るのちに406を参照すると、インデックス1のラインのスラッシングが2回発生することになるので、参照負荷は高くなる。このように、本実施形態では、参照する画素がキャッシュ・ヒットする場合は参照負荷小、ヒットしない場合は参照負荷大として算出する。
<Boosting識別器>
図5は、本実施形態の画像識別処理を行うBoosting型識別器の概念図である。本実施形態では、この識別器を、図2のターゲットシステムで実行されるプログラムにより実現している。この識別器は非特許文献1と同様、多数の弱判別器501乃至503がカスケードに接続された構成となっている。尚、図5の識別器は、非特許文献1のようにステージ構成としてステージ毎に打ち切り判定するのではなく、特許文献:特開2010−165046と同様、弱判別器一つずつで打ち切り判定を行うようになっている。しかしながら、本発明の本質によればこれはどちらでも構わない。
最初の弱判別器501には、前処理された処理対象画像が入力される。各弱判別器は、入力された画像より所定の特徴量を計算する。本実施形態においては、画像中の弱判別器毎に異なる位置の1点を参照し、その画素値を特徴量とする。これを弱判別器毎に所定の判別閾値と大小比較し(大小比較の方向は弱判別器毎に異なる)、真の場合は1、偽の場合は−1とする判別結果hk(x)を得る。ここでxは識別対象の入力画像を示し、k=1,2,…は弱判別器番号である。弱判別器毎の参照点の位置は、前述の認識辞書に辞書データとして登録されている。
尚、非特許文献1のように積分画像(integral image)を入力して4点参照による矩形内総和値を複数算出し、これらに所定係数を乗じて総和した値を特徴量としても良いし、所定位置2点を参照してその大小比較結果より判別結果 を得るようにすることも可能である。本実施形態では以下の説明のし易さより前述の弱判別器毎に1点参照の特徴量を採用しているが、これら複数点参照の場合であっても本発明を適用可能であることは言うまでもない。
弱判別器毎の辞書データとしてはさらに、信頼度αkと、先に述べた判別閾値とは別の識別閾値Tkが登録されている。これらはk段目の弱判別器の学習時に決定されるパラメータである。弱判別器の単独の判別結果スコアは、αkkとして計算される。各弱判別器は、前段から送られてきた累積スコアに自己の判別結果スコアを加算して、識別閾値Tkによる打ち切り判定を行う。すなわちt段目における打切り判定は、次式(1)のように表される。
Figure 0006161266
式(1)が真ならば処理継続となり、弱判別器は次段に加算された累積スコア:
Figure 0006161266
を送る。すなわち図5において、2段目(502)以降の弱判別器には、処理対象画像と共に前段までの累積スコアが入力される。
503は最終弱判別器で、ここでも打ち切られなかった場合、識別結果がPositiveであることが確定する。このときの累積スコアが、入力画像が識別対象物体である「らしさ」を示すスコアとなる。
<Boosting学習処理>
次に図1のフローチャートを用いて、本実施形態のBoosting型識別器の認識辞書を生成するための学習処理について説明する。この学習処理は、図2(a)に示したターゲットシステム上で実行しても良いし、より高速のスーパーコンピュータやPCクラスタ等の他のシステムを用いて実行しても良い。学習処理の実行環境については、本発明の本質から制限されるものではない。
以下、本実施形態の学習アルゴリズムについて説明する。
まずステップS101で、学習に使用する大量のサンプルデータを入力する。学習データには、識別対象パターン(Positiveサンブル、例えば顔画像データ)と非識別対象パターン(Negativeサンプル、例えば背景等の非顔画像データ)が、所定の比率で含まれている。尚、これらのサンプルデータには、予め輝度画像化やガウスフィルタ処理等の必要な前処理が行われているものとする。
ステップS102では、学習データセットのサンプルデータ各々に対する重み係数を初期化する。学習データの総数を 個(Positive,Negative込)とすると、全ての重み係数wt,iを以下の式(2)で均一に初期化する。
1,i=1/m、 m=1,...,m …(2)
ここで は現在学習使用としている弱判別器番号で初期値は1、 は学習データ番号である。つまり、第1段の弱判別器学習時には、全てのサンプルデータに対して共通の重みを与えている。
続いてステップS103では、参照履歴テーブルの初期化を行う。参照履歴テーブルとは、直前までに学習済みの各段の弱判別器が参照する特徴画素の位置を順に記憶するためのテーブルである。初期状態では保持される位置情報が無いクリアされた状態となる。
このテーブルは、後に、ターゲットシステムのキャッシュ・アーキテクチャをシミュレートして、キャッシュ・ヒットを判定する際に用いられる。ターゲットシステムのキャッシュがダイレクト・マップ方式の場合、参照履歴テーブルには、各ライン・インデクス毎に、少なくとも直前1回分以上のアクセス履歴を保持できるようにする必要がある。
尚、参照履歴テーブルとして、参照画素位置情報の形式のまま保持するのではなく、ターゲットシステムのアーキテクチャに合わせて、予め図4で説明したタグ・アレイと同等の情報に変換した状態にして、間接的に保持するようにしても良い。
次のステップS104では、次式(3)に従って重み係数を正規化する処理を行う。
Figure 0006161266
但し、1段目の学習時に最初にこのステップS104が行われる際には、重み係数w1,iは前述の通りS102(式(2))で設定された値になっているので、すでに式(3)を満たす状態となっている。すなわちこのステップS104 は、第2段目以降の弱判別器の学習時に、重み係数wt,iの総和値が1となるように正規化するための処理である。
続いて、ステップS105で、弱判別器が参照する画素値特徴の候補位置を一つ選択する。この候補位置は処理対象画像の任意の点としても良いし、ある程度範囲を限定した中から選択するものとしても良い。上述の矩形特徴や画素差分等の複数点を参照する特徴を用いる場合は、予め多数の組み合わせの特徴候補を容易しておき、それらの中から一つを選択するようにする。
ステップS106では、選択した特徴候補について判別性能評価を行う。まず、全ての学習サンプルデータに各々に対して、この特徴候補の位置の画素値を参照し、識別対象と非識別対象を分離する閾値θt,jを決定する。ここで、tは学習中の弱判別器番号、jは特徴候補番号とする。
この閾値の決定には、全ての学習サンプルデータを用いて作成した参照画素値のヒストグラムを利用する。図6(a)は、識別対象データのヒストグラム602と非識別対象データのヒストグラム601の例を示している。横軸は特徴候補位置の参照画素値(特徴値)で縦軸は参照画素値がその値となったサンプルデータの数を表す。このヒストグラムを使用して識別対象と非識別対象を最も良く分離する閾値θt,jを決定する。この閾値θt,j より参照画素値が大のときに識別対象、小のときに非識別対象と判別すれば、非識別対象を識別対象と判別、あるいは識別対象を非識別対象と判別する「誤り率」は最小となる。識別対象データのヒストグラム602と非識別対象データのヒストグラム601のピークが左右逆の位置に現れた場合には、閾値との大小比較方向を逆に設定し、閾値θt,jより参照画素値が小のときに識別対象、大のときに非識別対象と判別するようにする。
そして次に、決定した閾値θt,j と式(3)で正規化してある重み係数を用いて、全ての学習サンプルデータに対する重み付判別誤り率を算出する。次式(4)が重み付き判別誤り率である。
Figure 0006161266
ここで、iは学習サンプルデータ番号であり、xiが各学習サンプルデータを示す。ht,j(xi)は特徴候補jによる学習サンプルデータxiの判別結果であり、先に決定した閾値θt,jと大小比較方向を用いて、入力対象データxiが識別対象であると判定した場合に1を、識別対象でないと判別した場合に−1を出力する。yiは正解ラベル(教示ラベル)でありi番目のサンプルデータが識別対象であるか否かによって、それぞれ1又は−1が割り当てられている。従って重み付誤り率Et,jは、ht,j(xi)とyi の値が等しいサンプルに対しては0、異なるサンプルについては2wt,jが加算された総和値となる。
次にステップS107で、参照履歴テーブルを用いて、特徴候補の画素位置を参照する際のキャッシュ・ヒットを判定する。キャッシュ・ヒットする特徴候補の画素の参照負荷は低く、ヒットしない場合はスラッシングが発生することなり参照負荷が高いことになる。尚、参照負荷とは前述の通り、ターゲットシステムがデータ・アクセスを実行する際に生ずる負荷のことである。この判定処理は図7に示すフローチャートのように行われる。
まずステップS701にて、特徴候補の画素位置の座標と、処理対象画像の格納領域の先頭アドレスを用いて、参照画素の画素値が格納されているメモリ・アドレスを計算する。ここで用いる先頭アドレスとは、ターゲットシステムのメモリにおける処理対象画像格納領域として設定された先頭アドレスであって、本学習処理を行っているシステムのメモリ・アドレスとは関係ない。
次にステップS702にて、計算した参照画素位置のアドレスから、タグ値とインデクス値を取得する。これは図4(b)で説明したように、アドレス値から所定範囲のビット列をそれぞれ取り出せば良く、本実施形態では上述のようにインデクス値3ビット、タグ値は11ビットである。
そしてステップS703にて、参照履歴テーブルを参照してキャッシュ・ヒットするか否かの判定を行う。参照履歴テーブルには、それまでにアクセスした画素位置が順に格納されている。そこでタグ・アレイをシミュレートして同等の情報を保持するテーブルを作成し、参照済画素の位置情報を最初から順に取り出して、ステップS701、S702と同様にタグ値とインデクス値を算出し、タグ・アレイ相当を更新してゆく。これにより現特徴候補の画素位置にアクセスする際のタグ・アレイ相当の情報を再現できるので、ステップS702にて取り出したインデクス値のラインに、ステップS702で取り出したタグ値と同じ値が入っているか否かでキャッシュ・ヒットが判別できる。尚、上述したように、参照履歴テーブルとして、画素位置の座標の履歴のまま保持するのではなく、予めこのタグ・アレイ相当の情報に変換して保持するようにしてももちろん構わない。
ヒット判定した結果はS704にて返される。尚、上述の複数の点を参照する特徴を用いる場合は、各々の点を所定の順に参照する際にキャッシュ・ヒットするか否かを判定し、その平均値をキャッシュ・ヒット率としてここでの判定結果とすれば良い。
ステップS107でのキャッシュ・ヒット判定結果をct,jとし、ヒットした場合に1、ヒットしなかった場合に0を取るものとする。ct,jをヒット率で計算する場合は、1から0の間の値を取るものとする。
ステップS108では、ステップS107で判定したキャッシュ・ヒット判定結果(またはヒット率)に基づき、アクセス・ペナルティPt,jを計算して重み付誤り率Et,j に加算する。アクセス・ペナルティPt,jは、参照負荷が大きい場合ほど高い値を取るように次の式で計算される。
t,j=K(1−ct,j
ここでKは所定の正の係数で、参照負荷をペナルティとして考慮する割合を調整する。すなわち、S107でキャッシュ・ヒットすると判定された場合はPt,j=0、ヒットしないと判定された場合はPt,j=Kで、キャッシュ・ヒット率で計算される場合はその間の値を取ることになる。アクセス・ペナルティを加味した誤り率EPt,jは、次式(5)となる。
Figure 0006161266
尚、アクセス・ペナルティPt,jとして、キャッシュ・ヒット率だけでなく、例えば、特徴候補を参照して特徴量を計算するまでにターゲットシステムが要するトータルのシステム・クロック数に比例する値を利用するようにしてもよい。
ステップS109による繰り返し処理で、以上のステップS105からS108の処理を、全て特徴候補について実施し、それぞれ特徴候補に対して式(5)のアクセス・ペナルティPt,jを加味した誤り率EPt,jを求める。
ステップS110においては、算出した全ての特徴候補に対するアクセス・ペナルティPt,jを加味した誤り率EPt,jの中で最も小さい値となる特徴候補j(本実施形態では候補画素特徴の位置に相当)を選び(argmin(EPt,j))、これをt段目の弱判別器の特徴量として、参照画素位置を決定する。ここで、このとき選択した特徴のアクセス・ペナルティPt,jを加算する前の誤り率Et,jをEtとする。また、この特徴候補jを用いてS106で決定された閾値θt,jを判別閾値θtとする。
次にステップS111で、参照履歴テーブルを更新する。ここでは決定したt段目の参照画素の位置情報を、参照履歴テーブルに追加格納する。(若しくはタグ・アレイ相当の情報として保持する場合には、図7のステップS701,S702でアドレス計算、タグ値とインデクス値を取得し、インデクス値の一致するタグ情報を書き換える処理を行う。)
続くステップS112では、以下の式(6)により、当該弱判別器に対応する信頼度αtを算出する。
Figure 0006161266
次にステップS113において、打ち切り閾値を決定する。ここでは、全ての学習サンプルデータを用いて作成した累積スコア値:
Figure 0006161266
のヒストグラムを利用する。
図6(b)は、識別対象データの累積スコア値ヒストグラム604と非識別対象データの累積スコア値ヒストグラム603の例を示している。打ち切り閾値は、識別対象データに対する打ち切り割合(打ち切られるPositiveデータの数/全Positiveデータ数)が所定の許容範囲以下になる様に決定する。打ち切られるPositiveデータの数とはすなわち、604の累積スコアヒストグラムで打ち切り閾値の左側に来るPositiveデータの総数の総数である。Negativeデータに関しては打ち切られる数が多い程良いので、ここでは考慮しなくてよい。この打ち切り閾値が識別処理時に用いられるt段目の弱判別器の識別閾値Ttである。
以上により決定した参照画素位置、信頼度αtおよび判別閾値θtと大小比較方向、識別閾値Ttのパラメータを、当該t段目の弱判別器の辞書データとして記憶する。
続いてステップS114では、各学習サンプルデータに対する重み係数を、下記演算式(7)で更新する。
Figure 0006161266
但し、式(7)で更新する重み係数wt,jは正しく識別できた学習データiの重み係数のみである。誤り率Etは通常0.5より小さい値となるので、正しく識別されたサンプルデータ(Positive、Negative共)の重み係数wt,iは、小さくなる様に更新される。従って、識別を誤ったサンプルデータに対する重み係数wt,iは、相対的に大きくなる。
ここまでの処理(ステップS104〜ステップS114)でt段目の弱判別器を追加生成した後、ステップS115では、所定の完成条件を満たす識別器が完成したか否かを判定する。ここで所定の条件とは、弱判別器数が予め設定した上限数に到達したか、誤り率Etが所定の値を下回り、所望の性能を達成できた場合に満たされる。条件を満たさない場合は、ステップS104に戻り、続く弱判別器の追加生成処理を継続する。
<Boosting識別処理>
以上のように生成された識別処理辞書を用いた識別処理は、ターゲットシステム上で、通常のBoosting型識別処理と同様の図8のフローチャートのように実行される。
ステップS801では識別対象画像xが入力される。尚、ここでは上述の輝度画像化やガウスぼかし等の所定の前処理は既になされているものとする。
ステップS802では、第1段目の弱判別器を選択する(処理段数t=1 とする)。
ステップS803では、識別処理辞書を参照し、選択されている処理段数 の弱判別器の特徴である参照画素位置、信頼度αtおよび判別閾値θtと大小比較方向、識別閾値Ttのパラメータを参照する。
ステップS804では、t段目弱判別器の判別処理を行う。これは、まず上述のように通り、参照した判別閾値θtと大小比較方向を用いて弱判別器単独の判別結果ht(x)を計算し、然る後に累積スコア値:
Figure 0006161266
を計算する処理である。
そしてステップS805で、式(1)に従い累積スコアが識別閾値Ttより大ではないと判定された場合は、処理打ち切りとなってステップS808に進み、入力された識別対象画像xが識別対象ではない(Negative)であることが確定する。
ステップS805で、累積スコアが識別閾値Ttより大で処理継続と判定された場合は、ステップS806に進み、実行した弱判別器が最終段の判別器であるかどうかをチェックする。最終段でなければ、ステップS803に戻って次の弱判別器の判別処理を行う。
最終段の弱判別器まで辿り付いた場合は、ステップS807へ進み、入力された識別対象画像xが、識別対象である「Positive」であることが確定する。
以上のように、本実施形態では、各段の弱判別器の特徴を順次選択する際に、識別性能だけでなく、識別処理を実行するターゲットシステムのキャッシュ・アーキテクチャを考慮したアクセス・ペナルティを加味して、スラッシングの発生を抑制している。これにより、識別性能と高速性を両立するBoosting型識別器用の識別処理辞書を生成することができる。
[第2の実施形態]
<Sliding window処理の場合>
大きな画像中から人の顔等の所望の物体の検出処理を行う場合、Sliding windowと呼ばれる処理と組み合わせた識別処理が良く行われている。例えば非特許文献1においても、Sliding window処理を用いている。
図9はSliding window処理を説明する図である。図中の符号900は入力画像である。符号901は入力画像900上に設定された所定サイズの検出枠(サブ・ウィンドウ)である。検出枠901は、入力画像900上を、左上から所定画素ずつ右へ移動し、右端に辿り付いたら所定画素下の左端に移って、同様に画像の右下端まで移動を続ける。検出枠901が1回移動する毎に、検出枠内の画像が切り出され、第1の実施形態と同様の識別器に入力されて、識別対象画像であるか識別される。すなわち識別対象であると判別された検出枠の位置に、所望の物体が存在していることが検出される。
このようなSliding window処理を組み合わせた検出処理を行う場合においても、本発明を適用することが可能である。
識別器への入力が検出枠内の画像である場合、逐一これを元の入力画像からメモリの別の領域にコピーして処理を実行するのは効率が悪い。このようにすると、検出枠の移動画素数は1画素に設定される場合もあり、大量のメモリ・コピー処理が発生することになる。従って、通常は、入力画像に対し検出枠の領域位置設定をして、識別器が直接入力画像を格納したメモリ領域を参照して、識別処理を行うようにする。
図10は、Sliding window処理を行う検出処理において、本発明の適用を説明するための図であり、ターゲットシステムにおけるキャッシュ・アーキテクチャを示している。本実施形態のターゲットシステムは第1の実施形態と同様ダイレクト・マップ方式のキャッシュを持つものとするが、本発明の適用はこれに限定されるものではない。
図10のキャッシュにおいて、説明を簡単にするため、キャッシュのライン・サイズ×ライン数が処理対象の入力画像の幅画素数と一致するものとする。すなわちライン数は図4で説明したキャッシュより多いものとする。これは図面の記述の都合であり、実際には一致していなくとももちろん適用可能である。尚、図10では、タグ・アレイとライン・インデクスの表示は省略してあるが、図4と同様存在する。また、1キャッシュ・ライン当たりの容量も図4と同じく4バイトとする。
図10において符号1001はデータ・アレイを表しており、符号1002は図9の入力画像900を格納するメイン・メモリの一部を示している。図4と同様、データ・アレイ1001の各ラインは、矢印で対応付けられたメイン・メモリ1002の各領域を担当している。
符号1003は入力画像の左上端に配置された検出枠(ここでは仮に10×10画素サイズとしている)を表しており、符号1004、1005と1画素ずつスライドする様子を示している。
検出枠が符号1003の位置にあるとき、画素位置1006を参照した次に参照する各画素位置がキャッシュ・ヒットするか否かの判定は、第1の実施形態と同様に可能である。例えば、符号1007の位置の画素を参照する場合は、キャッシュ・ヒットするが符号1008の位置はキャッシュ・ヒットしない。符号1009の位置を参照するとスラッシングが発生する。
ところで各特徴の参照画素位置は、Sliding Window処理と組み合わせた場合は、検出枠に対して定められることになる。つまり、検出枠の移動に伴い、同じ特徴の参照画素位置が相対的に移動することになる。
従って、符号1003の検出枠位置において参照された各特徴の画素位置は、符号1004の位置に検出枠が移動した場合は、メイン・メモリ上において一つ右の画素を参照することになる。すなわち符号1004の検出枠位置においては、符号1006相当の位置の画素を参照した次に符号1007相当の位置の画素を参照しても、キャッシュ・ヒットしなくなる。
このようなSliding Window処理と組み合わせた検出処理に用いる場合でも、基本的に図1に説明した学習処理フローで識別処理辞書を生成することが可能である。但し、キャッシュ・ヒットの判定結果は、参照履歴だけでなく、検出枠位置によっても異なってくるので、これに対応する必要がある。このため本実施形態では、図1のステップS107のキャッシュ・ヒット判定処理として、第一の実施形態で説明した図7の処理の代わりに、図18に示す処理を用い、0から1の範囲のキャッシュ・ヒット率ci,j計算している。
尚、本実施形態で、図1のステップS101において学習データセットとして入力される画像は、全て予め検出枠サイズに切り出されたものである。つまり、学習処理用システムにおいてこれらの学習画像が格納されるメモリ上の位置は、識別処理時の識別対象データの格納位置とは何ら関係はない。学習処理時には、ターゲットシステム上でSliding Window処理を行うより大きな画像の一部として、学習画像と同サイズの検出枠で位置設定されて参照されることを想定(シミュレーション)し、以下のヒット率計算を行う。
図18においては、まず検出枠の想定する位置のオフセットを0に設定する。これは検出枠の位置をメイン・メモリ上のいずれかのキャッシュ・ラインの区切りの先頭に設定することに対応する。例えば、図10における位置1003である。尚、検出枠位置のオフセット、すなわちキャッシュ・ラインの区切りから右方向にスライドした画素数が等しければ、キャッシュ・ヒットする・しないの判定結果は同じになる。例えばある参照画素候補の、図10の1010の検出枠位置の場合のヒット判定結果は、1003の位置と同じであり、1011の位置は1004と同じである。従って、キャッシュ・ライン幅分のオフセットについてヒット判定を行えば、全体的なキャッシュ・ヒット率(平均値)の計算を行うことができる。
次にステップS1802で、検出枠がオフセット位置にある場合の参照画素候補位置のターゲットシステム上のメモリ・アドレスを計算する。これは図7のステップS701と同様であるが、オフセット分x座標を右にずらしたものとしてアドレス計算を行う。
ステップS1803においては、図7のステップS702と同様、計算したアドレスからタグ値とインデクス値を取得する。
そしてステップS1804において、参照履歴テーブルを参照し、キャッシュ・ヒット判定を行う。ここでは図7のステップS703と同様にタグ・アレイをシミュレートして判定するが、参照済画素の位置情報を参照履歴テーブルから取り出す際に、ステップS1803と同様、x座標にオフセット分を加算して、アドレス計算を行う。尚、参照履歴テーブルをタグ・アレイ相当の情報に変換して保持しておく場合は、各オフセット位置で履歴が変わってくるので、各オフセット位置につき1つずつ別のタグ・アレイ相当情報を記憶しておく必要がある。
ステップS1805では、ヒットしたか否かの判定結果をひとまず記憶する。そしてステップS1806において、キャッシュ・ライン幅分のオフセットにおけるヒット判別が完了したかどうかを判定する。完了していない場合は、ステップS1807にて次のオフセット値を計算する。ここではSliding windowの1回のスライド幅分(ステップ分)を現在のオフセット値に加算することになる。尚、ここではステップ画素数はキャッシュ・ライン幅画素数を切り良く割り切る値であるものとする。そしてステップS1802に戻り、次の位置オフセットでのキャッシュ・ヒット判定を行う。
キャッシュ・ライン幅分のヒット判別が完了したら、ステップS1808において、キャッシュ・ヒットした数を集計し、判定したオフセットの数を分母として、キャッシュ・ヒット率を計算し、処理完了となる。
以上のように、本第2の実施形態によれば、Sliding Window処理を組み合わせた所望物体の検出処理に対しても本発明を適用することができ、検出性能と高速性を両立した識別処理辞書を生成することが可能となる。
[第3の実施形態]
<セット・アソシエイティブ・キャッシュの場合>
本発明は、他のタイプのキャッシュ・アーキテクチャを持つターゲットシステムを使用する場合でも適用することが可能である。
図11は、2ウェイのセット・アソシエイティブ・キャッシュと呼ばれる方式のキャッシュ・アーキテクチャを示している。このキャッシュは、図4のダイレクト・マップ方式と同様、キャッシュ・ライン・サイズ4バイト、ライン・インデクスは0から7までの8列分とする。
セット・アソシエイティブ方式のキャッシュのデータ・アレイには、ライン・インデクス毎に複数ライン分の容量が割り当てられている。このインデクス毎の割り当て数をウェイ数と呼び、図11のキャッシュでは2ウェイである。
また、タグ・アレイも、インデクス毎にウェイ数に等しい数のタグが保持できる構成となっており、図11でそれぞれ上段のタグは上段のラインを管理し、下段のタグは下段のラインを管理する情報を格納する。タグ・アレイの各タグには、対応して不図示のタイムスタンプ保持領域が割り当てられており、各ラインの上段・下段それぞれの最終アクセス時刻が記憶されている。
キャッシュ・ヒットの判定は、アクセスするアドレスからインデクスとタグを取り出すところまではダイレクト・マップ方式と同様である。ここで、インデクスに対応する上下2つのタグのいずれかに取り出したタグが合致すればヒットとなる。対応するデータ・アレイのキャッシュ・ラインに対しアクセスを行うと同時に、タイプスタンプ保持領域の最終アクセス時刻を更新する。
キャッシュ・ヒットしなかった場合は、タイムスタンプ保持領域を参照して、最も古い時刻にアクセスされたタグを選択し、対応するラインの中身を新たなアドレスを含むラインに入れ替える。(つまり、最も古いアクセスのラインをスラッシングする。)同時に最終アクセス時刻を更新する
ターゲットシステムが図11のタイプのキャッシュ・アーキテクチャを持つ場合でも、本発明は適用可能で、例えば図1の学習処理フローに従い識別処理辞書を生成することができる。このときステップS107のキャッシュ・ヒット判定はもちろん、上述のように図11のアーキテクチャに合わせて行う。ダイレクト・マップ方式に比べて各インデクス2つのラインを持つので、ヒット確率は高まりスラッシングは発生しにくくなる。
例えば、図11において、識別対象画像1004が図4と同様左右に1ラインずつ振り分けられて格納されている状態を考える。まず1005の画素をアクセスし、次に1007の画素をアクセス、次いで1006をアクセスする場合を考える。このとき、図4のダイレクト・マップ方式では2回のスラッシングが発生していたが、図11のキャッシュではどちらのラインもキャッシュ内に保持される。そして1006をアクセスする際にはキャッシュ・ヒットとなる。
図11のような2ウェイのアーキテクチャでは、参照履歴テーブルには、少なくとも各ラインに付、過去2回分のアクセス履歴を保持する必要がある。あるいはタグ・アレイ相当の情報に変換して保持しても良いことはダイレクト・マップ方式の場合と同様である。
この他、4ウェイや8ウェイのセット・アソシエイティブ方式のキャッシュ・アーキテクチャが存在し、同様に本発明を適用可能であることは自明であろう。
セット・アソシエイティブ方式は、ダイレクト・マップ方式に比べてキャッシュ・ヒット率が向上する反面、ウェイ数が増えるにつれタグ・アレイとして必要な容量が増えるためキャッシュとしての有効容量が相対的に減るというデメリットがある。どちらの方式が適しているかは、実行する処理に依存する。上述したような矩形特徴や画素差分等、複数の点を参照して計算する特徴を用いる場合は、ダイレクト・マップ方式よりもセット・アソシエイティブ・キャッシュ方式の方が、特徴選択の自由度を保ちながら高速性を担保できる。よって、識別性能と高速処理の両立を達成しやすくする効果が期待できる。
[第4の実施形態]
<テクスチャ・メモリの場合>
ところで、メイン・メモリへの画像の格納は、通常はラスタ・スキャン方式で画像の1ラインの画素を連続するアドレスに格納する方式が取られることが多い。図12(a)は、ラスタ・スキャン方式でメモリに格納する様子を示している。
しかしながら、異なった格納規則でメモリに画像を格納するアーキテクチャも存在する。例えば、図12(b)は、Z-ordering方式と呼ばれる順序でメモリに格納する様子を示している。このような順序で画素をメモリに格納すると、横方向だけでなく縦方向にも近傍の画素がメモリ・アドレスの近い位置に格納され易くなる。これによりバースト転送やキャッシュ1ラインに含まれる画素は縦横を含めて近傍の画素となるので、方向によらず近傍画素のアクセスの効率化が図れる。Z-ordering方式のメモリ(テクスチャ・メモリ)は、例えば図2(b)に示すようにメイン・メモリとは別のメモリとしてシステムに接続される場合が多い。このような格納規則を持つテクスチャ・メモリは、例えばGPUで用いられており、画素補間を伴う画像の部分的な拡大縮小処理等を行う際に特に有利である。
尚、本明細書では、ラスタ・スキャン方式やZ-ordering方式のように、対象データの各要素をメモリ上へ格納する順序の定め方を、「格納規則」と呼んでいる。
本発明は、ターゲットシステムにおいて、識別対象画像を格納する先が、例えばZ-orderingのような、ラスタ・スキャンとは異なった格納規則のメモリ・アーキテクチャであっても、適用することが可能である。このような場合であっても、例えば、図1の学習処理フローを適用して識別処理辞書を生成することができる。
このとき上述の実施形態と処理が異なるのは、ステップS107のキャッシュ・ヒット判定における、図7のステップS701参照画素位置アドレス計算の方法である。
図12(c)は、16×16の画像をZ-orderingのテクスチャ・メモリに格納した場合の、アドレス計算の方法を示している。例えば符号1201の位置の画素は、x座標が2、y座標が1である。これを2進数で表し、符号1202に示すように、最下位ビットをx座標の最下位ビットとして、互い違いにビットを並べてゆくと、格納アドレス(この場合は6)が計算できる。他の位置であっても同様に計算可能であることは、図より明らかであろう。尚、Z-orderingの格納規則では、このように極めて容易にアドレス計算を行うことができるが、画像の一辺のサイズが2のべき乗の正方形である必要がある。他のサイズの画像を格納する場合は、その画像を含む最小の一辺が2のべき乗の正方形の領域を確保して余白と共に格納することになる。テクスチャ・メモリのハードウェアには、通常座標値からアドレス値に変換するハードウェアが内蔵されている。もちろん、学習処理を実行するシステムがZ-orderingのメモリを備える必要はなく、同等のアドレス計算をソフトで行えば良い。
アドレス計算した後のキャッシュ・ヒットの判定の方法は、上述の実施形態と同じである。
本実施形態のようにテクスチャ・メモリを持つターゲットシステムに対し、本発明を適用すると、水平方向だけでなく垂直方向も含めて近傍の位置の画素が、アクセス効率の高い特徴として選ばれやすくなる。これにより、処理速度の高速性を保ちつつも識別性能が向上する効果を期待できる。
また、同様にZ-orderingに限らずヒルベルト曲線等の他の格納規則であっても、対応するアドレス計算方法を適用することで、本発明を適用できることは自明であろう。
[第5の実施形態]
<Random Ferns型識別器>
本発明は、Boosting型識別器だけでなく、他の異なったタイプの識別器を用いた識別処理に対しても適用することができる。
図13(a)は、非特許文献2に記載されているような2分木を組み合わせたTree型識別器で、図13(b)は非特許文献3に記載されているようなFernと呼ばれるタイプの識別器を示している。本実施形態では、Fern型識別器に本発明を適用する場合を説明するが、Fernの説明に先立ちTree型識別器の動作をまず説明する。
図13(a)において、f0乃至f6はバイナリ特徴を計算するノードである。バイナリ特徴には、二値の判別結果が得られるものなら、どのような特徴でも用いることができる。本実施形態では、入力された識別対象画像のノード毎に定められた位置の2点の画素値の大小比較を行う特徴(画素差分特徴)であるものとし、第1の点の画素値が第2の点の画素値より大であるか否かを判定するものとする。
もちろん本発明は特にこれを制限するものではなく、例えば、第1の実施形態のような1点参照と所定の閾値との大小比較でも良いし、非特許文献1のような矩形特徴を使用するものでも最終的に二値判別するものであれば構わない。
ノードの判定結果が真(1)の場合、右の子ノードに進み、0(偽)の場合左の子ノードに進む。最終的に、f0乃至f6の7種類のバイナリ特徴のうちの3つを用いて3回の判別を行い、l0乃至l7の8つのリーフの内のいずれかに辿り付く。リーフ毎に、識別対象画像がいずれのクラスに属するものであるかを示す確率値がパラメータとして保持されている。識別対象画像に対し、同様の複数の他のツリーによる判別を行い、辿り付いた各リーフの各クラス確率を合算して、最も確率の高いクラスを判別結果として確定する。すなわちTree型識別器は、マルチクラスの識別が可能な識別器となっている。
図13(b)および(c)はFern型識別器を示している。Tree型識別器の各ノードは異なったバイナリ特徴を判別するのに対し、Fern型識別器では、同一階層のノードは全て同じバイナリ特徴を用いる。すなわち図13(a)のTreeと同形の8つのリーフに分類するFernは、同図(b)に示すようになる。ここで、f0乃至f2の3つのバイナリ特徴はツリーのいずれの子ノードに進んでも用いられることになる。そこで同図(c)に示すように、3つのバイナリ特徴の判別のみを先に行い、その判別結果(0or1)を連結したビット列を生成し、これをインデクスとしてリーフを決定するようにすることができる。例えばf0=0、f1=1、f2=0の判別結果だったとき、これを連結するとビット列(010)b=2が得られ、l2を選択することができる。これは同図(b)のツリーを順に辿っていった場合と同じ結果である。
さらに、f0乃至f2の3つのバイナリ特徴は、最終的にこの順序で判別結果を連結しさえすれば、どの順に判別処理を行っても構わない。
リーフに辿り付いた後の処理はTree型識別器と同様であり、Fern型識別器でもマルチクラスの識別が可能である。
<Fernsの学習処理>
図14は、Fern型識別器の識別処理辞書の生成に本発明を適用した学習処理フローを示している。このうちステップS1401乃至S1416の処理は、非特許文献3に開示される技術と本質的に同等であり、特にステップS1417が本発明特有の処理となる。以下、順に説明する。
まずステップS1401では、M×S個のバイナリ特徴を生成する。本実施形態では、上述の通り2画素を比較する差分特徴を用いるが、各特徴の2画素の位置はランダムに選択して構わない。ここでMは作成するFernの数を示し、SはFern1つ当たりで使用するバイナリ特徴の数である。生成したバイナリ特徴の参照画素位置等の情報は識別処理辞書に登録する。
次にステップS1402で、識別対象とするクラスのクラス番号cを選択する。識別対象クラス数は複数で、0から順に番号が付けてあるものとする。
ステップS1403では、各クラス確率値を算出するための二次元のヒストグラムHを初期化する。ヒストグラムHは、Fern番号mと、S個のバイナリ特徴の判別結果の連結値kをインデクスとし、H(m,k)がある1ビンを示す。各ビンH(m,k)はm番のFernの、図14(c)で説明したk番のリーフに対応する。
ステップS1404では、識別対象クラス毎に多数用意されている学習サンプルデータの内、選択されたクラスcのサンプルデータの1つを選択する。
ステップS1405では、学習するM個のFernを先頭から順に選択する。ここでmはFern番号(=0,1,…,M)とする。
ステップS1406では、選択されているサンプルデータに対し、m番目のFern用にステップS1401で生成されたS個のバイナリ特徴値を計算する。これはm×S乃至m×S+S−1番目のバイナリ特徴に相当する。
そしてステップS1407にて、これらS個のバイナリ特徴値を順に連結しSビットの値kを計算する。これはm番のFernの出力値である。
算出したkとmをインデクスとして、ステップS1408にて、ヒストグラムHのビンH(m,k)をカウントアップする。
ステップS1409では、選択中のサンプルデータに対し、全てのFernで用いるバイナリ特徴を計算してヒストグラムHに集計したかを判定し、完了していなければ、ステップS1405に戻って次の番号のFernに対応する処理を行う。
選択中のサンプルデータに対し全てのFernに対する処理が完了したら、ステップS1410にて、選択中のクラスcの全てのサンプルデータに対する処理が完了したかを判定する。完了していなければ、ステップS1404に戻って次のサンプルデータを選択して処理する。

クラスcの全てのサンプルデータに対する処理が完了したら、ステップS1411にて、ヒストグラムHの全てのビンに1を加算する。これは複数のFernにより得られた各クラスの確率を合算する際に積算することに対応し、一つでも確率0となる判別結果が含まれると、合算結果が0となって識別性能が落ちてしまうことに対応するものである。すなわち確率の低いクラスと判別される場合でも0とはならないようにしている。
ステップS1412では、クラスcの学習サンプルデータの数に、2のS乗の値を加えて確率計算用の分母値Dを計算する。2のS乗とはSビットの数kの取り得る値の数で、Fern一つ当たりのリーフの数すなわちヒストグラムHのm番Fern用のビンの数に相当する。ここで計算される値Dは、すなわち、ヒストグラムHのFern毎のビンの合計値に等しくなり、全てのFernに対して同じ値を用いることができる。
D=(クラスcサンプルデータ数)+ 2S …(8)
ステップS1413では、各ビンに対応する確率値Pm,c,kを計算する。
m,c,k = H(m,k) / D …(9)
確率値Pm,c,kは、Fern mのリーフkが保持するクラスcである確率パラメータに対応する。
ステップS1414では、確率値Pm,c,kを対数に変換する。これは、識別時に複数のFernより判別された各クラス確率を合算する際に、乗算する代わりに加算を利用できるようにするためである。この値をLpm,c,kと記す。
ステップS1415は、計算したLpm,c,kを全て識別処理辞書のFern mのリーフkのパラメータとして記憶する。
ステップS1416では、全てのクラスに対する学習が完了したかを判定し、完了していなければステップS1402に戻り、次のクラスcに対する学習を実行する。
全てのクラスに対する学習が完了したら、次にステップS1417にて、ステップS1401で生成したM×S個のバイナリ特徴を並べ替える処理を行う。上述した通り各FernのS個のバイナリ特徴fiは、最終的にビット連結する順序さえ保てば、どの順で算出しても構わない。本実施形態では上述の通りランダムに2画素の参照位置を決定した特徴を採用しているので、以下に例を示すように、算出順序を並べ替えることによってキャッシュ・ヒット率を上げてメモリの参照負荷を下げ、高速化を図ることができる。尚、本実施形態のターゲットシステムのキャッシュ・アーキテクチャは、2点参照特徴で比較的アクセス効率の良くなる2ウェイのセット・アソシエイティブ方式とするが、もちろんこれを限定するものではない。
図16に並べ替え処理の例を示す。同図(a)は、ステップS1401で生成されたバイナリ特徴のパラメータである。各バイナリ特徴に付、2点の参照点座標(x0,y0), (x1,y1)に加えて、ステップS1417で並べ替えることを見越して、Fern番号mとバイナリ特徴番号sもパラメータとして値を順に設定してある。
同図(b)が並べ替えた結果のバイナリ特徴である。同図(a)に対し、参照負荷を下げるため2点 (x0,y0), (x1,y1) の参照時にキャッシュ・ヒットしやすくするという観点で並べ替えたので、Fern番号やバイナリ特徴番号sの順序は、規則正しくない状態となっている。
図15は、参照負荷を下げるためのステップS1417の並べ替え処理の詳細フローである。尚、本実施形態において参照負荷の算出とは、各バイナリ特徴の2点のキャッシュ・ヒットを判定することである。キャッシュ・ヒットする点が多い程、参照負荷が少ないものとみなせる。ここでは図14のS1401で生成したM×Sのバイナリ特徴の元リスト(図16(a)に相当)を、識別処理時に計算すべき順に並べ替えた並べ替え特徴リスト(図16(b)に相当)を生成する。以下、順に説明する。
ステップS1501では、元リストの先頭のバイナリ特徴を取り出す。これはすなわち図16(a)のリストの1行目の特徴に相当する。このバイナリ特徴を、図16(b)に相当する並べ替え特徴リストの先頭に格納する。最初のバイナリ特徴を計算する段階では、メイン・メモリ上の識別対象データへのアクセス履歴は不定(例えばDMA等の別のバス・マスターにより転送される場合はアクセス履歴無し)であるので、いずれを選んでもキャッシュ・ヒットには影響しないもの見なしている。
次にステップS1502では、先頭バイナリ特徴の参照する2点の位置と識別対象画像格納領域の先頭アドレスを用いて、2点それぞれのタグとインデクスを計算する。この処理は上述の図7のステップS701、S702で説明した処理と同等である。
ステップS1503では、計算した2点のタグとインデクスを参照履歴テーブルに格納する。本実施形態では、上述の通りターゲットシステムのキャッシュ・アーキテクチャを2ウェイのセット・アソシエイティブ方式とするので、この参照履歴テーブルは同キャッシュのタグ・アレイと同等の情報を保持するものとする。また、データ・アレイのキャッシュ・ライン毎に、何時アクセスされたかのアクセス時期も、併せて保持するものとする。これは第3の実施形態で説明した、タグ・アレイの各タグのタイムスタンプに対応する情報であり、最も過去に参照されたデータはどれであるかを判別するために用いるが、学習処理システム上では時刻そのものである必要は無い。例えば、初期状態(つまり如何なるラインもキャッシュに格納されておらす不定の状態)では、最も古い時期であると判定される値(例えば0)を格納しておき、アクセスがある度に更新(例えば1ずつインクリメント)した値を格納すればよい。
ステップS1504では、次に選ぶ特徴候補に関する候補チェックリストを初期化する。候補チェックリストは、元リストのバイナリ特徴に先頭から順に0からM×S-1の特徴インデクスを振って、特徴インデクス毎に、当該特徴を次に計算するとした場合のキャッシュ・ヒット状態を保持するためのテーブルである。図16(c)にその一例を示すが、2点の参照点の内いずれか一方がキャッシュ・ヒットするかどうかを示すフラグ、キャッシュ・ヒットしなかった点について既に対応するキャッシュ・ラインに格納されているラインのアクセス時期を記憶する。図16(c)の、「アクセス時期0」と「アクセス時期1」がそれぞれ、特徴候補2点の内の座標(x0,y0)の点と(x1,y1)の点が、キャッシュ・ヒットしなかった場合にアクセス時期を記憶する領域である。2ウェイの場合、参照履歴テーブルには、ライン毎に2つのアクセス時期が保持されているが、このうちの古い方の値を選択して格納する。キャッシュ・ヒットした点については、ヒットしたことを示す特別な値(例えば−1等)を格納する。
次にステップS1505で、元リストの次のバイナリ特徴のパラメータを参照する。そしてこのバイナリ特徴について、ステップS1506にて、S1502と同様に参照点2点のタグとインデクスを計算する。
ステップS1507においては、参照履歴テーブルを参照して、これら2点が両方ともキャッシュ・ヒットするかどうかを判定する。
2点共キャッシュ・ヒットする場合は、最も参照負荷が少なくなるので、当該バイナリ特徴を次に計算するものと確定し、ステップS1517にて並べ替え特徴リストの次の行に格納する。尚、本実施形態においては、2点共キャッシュ・ヒットする場合は、このように最優先で次に計算する特徴として確定するので、上述の候補チェックリストは使用しなくてよい。従って候補チェックリストには、2点がキャッシュ・ヒットしたことを記憶するようにはなっていない。
2点共にキャッシュ・ヒットしなかった場合は、ステップS1508にて1点キャッシュ・ヒットするかをどうかチェックする。
さらにステップS1509において、キャッシュ・ヒットしなかった点について、参照履歴テーブルの情報に基づき、入れ替え対象となるキャッシュ上のラインのアクセス時期を確認する。
これらのチェックした結果は、ステップS1510にて、特徴インデクスと共に候補チェックリストに記憶する。尚、キャッシュ・ヒットした点については、ヒットしたことが判別可能な値(例えば最新アクセス時期)をアクセス時期の領域に格納しておく。
ステップS1511では、元リストにおける全ての残りのバイナリ特徴のチェックが完了したかどうかを確認し、完了していない場合はステップS1505へ戻って次の候補をチェックする。
元リストにおける全ての残りのバイナリ特徴のチェックが完了したら、ステップS1514にて候補チェックリストを確認する。この時点で最も参照負荷の少ない2点共キャッシュ・ヒットする特徴は無かったことが確定しているので、次に参照負荷の少ない1点キャッシュ・ヒットした特徴があったかどうかを確認する。
1点ヒットした特徴が1つ以上あれば、ステップS1515へ進み、これらの中でヒットしなかった点の対応するキャッシュ・ラインのアクセス時期が最も古い特徴を選択する。
1点ヒットした特徴が1つもなければ、候補チェックリストには1点もキャッシュ・ヒットしない特徴のみが格納されているので、これらの中で2点の内の対応キャッシュ・ラインのアクセス時期が古い方を比較し、これが最も古い時期の特徴を選択する。
すなわち本実施形態では、1点若しくは2点共キャッシュ・ヒットしなかった場合は、最も古いアクセス時期のキャッシュ・ラインを優先的に入れ替えるものとしているが、これは必ずしも参照負荷を最小にするものではない。より最適化するには、予測的な処理を含めて将来的にアクセスされる可能性の高いラインは入れ替え優先度を下げるようにすればよいが、処理が複雑になるのでここでは説明しない。
そしてステップS1517にて、選択したバイナリ特徴を、並べ替え特徴リストの次行に格納する。続くステップS1518では、参照履歴テーブルを更新する。今回確定したバイナリ特徴のキャッシュ・ヒットしない参照点についてタグとインデクスを計算して対応するタグ・アレイ相当の情報を更新する。さらにヒットするしないにかかわらず2点の参照点に対応するキャッシュ・ラインのアクセス時期を最新に更新する。そしてステップS1519では、元リストから今回選択したバイナリ特徴を取り除く。尚、ここでは選択済フラグによる管理として、選択済の特徴が次回以降選択されないようにすれば、実際に元リストから当該特徴の情報を削除しなくとも良い。ステップS1520では、元リストにまだ選択されていない残りのバイナリ特徴があるかどうかを確認し、ある場合はステップS1504に戻って、次の特徴の選択処理を行う。
以上の処理を元リストのバイナリ特徴が無くなるまで続けることにより、キャッシュ・ヒットしやすく、キャッシュ・ヒットしない場合は最も古いアクセス時期のキャッシュ・ラインを入れ替えるアクセス順序となる並べ替え特徴リストが完成する。ターゲットシステム上において、これを識別処理辞書として登録することで、元リストの順にバイナリ特徴計算を行った場合と同一識別精度でありながら、全体のキャッシュ・ヒット率が向上した参照負荷の少ないより高速な識別処理を実現できる。
<Fernsの識別処理>
図17に、生成した識別処理辞書を用いてターゲットシステム上で実行される識別処理のフローを示す。
まずステップS1701にて識別対象データを入力する。実施形態と同じく、必要な前処理は事前になされているものとする。
ステップS1702では、識別処理辞書から、先の学習処理で生成されたアクセス順に並べ替えられたバイナリ特徴リストを読み出し、順次画素参照して計算する。上述の通り、このときのキャッシュ・ヒット率が向上するようにリストが生成されているので、高速に処理可能である。ここで計算したM×S個のバイナリ特徴は、並べ替え前の元の順序が再現できるように、例えば二次元配列状のデータとして一式保持しておく。
次にステップS1703で、クラス別確率値累積ヒストグラムHpを初期化する。このヒストグラムは識別対象データが各クラスである確率値を集計するためのもので、ビンの数は識別するクラスの数に一致する。ここでは全てのビンを0クリアする。
ステップS1704では、Fernの番号mを0から順に1つずつ選択する。
ステップS1705ではm番目のFernの出力値(=バイナリ特徴値の連結値)を計算する。ここではステップS1702で計算したバイナリ特徴値の内、m番目のFern用であるm×Sからm×S+S−1番の特徴値を参照しSビットの連結値kを計算する。但し、m×Sからm×S+S−1番とは、上述の学習処理で説明した元リスト上でのインデクス番号に対応する。
次にステップS1706で、クラスcを番号0から順に選択する。そしてステップS1707で、識別処理辞書に登録されている、m番Fernが連結値kを取る場合に、クラスcである対数確率値Lpm,c,kを参照し、ステップS1709にて、ヒストグラムHpのインデクスcのビンに、この値を加算する。
ステップS1701では、識別対象の全てのクラスcに対する対数確率値の加算が完了されたかを確認し、完了していなければステップS1706に戻って次のクラスcを選択する。
ステップS1711では、全てのFernに対してクラス別確率集計処理が終わったかを確認し、完了していなければステップS1704に戻って次のFern番号mに関する処理を行う。そして最終的にステップS1712にて、累積ヒストグラムHpの最大値となるビンを選択し対応するインデクスを識別結果クラスCとして確定する。
以上説明したように、本実施形態によればFern型識別器のバイナリ特徴の計算時に、キャッシュ・ヒット率を向上させるように並べ替えたバイナリ特徴リストを用いるので、並べ替えを行わない場合と全く同等の精度でより高速な処理を実現可能となる。このように、一旦生成した識別辞書を、学習後に「チューニング」することにより、本発明を適用するようにすることが可能である。尚、本実施形態のキャッシュ・ヒットする点の数により参照負荷を算出するという考え方は、他の複数点を参照するバイナリ特徴(例えばIntegral imageの4点参照に基づく矩形内総和値等)にも適用可能であることは言うまでもない。
尚、以上すべての実施形態について、説明を容易にするため、識別処理辞書そのものは識別対象データのキャッシュ動作に影響を与えないところに配置するものとした。例えば、メイン・メモリの非キャッシュ領域や、別のキャッシュの担当領域、或いはROM等の他の記憶領域に配置してある場合等である。しかしながら、もちろん識別処理辞書を識別対象データのキャッシュ動作に影響する領域に配置する場合であっても、本発明を適用することは可能で、この場合は辞書アクセスを含めたシミュレーションによりキャッシュ・ヒット判定するようにすればよい。
以上、本発明の好ましい実施形態について詳述したが、本発明の考え方は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
例えば、上述の実施形態で述べたタイプの識別処理だけでなく、事前に定めた情報処理規則に則り様々な処理を行う情報処理に適用することができるのは言うまでもない。すなわち情報処理規則とは、識別処理における識別辞書に限定されるものではなく、メモリへのアクセス順序を規定する様々な規則が含まれる。上述の実施形態で述べたように、特徴量の選択時に参照負荷を考慮するか、一通り特徴が揃った後に参照負荷を低減させる計算順序を設定するか、或いはこれらの考え方を部分的に組み合わせる等して適用することができる。
また、参照負荷の算出方法として、上述の各実施形態のようにキャッシュ・ヒット判定結果を用いるだけではなく、他の方法により算出することも可能である。例えば、所望の要素データにアクセスして演算結果を得るまでにターゲットシステムが要するトータルのシステム・クロック数をシミュレーションにより算出するようにしても良い。
またターゲットシステムが、フル・アソシエイティブ・キャッシュ等の他のキャッシュ・アーキテクチャや様々なライン・サイズであってももちろん適用可能である。識別対象データのメモリへの格納規則が、上述のラスタ・スキャンやZ-orderingとは異なる方式であっても、適用可能であることは言うまでもない。もちろん情報処理の対象データは画像データに限定されず、配列状の特徴量データや音声データ等、様様な対象データについて同様に適用可能であることは言うまでもない。
(その他の実施例)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。

Claims (14)

  1. プロセッサとメモリとを有するターゲットシステムにて、対象データの複数の要素に対して判別処理を順次実行するための情報処理規則を生成する情報処理装置であって、
    前記ターゲットシステムの構成要素に係る構成情報と学習サンプルデータとを入力する入力手段と、
    前記学習サンプルデータにおいて参照された要素の位置の履歴を保持する保持手段と、
    前記学習サンプルデータに関して複数の要素の位置のそれぞれに対する判別処理の誤り率を算出する誤り率算出手段と、
    入力した前記構成情報に従い、前記履歴に基づくキャッシュヒットに基づいて、前記プロセッサが前記判別処理を実行する際の、前記メモリにおける前記対象データの複数の要素の位置のそれぞれを参照するための参照負荷を算出する負荷算出手段と、
    前記学習サンプルデータの複数の要素の位置のそれぞれに対する前記判別処理の誤り率と前記参照負荷とに基づいて前記対象データの複数の要素に対する判別処理において参照すべき前記要素の位置と参照順序を表わす情報処理規則を決定する決定手段と
    を有することを特徴とする情報処理装置。
  2. 前記対象データは、画像データ若しくは配列状の特徴量データであることを特徴とする請求項1に記載の情報処理装置。
  3. 前記決定手段が決定する情報処理規則における情報処理、前記対象データが特定のクラスであるか否かを識別するクラス識別処理であることを特徴とする請求項1に記載の情報処理装置。
  4. 前記算出手段は、記プロセッサが前記メモリの内のデータを参照する際の効率を向上するためのキャッシュ・アーキテクチャと、前記対象データの各要素を前記メモリ上に所定の配置で格納する格納規則とに従って前記参照負荷を算出することを特徴とする請求項1に記載の情報処理装置。
  5. 前記格納規則はラスタ・スキャン方式であって、前記算出手段は、参照済みの前記対象データの前記要素に対し、キャッシュ・ラインに収まる範囲で水平方向に近傍の位置の前記要素を、負荷が小であるものとして前記参照負荷を算出することを特徴とする請求項4に記載の情報処理装置。
  6. 前記格納規則はZ-ordering方式であって、前記算出手段は、参照済みの前記対象データの前記要素に対し、Z-ordering方式の並びでキャッシュ・ラインに収まる範囲の近傍の位置の前記要素を、負荷が小であるものとして前記参照負荷を算出することを特徴とする請求項4に記載の情報処理装置。
  7. 前記キャッシュ・アーキテクチャは、ダイレクト・マップ方式であって、前記対象データの前記要素の前記位置の履歴には、キャッシュ・ライン毎に直前1回分以上の参照位置に相当する情報を含むことを特徴とする請求項4に記載の情報処理装置。
  8. 前記キャッシュ・アーキテクチャは、セット・アソシエイティブ・キャッシュ方式であって、
    前記処理対象データの前記要素の前記位置の履歴には、キャッシュ・ライン毎に、前記セット・アソシエイティブ・キャッシュ方式のウェイ数に等しい数ぶんの直前の参照位置に相当する情報を含むことを特徴とする請求項4に記載の情報処理装置。
  9. 前記決定手段は、前記参照すべき前記要素の位置を、前記参照負荷が少なくなるように逐次選択し、選択した順序を参照する順序として決定することを特徴とする請求項1に記載の情報処理装置。
  10. 前記決定手段は、前記情報処理を実行するために必要な前記要素の位置を一通り選択した後に、前記参照負荷が少なくなるように参照する順序を決定することを特徴とする請求項1に記載の情報処理装置。
  11. 請求項1に記載の情報処理装置で生成された情報処理規則を用いて、生成した前記情報処理規則を参照し、前記対象データに対する情報処理を実行することを特徴とする電子デバイス。
  12. プロセッサとメモリとを有するターゲットシステムにおける、対象データの複数の要素に対して判別処理を順次実行するための情報処理規則を生成する情報処理装置の制御方法であって、
    入力手段が、前記ターゲットシステムの構成要素に係る構成情報と学習サンプルデータとを入力する入力工程と、
    保持手段が、前記学習サンプルデータにおいて参照された要素の位置の履歴を保持する保持工程と、
    誤り率算出手段が、前記学習サンプルデータに関して複数の要素の位置のそれぞれに対する判別処理の誤り率を算出する誤り率算出工程と、
    付加算出手段が、入力した前記構成情報に従い、前記履歴に基づくキャッシュヒットに基づいて、前記プロセッサが前記判別処理を実行する際の、前記メモリにおける前記対象データの複数の要素の位置のそれぞれを参照するための参照負荷を算出する負荷算出工程と、
    決定手段が、前記学習サンプルデータの複数の要素の位置のそれぞれに対する前記判別処理の誤り率と前記参照負荷とに基づいて前記対象データの複数の要素に対する判別処理において参照すべき前記要素の位置と参照順序を表わす情報処理規則を決定する決定工程と
    を有することを特徴とする情報処理装置の制御方法。
  13. コンピュータに読み込ませ実行させることで、前記コンピュータを、請求項1乃至10のいずれか1項に記載の情報処理装置の各手段として機能させるためのプログラム。
  14. 請求項13に記載のプログラムを格納したことを特徴とするコンピュータが読み取り可能な記憶媒体。
JP2012259059A 2012-11-27 2012-11-27 情報処理装置及びその制御方法及び電子デバイス及びプログラム及び記憶媒体 Active JP6161266B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2012259059A JP6161266B2 (ja) 2012-11-27 2012-11-27 情報処理装置及びその制御方法及び電子デバイス及びプログラム及び記憶媒体
US14/084,211 US9208374B2 (en) 2012-11-27 2013-11-19 Information processing apparatus, control method therefor, and electronic device
CN201310618198.5A CN103838570B (zh) 2012-11-27 2013-11-27 信息处理装置及其控制方法、以及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012259059A JP6161266B2 (ja) 2012-11-27 2012-11-27 情報処理装置及びその制御方法及び電子デバイス及びプログラム及び記憶媒体

Publications (3)

Publication Number Publication Date
JP2014106736A JP2014106736A (ja) 2014-06-09
JP2014106736A5 JP2014106736A5 (ja) 2016-01-21
JP6161266B2 true JP6161266B2 (ja) 2017-07-12

Family

ID=50773352

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012259059A Active JP6161266B2 (ja) 2012-11-27 2012-11-27 情報処理装置及びその制御方法及び電子デバイス及びプログラム及び記憶媒体

Country Status (3)

Country Link
US (1) US9208374B2 (ja)
JP (1) JP6161266B2 (ja)
CN (1) CN103838570B (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2471647B (en) * 2009-06-16 2016-03-23 Aptina Imaging Corp Use of Z-order data in an image sensor
US9398297B2 (en) * 2013-11-04 2016-07-19 Intel Corporation Integral image coding
US9857864B1 (en) * 2014-10-29 2018-01-02 Amazon Technologies, Inc. Systems and methods for reducing power consumption in a memory architecture
US9460338B2 (en) * 2014-12-10 2016-10-04 Intel Corporation Face detection method and apparatus with lookup table
US9471836B1 (en) * 2016-04-01 2016-10-18 Stradvision Korea, Inc. Method for learning rejector by forming classification tree in use of training images and detecting object in test images, and rejector using the same
JP6748372B2 (ja) * 2016-06-10 2020-09-02 日本電気株式会社 データ処理装置、データ処理方法、およびデータ処理プログラム
CN108734059B (zh) * 2017-04-18 2022-02-11 深圳市丰巨泰科电子有限公司 室内移动机器人物体识别方法
CN107622020B (zh) * 2017-09-06 2020-09-25 网宿科技股份有限公司 一种数据存储方法、访问方法及装置
US10373291B1 (en) * 2018-01-31 2019-08-06 Google Llc Image transformation for machine learning
JP7040484B2 (ja) * 2019-03-14 2022-03-23 オムロン株式会社 制御システム、サポート装置、およびサポートプログラム
CN113033789B (zh) * 2019-12-24 2024-03-26 中科寒武纪科技股份有限公司 用于保序的总线***、集成电路装置、板卡及保序方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4202033B2 (ja) * 2001-09-05 2008-12-24 三菱電機株式会社 並列画像処理装置および並列画像処理方法
GB2409028A (en) 2003-12-11 2005-06-15 Sony Uk Ltd Face detection
JP2008015562A (ja) * 2006-06-30 2008-01-24 Kenichiro Ishikawa キャッシュミス/ヒット予想
JP4553044B2 (ja) 2008-09-26 2010-09-29 ソニー株式会社 集団学習装置及び方法
JP5294798B2 (ja) * 2008-10-24 2013-09-18 キヤノン株式会社 画像処理装置及び画像処理方法
JP5235691B2 (ja) 2009-01-13 2013-07-10 キヤノン株式会社 情報処理装置及び情報処理方法
JP2010165052A (ja) * 2009-01-13 2010-07-29 Canon Inc 画像処理装置及び画像処理方法
JP2010244327A (ja) * 2009-04-07 2010-10-28 Toshiba Corp キャッシュシステム
JP5371541B2 (ja) * 2009-05-19 2013-12-18 キヤノン株式会社 データ処理装置及びその処理方法
JP5625643B2 (ja) * 2010-09-07 2014-11-19 ソニー株式会社 情報処理装置、および情報処理方法
JP5748472B2 (ja) * 2010-12-15 2015-07-15 富士フイルム株式会社 オブジェクト判別装置、方法、及びプログラム

Also Published As

Publication number Publication date
CN103838570B (zh) 2017-04-19
US9208374B2 (en) 2015-12-08
JP2014106736A (ja) 2014-06-09
CN103838570A (zh) 2014-06-04
US20140147034A1 (en) 2014-05-29

Similar Documents

Publication Publication Date Title
JP6161266B2 (ja) 情報処理装置及びその制御方法及び電子デバイス及びプログラム及び記憶媒体
CN110837836B (zh) 基于最大化置信度的半监督语义分割方法
Ando et al. Deep over-sampling framework for classifying imbalanced data
JP7193252B2 (ja) 画像の領域のキャプション付加
US10909455B2 (en) Information processing apparatus using multi-layer neural network and method therefor
CN110263659B (zh) 一种基于三元组损失和轻量级网络的指静脉识别方法及***
US9542621B2 (en) Spatial pyramid pooling networks for image processing
US20170220864A1 (en) Method for Implementing a High-Level Image Representation for Image Analysis
JP4545641B2 (ja) 類似画像検索方法,類似画像検索システム,類似画像検索プログラム及び記録媒体
CN110381392B (zh) 一种视频摘要提取方法及其***、装置、存储介质
WO2016170965A1 (ja) オブジェクト検出方法及び画像検索システム
CN111709406A (zh) 文本行识别方法及装置、可读存储介质、电子设备
CN108154191B (zh) 文档图像的识别方法和***
CN115443490A (zh) 影像审核方法及装置、设备、存储介质
CN111401374A (zh) 基于多任务的模型训练方法、字符识别方法及装置
Wang et al. Multiscale deep alternative neural network for large-scale video classification
CN112232346A (zh) 语义分割模型训练方法及装置、图像语义分割方法及装置
CN114003758B (zh) 图像检索模型的训练方法和装置以及检索方法和装置
US20220270341A1 (en) Method and device of inputting annotation of object boundary information
Kishorjit Singh et al. Image classification using SLIC superpixel and FAAGKFCM image segmentation
Zhang et al. Large-scale underwater fish recognition via deep adversarial learning
US11410016B2 (en) Selective performance of deterministic computations for neural networks
US9858293B2 (en) Image processing apparatus and image processing method
CN117011751A (zh) 使用变换器网络分割视频图像序列
Huang et al. Bidirectional tracking scheme for visual object tracking based on recursive orthogonal least squares

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151127

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151127

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160916

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161031

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161228

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170515

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170613

R151 Written notification of patent or utility model registration

Ref document number: 6161266

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151