はじめに

GPT-6 Astra モデルの性能を見てみたいと思い、WindowsのChatGPTアプリ(旧Codexアプリ)にあるComputer Useスキルを試してみました。

今回やらせたのは、Sirilのワークフォルダーに入れてあるNGC7000(北アメリカ星雲)の撮影データを使った画像処理です。

最初に決めておいたルールは次のとおりです。

  • GPTの画像生成・I2Iは使わない
  • 雲のかかったLightフレームは、できるだけ除外する
  • 元の撮影ファイルは変更しない
  • Sirilのログと実行内容を残す
  • どのフレームを採用したか、後から確認できるようにする

ヘッダー画像は実際に撮影データを処理して作成したNGC7000です。369枚中218枚をスタックしています。

画像処理の結果だけを見ると、普通に人間がSirilで処理したようにも見えます。今回少し違うのは、私がSirilの画面を操作したのではなく、ChatGPTがWindowsの画面を見ながら操作したことです。

今回の撮影データ

Light、Dark、Flat、Biasの4種類のFITSを用意していました。

Lightには、撮影途中に雲が通過したフレームも含まれています。すべてをそのままスタックすると、雲の影響で星雲のコントラストが落ちたり、背景が不均一になったりする可能性があります。

処理記録に残っている条件は次のとおりです。

  • カメラ:QHY168C
  • 画像サイズ:4952×3288ピクセル
  • ビニング:1×1
  • Bayer配列:RGGB
  • Light:369枚、1枚30秒
  • Gain:10
  • Offset:10
  • 温度:約−10℃
  • 撮影日:2026年8月10日(FITSのDATE-OBS基準)
  • フィルター:Sightron Quad BP
  • Siril:1.4.4

フィルター名はFITSのヘッダーには入っていませんでした。色合わせに使うフィルターをどうするか、途中でChatGPTから確認があり、撮影時に使ったSightron Quad BPを指定しました。

ログから見るAIが行った処理の流れ

ChatGPTアプリのセッションログ、このセッションでAIが作ったレポートや操作ログや一時的に作成したスクリプトを紐解いてどのような事を行ったのかを紐解いていきましょう。
GPTは処理を次の順番で進めました。

撮影データの確認
↓
Dark、Flat、Biasの確認
↓
マスターBias、Dark、Flatの作成
↓
Lightのキャリブレーション
↓
全Lightの位置合わせ
↓
雲や星像の状態を確認
↓
採用フレームを選別
↓
スタック
↓
GraXpertで背景補正
↓
SirilでプレートソルブとSPCC
↓
BXTで控えめに鮮鋭化
↓
Prismでノイズ処理
↓
ストレッチして保存

Sirilで作ったマスターは、Bias 70枚、Dark 239枚、Flat 61枚です。

Darkは240枚ありましたが、そのうち D_5228.fit だけGainが1で、LightのGain 10と一致していませんでした。この1枚はGPTがDarkマスターから外しました。

369枚から218枚を選ぶ

GPTは雲の有無を、背景の明るさだけで判断することは避けました。

背景は月明かりや光害でも変わりますし、星雲の濃淡もあります。そこで、星の信号と星像の状態を組み合わせて見ています。

確認した指標は次のとおりです。

  • 晴天参照フレームと比較した恒星の光量
  • 画面を6領域に分けた透過率
  • FWHM
  • 星像の丸さ
  • 他の30秒フレームと比べた信号レベル

採用条件は次のようにしました。

  • 恒星相対光量:0.95〜1.15
  • 最も暗い領域の相対光量:0.90以上
  • FWHM:3.6px以下
  • 星像の丸さ:0.80以上

最終的には、369枚のうち218枚を採用しました。合計露出は6,540秒、1時間49分です。

151枚を除外しました。除外理由の内訳は、雲・透過率低下が136枚、星像品質によるものが14枚、他の30秒フレームより信号が強すぎたものが1枚です。指標ごとの除外理由は重複するので、単純に足すと151枚にはなりません。

雲の影響が大きかった区間は、時系列でおよそ#70〜149付近と#218〜240付近でした。最低相対光量は約0.242まで落ちています。

また、#243 / NGC7000_L_20115.fit はヘッダー上は30秒でしたが、星と星雲の信号が他のフレームより約1.734倍強くなっていました。原因は断定せず、条件不整合として除外しています。

同じストレッチで並べた比較画像も作りました。
上段と下段で、星雲の明るさ、背景の見え方、星の強調具合が異なります。

Darkフレームが古かった

今回の処理を終えたあと、ブログ記事を書くために実行ログを確認していた別のAIエージェントである、Hermes AgentからDarkフレームについて指摘されました。

使用したDarkは2024年2月のもので、Light、Flat、Biasは2026年8月の撮影データです。Gain、Offset、露出時間、温度設定は一致していたため、今回はこのDarkを使って処理しました。

