20
修士論文 GPGPU を用いた時空間画像処理による 細胞領域分割システムの 精度向上と性能評価 同志社大学大学院 生命医科学研究科 医工学・医情報学専攻 医情報学コース 博士前期課程 2013 年度 1008 井上 楓彩 指導教授 廣安 知之教授 2015 1 23

GPGPUを用いた時空間画像処理による 細胞領域分 …...CUDA の登場以 降, CUDAを実行するために適した環境作りが, ハードウェアレベルで始まり,

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: GPGPUを用いた時空間画像処理による 細胞領域分 …...CUDA の登場以 降, CUDAを実行するために適した環境作りが, ハードウェアレベルで始まり,

 

修士論文

GPGPUを用いた時空間画像処理による細胞領域分割システムの精度向上と性能評価

同志社大学大学院 生命医科学研究科医工学・医情報学専攻 医情報学コース

博士前期課程 2013年度 1008番

井上 楓彩

指導教授 廣安 知之教授

2015年 1月 23日

Page 2: GPGPUを用いた時空間画像処理による 細胞領域分 …...CUDA の登場以 降, CUDAを実行するために適した環境作りが, ハードウェアレベルで始まり,

Abstract

In recent years, with the advance of microscope technology, the alive cells have been

able to observe. On the other hand, from the standpoint of image processing, the quality

assessment which determine whether cells were successfully cultured has been studied.

Therefore, the cell image processing is performed not only static images but also moving

images.

However, because of moving images are aggregation of static images, the processing of

these images would take large burdens. Thus, we focused on massive cores, which Graphics

Processing Units (GPU) contains, to solve the problem above.

In this study, to aim high quality cell segmentation system, we build the spatio-

temporal image processing system using General-Purpose computing on Graphics Process-

ing Units (GPGPU) as parallel processing. To evaluate the performance of our proposal

system, we compared the processing speed of the spatio-temporal image processing with

two cases: one is only using CPU and another is GPGPU. As the result, processing speed

of GPGPU is faster than CPU. Moreover, the difference between these processing speeds

was extend as increasing the amount of data.

Based on the above, the usefulness of GPGPU use in cell segmentation system with

moving images had been suggested.

Page 3: GPGPUを用いた時空間画像処理による 細胞領域分 …...CUDA の登場以 降, CUDAを実行するために適した環境作りが, ハードウェアレベルで始まり,

目 次1 序論 1

2 GPGPUによる並列処理 2

2.1 シングルコア CPUの性能向上の限界 . . . . . . . . . . . . . . . . . . . . . 2

2.2 マルチコアプロセッサとしてのGPU . . . . . . . . . . . . . . . . . . . . . 2

2.3 GPGPU向けGPUアーキテクチャ . . . . . . . . . . . . . . . . . . . . . . 3

2.4 CUDAプログラミング . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

3 GPGPUを用いた時空間画像処理による細胞領域分割システム 5

3.1 細胞領域分割の精度向上 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

3.2 処理速度の高速化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

4 提案システムの性能評価 7

4.1 実験環境 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

4.2 実験結果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

5 考察 9

6 結論 10

Page 4: GPGPUを用いた時空間画像処理による 細胞領域分 …...CUDA の登場以 降, CUDAを実行するために適した環境作りが, ハードウェアレベルで始まり,

1 序論近年, 生命現象を解き明かす手段として, 生きたままの細胞を観察する「ライブイメージ

ング技術」が注目されている?). 例えば, 遺伝子細胞の研究では分子レベルでの解析が進み, 生きている細胞で内部の分子の動きを直接観察する取り組みが行われている1.

しかし, 細胞を生きたまま観察する技術には, 主に以下 3点の課題が存在する?). (1)電子顕微鏡や X線顕微鏡で用いられる線量は, 放射線に耐性をもつ微生物さえも死んでしまうほど強力であること. (2)電子顕微鏡は透過能力が低いため, 試料を数百ナノメートル以下にスライスしなければならないこと. (3)試料を染色すると細胞が死んでしまうこと. しかしながら, 近年はX線自由電子レーザ?)や共焦点レーザスキャナー?)などの顕微鏡動画技術の発達により, 上記のような課題が解消されつつある.

一方で, 細胞画像処理に関する研究は以前から行われており, その代表例として, 細胞画像から, 細胞が正常に培養されたかどうか判断するための品質評価手法などが挙げられる?)

