(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-12-26
(45)【発行日】2023-01-10
(54)【発明の名称】3次元画像処理におけるデータの読み書き方法とシステム、記憶媒体及び端末
(51)【国際特許分類】
G06T 1/60 20060101AFI20221227BHJP
G06F 12/00 20060101ALI20221227BHJP
【FI】
G06T1/60 450D
G06F12/00 580
(21)【出願番号】P 2021520315
(86)(22)【出願日】2019-09-25
(86)【国際出願番号】 CN2019107678
(87)【国際公開番号】W WO2020073801
(87)【国際公開日】2020-04-16
【審査請求日】2021-04-08
(31)【優先権主張番号】201811179323.6
(32)【優先日】2018-10-10
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】519371507
【氏名又は名称】芯原微電子(上海)股▲ふん▼有限公司
(73)【特許権者】
【識別番号】510102188
【氏名又は名称】ベリシリコン ホールディングス カンパニー, リミテッド
【住所又は居所原語表記】P.O. Box 309, Ugland House, Grand Cayman KY1-1104, Cayman Islands
(73)【特許権者】
【識別番号】521148094
【氏名又は名称】芯原微電子(南京)有限公司
【氏名又は名称原語表記】VERISILICON MICROELECTRONICS(NANJING)CO.,LTD.
【住所又は居所原語表記】22/F,Block B,Chuangzhi Building 17 Xinghuo Road,Jiangbei New District Nanjing,Jiangsu 211500 China
(74)【代理人】
【識別番号】100131381
【氏名又は名称】黒田 雄一
(72)【発明者】
【氏名】崔 中浩
(72)【発明者】
【氏名】羅 文桀
(72)【発明者】
【氏名】張 珂
(72)【発明者】
【氏名】張 慧明
【審査官】板垣 有紀
(56)【参考文献】
【文献】特開2018-147182(JP,A)
【文献】LU, Liqiang et al.,Evaluating Fast Algorithms for Convolutional Neural Networks on FPGAs,2017 IEEE 25th Annual International Symposium on Field-Programmable Custom Computing Machines (FCCM),米国,IEEE,2017年04月30日,pp.101-108,<URL:https://ieeexplore.ieee.org/document/7966660>
【文献】MARTINS, Leonardo et al.,Accelerating Curvature Estimate in 3D Seismic Data Using GPGPU,2014 IEEE 26th International Symposium on Computer Architecture and High Performance Computing,米国,IEEE,2014年10月22日,pp.105 - 111,<URL:https://ieeexplore.ieee.org/document/6970653>
【文献】加藤 英樹,高並列ニューロコンピュータ,FUJITSU,日本,富士通株式会社,1991年05月10日,第42巻 第3号,pp.213~221
(58)【調査した分野】(Int.Cl.,DB名)
G06T 1/60
G06F 12/00
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
ダブルデータレートメモリ(DDR)及びサーキュラーバッファ並びに多層ネットワークを用いた画像処理アルゴリズムを用いて行う3次元画像処理におけるデータの読み書き方法において、
垂直スライド技術によって3次元画像を水平方向に分割することで、前記3次元画像を少なくとも2つのサブ画像に分け、各サブ画像について、前記サブ画像の処理データを
前記サーキュラーバッファに記憶し、前記サブ画像の処理が完了したあと、前記サーキュラーバッファ内には次のサブ画像が必要とする重畳部分のデータが保持されるステップと、
前記多層ネットワークのうち隣接する層間でデータのやり取りを前記サーキュラーバッファ経由でのみ行うことができる層数から成るセグメントを、前記サーキュラーバッファのサイズに基づいて定め、かつ、前記多層ネットワークを少なくとも2つの
前記セグメントに分割することで、
前記各セグメントにおける隣接する層間のデータを
前記サーキュラーバッファ経由でのみやり取りし、
前記DDR経由ではやり取りしないようにするステップとを含むことを特徴とする3次元画像処理におけるデータの読み書き方法。
【請求項2】
前記各サブ画像が占有する
前記サーキュラーバッファのサイズは、サブ画像Xのサイズ*(サブ画像Yのサイズ+オーバーラップのサイズ)*サブ画像Zのサイズであり、このうち、サブ画像Xのサイズ、サブ画像Yのサイズ、サブ画像Zのサイズ及びオーバーラップのサイズとは、それぞれ、サブ画像のX方向のサイズ、Y方向のサイズ、Z方向のサイズ、及び重畳部分のサイズのことであることを特徴とする請求項1に記載の3次元画像処理におけるデータの読み書き方法。
【請求項3】
前記各セグメントにおいて、最後の層以外の各層の出力データは
前記サーキュラーバッファに書き込まれ、第1層以外の各層はいずれも前記
サーキュラーバッファからデータを読み取ることを特徴とする請求項1に記載の3次元画像処理におけるデータの読み書き方法。
【請求項4】
ニューラルネットワークの3次元画像処理に応用されることを特徴とする請求項1に記載の3次元画像処理におけるデータの読み書き方法。
【請求項5】
ダブルデータレートメモリ(DDR)及びサーキュラーバッファ並びに多層ネットワークを用いた画像処理アルゴリズムを用いて行う3次元画像処理におけるデータの読み書きシステムにおいて、
サーキュラーバッファモジュールとセグメントバッファモジュールを含み、
前記サーキュラーバッファモジュールは、垂直スライド技術によって3次元画像を水平方向に分割することで、前記3次元画像を少なくとも2つのサブ画像に分け、各サブ画像について、前記サブ画像の処理データを
前記サーキュラーバッファに記憶し、前記サブ画像の処理が完了したあと、前記サーキュラーバッファ内には次のサブ画像が必要とする重畳部分のデータが保持され、
前記セグメントバッファモジュールは、
前記多層ネットワークのうち隣接する層間でデータのやり取りを前記サーキュラーバッファ経由でのみ行うことができる層数から成るセグメントを、前記サーキュラーバッファのサイズに基づいて定め、かつ、前記多層ネットワークを少なくとも2つの
前記セグメントに分割することで、
前記各セグメントにおける隣接する層間のデータを
前記サーキュラーバッファ経由でのみやり取りし、
前記DDR経由ではやり取りしないようにすることを特徴とする3次元画像処理におけるデータの読み書きシステム。
【請求項6】
前記各サブ画像が占有する
前記サーキュラーバッファのサイズは、サブ画像Xのサイズ*(サブ画像Yのサイズ+オーバーラップのサイズ)*サブ画像Zのサイズであり、このうち、サブ画像Xのサイズ、サブ画像Yのサイズ、サブ画像Zのサイズ及びオーバーラップのサイズとは、それぞれ、サブ画像のX方向のサイズ、Y方向のサイズ、Z方向のサイズ、及び重畳部分のサイズのことであることを特徴とする請求項5に記載の3次元画像処理におけるデータの読み書きシステム。
【請求項7】
前記各セグメントにおいて、最後の層以外の各層の出力データは
前記サーキュラーバッファに書き込まれ、第1層以外の各層はいずれも前記
前記サーキュラーバッファからデータを読み取ることを特徴とする請求項5に記載の3次元画像処理におけるデータの読み書きシステム。
【請求項8】
ニューラルネットワークの3次元画像処理に応用されることを特徴とする請求項5に記載の3次元画像処理におけるデータの読み書きシステム。
【請求項9】
コンピュータプログラムが記憶されている記憶媒体であって、
当該プログラムは、プロセッサで実行される際に請求項1~4のいずれか1項に記載の3次元画像処理におけるデータの読み書き方法を実現することを特徴とする記憶媒体。
【請求項10】
プロセッサ及びメモリを含み、
前記メモリはコンピュータプログラムを記憶するために用いられ、
前記プロセッサは、前記メモリに記憶されているコンピュータプログラムを実行することで、
請求項1~4のいずれか1項に記載の3次元画像処理におけるデータの読み書き方法を実行
することを特徴とする端末。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、バッファ応用の技術分野に関し、特に、3次元画像処理におけるデータの読み書き方法とシステム、記憶媒体及び端末に関する。
【背景技術】
【0002】
デジタル画像処理(Digital Image Processing)とは、コンピュータによって画像のノイズ除去、強調、復元、分割、特徴抽出等の処理を行う方法及び技術のことである。3次元画像処理アルゴリズムでは、複数の層に分けて順番に処理を行うことが多い。各層には入力画像と出力画像が存在するため、3次元画像処理の具体的な実現過程では膨大なメモリ帯域幅を占有する必要がある。例えば、ニューラルネットワークAlex netでは、724M MACsの演算量に対して3000Mのデータアクセスが必要である。よって、メモリの全てにオフチップ(off-chip)DRAMを使用すると、膨大な帯域幅によって多大な消費電力や遅延が発生し、システム性能に深刻な影響が及ぶ。このことから、データの読み書きが3次元画像処理のネックとなっている。
【0003】
従来技術では、ダブルデータレートメモリ(Double Data Rate、DDR)と算術論理演算装置(Arithmetic Logical Unit、ALU)の間に多段ローカルメモリを増設し、可能な限りバッファリングするとともに、バッファの内容を再利用することがDDRの帯域幅を効果的に減少させる方法とされている。例えば、DRAMとALUの間のグローバルバッファ(global buffer)によって、各ALUの間に互いにアクセス可能なローカル共有メモリを増設し、ALUの内部にレジスタファイル(Register file)を増設する。層を追うごとにバッファレベルを低下させることで、各レベルのメモリユニットがユニットデータを処理する際の消費電力とアクセス遅延も段階的に低下する。この場合には、往々にしてハードウェアがより複雑となり、複雑度に応じて面積も増大する。
【0004】
このほか、データのビット幅を下げることで帯域幅は減少する。具体的には、量子化によって低いビット(bit)数でデータを表し、処理を要するデータ量を減らしたあと、出力結果を逆量子化する。当該方法によれば、ALUがよりシンプルとなるが、データのビット幅が低下するに伴って、自ずと演算精度が低下してしまう。また、ニューラルネットワークの場合には、データを再トレーニングする必要も生じる。
【0005】
画像処理アルゴリズムによる画像処理は一定の順序で行われる。そのため、データストリームを分析及び制御し、バッファ(buffer)を合理的に使用してバッファリングすることが可能である。また、画像を小さなタイル(tile)に分割して順に処理する。当該方法によれば、メモリの読み取り幅が小さくなる。バッファリングはタイル単位で行われるため、バッファリングの単位が小さくなり、より小さなメモリ管理ユニット(Memory Management Unit、MMU)又はキャッシュ(cache)ユニットを使用可能となる。しかし、隣接するタイル間には重畳データが存在する。そのため、タイルの境界に位置する点を処理したい場合には、隣接するタイルのデータに繰り返しアクセスせねばならない。タイル間における共通して処理せねばならないデータをオーバーラップ(overlap)データと称する。タイルをバッファリングする場合には、オーバーラップデータについてもバッファリングする必要がある。且つ、1つの層の操作が完了しなければ次の層を操作することができず、層間の結果をDDR内に記憶するために膨大な帯域幅が必要となるほか、バッファ内に記憶するために膨大なバッファ面積も必要となる。そのため、如何にしてバッファの利用率を提供するかが重要な技術研究の方向性となっている。
【発明の概要】
【発明が解決しようとする課題】
【0006】
上述した従来技術の欠点に鑑みて、本発明の目的は、3次元垂直スライド(vertical sliding)技術及びサーキュラーバッファ(circular buffer)によって、限られたバッファ状況で3次元画像処理におけるバッファ利用率を極めて大きく向上させ、重畳部分の処理を減少させることで、画像処理における帯域幅の消耗及び読み書き遅延の問題を全体的に低減させる3次元画像処理におけるデータの読み書き方法とシステム、記憶媒体及び端末を提供することである。
【課題を解決するための手段】
【0007】
上記の目的及びその他関連の目的を実現するために、本発明は、3次元画像処理におけるデータの読み書き方法を提供する。当該方法は、垂直スライド技術によって3次元画像を水平方向に分割することで、前記3次元画像を少なくとも2つのサブ画像に分け、各サブ画像について、前記サブ画像の処理データをサーキュラーバッファに記憶し、前記サブ画像の処理が完了したあと、前記サーキュラーバッファ内には次のサブ画像が必要とする重畳部分のデータが保持されるステップと、画像処理アルゴリズムの多層ネットワークを少なくとも2つのセグメントに分割することで、各セグメントにおける隣接する層間のデータをバッファ経由でのみやり取りし、DDR経由ではやり取りしないようにするステップとを含む。上記のセグメントは、多層ネットワークのうち隣接する層間でのデータのやり取りをサーキュラーバッファ経由でのみ行うことができるように、サーキュラーバッファのサイズに基づいて定められた層数から成る。
【0008】
本発明の一実施例において、各サブ画像が占有するサーキュラーバッファのサイズは、サブ画像Xのサイズ*(サブ画像Yのサイズ+オーバーラップのサイズ)*サブ画像Zのサイズである。このうち、サブ画像Xのサイズ、サブ画像Yのサイズ、サブ画像Zのサイズ及びオーバーラップのサイズとは、それぞれ、サブ画像のX方向のサイズ、Y方向のサイズ、Z方向のサイズ、及び重畳部分のサイズのことである。
【0009】
本発明の一実施例において、各セグメントにおいて、最後の層以外の各層の出力データはバッファに書き込まれ、第1層以外の各層はいずれも前記バッファからデータを読み取る。
【0010】
本発明の一実施例では、ニューラルネットワークの3次元画像処理に応用する。
【0011】
然るべく、本発明は3次元画像処理におけるデータの読み書きシステムを提供する。当該システムは、サーキュラーバッファモジュールとセグメントバッファモジュールを含む。
【0012】
前記サーキュラーバッファモジュールは、垂直スライド技術によって3次元画像を水平方向に分割することで、前記3次元画像を少なくとも2つのサブ画像に分ける。各サブ画像について、前記サブ画像の処理データをサーキュラーバッファに記憶する。前記サブ画像の処理が完了したあと、前記サーキュラーバッファ内には次のサブ画像が必要とする重畳部分のデータが保持される。
【0013】
前記セグメントバッファモジュールは、画像処理アルゴリズムの多層ネットワークを少なくとも2つのセグメントに分割することで、各セグメントにおける隣接する層間のデータをバッファ経由でのみやり取りし、DDR経由ではやり取りしないようにする。
【0014】
本発明の一実施例において、各サブ画像が占有するサーキュラーバッファのサイズは、サブ画像Xのサイズ*(サブ画像Yのサイズ+オーバーラップのサイズ)*サブ画像Zのサイズである。このうち、サブ画像Xのサイズ、サブ画像Yのサイズ、サブ画像Zのサイズ及びオーバーラップのサイズとは、それぞれ、サブ画像のX方向のサイズ、Y方向のサイズ、Z方向のサイズ、及び重畳部分のサイズのことである。
【0015】
本発明の一実施例において、各セグメントにおいて、最後の層以外の各層の出力データはバッファに書き込まれ、第1層以外の各層はいずれも前記バッファからデータを読み取る。
【0016】
本発明の一実施例では、ニューラルネットワークの3次元画像処理に応用する。
【0017】
本発明は、記憶媒体を提供する。当該記憶媒体にはコンピュータプログラムが記憶されている。当該プログラムは、プロセッサで実行される際に上記の3次元画像処理におけるデータの読み書き方法を実現する。
【0018】
本発明は、端末を提供する。当該端末は、プロセッサ及びメモリを含む。前記メモリは、コンピュータプログラムを記憶するために用いられる。前記プロセッサは、前記メモリに記憶されているコンピュータプログラムを実行することで、前記端末に上記の3次元画像処理におけるデータの読み書き方法を実行させる。
【発明の効果】
【0019】
上述したように、本発明で記載する3次元画像処理におけるデータの読み書き方法とシステム、記憶媒体及び端末は、以下の有益な効果を有する。
【0020】
(1)3次元垂直スライド技術とサーキュラーバッファにより、重畳部分の処理を減少させることで、限りあるバッファ状況で3次元画像処理におけるバッファの利用率を極めて大きく向上させる。
【0021】
(2)ネットワーク全体を分析することで、限りあるバッファ下において層間の結果を必ずしもDDR経由でやり取りする必要がなくなるため、DDRへのアクセスが減少する。これにより、画像処理アルゴリズムにおける帯域幅の需要が減少し、読み書きの遅延や消費電力が低減する。
【0022】
(3)ハードウェア設計において、より小さなバッファ(buffer)面積を使用可能となる。
【図面の簡単な説明】
【0023】
【
図1】
図1は、本発明の3次元画像処理におけるデータの読み書き方法の一実施例のフローチャートを示す。
【
図2】
図2は、画像処理アルゴリズムのデータ構造の概略図を示す。
【
図3】
図3は、一実施例における3次元画像を垂直スライドによりサブ画像とする場合の概略図を示す。
【
図4】
図4は、他の実施例における3次元画像を垂直スライドによりサブ画像とする場合の概略図を示す。
【
図5】
図5は、一実施例におけるサブ画像の対応関係の概略図を示す。
【
図6】
図6は、一実施例における3次元画像のサーキュラーバッファの概略図を示す。
【
図7】
図7は、本発明の3次元画像処理におけるデータの読み書きシステムの一実施例の構造図を示す。
【
図8】
図8は、本発明の端末の一実施例における構造図を示す。
【発明を実施するための形態】
【0024】
以下に、特定の具体的実施例によって本発明の実施形態につき説明する。なお、当業者であれば、本明細書に開示の内容から本発明のその他の利点及び効果を容易に理解可能である。更に、本発明はその他の異なる具体的実施形態によっても実施又は応用可能である。また、本明細書の各詳細事項については、視点及び応用の違いに応じて、本発明の精神を逸脱しないことを前提に各種の補足又は変更が可能である。説明すべき点として、矛盾が生じない場合には、以下の実施例及び実施例の特徴を互いに組み合わせてもよい。
【0025】
説明すべき点として、以下の実施例で提供する図面は本発明の基本思想を概略的に説明するものにすぎない。図中には本発明に関係するアセンブリのみを示しているが、実際に実施する際のアセンブリの数、形状及びサイズに基づき記載しているわけではない。実際に実施する際には、各アセンブリの形態、数及び比率に基づいて任意に変更してもよく、且つ、アセンブリのレイアウト及び形態がより複雑になる場合もある。
【0026】
本発明の3次元画像処理におけるデータの読み書き方法とシステム、記憶媒体及び端末は、3次元垂直スライド技術とサーキュラーバッファにより、限られたバッファ状況で3次元画像処理におけるバッファ利用率を極めて大きく向上させ、重畳部分の処理及びDDRへのアクセスを減少させる。これにより、画像処理における帯域幅の消耗及び読み書き遅延の問題を全体的に低減させて、3次元画像処理の速度を極めて大きく向上させる。
【0027】
図1に示すように、一実施例において、本発明の3次元画像処理におけるデータの読み書き方法は、以下のステップを含む。
【0028】
ステップS1において、垂直スライド技術によって3次元画像を水平方向に分割することで、前記3次元画像を少なくとも2つのサブ画像に分ける。次に、各サブ画像について、前記サブ画像の処理データをサーキュラーバッファに記憶する。前記サブ画像の処理が完了したあと、前記サーキュラーバッファ内には次のサブ画像が必要とする重畳部分のデータが保持される。
【0029】
具体的に、3次元画像を分割する際には、一定の3次元ブロックサイズで垂直方向に上から下へと順にスライドする。この技術を垂直スライド技術と称する。垂直スライド技術では、元の3次元画像を上下複数の層に分割する。なお、各層に含まれるデータに重畳は存在しない。また、分割過程では、3次元スライドブロックのサイズを一定とする。よって、第1層又は最後の層については、3次元画像の実際のサイズ及び3次元スライドブロックのサイズに基づき調整を行う。
図3に示す例では、3次元画像を4つのサブ画像に分割し、それぞれsubImage0、subImage1、subImage2、subImage3としている。
【0030】
図2に示すように、ALUはバスを通じてDDRにアクセスするほか、SRAMバッファに直接アクセスすることが可能である。第1回要求としてDDRにデータを要求する場合には、バッファリングを要するデータをSRAMにバッファリングする必要がある。また、ALUがデータを再度要求する場合には、データがSRAMバッファ内に位置していれば、SRAMバッファから直接読み取りを行う。
【0031】
タイル間におけるオーバーラップ(overlap)の繰り返し処理を減らすために、本発明では、垂直スライド(Vertical sliding)技術を用いて3次元画像を水平方向に分割する。各分割ブロックはサブ画像(sub image)と称される。好ましくは、各サブ画像はできるだけ扁長となるようにする。各サブ画像の幅が元画像の幅と同じ場合には、使用可能なSRAMのサイズに基づいてサブ画像の最大高さを算出可能である。
図3に代表的な分割を示す。サブ画像は、X及びZ方向の深さについては元画像と同じであるが、Y方向の高さは小さくなっている。また、算出されたサブ画像の値がマイナス値又は0であった場合には、3次元画像を左右に分ける必要がある。
図4は、左右に分けて分割する場合を示しており、元の3次元画像を3×4個の3次元サブ画像に分割している。
【0032】
具体的に、本発明では、サブ画像の処理過程にサーキュラーバッファ(circular buffer)を導入する。1つのサブ画像の処理が完了し、当該サブ画像の下方のサブ画像を引き続き処理する際には、一時的に前のサブ画像におけるオーバーラップ行のバッファを破棄しないことで、DDRからの重畳データの読み取りを減らす。実行するごとにサーキュラーバッファ内で上書きされるデータは、前のサブ画像におけるすでに消費されており、以降は使用されることのないデータである。こうすることで、空間の節約になるだけでなく、オーバーラップの読み書きの繰り返しが減少する。画像の畳み込み操作において、オーバーラップのサイズは畳み込みカーネル(kernel)の高さに関係する。縦分割方向のサブ画像はサーキュラーバッファを共有し、横方向において隣接するサブ画像はオーバーラップのデータを処理する必要がある。具体的に、各スライディングウィンドウの高さをN、カーネルの高さをMとすると、第2層の1行目は第1層のM-1行を再度使用する必要がある。サーキュラーバッファでは、第1層の処理が完了して当該層の下方の層を処理する場合、第1層の末尾から開始して第2層へと降り、サーキュラーバッファの末尾に到達したあとサーキュラーバッファの先頭へと戻る。第1層のうち上書きされないのは、第2層の1行目が必要とする第1層の末尾数行に相当するため、バッファを節約することができ、バッファの利用率が向上する。
【0033】
サブ画像の分割にあたっては、異なる層間のサブ画像に対応関係が存在する。
図5は、2つの層が合計3つのサブ画像に分割される場合を示している。なお、簡略化のために、Z方向の図示は省略している。仮に、SubImage00とSubImage20の高さが2であり、その他のサブ画像の高さが4であるとする。畳み込み操作を実行するにあたり、2回の畳み込みカーネルを3×3とすると、SubImage00とSubImage10がSubImage10の入力に対応し、SubImage10がSubImage20の入力に対応する。その他の依存関係についてもこれと同様となる。具体的に、SubImage11を入力とする場合には、SubImage10の内容を使用する必要があり、必要とされる行がオーバーラップ行となる。サーキュラーバッファ技術を利用すれば、SRAM内にはオーバーラップ行と新たに生成された結果のみを記憶すればよく、元の3次元画像の出力全体を記憶する必要はない。
【0034】
サーキュラーバッファは3次元画像全体を1つの循環単位として実現され、Z面ごとにオーバーラップ行のための空間が予め保持される。仮に、1つの3次元画像が、Z方向に2つの面としてZ0及びZ1を有しており、Y方向にR0~R7の8行を有しているとする。このとき、3次元画像を2つのサブ画像に上下に分割して、subImage0及びsubImage1と称すると、subImage0がR0~R3を含み、subImage1がR4~R7を含む。仮に、畳み込みカーネルのサイズを3×3×2とすると、サブ画像間のオーバーラップは2行となる。サーキュラーバッファのサイズは、サブ画像Xのサイズ*(サブ画像Yのサイズ+オーバーラップのサイズ)*サブ画像Zのサイズとなる。このうち、サブ画像Xのサイズ、サブ画像Yのサイズ、サブ画像Zのサイズ及びオーバーラップのサイズとは、それぞれ、サブ画像のX方向のサイズ、Y方向のサイズ、Z方向のサイズ、及び重畳部分のサイズのことである。
【0035】
図6に示すように、subImage0をバッファリングする場合、サーキュラーバッファの設置にはオーバーラップ空間が予め保持される。当該実施例において、オーバーラップ空間は2行であり、「empty(空)」で表される。SubImage0は、バッファリングされたあと次の層のネットワークに消費される。そして、次にsubImage1をバッファリングする際には、subImage1の各Z面が、subImage0の各Z面に対応するemptyから、或いは、Z面の最後に対応する位置から順に記憶されて行く。これにより上書きされる部分は、SubImage0のうちすでに消費された部分に相当する。いずれかのZ面がサーキュラーバッファの末尾に到達すると、バッファの先頭部が上書きされる。また、各Z面における上書きされない行は、オーバーラップに必要な行に相当する。
【0036】
説明すべき点として、同一の3次元画像から分割される複数のサブ画像の高さは完全に同一とは限らない。よって、1つのサブ画像を処理するごとに、3次元サブ画像の始点アドレス、幅、高さ、ストライド幅(stride)及び出力アドレスを情報として把握する必要がある。これらのパラメータは、サブ画像を分割したあと正しく配置せねばならない。
【0037】
ステップS2において、画像処理アルゴリズムの多層ネットワークを少なくとも2つのセグメントに分割することで、各セグメントにおける隣接する層間のデータをバッファ経由でのみやり取りし、DDR経由ではやり取りしないようにする。
【0038】
具体的に、画像処理モデルでは複数の層を含むことが多く、層ごとに然るべきタスクを完了させる。また、隣接する層の間にはデータの依存関係が存在する。そのため、隣接する2つの層の間でDDRを用いてデータのやり取りを完了させる場合には、大量のDDR帯域幅や遅延が発生する。また、中間結果を全てバッファ内にバッファリングしてしまうと、バッファを膨大に占有することになる。そこで、サブ画像に分割したあと、層間の中間結果についてサブ画像をバッファリングの単位とすれば、層全体の全ての中間結果をバッファリングする必要がなくなる。よって、本発明では、バッファのサイズに基づいて、どれだけの層がバッファを利用してやり取り可能であるかを判断する。これらの層の特性としては、第1層がDDRからデータを読み取って出力をSRAMバッファ内にバッファリングし、中間層がバッファからデータを読み取ってバッファに書き込む。これを、最後の層のデータがDDRに書き戻されるまで行う。また、上記の条件を満たす層がセグメント(segment)となる。即ち、セグメント内における最後の層以外の各層の結果はSRAMバッファに書き込まれ、第1層以外の層はいずれもSRAMからデータを読み取る。
【0039】
分割されるサブ画像が小さいほど、サーキュラーバッファが占有するSRAMは小さくなる。つまり、サブ画像間のオーバーラップ部分が占める割合が大きいほど、有効データの占有率は小さくなる。よって、データをDDRによりバッファリングするか、SRAMによりバッファリングするかでコストが異なってくる。また、セグメントの分割の違いによって、コストパフォーマンスやSRAMの利用率に違いが出るため、性能の最適解を見つける必要がある。且つ、層の分割はサブ画像の分割にも関連する。
【0040】
好ましくは、本発明の3次元画像処理におけるデータの読み書き方法をニューラルネットワークの3次元画像処理に応用する。
【0041】
図7に示すように、一実施例において、本発明の3次元画像処理におけるデータの読み書きシステムは、サーキュラーバッファモジュール61とセグメントバッファモジュール62を含む。
【0042】
前記サーキュラーバッファモジュール61は、垂直スライド技術によって3次元画像を水平方向に分割することで、前記3次元画像を少なくとも2つのサブ画像に分ける。各サブ画像について、前記サブ画像の処理データをサーキュラーバッファに記憶する。前記サブ画像の処理が完了したあと、前記サーキュラーバッファ内には次のサブ画像が必要とする重畳部分のデータが保持される。
【0043】
前記セグメントバッファモジュール62は、画像処理アルゴリズムの多層ネットワークを少なくとも2つのセグメントに分割することで、各セグメントにおける隣接する層間のデータをバッファ経由でのみやり取りし、DDR経由ではやり取りしないようにする。
【0044】
説明すべき点として、前記サーキュラーバッファモジュール61とセグメントバッファモジュール62の構造及び原理は、上述した3次元画像処理におけるデータの読み書き方法のステップと一対一で対応しているため、ここでは改めて詳述しない。
【0045】
説明すべき点として、上記の装置における各モジュールの区分は論理機能に基づく区分にすぎず、実際に実現する際には全部或いは一部を1つの物理的実体に集積してもよいし、物理的に切り離してもよい。且つ、これらのモジュールは、全てを処理デバイスでソフトウェアを呼び出す形式で実現してもよいし、全てをハードウェア形式で実現してもよいし、また、一部のモジュールを処理デバイスでソフトウェアを呼び出す形式で実現して一部のモジュールをハードウェア形式で実現してもよい。例えば、xモジュールを単独で設置される処理デバイスとしてもよいし、上記装置のいずれかのチップに集積して実現してもよい。また、xモジュールは、プログラムコードの形式で上記装置のメモリに記憶してもよいし、上記装置のいずれかの処理デバイスにより上記xモジュールの機能を呼び出して実行してもよい。その他のモジュールの実現についてもこれと同様である。また、これらモジュールの全部又は一部を一体的に集積してもよいし、個別に実現してもよい。ここでいう処理デバイスは、信号処理能力を有する集積回路とすればよい。実現過程において、上記方法の各ステップ又は上記の各モジュールは、処理デバイスにおけるハードウェアの集積論理回路又はソフトウェア形式の命令により完了してもよい。上記のモジュールは、上記の方法を実施する1又は複数の集積回路として配置可能である。例えば、1又は複数の特定用途向け集積回路(Application Specific Integrated Circuit、ASICと略称)、1又は複数のマイクロプロセッサ(Digital Singnal Processor、DSPと略称)、1又は複数のフィールドプログラマブルゲートアレイ(Field Programmable Gate Array、FPGAと略称)等とすればよい。上記いずれかのモジュールを処理デバイスによりプログラムコードを呼び出す形式で実現する場合、当該処理デバイスは、例えば中央処理装置(Central Processing Unit、CPUと略称)やその他のプログラムコードを呼び出し可能なプロセッサといった汎用のプロセッサとすればよい。これらのモジュールは一体的に集積し、システムオンチップ(system-on-a-chip、SOCと略称)の形式で実現してもよい。
【0046】
本発明の記憶媒体にはコンピュータプログラムが記憶されている。当該プログラムは、プロセッサで実行される際に上記の3次元画像処理におけるデータの読み書き方法を実現する。
【0047】
好ましくは、前記記憶媒体には、ROM、RAM、磁気ディスク、USB、メモリカード又は光ディスク等のプログラムコードを記憶可能な各種媒体が含まれる。
【0048】
図8に示すように、一実施例において、本発明の端末はプロセッサ71とメモリ72を含む。
【0049】
前記メモリ72は、コンピュータプログラムを記憶するために用いられる。
【0050】
前記メモリ72には、ROM、RAM、磁気ディスク、USB、メモリカード又は光ディスク等のプログラムコードを記憶可能な各種媒体が含まれる。
【0051】
前記プロセッサ71は前記メモリ72に接続されており、前記メモリ72に記憶されているコンピュータプログラムを実行することで、前記端末に上記の3次元画像処理におけるデータの読み書き方法を実行させる。
【0052】
好ましくは、前記プロセッサ71は、中央処理装置(Central Processing Unit、CPUと略称)やネットワークプロセッサ(Network Processor、NPと略称)等を含む汎用のプロセッサとしてもよいし、デジタルシグナルプロセッサ(Digital Signal Processor、DSPと略称)、特定用途向け集積回路(Application Specific Integrated Circuit、ASICと略称)、フィールドプログラマブルゲートアレイ(Field Programmable Gate Array、FPGAと略称)、又は、その他のプログラマブルロジックデバイス、ディスクリートゲート、又はトランジスタの論理デバイス、ディスクリートハードウェアアセンブリとしてもよい。
【0053】
以上述べたように、本発明の3次元画像処理におけるデータの読み書き方法とシステム、記憶媒体及び端末は、3次元垂直スライド技術とサーキュラーバッファにより重畳部分の処理を減少させることで、限りあるバッファ状況で3次元画像処理におけるバッファの利用率を極めて大きく向上させる。また、ネットワーク全体を分析することで、限りあるバッファ下において層間の結果を必ずしもDDR経由でやり取りする必要がなくなるため、DDRへのアクセスが減少する。これにより、画像処理アルゴリズムにおける帯域幅の需要が減少し、読み書きの遅延や消費電力が低減する。また、ハードウェア設計において、より小さなバッファ面積を使用可能となる。従って、本発明は従来技術における様々な瑕疵を効果的に解消しており、高度な産業の利用価値を有している。
【0054】
上記の実施例は本発明の原理と効果を例示的に説明するものにすぎず、本発明を制限するものではない。本技術を熟知する者であれば、本発明の精神及び範囲を逸脱しないことを前提に、上記の実施例を補足又は変形可能である。従って、当業者が本発明で開示した精神及び技術思想から逸脱することなく遂行するあらゆる等価の補足又は変形もまた本発明の特許請求の範囲に含まれる。
【符号の説明】
【0055】
61 サーキュラーバッファモジュール
62 セグメントバッファモジュール
71 プロセッサ
72 メモリ