ただ、冷却CMOSカメラのDarkは、時間が経てばホットピクセルなどのダーク特性が変化している可能性があります。アンプグローを含め、今回の処理結果にどの程度影響したかまでは確認できていません。今回の監査でも、撮影条件が一致していることは確認できましたが、経年による欠陥特性の変化までは否定できない、とログにも記録されています。

今回の画像処理が成立していないという意味ではありません。次回からは、できるだけLight撮影時期に近いDarkを作成した方がよさそうです。

Darkは一度作れば何年も使える、と考えてしまいがちですが、カメラの状態や撮影条件に合わせて更新する必要があります。この点を、処理後にAIから指摘されたことも今回の体験の一つでした。

Computer Useとは何か

Computer Useは、AIがPC画面を見て、人間の代わりにマウスやキーボードを操作する仕組みです。

人間がSirilを操作するときは、次のような流れになります。

画面を見る
↓
次に何をするか考える
↓
クリックする、入力する
↓
処理が終わるまで待つ
↓
結果を確認する

Computer Useも基本的には同じです。画面を確認し、クリックや入力を行い、更新された画面を見て次の操作を決めます。

Computer Use概念図:Computer UseでSirilを操作する流れとI2Iとの違いを示す概念図

※上記イラストは概念図です。画像の一部はGPT-Imageで作成したもので、実際のSiril操作画面や処理結果をそのまま示したものではありません。

今回も、フォルダーが見つからなかったとき、フィルター名がFITSに記録されていなかったとき、SPCC用の星表が不足していたときには、そのまま決め打ちせずに確認や調査を行いました。

OpenAIの公式ドキュメントでも、Computer Useはスクリーンショットを受け取り、クリック、入力、スクロール、待機などの操作を実行し、更新された画面を再び確認するループとして説明されています。[1]

ChatGPTやGeminiで行う画像生成とは違う

ここは、天体写真でAIを使うときに分けて考えた方がよいところです。

ChatGPTやGeminiなどに、ストレッチや色調整をしていない天体写真を渡して、「綺麗で見栄えのする天体写真に仕上げて」と依頼するような処理は、一般に I2I(Image to Image) に分類できます。
I2Iは、入力画像を参考にして、新しい画像を生成・変換する処理です。元画像の構図や色、形状などを条件として利用しながら、生成モデルが新しい画像を出力します。
そのため、元画像を単純に数値処理しているわけではなく、モデルによる生成結果が含まれます。

そのため、天体写真では次のようなことが起こる可能性があります。

  • 星の位置や形が変わる
  • 暗黒帯の形が補われる
  • ノイズと微細構造が区別されにくい
  • 元画像にはない細部が加わる
  • どの画素が撮影データ由来なのか説明しにくい

今回、GPTにやらせたのはこの処理ではありません。
GPTはSirilの画面を操作しましたが、GPT自身がNGC7000の画素を想像して描いたわけではありません。Light、Dark、Flat、BiasからSirilが補正と合成を行い、その後、指定した画像処理ツールが入力画像を処理しました。

撮影データ
  ↓
Sirilのキャリブレーション、位置合わせ、スタック
  ↓
GraXpertの背景抽出
  ↓
SirilのSPCC
  ↓
BXTの鮮鋭化
  ↓
Prismのノイズ処理
  ↓
Sirilのストレッチ

ただし、BXTやPrismまで含めて「AIを一切使っていない」と書くのは正確ではありません。今回の記録では、BXTはML4、PrismはPrism Miniのモデルを使っています。これらはユーザーが許可した天体写真用の処理ツールです。正確には、GPTによるI2Iは使わず、Sirilと天体写真用の処理ツールで画像を処理した、となります。

I2I比較図:画像生成AIによるI2IとComputer Useの違いを示す概念図

※Computer Useの処理ループとI2Iとの違いを説明する概念図。画像の一部はGPT-Imageで作成したもので、実際のSiril操作画面や処理結果をそのまま示したものではありません。

GraXpert、SPCC、BXT、SyQon PrismをAIはどう使ったか

GraXpertでは、線形スタック画像から背景を抽出しました。背景のむらを取る処理は、星雲自体を削ってしまうことがあります。そのため、補正前後で北アメリカ星雲の輪郭や暗黒帯が大きく変わっていないかを確認しました。

SirilのSPCCでは、プレートソルブを行ったあと、Gaia DR3の星表を使って色合わせを行いました。最終的には342個の恒星で解を得ています。[3]

ただし、SPCCのログには「不精密な解」という警告が残りました。明るい星に絞って計算し直した結果を採用しましたが、高精度な測光色校正が保証されたという扱いにはしていません。この警告を消すために、背景処理を追加して結果を都合よく変えることもしませんでした。

BXTはRC Astro CLI 1.1.3、ML4、GPU実行です。恒星と非恒星の処理量を控えめにして、SPCC後の線形画像に適用しました。

PrismはPrism Miniを使い、modulation 0.45で処理しました。こちらも線形画像の段階で適用しています。