. よって, 前述の顕微鏡動画技術の発展に併せ, 細胞画像の処理は静止画の域を越え, 動画の処理に対応する必要があると考えられる. しかし, 動画は静止画の集合体であり, その処理には大きな負担がかかる. その負担量は, ヒトの目の時間分解能が約 30 [ms]であるため?)

, 1秒間の動画を処理量は, 33枚以上の静止画を処理する量と同等だと推測される.

そこで, この問題を解決するため, コンピュータの画像処理向け専用プロセッサであるGraphics Processing Unit (GPU)に顕微鏡動画の処理を委ねることにした. GPUは本来,

画像処理用のプロセッサであり, 画像処理は膨大なデータを規則的に処理する必要があるため, Central Processing Unit (CPU)の演算性能を凌駕する並列演算プロセッサとしての一面をもつ?). GPUを並列演算プロセッサとして応用利用する技術を, GPUによる汎目的計算 (General-purpose computing on graphics processing units: GPGPU)と呼ぶ. また,

CPUにくらべGPUはシンプルな内部構造をとることから?), 費用面においてもコスト削減が見込まれる. 本稿では研究目的して, GPGPUの特性を上手く活用した効率の良い顕微鏡動画の高速処理システムの構築を目指す.

本稿の構成について説明する. まず, 第 2章では, GPUの内部構造を説明するとともに,

高い並列性を実現できる原理について紹介する. つぎに, 第??章では, 本稿で提案する, 時空間画像処理による細胞輪郭抽出システムの概要と, そのシステム要件について説明する.

第 3章では, 細胞輪郭抽出に必要な画像処理アルゴリズムについて説明するとともに, 時空間画像処理の概要について紹介する. そして, 第 4章より, 本システムの性能を (1)CPUのみを用いて細胞輪郭抽出の処理した場合と (2)GPGPUを利用した場合との二者で性能比較し, GPGPU利用の有用性を確かめる. 第 5章では CPUのみの処理と比較し, GPGPU

の長所・短所について考察し, 第 6章にてGPGPUの利点を最大限に引き出せる細胞輪郭抽出の処理方法について結論を導く.

1細胞内ネットワークのダイナミズム解析技術開発 http://www.nedo.go.jp/activities/ZZ 00184.html

1

Page 5: GPGPUを用いた時空間画像処理による 細胞領域分 …...CUDA の登場以 降, CUDAを実行するために適した環境作りが, ハードウェアレベルで始まり,

2 GPGPUによる並列処理本章では, GPUの内部構造を説明するとともに, GPGPUとして高い並列性を実現する

原理について紹介する.

2.1 シングルコアCPUの性能向上の限界

CPUの性能は, プロセッサ上に搭載されるトランジスタの数に左右され, 個々のトランジスタのサイズを小さくし, 単位面積あたりの搭載数を増やすことで演算性能を向上させてきた. すなわち, 集積密度の増加は CPUの性能向上に置き換えることができる. 単位面積あたりのトランジスタ数は 18ヶ月ごとに倍になるという経験則から, CPUの性能は 2.1

式のような向上を見せていた. これをムーアの法則と呼ぶ.

p = 2n

1.5 (2.1)

しかし, 2010年代に差し掛かる頃からトランジスタの微細化が原子レベルに到達し, 単位面積あたりの搭載数が頭打ちとなった. また, 大量のトランジスタへの電力供給が漏れ電力を引き起こし, CPUが生み出す発熱が大きな課題となった. 以上 2点の理由により, CPU

の負荷軽減のためクロック周波数を上昇が躊躇され, シングルコアCPUの処理能力の向上に限界をもたらした.

この問題を解決すべく登場したのが, マルチコアCPUによる処理手法である. マルチコア CPUの登場以降, シングルコア CPUの処理能力はさほど向上していない. コアを複数個利用し, その 1つ 1つを単純化することによって発熱を抑えつつ, 処理速度を維持する手法が現在の傾向となった. CPUを単純化することでパイプライン段数が下がり, クロック周波数の低減にも繋がった. よって, 消費電力は抑えられ, 結果として発熱も抑えることができた.

2.2 マルチコアプロセッサとしてのGPU

