画像処理法解説

ステライメージ9のコンポジットをさらに加速する方法

※追記 最新バージョン9.0bでは、下記の手法を用いなくても、バッチ→コンポジットでメモリ消費が抑えられる仕様になっていることを確認しています。

※追記2 2021年3月23日現在、上記現象は再現されなくなりました。よって、本記事で述べているメトカーフコンポジットを利用する手法をオススメします。

※追記3 星ナビ2022年6月号の拙記事内でも触れたように、9.0f以降のバージョンではメトカーフコンポジットを流用しなくても「バッチ・コンポジット」でメモリ使用量が劇的に押さえられ、高速に処理できる仕様に改善されています。
ステライメージ9のコンポジットをさらに加速する方法_f0346040_20301228.jpg

★今回は、結論から先に・・・
いきなりででん!!
ステライメージ9のコンポジットをさらに加速する方法_f0346040_23311284.jpg
Twitter上で、すぷーん@緡抜千匁さん に教えていただいた情報により、バッチ処理のメトカーフコンポジットを利用することで、前回の記事で述べたステライメージ9の位置合わせコンポジット法よりもさらに高速化できる可能性が出てきたので、3種類のPCおよび3バージョンのステライメージを用いて検証してみました。

その結果、CPUコアやメモリの多寡を問わず、SI9+メトカーフが最速であることが示唆されました。


★前回の記事で・・・

待望のステライメージ9が届いたので、6.5でできていた爆速コンポジットが7以降不可能になっていた件が改善されたかどうかを検証ごっこしてみました。
その結果、コンポジットの操作画面はSI7と全く同じに見えるものの、その動作は全く異なっており、かなり高速化されたことが確かめられました。

ただし、個人的に残念だったのは、SI6.5のアルゴリズムを踏襲している(ように見える)高速位置合わせコンポジット機能が「比較明」(と比較暗)でしか効かないまま(SI7と同様)であることでした。SI9の位置合わせコンポジットはかなり高速化されていますが、それでもSI6.5と比べるとメモリの消費量が(SI7よりはかなり少ないものの)桁外れに大きいため、メモリが少ないPCだとスワップの発生で動作が重くなります
本当は、下記のように
ステライメージ9のコンポジットをさらに加速する方法_f0346040_21170955.jpg
比較明コンポジットバッチメニューの中に「加算平均」を復活させて欲しかったのです。
ところが、驚愕の情報が・・・・・



★驚愕のツイートが・・・・
すぷーん@緡抜千匁さん による下記のツイートを見たとき、衝撃を受けました。
ステライメージ9のコンポジットをさらに加速する方法_f0346040_23581438.jpg
なんと、SI9はもちろんのことSI7の中にもSI6.5の高速位置合わせ加算平均コンポジットの機能が隠されており、その場所は「比較明」ではなく「メトカーフ」の中だというのです。

ああ、なんということ。
必死で探し求めていたシンデレラは『メトカーフ村』に住んでいたのかッ!!

このツイートを見た瞬間、2年ほど前にスカイメモのピリオディックモーションを測定するための便法を模索していた事がフラッシュバックのように蘇りました。


この記事の中で、ピリオディックモーションの測定を邪魔する極軸誤差に伴う東西方向への移動を補正するため、メトカーフコンポジットを利用することを考案したのですが、残念なことにSI7では比較明コンポジット時にメトカーフ法が使えないために、SI6.5を用いる必要性があると述べました。
ステライメージ9のコンポジットをさらに加速する方法_f0346040_00132552.jpg
そうです。ここまでの情報を総合すると、SI6.5の位置合わせコンポジットの機能はSI7以降「比較明バッチ」と「メトカーフバッチ」の2系統に分散されて格納されたのではないかと推理できます。

さて、実際にメトカーフバッチを利用することにより、SI6.5のような高速コンポジットが可能となるか、試してみましょう


★メトカーフバッチを利用した位置合わせコンポジットの手順
それでは、まずはやり方の紹介です。
ここではSI9の画面を用いますが、SI7でも全く同じ操作です。大ざっぱに言えば、彗星などの固有運動を「ゼロ」であると指定することによってメトカーフコンポジットを通常の位置合わせコンポジットに変身させてしまうという手法です。


①対象画像を1コマだけ開きます

②基準星指定ツールを用いて好きな恒星を1つ指定して位置合わせの基準点にします
ステライメージ9のコンポジットをさらに加速する方法_f0346040_00235527.jpg

③バッチメニューからメトカーフを選択します
ステライメージ9のコンポジットをさらに加速する方法_f0346040_00244703.jpg

④各種パラメータを設定します
ステライメージ9のコンポジットをさらに加速する方法_f0346040_00260629.jpg

