いつも勉強させていただいております.
慶應大学博士課程の太田と申します.
マクロを使ったImageJでの画像解析について質問があり,
投稿させていただきました.
現在使用しているマクロを添付いたします.
(txtは添付できないようなので画像です.)
ライトシート顕微鏡で撮影した三次元画像から,
RFP(channel2)+の細胞塊の体積を算出しようとしています.
個々の細胞のSegmentationをする必要はなく,
塊としての体積が出せれば良いという状況です.
元のデータはサイズが大きすぎるので分割していますが,
それでも1つ1つのファイル(LIF形式)は1GB前後あり,
合計すると5TB程になります.
添付のマクロをFijiにインストールして走らせていると,
最初はサクサク進むのですが,徐々に動作が遅くなってしまいます.
扱うデータのサイズや数が多すぎることは重々承知ですが,
メモリをモニタリングしていると不必要な蓄積が見られるので,
メモリの扱いにも問題があるかと考えております.
現在メモリ対策で行なっていることは以下の点のみです.
・ImageJへのメモリの割り当てを最大にする
・バッチモードで進行,不要な画像はすぐに閉じる
・輝度があるスライスのみをcropしてから計算
・1枚解析が終わるごとにcall("java.lang.System.gc")を実行
・OS上でも30分おきにmemory cleanを実行するように設定
その他,ネットで調べた付け焼き刃な知識で
-XX:MaxMetaspaceSize=256m
-XX:MetaspaceSize=256m
-XX:TargetSurvivorRatio=50
-XX:+UseConcMarkSweepGC –
などのコマンドを入れてFijiをlaunchしてみたものの,
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
Java HotSpot(TM) 64-Bit Server VM warning: Using incremental CMS is deprecated and will likely be removed in a future release
[WARNING] Ignoring invalid argument: -XX:MaxMetaspaceSize=256m
[WARNING] Ignoring invalid argument: -XX:MetaspaceSize=256m
[WARNING] Ignoring invalid argument: -XX:TargetSurvivorRatio=50
[WARNING] Ignoring invalid argument: -XX:+UseConcMarkSweepGC
のエラーが出てしまい,途方に暮れています.
勉強し始めたばかりでマクロ自体もかなり稚拙だと思いますが,
サイズの大きいデータや大量のデータを扱う際,
どのような工夫をすれば良いのか等,アドバイスをいただけますと幸いです.
よろしくお願いいたします.
<mailto:imagej-jp+unsubscribe@googlegroups.com> にメールを送信してください。
このグループに投稿するには imag...@googlegroups.com
<mailto:imagej-jp@googlegroups.com> にメールを送信してください。
このディスカッションをウェブ上で閲覧するには
https://groups.google.com/d/msgid/imagej-jp/6f5902dd-6809-4418-a910-16b468232195%40googlegroups.com
<https://groups.google.com/d/msgid/imagej-jp/6f5902dd-6809-4418-a910-16b468232195%40googlegroups.com?utm_medium=email&utm_source=footer>
にアクセスしてください。
その他のオプションについては https://groups.google.com/d/optout にアクセ
スしてください。
--
このメールは Google グループのグループ「ImageJ-jp」の登録者に送られています。
このグループから退会し、グループからのメールの配信を停止するには imagej-jp+unsubscribe@googlegroups.com にメールを送信してください。
このグループに投稿するには、imagej-jp@googlegroups.com にメールを送信してください。
このディスカッションをウェブ上で閲覧するには、https://groups.google.com/d/msgid/imagej-jp/e0b0d4bc-fc83-e29c-1fe6-4eca504b90e0%40b.mbox.nagoya-u.ac.jp にアクセスしてください。
その他のオプションについては、https://groups.google.com/d/optout にアクセスしてください。
--
このメールは Google グループのグループ「ImageJ-jp」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには imagej-jp+unsubscribe@googlegroups.com にメールを送信してください。
このグループに投稿するには imag...@googlegroups.com にメールを送信してください。
このディスカッションをウェブ上で閲覧するには https://groups.google.com/d/msgid/imagej-jp/efe4c3d6-b416-4ff7-92ee-b721274bb072%40googlegroups.com にアクセスしてください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。
太田さんメモリ領域のチューニングはこれといった決まりがあるわけではないのでなんともいいがたいですが、私だったらfiji -XX:+UseParNewGC --をためしてヒープ領域の大きさが単調増大みたいにならない様子だったらそれでよしとして、これにあと-Xmsと-Xmxの設定を行うぐらいだと思います。理由はそれ以上チューニングする必要性を感じないからです。オブジェクトのサバイバル時間や、オブジェクト世代の比率などの微妙な調整に時間をかけるのだったら、そのまえにJavaないし他のJavaのオブジェクトにアクセスできるスクリプトで書いて不必要になったらオブジェクトをnullにして自動GCを待つ形にするなど、きっちり管理したほうがいい、と私だったら判断します。ざっとマクロを眺めてみましたが、まだスリムにできるなという印象を持ちました。スタックを複製するところが何箇所か、あと画像をマージするところで新たに3番目のスタックを作ったりしているところがあり、データサイズを考えればそうしたところでメモリも時間も食います。そうしたところを工夫して、本当に必要な複製や新規のスタック作成なのかよく考え、マクロのコマンドで代替に使えるものがないか探してなるべく総メモリ消費を抑えるような処理にすることをおすすめします。三浦
2016-12-22 4:31 GMT+01:00 Yuki Ohta <yuki...@keio.jp>:
--三浦先生早速のご返信ありがとうございます.JVMのオプションは何とか警告なく認識されるようになりました.二重ハイフンを入れたつもりが,「--」ではなく「–-」というよくわからない記号になってしまっていました.要するに,打ち間違いです.単純なミスですみません.SurvivorRatioやNewRatio,ヒープサイズ,メタスペースサイズなどは特にチューニングはしない方が良いのでしょうか.ヒープは大きめに設定しておいて,TargetSurvivorRatioを上げるなどは意味がないでしょうか.また,マクロ内でのgc callはむしろ邪魔になるんですね.多少はgcされますがあまり効果がないので疑問に思っていました.削除します.オブジェクトのライフタイムでチューニングするのはとても効果がありそうですが,私には敷居が高そうです...ひとまず,オプションでUseConcMarkSweepGCを入れる事でどの程度改善されるか試してみます.太田
このメールは Google グループのグループ「ImageJ-jp」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには imagej-jp+...@googlegroups.com にメールを送信してください。
このグループに投稿するには imag...@googlegroups.com にメールを送信してください。