2.1節にて, 昨今の CPUの構造は, 消費電力の削減のため従来型より単純化していることについて説明した. しかし, 内部構造を単純化しても, CPUには割り込み処理や条件分岐処理に必要なキャッシュやレジスタセット, コンテクストスイッチなどを搭載しているため, 依然コストを下げることが困難である. そこで, 低いコストでマルチコアを手に入る手段として, GPUに備え付けられている大量のコア群に目をつけた. GPUは元来, 画像処理用のデバイスである. そのため, スクリーン上に画像を 1ドットずつ描画するだけの処理,

つまり 1つのコアにシングルスレッドを走らせるだけで事が足り, 割り込み処理の必要はないため, キャッシュやレジスタセット, コンテクストスイッチなどは搭載されておらず極めて単純な内部構造を取っている. つまりGPUは, 単位面積あたりのコストが低いにも関わらず処理能力が高いデバイスであると言える. GPGPUの登場以前から, 画像処理の性能を向上させるため, GPU単体でも簡単な物理演算を行う取り組みがなされてきた. そこで,

この演算能力をもっと汎用的に活用するため, NVIDIA社は GPU向け C言語の統合開発

2

Page 6: GPGPUを用いた時空間画像処理による 細胞領域分 …...CUDA の登場以 降, CUDAを実行するために適した環境作りが, ハードウェアレベルで始まり,

環境である Compute Unified Device Architecture (CUDA)を発表した. CUDAの登場以降, CUDAを実行するために適した環境作りが, ハードウェアレベルで始まり, Fermiアーキテクチャが開発された.

2.3 GPGPU向けGPUアーキテクチャ

2.3.1 Fermiアーキテクチャ

Fermiアーキテクチャとは, NVIDIAが初めて本格的にGPGPU向けに設計したアーキテクチャである. GPUが元来有する並列処理能力をさらに発揮できるよう, コアとメモリの設計に改革がみられた. Fermiアーキテクチャ内のコアは, Streaming Processor (SP)と呼ばれ (CUDAコアとも呼ぶ), 効率よく計算が行えるよう SPを 32個単位でユニット化した Streaming Multi-processor (SM)が採用された. Fermiアーキテクチャでは SMが 16個搭載されているため, 総 SP数は 512個 (32x 16)である.

また, Fermiアーキテクチャではキャッシュメモリが導入された. キャッシュメモリとは,

繰り返し使用するデータを一時的に保存しておく高速なメモリである. 前述のとおり, GPU

は画像処理用のデバイスであり, スクリーン上に画像を 1ドットずつ描画するだけの処理を主としていた. つまり, 1つのコアにシングルスレッドを走らせるだけで処理が終了するため, キャッシュメモリの必要性がなかった. しかし, 数値計算には割り込み処理や条件分岐処理が必要なため, メモリアクセスが重要となる. そこで, Fermiアーキテクチャに, L1,

L2キャッシュメモリ, そしてシェアードメモリを搭載することによって, 数値計算を従来型のGPUより効率化した.

Fermiアーキテクチャの登場によりGPUでの数値計算が可能となったが, 一方で, 膨大な電力消費が課題であった. これを解決するために生み出されたのが, 次章で説明するKepler

アーキテクチャである.

2.3.2 Keplerアーキテクチャ

Keplerアーキテクチャでは, Fermiアーキテクチャでは課題だった膨大な消費電力を抑えることに成功した. Keplerアーキテクチャの 1Wあたりの演算能力は, 最大で Fermiアーキテクチャの 3倍である. 消費電力を抑える方策として, パイプラインとスケジューラの設計が見直された. Fermiアーキテクチャとの比較を Fig. 1に乗せる. Keplerアーキテクチャではパイプラインの長さをFermiアーキテクチャの約 2倍の長さにし, クロック周波数を下げることによって, 漏れ電力による発熱を抑えた. そして, FermiアーキテクチャではGPU内に設置されていたスケジューラを, KeplerアーキテクチャではCPUに移動させることによって, GPUでの処理負担を軽減させた. また, SPを Fermi時代の 32個から, 192

個に増設し SMXと名称を変更した. Keplerアーキテクチャを搭載したGPUの一つであるGTX680では, SMXを 8個搭載しており, 総 SP数は 1,536個 (192x 8)となる.

3

Page 7: GPGPUを用いた時空間画像処理による 細胞領域分 …...CUDA の登場以 降, CUDAを実行するために適した環境作りが, ハードウェアレベルで始まり,

2.4 CUDAプログラミング

