3Dunet誤検知削減モデルの前処理

PSは、しばらく前に肺結節の検出と3Dcnnダウンポジティブモデルをカプセル化してきました。チェック出力を入力し、テスト結果をデータベースに挿入します。同時に、フロントエンドとミドルウェアが呼び出すインターフェイスを記述します。検出可能な結果から誤検出を取り除くステップは、まだ満足のいくものではありません。したがって、3Dcnn誤検知削減モデルと組み合わせた3Dunet誤検知削減モデルを使用して、誤検知を排除します。

  32 * 32 * 32ブロック(解像度1 * 1 * 1mm)を取得したいので、リサンプリングする必要があります。しかし、luna16で指定されたcandidates_V2.csvには、700,000を超える候補結節があります。テスト後、均一にリサンプリングするのに2秒以上かかります。それを忘れてください、光の下で小結節を遮断するのに16日以上かかります。幸いなことに、合計で888シーケンスしかありません。したがって、最初に読み取り、リサンプリング、正規化などの処理をnpyとして保存し、同時に対応するOrigin.npyを保存します。

ここにはたくさんのリスト操作があります。次の2つの関数を使用してマルチプロセス操作リストを計算するDSB2017コードについて考えます。

from multiprocessing import Pool
from functools import partial

実際の状況(88シーケンス)でどれだけ高速化できるかを見てみましょう。

複数のプロセスに時間を費やさないでください:238.038193s

費やしたマルチプロセス時間:48.443767s

それはほぼ5倍の時間でかなり良い感じです。以下の700,000以上を使用すると、時間を大幅に節約できます。

忘れた場合のPolマルチプロセスの重要な手順は次のとおりです。

1.1。pool = Pool()#プロセスプールを開く

2.2。partial_getsave = partial(getsave、filenames = filenames、path = path、#関数修飾子、いくつかのパラメーターを事前設定し、後でsave_path = save_pathを呼び出す)

ここでgetsaveはマルチプロセス関数です。ファイル名はリストです

_ = pool.map(partial_getsave、range(len(filenames)))

このステップはマルチプロセス呼び出し関数です

4.4。pool.close()#プロセスプールを閉じ、新しいプロセスを受け入れないpool.join()#メインプロセスはブロックし、子プロセスの終了を待ちます

複数のプロセスを終了することはあまりありません

5.5。重要なのは、getsave関数defgetsave(id、filenames、path、save_path)の定義です。

主に、range(len(filenames))を比較するための追加のIDがあります。

おすすめ

転載: blog.csdn.net/qq_36401512/article/details/90904758