⑤残りの対象画像をロードします
ステライメージ9のコンポジットをさらに加速する方法_f0346040_00285246.jpg

⑥コンポジットを実行します
ステライメージ9のコンポジットをさらに加速する方法_f0346040_00293761.jpg
※④で「アクティブ画像から指定」のチェックを入れ忘れると、たとえ基準星にアンカーを打っていても無視されますので気をつけてください。
また、ここでは純粋な位置合わせコンポジット処理速度を検証するために、シグマクリップはオフにしています。


★速度テストの共通事項
カメラ:ASI1600MM-Cool (1600万画素モノクロ)
画像枚数:256コマ
画像データの配置:全て同じ外付けSSD(下記参照)
ステライメージ9のコンポジットをさらに加速する方法_f0346040_00354265.jpg
SI用スワップファイル:システムドライブ(内蔵SSD)中に32GB分を確保




★標準的なPCでの比較結果
Core i5 6600(4コア4スレッド) + メモリ16GB の自作デスクトップPCでの測定結果は下記のとおりです

SI6.5で位置合わせコンポジット
 所要時間:1分23秒
 消費メモリ:0.36GB
SI7で位置合わせコンポジット
 所要時間:17分33秒
 消費メモリ:10GB
SI7でメトカーフ
 所要時間:11分01秒
 消費メモリ:0.36GB
SI9で位置合わせコンポジット
 所要時間:3分06秒
 消費メモリ:10GB
SI9でメトカーフ
 所要時間:1分04秒
 消費メモリ:0.33GB



★パワフルなPCでの比較結果
Ryzen7 3700X(8コア16スレッド) + メモリ96GB の自作デスクトップPCでの測定結果は下記のとおりです

SI6.5で位置合わせコンポジット
 所要時間:1分16秒
 消費メモリ:0.36GB
SI7で位置合わせコンポジット
 所要時間:2分40秒
 消費メモリ:29GB
SI7でメトカーフ
 所要時間:8分25秒
 消費メモリ:0.37GB
SI9で位置合わせコンポジット
 所要時間:44秒
 消費メモリ:16.5GB
SI9でメトカーフ
 所要時間:27秒
 消費メモリ:0.35GB


★やや非力なノートPCでの比較結果
Core i5 7200U(2コア4スレッド) + メモリ8GB の15インチノートPCでの測定結果は下記のとおりです

SI6.5で位置合わせコンポジット
 所要時間:2分03秒
 消費メモリ:0.35GB
SI7で位置合わせコンポジット
 所要時間:25分05秒
 消費メモリ:2.65GB
SI7でメトカーフ
 所要時間:14分12秒
 消費メモリ:0.37GB
SI9で位置合わせコンポジット
 所要時間:4分07秒
 消費メモリ:3.7GB
SI9でメトカーフ
 所要時間:1分36秒
 消費メモリ:0.35GB


★メモリ消費についての補足
実際のコンポジット処理では、CPU性能やソフト側のロジックはもちろんですが、メモリが枯渇しないことが重要です。上当然、HDDはもちろんSSDでもメインメモリに比べると低速ですので、スワップが生じてしまうと突然ガクンと処理速度が落ちます。記のテストでは、一見メモリ消費が少なそうに見えて、実は膨大なスワップが生じているケースがありますので注意してください。

なお、ステライメージのスワップファイルは、環境設定で指定したドライブ中に随時生成される「~SI.○○○」というフォルダ中に「~SI○○○○.tmp」という名前で存在します。このTMPファイルの大きさ(処理中に変動する)を観察するとメモリが不足した量が推測できます。なお、指定したスワップファイルの上限値自体が必要量を満たしていない場合はエラーとなって処理が止まります。目安としてモノクロ1600万画素の画像256コマをSI7で位置合わせコンポジットする際には、メモリとスワップファイルを合わせて約32GB程度、SI9で位置合わせコンポジットする際には、約17GB程度がそれぞれ必要です。SI6.5で位置合わせコンポジットする場合、およびSI7やSI9でメトカーフを利用する際には約0.4GB程度しか消費しませんので、事実上スワップは発生しません。
ステライメージ9のコンポジットをさらに加速する方法_f0346040_01063897.jpg

たとえば、ノートPCでSI7の位置合わせを行う際にはメモリ消費が2.65GBでしたが、その時には29.7GBもの巨大なスワップファイルが生成されていました。
反面、Ryzen7機ではメモリ消費が29GBでしたがスワップファイルはゼロでした。
したがって、必要なメモリ量は上記のテストデータのうち、Ryzen7機のメモリ消費量を見るとおおよそ見当が付くと思います。