2.3で紹介した通り, GPGPU向けGPUにはキャッシュメモリやシェアードメモリが搭載され, ある程度の割り込み処理や条件分岐処理に対応できるようになったが, その性能は未だ CPUに劣る. よって, GPGPUは単体で数値演算を行うことができず必ず CPUの助けを必要とする. CPUとGPGPUの協調動作に必要なのが, CUDA(Fig. 2(a)を参照)である. CUDAアプリケーションの役割として, CPU側, GPGPU側のプログラミング環境の提供, そして, CPUとGPGPU間の通信制御が挙げられる. 詳細は次の通りである. CPU

側はCUDA Application Programming Interface(以下, API)を用いてプログラミングを行い, CPU側からGPGPUの制御を担う. 一方, GPGPU側はCUDA C Languageを用いてプログラミングを行い, GPGPU内で動くロジックを記述する. これをGPUカーネルと呼ぶ. また, CPUとGPGPUはシステム構造的にも物理的にも分離しているので, CUDAアプリケーションによって双方間の通信制御が行われる.

CUDAアプリケーションによるプログラミングは, 以下のワークフロー (Fig. 2(b)を参照)の通りである.

(1)GPU側の計算領域を確保する.

(2)計算に必要なデータを CPUからGPUへ転送する(3)カーネルを呼び出す.

(4)転送されたデータに対してカーネルを実行する. 結果はGPUメモリに保存される.

(5)計算されたデータをGPUから CPUへ転送する.

(6)GPU側の計算領域を破棄する.

GPGPUは Fig. 2(c)で示すGrid, Block, Threadの 3要素で構成され, それらの個数や配置を含めたアーキテクチャはモデルによって異なる. Block間の依存関係を絶ち切ることで, CPUからGPGPUへの転送時間に制限をもたせているからだ. よって, GPUカーネルのプログラムを行う際は, GPGPUのアーキテクチャを考慮しなければならない. また,

アーキテクチャに考慮してGPGPUプログラミングすることにより, 演算性能を高めることができる.

4

Page 8: GPGPUを用いた時空間画像処理による 細胞領域分 …...CUDA の登場以 降, CUDAを実行するために適した環境作りが, ハードウェアレベルで始まり,

3 GPGPUを用いた時空間画像処理による細胞領域分割システム

本稿で紹介する細胞領域分割システムには, 2つ目標がある.

(1)時空間画像処理による細胞領域分割の精度向上.

(2)GPGPUによる並列処理がもたらす処理速度の高速化.

本システムの対象動画から 1フレーム抜き出しFig. 3に示した. Fig. 3の欠点として, コントラストが低いゆえ, 細胞領域の境界線が判別しづらいことが挙げられる. これを解決する方法として, ヒストグラム平坦化を用いた画像濃度補正を行った. 詳細を Fig. 4に述べる.

一方, 利点として, 動画であるため, フレーム数が多いことが挙げられる. これを利用し,

細胞領域の分割精度を向上させる手段として, 時空間画像処理を取り入れた. 詳細を Fig. 5

に述べる.

そして, GPGPUの並列性を活かし, (1)に述べた細胞領域分割の処理速度の高速化に取り組んだ.

3.1 細胞領域分割の精度向上

3.1.1 ヒストグラム平坦化を用いた画像濃度補正

ヒストグラム平坦化とは, 画素値の分布が平坦 (一様)になるように濃度値を変換する手法のことである. 各濃度値が一様になるため, コントラスト強調効果が得られる場合が多い. しかし, ヒストグラム平坦化は画像全体のヒストグラムを用いているため, ピクセル座標などの位置情報が考慮されていない. したがって, 今回の対象画像 (Fig. 3)のように, 撮影時の比較り環境によって細胞の写り具合が異なる場合, コントラストの差をより際立たせてしまう場合がある. Fig. 3では, 僅かではあるが, 画像の中央部にいくほど濃度が高く(明るく) , 両端にいくほど濃度が低く (暗く) なっているためヒストグラム平坦化を行うとFig. 6のようになり, 濃度の高い中央部分が白く抜けてしまった. このような誤ったコントラスト強調は, 領域分割の精度を下げる原因と成り得る.

そこで, 画像全体のヒストグラムに変換処理を行うのではなく, 画像内のそれぞれ局所的な範囲でヒストグラム変換を行うことで, 画像のコントラストのばらつきを抑える方法を提案する.