Sirilでは、Bias、Dark、Flatを使ったキャリブレーション、位置合わせ、スタックを行います。[2] また、測光ベースの色合わせはストレッチ前のリニア画像で行う必要があります。[3]

マクロやバッチ処理との違い

こういった、自動処理を行うために以前からマクロやバッチ処理による自動処理もありました。それとの違いについても説明します。
RPAツールなどで決められた座標をクリックするだけのマクロは、画面のレイアウトが変わったり、エラーが表示されたりすると、そのまま処理を続ける可能性があります。

Computer Useは、AIが画面を見てから次の操作を選びます。処理が終わっているか、エラーが出ていないか、目的のファイルが保存されているかを確認しながら進めます。

もちろん、誤認識の可能性はあります。ファイル削除や上書きのような操作では、人間が確認する必要があります。今回も、元の撮影ファイルを変更しないこと、ログを残すこと、完成ファイルを検証することを最初に決めておきました。

最後に行った検証

最終FITSについて、AIは次のことを確認しました。

  • サイズ:4914×3256
  • チャンネル:RGB 3層
  • NaN、Infなし
  • 黒側の完全なゼロ画素なし
  • 全チャンネルが飽和した白画素なし
  • PNGとTIFFの再読み込み成功
  • PNGにsRGBプロファイルあり
  • FITSの総露出:6,540秒
  • 画像の行順:BOTTOM-UP

BXTの出力は行順が異なるため、最後にSirilの mirrorx -bottomup を使って戻しました。補正前後の画像を比較し、上下や左右が余計に反転していないことも確認しています。

入力データについても、元Light 369枚とSiril変換後の画像で画素領域のSHA-256を比較しました。369枚すべて画素領域が一致しています。Sirilがヘッダーを書き換えたため、ファイル全体のSHA-256は異なりますが、撮影画素は保持されていました。

おわりに

今回は、ChatGPTに「NGC7000の画像をきれいにして」と画像を渡したわけではありません。

雲のあるフレームを確認し、Light 369枚から218枚を選び、Sirilで補正・位置合わせ・スタックを行い、GraXpert、SPCC、BXT、Prismを順番に使いました。GPTはその処理をWindows上で実行し、ログと中間結果を確認しました。

画像生成AIに絵を作らせるのとは違い、撮影データと処理ソフトの関係を追いながら作業できたことが、今回おもしろかった点です。

また、処理後にDarkフレームの古さを指摘されたことで、画像の見た目だけでなく、撮影条件や校正データの妥当性も見直すことができました。

Computer Useは、天体写真の判断をすべて自動化するものではありません。どのフレームを使うか、どの程度の処理を許すか、最終画像をどう評価するかは、撮影者が決める必要があります。
私の場合は、AIに画像を作らせるというより、Sirilを使った長い処理を横で確認し、必要なところで質問してくれる作業者として使うのが合っているようです。

今回のようなComputer Useを利用した画像処理には、まだある程度のトークンコストがかかります。
私はこの処理の途中で、ChatGPTアプリの利用制限に達し、5時間単位の制限リセットを2回経験しました。
トークン使用量を、当時確認したAPI単価に当てはめて概算すると、1枚仕上げる処理で約3,300円相当になりました。これはChatGPTのサブスクリプション料金ではなく、API料金に換算した場合の目安です。検索料金や一部の内部処理は含まれていません。[5]

API料金画像:NGC7000画像処理で使用したトークン数とAPI料金換算

今後、AIの利用コストが下がっていくと、難しい画像ソフトの操作を、すべて自分で覚えなくても済む場面が増えてくるかもしれません。ただし、処理結果を評価するためには、何をしているソフトなのかを理解しておく必要があります。
世の中にどのような技術があるのか、その技術でどのような表現が出来るのかといった情報収集力とそれを元にした表現方法のアイディア、撮影データの準備や撮影時のセッティングなど、人が実際に撮影に行く時に行うスキルを付けることが重要になってくるのかなと感じました。
Computer Useを使えばSirilの操作を補助してもらえますが、画像処理の目的や、結果が妥当かどうかを判断する知識まで不要になるわけではありません。

Sources

[1] OpenAI, “Computer Use | OpenAI API”
https://developers.openai.com/api/docs/guides/tools-computer-use

[2] Siril documentation, “Calibration”
https://siril.readthedocs.io/en/stable/preprocessing/calibration.html

[3] Siril documentation, “Photometric Color Calibration”
https://siril.readthedocs.io/en/latest/processing/color-calibration/pcc.html

[4] GraXpert documentation
https://graxpert.com/docs/

[5] GPT-6 Astra Model | OpenAI API
https://developers.openai.com/api/docs/models/gpt-6-astra

処理枚数、採用条件、使用ツール、出力形式などの実験結果は、今回のチャット履歴、処理報告、実行ログに基づく。記事公開時には、公開しないログ一式と照合して数値を確認しました。

投稿者 mizunyang

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です