★まとめ
①CPUの性能・メモリの多寡を問わず、SI9でメトカーフコンポジットバッチを利用して位置合わせ加算平均コンポジットが最速
②メモリが潤沢に使える場合(スワップが発生しない程度)はSI7のメトカーフよりも画像を全て開いて普通に位置合わせコンポジットした方が高速
③ほとんどのケースにおいてSI6.5の位置合わせコンポジットは高速であるが、SI9のメトカーフはCPUの性能も影響する
④SI9の位置合わせコンポジットは、SI7のそれよりも4~6倍高速
⑤SI9のメトカーフは、SI7のそれよりも9~18倍高速
⑥各PC別にどのコンポジットが速いかを示すグラフは下記の通り
※各PCにおけるSI6.5を100%とした際の速度比
ステライメージ9のコンポジットをさらに加速する方法_f0346040_01473887.jpg
⑦各処理別にどのPCが速いかを示すグラフは下記の通り
※各処理におけるCorei5 6600+16GB機の性能を100%とした際の速度比
ステライメージ9のコンポジットをさらに加速する方法_f0346040_02381576.jpg

貴重な情報を教えていただいた すぷーん@緡抜千匁さん、ありがとうございました!

★★★お約束★★★
①本結果はあくまで検証『ごっこ』のため、その正確性は保証できません
②基本的な処理速度をテストするため、ホットクール除去やシグマクリップなどの処理は一切用いていません
③SIの環境設定パラメータは全て揃えるよう心がけましたが、設定ミスが無いことは保証できません

<追記>本記事で用いたステライメージ9は、「9.0a」です。
(バッチ処理後の画像書き出し先を指定できないバグがあったので、即アップデートしました。)
なお、先行配信されている「9.0a1」のアップデータはまだ適用していません。


Commented by にゃあ at 2020-12-30 16:53 x
アストロアーツさんもびっくりの検証ですね。メトカーフコンポジットがチョッパヤじゃないですか。固有運動をゼロに設定するとか、まさに裏技、邪道(褒め言葉)!  コンポジットアルゴリズムはまだ進化できる余地があると言うことでしょうか。

もうね、他のロジックも含めてあぷらなーとさんにヒアリングさせてもらった方がいいですよ〜>アストロアーツさん
Commented by supernova1987a at 2020-12-30 20:41
> にゃあさん
大好きなステライメージ、ついに、あらゆるPC(といっても検証したの3台だけですが)で6.5を凌駕する能力を秘めたバージョンが現れました。めでたい!!

最近、MATLABで画像処理ソフト開発ごっこしてるおかげで、なんとなく挙動が読めるようになってきましたが、ついさっき「中の人」のSI9開発秘話記事を見つけて、おおーってなってます♪

http://astroarts.main.jp/blog/p20201228/

Commented by UTO at 2021-01-01 00:17 x
どひゃー、こんな裏技もあったのですね!(◎-◎;)!!

今年もよろしくお願い致します。
Commented by supernova1987a at 2021-01-01 02:32
> UTOさん
バッチ処理のメトカーフを利用するのは全く盲点でした。
最近、画像処理ソフトの開発ごっこをしていたおかげで、すぷーん@緡抜千匁さんから「メトカーフバッチの中にSI6.5が隠れている」と教えてもらった瞬間に、「その手があったか!!」とひざを打ちました。

また、その後、中の人の開発秘話ブログ記事を読んでみても、若い開発者の方がすごくがんばっておられるのだなぁと嬉しく思いました。

素人であってもプログラミング遊びに取り組むことは(たとえ実用的な物が作れなくても)市販のソフトを使う時や他の方のお話を聞く時に役に立つのだなぁ、と感じました。

本年も、どうぞよろしくお願い致します!!
Commented by B.S.Revolution at 2021-01-01 13:37 x
あけましておめでとうございます。
結構イラつくSI7のコンポジットですが、この裏技で時短できそうです。
本年もよろしくおねがいします。
Commented by supernova1987a at 2021-01-01 15:52
> B.S.Revolutionさん

あけましておめでとうございます。

今回、色々と検証ごっこしてみて、あらためてSI7は重いなぁと実感しました。
グラフを見ていただくと分かるようにSI7の場合はメモリを潤沢に搭載していると通常の位置合わせの方がメトカーフよりも速いのですが、たいていの場合はスワップが無くなる分だけ高速動作するようになりますね。特に、スワップがHDDに展開されている場合は効果絶大だと思います。ぜひ色々と試してください♪
名前
URL
削除用パスワード
by supernova1987a | 2020-12-30 01:54 | 画像処理法解説 | Comments(6)

あぷらなーとの写真ブログ


by あぷらなーと
PVアクセスランキング にほんブログ村