局所的ヒストグラム平坦化のアルゴリズムを以下に示す. また, 概要を Fig. 4に示す.

(1)ヒストグラム平坦化を行う局所領域の大きさを指定する.

(2)対象画像の局所領域においてヒストグラム平坦化を行い, 処理後の画素値を記憶する.

(3)ヒストグラム平坦化を行う局所領域を, 1ピクセルずつ未変換領域へ移動し (2)の操作を行う.

(4)(2)と (3)の操作を対象画像の全ての局所領域で適用されるまで繰り返す.

5

Page 9: GPGPUを用いた時空間画像処理による 細胞領域分 …...CUDA の登場以 降, CUDAを実行するために適した環境作りが, ハードウェアレベルで始まり,

(5)局所領域が重なるピクセルに置いては, それらの平均値を新しい画素値とする.

位置によってコントラストがばらついている画像でも, 局所領域ではそのばらつきが小さいことが考えられる. そのため, ばらつきがちいさいそれぞれの範囲ごとでヒストグラム変換を行うことで, 全体のコントラストを一定にすることができる.

3.1.2 時空間画像処理

時空間画像処理とは, 3次元処理とも呼ばれる. この場合の 3次元とは, 画像を構成する画素の x軸, y軸, そして動画の時間軸を指す. 今回の対象資料は動画であり, フレーム数を多く抱える. そこで, 複数枚のフレームを重ね合わせることによって, 細胞輪郭を強調し,

その他のノイズ成分の軽減を図った. 概要を Fig. 5に示す. 重ね合わせられたフレームは,

任意の一定区間から抽出された細胞画像である. これらの細胞画像の画素値の平均を取り,

細胞動画を再構成した.

3.2 処理速度の高速化

GPUをGPGPUとして扱うには, NVIDIA社2が提供するGPU向けの C言語の統合開発環境である Compute Unified Device Architecture(CUDA)が必要となる. CUDAの役割として主に, CPUとGPU間の通信制御が挙げられる. CUDAの処理の流れは以下の通りである.

(1)GPU側の計算領域を確保する.

(2)計算に必要なデータを CPUからGPUへ転送する(3)カーネルを呼び出す.

(4)転送されたデータに対してカーネルを実行する. 結果はGPUメモリに保存される.

(5)計算されたデータをGPUから CPUへ転送する.

(6)GPU側の計算領域を破棄する.

2Parallel Programming and Computing Platform — NVIDIA http://www.nvidia.com/object/cuda

home new.html

6

Page 10: GPGPUを用いた時空間画像処理による 細胞領域分 …...CUDA の登場以 降, CUDAを実行するために適した環境作りが, ハードウェアレベルで始まり,

4 提案システムの性能評価4.1 実験環境

本システムで使用したGPUの概要はTable 1の通りであり, このGPGPUをTable 2のスペックを有するマシンに搭載した. GTX680のアーキテクチャは2の通りである.

4.2 実験結果

4.2.1 画像処理の結果

性能評価の際に用いたフィルタ群は以下の通りである (Fig. 7).

(1)グレースケール処理(2)時空間画像処理 (2フレーム)

(3)Non Local(NL) Meansフィルタ(4)局所的ヒストグラム平坦化(5)時空間画像処理 (20フレーム)

(6)二値化処理

まず, (1)で色空間の変換を行う. 今回は, グレースケール処理を行い, カラー成分を排除することで画像処理の高速化を図った.

(2)にて 3.1.2節に述べた時空間画像処理を 2フレーム行い, 軽く平均化することによりノイズ成分を除去した.

(3)NLMeansフィルタを用いて更にノイズ成分の除去を行った. NLMeansフィルタとは,

適応的な重みを持つサポートウィンドウのコンボルージョンによりノイズ成分を低減させる, エッジキープ型のフィルタである. その重みは, カーネル中心まわりにサポートよりも小さなテンプレートを作成し, テンプレートマッチングによりサポートウィンドウ内の類似度 (重み付きユークリッド距離, L2ノルムのエクスポネンシャル) を各位置ごとに求めていく. その類似度により, テンプレートに似ている位置の重みを大きく, 似ていない位置の重みは小さく設定される. また, 類似したフィルタには, バイラテラルフィルタがあり,

NLMeansフィルタのテンプレートサイズが (1 x 1)のとき, 位置の重みのないバイラテラルフィルタとなる. 計算式は以下の通りである.

ω(p, q) =1

Z(p)exp(−max(‖v(p) − v(q)‖2

2 − 2σ2, 0)h2

) (4.1)

Z(p, q) =∑q∈S

exp(−max(‖v(p) − v(q)‖22 − 2σ2, 0)

h2) (4.2)

out(p) =∑q∈S

ω(p, q)in(q) (4.3)

2GTX 680 Kepler Whitepaper - GeForce http://www.geforce.com/Active/en US/en US/pdf/

GeForce-GTX-680-Whitepaper-FINAL.pdf

7

Page 11: GPGPUを用いた時空間画像処理による 細胞領域分 …...CUDA の登場以 降, CUDAを実行するために適した環境作りが, ハードウェアレベルで始まり,

注目画素 pに対するサポートウィンドウ内の集合 Sに含まれる周辺画素 qの重みw(p, q)

は, p付近のテンプレートから構築したベクトル v(p)と同様のベクトル v(q)の L2ノルムから, 画像の不可されているであろうノイズσに応じた値で引き, 最小値が 0となるようにクリップする. それをパラメータ hに応じた値で除算したものが重みとなる. 最終的な画像 out(p)はこの重みと入力画像 inのコンボリューションで出力される.

(4)にて, 3.1.1節で紹介した局所的ヒストグラム平坦化を行い, 画像全体の濃度補正を行った.

(5)にて, 再度, 時空間画像処理を行う. 細胞の動くことによって輪郭がぶれることを利用し, フレームの重ね合わせによって輪郭を太く強調する. このときの重ね合わせるフレーム枚数は, 20フレームである.

(6)最後に二値化を行う. 今回は, 二値化の閾値を求める方法として大津法を採用した.

大津法とは, 濃淡画像の輝度値ヒストグラムが地の部分と頭の部分でそれぞれ山を作ると仮定し, 地と図のクラスの分離度が一番高くなる閾値を計算する方法である. 閾値は, 各輝度値を閾値としたときの各クラス内の分散 σ2

W とクラス間の分散 σ2B からなる. これを, ク

ラス内での分散とクラス間の分散の比 σ2W /σ2

B が最小となる輝度値を計算し, 閾値とする.

以上の処理を経て, 出力された画像を Fig. 8に示す.

4.2.2 各画像処理ごとの処理速度の比較

4.2.1で紹介した画像処理のうち, (2) 時空間画像処理 (2フレーム), (3) NLMeansフィルタ, (4) 局所的ヒストグラム平坦化, (5) 時空間画像処理 (20フレーム) それぞれの処理に要した時間を Fig. 9に示す.

(2) 時空間画像処理 (2フレーム)を CPUで行ったときの処理時間は 3.33± 0.00, GPU

のときは 2.54± 0.07 [s]であった. (3) NLMeansフィルタの処理を CPUで行ったときの処理時間は 89.7± 0.06 [s], GPGPUのときは 8.77± 0.07 [s]であった. (4) 局所的ヒストグラム平坦化の処理を CPUで行ったときの処理時間は 121± 0.00 [s], GPGPUのときは2345± 0.17 [s]であった. (5) 時空間画像処理 (20フレーム)をCPUで行ったときの処理時間は 3.09± 0.00, GPUのときは 2.63± 0.07 [s]であった. (2), (3), (5)においてはGPGPU

の利用による処理時間の減少が認められた. 一方, (4)の局所的ヒストグラム平坦化では,

GPGPUにおいて処理時間の増加が見られた.

4.2.3 処理速度の比較

1フレームあたりに要した処理時間の結果を Fig. 10に示す. Fig. 7の全行程をGPGPU

で行った場合, CPUの処理時間が 2.12± 0.13 [s], GPUの処理時間が 25.3± 0.35 [s]となった. その処理時間はCPUの処理時間よりも遥かに上回る結果となった. 各処理ごとの処理時間を調査したところ, GPGPUで局所的ヒストグラム平坦化を実行した際, 大きなオーバヘッドが発生することが判明した. これが, CPUよりも処理速度が低下する原因であると考えられる. そこで, 局所的ヒストグラム平坦化を CPUで行い, それ以外の処理をGPGPU

で行ったところ (GPGPU’), CPUのみの処理よりも処理時間が削減されることが明らかとなった.

8

Page 12: GPGPUを用いた時空間画像処理による 細胞領域分 …...CUDA の登場以 降, CUDAを実行するために適した環境作りが, ハードウェアレベルで始まり,

5 考察GPUで局所的ヒストグラム平坦化を行った際の, CPUとGPUの処理記録を調査したと

ころ, 平坦化の対象領域を 4pixelずつ移動させるごとに, Fig. 11の処理が行われていることが判明した. この処理の問題点は, 平坦化領域の決定と平坦化処理の命令がともに CPU

側から行われていることにある. このため, GPUで処理する際に特有の命令の変換や, GPU

上での新たなメモリの確保, スレッドの同期処理など, 各種オーバヘッドが発生し, 処理効率を低下させる原因となっていた. また, 頻繁に CPUと GPGPUとの通信が行われるため, GPGPU最大の利点である並列処理が行われおらず, シングルスレッドで処理されていたと考えられる. 本来, 局所的ヒストグラム平坦化は, 並列化に向いた処理であると考えられる. なぜなら, 個々の対象領域の画素値処理が独立しているからだ. したがって, 局所ヒストグラム平坦化処理のパフォーマンス最大限に向上させるには, 無用なオーバヘッドを極力発生させないことが, 求められることが明らかとなった.

9

Page 13: GPGPUを用いた時空間画像処理による 細胞領域分 …...CUDA の登場以 降, CUDAを実行するために適した環境作りが, ハードウェアレベルで始まり,

6 結論以前より, 細胞を培養する際の画像処理を用いた品質評価手法として, 細胞領域の分割手

法に関する研究が取り組まれてきた. これに加え, 顕微鏡技術の向上に伴い, 細胞を生きたまま観測できる環境が整いつつある. このような状況下において, 細胞領域分割処理の研究は, 静止画の域を越え, 動画像への対応が求められている. しかし, 動画像は静止画の集合体であり, そのデータ量は膨大である. そこで, 効率よく領域分割処理する方策として,

GPUに搭載されている大量のコア群に着目した. 細胞領域分割を行うためのフィルタ処理をGPUが担い, その他の処理をCPUが担うシステムを構築し, GPUの処理性能の検討を行った. 細胞領域分割するための画像処理として, (1) グレースケール処理, (2) 時空間画像処理 (2フレーム), (3) NLMeansフィルタ, (4) 局所的ヒストグラム平坦化, (5) 時空間画像処理 (20フレーム), (6) 二値化を行った. 結果, 局所的ヒストグラム平坦化を除くすべての画像処理, GPGPUによる処理速度の削減が見受けられた. 局所的ヒストグラム平坦化の際, GPGPUのパーフォーマンスが向上しなかった理由として, 平坦化領域の決定と平坦化処理の命令がともにCPU側から行われていたことが考えられる. したがって, 頻繁にCPUとGPGPUとの通信が行われるため, GPGPU最大の利点である並列処理が行われおらず, シングルスレッドで処理されていたと考えられる. GPGPUパフォーマンス最大限に向上させるには, 無用なオーバヘッドを極力発生させないことが, 求められることが明らかとなった.

10

Page 14: GPGPUを用いた時空間画像処理による 細胞領域分 …...CUDA の登場以 降, CUDAを実行するために適した環境作りが, ハードウェアレベルで始まり,

謝辞私が本研究室に配属されてからの 3年間, 同志社大学生命医学部の廣安知之教授, 誠に深

く感謝申し上げます. また, 様々な指摘, 助言をして下さいました, 同志社大学生命医学部の山本詩子助教, 同志社大学理工学部の田中美里特任助教, そして, 昨年度に退職されました同志社大学生命医学部の横内久猛教授に心より感謝致します.

日頃から研究ミーティングにて多く議論して頂いた医療システム班の西村祐二さん, 松浦秀行さん, 三島康平さん, 伊藤悟さん, 竹中誠人さん, 堀真弓さんに御礼申し上げます. 特に三島康平さんとは互いにコーチングをし合う関係であり, 研究に関するあらゆる場面で助け合ってきました. 今では, 私の研究に対する一番の良き理解者です. ありがとうございました. 三島康平さんの研究活動が更なる発展を向かえられるよう, 心より応援しております.

そして, 同級生の西村祐二さん, 松浦秀行さんからは, システム研究に関する様々な基礎知識を教えて頂きました. 修士課程よりシステム研究を始めた私は当初, 大変知識が乏しく, お二人の的確なご助言に大変救われました. また, 画像処理プログラムを作成するにあたって, 澤田淳二さん, 関谷駿介さんにはから多大なご指導, ご助言を頂きました. お忙しいなかにも関わらず, 非常に丁寧なご指導を頂いた折には, 感謝の言葉も見つからないほどでございます.

また, 先にご卒業された藤井亮助さんには, 昨年度の一年間, 多大なるご指導頂き心より感謝申し上げます. そして, 本論文を校正してくださいました三島康平さん, 杉田出弥さんに御礼申し上げます. お忙しい中, ご無理をお願いしたにも関わらず丁寧な校正をして頂き感謝しております.

最後に, 医療情報システム研究室の皆様には私の研究に関して数多くの議論や助言を頂きました. 皆様のおかげで, 3年間すばらしい研究生活を送ることができました. そして, 私生活において私を支えてくださった家族, 友人にも感謝申し上げます. この場を借りて厚く御礼申し上げます. ありがとうございました.

11

Page 15: GPGPUを用いた時空間画像処理による 細胞領域分 …...CUDA の登場以 降, CUDAを実行するために適した環境作りが, ハードウェアレベルで始まり,

付 図1 Comparison between Fermi and Kepler architecture . . . . . . . . . . . . 1

2 About CUDA application . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

3 Original cell image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

4 Local histogram equalization . . . . . . . . . . . . . . . . . . . . . . . . . 3

5 Working flow of spatio-temporal image processing . . . . . . . . . . . . . . 3

6 Overall histogram equalization . . . . . . . . . . . . . . . . . . . . . . . . 3

7 Sequence of image processing . . . . . . . . . . . . . . . . . . . . . . . . . 4

8 Result image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

9 Processing Speed of each filter process . . . . . . . . . . . . . . . . . . . . 4

10 Processing Speed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

11 Processing sequence of local histogram equalization on GPU . . . . . . . . 5

付 表1 Specification of NVIDIA GRID K2 . . . . . . . . . . . . . . . . . . . . . . 1

2 Specification of the machine . . . . . . . . . . . . . . . . . . . . . . . . . . 1

Page 16: GPGPUを用いた時空間画像処理による 細胞領域分 …...CUDA の登場以 降, CUDAを実行するために適した環境作りが, ハードウェアレベルで始まり,

Fig. 1 Comparison between Fermi and Kepler architecture

Table 1 Specification of NVIDIA GRID K2

GPU GTX680 x2

processor cores 1,536

clock rate [MHz] 745

global memory [Kbyte] 4

memory clock rate [KHz] 2.5

shared memory [Kbyte/block] 48

L1 cashe [Kbyte] 64

L2 cashe [Kbyte] 512

Table 2 Specification of the machine

OS Microsoft Windows 7 Enterprise

OS version 6.1.7601 Service Pack 1

memory [GB] 16.38

processor Intel c©Xeon R©CPU E5-2680 v2

clock rate [GHz] 2.8

1

Page 17: GPGPUを用いた時空間画像処理による 細胞領域分 …...CUDA の登場以 降, CUDAを実行するために適した環境作りが, ハードウェアレベルで始まり,

(a) CUDA Application

(b) CUDA Programming Work flow

(c) GPU Architecture

Fig. 2 About CUDA application

2

Page 18: GPGPUを用いた時空間画像処理による 細胞領域分 …...CUDA の登場以 降, CUDAを実行するために適した環境作りが, ハードウェアレベルで始まり,

Fig. 3 Original cell image

Fig. 4 Local histogram equalization

Fig. 5 Working flow of spatio-temporal image processing

Fig. 6 Overall histogram equalization

3

Page 19: GPGPUを用いた時空間画像処理による 細胞領域分 …...CUDA の登場以 降, CUDAを実行するために適した環境作りが, ハードウェアレベルで始まり,

Fig. 7 Sequence of image processing

Fig. 8 Result image

(a) Processing Speed of each filter process (b) Core Occupation of GPU

(c) Core Occupation of GPU (d) Core Occupation of GPU

Fig. 9 Processing Speed of each filter process

4

Page 20: GPGPUを用いた時空間画像処理による 細胞領域分 …...CUDA の登場以 降, CUDAを実行するために適した環境作りが, ハードウェアレベルで始まり,

Fig. 10 Processing Speed

Fig. 11 Processing sequence of local histogram equalization on GPU

5