StarNetをmacOSで使う(Intel Mac編)
StarNetとは
StarNetって知ってますか?
星空の写真から星を取り除くツールです。しかも今どき(?)の機械学習・AIの技術が使われています。
もしかしたらWindowsでStarNet++を使っている人はちらほらいるかも知れませんが、StarNetがオリジナルでそれを基にWindowsユーザー向けに作られたGUIツールがStarNet++です。しかしmacOSではStarNet++を使うことができません。なので今回はStarNetを使えるようにしました。
なお今回は「この通りやってみたけど、自分が何やってるか分からない。」という記事になると思います。機械学習・AIエンジニアじゃないとやらないような手順になってます。(だからStarNet++が生まれたんでしょうね。)
参考にさせていただいた記事
※ 非エンジニアなカメクラ向けの記事なので、Pythonの環境の整え方などについての専門的な指摘などは受け付けません。
StarNetをIntel Macに導入するのに必要なこと
まずStarNetはGitHubで公開されているPythonのプログラムです。
そのStarNetを動かすには以下の環境が必要となります。
・Python 3.x
・TensorFlow 2.x
・その他のPythonライブラリ
このPythonのプログラムを動くようにするために以下の手順を実施しました。
<前提>
以前書いた以下の記事の手順の「Pythonの環境構築」まで終わっていること。
<実施したこと>
・Homebrewインストール
・pyenvインストール
・Python(最新)インストール
・TensorFlowインストール
・GitHubからStarNetのプログラムをダウンロードして導入
・実行用簡易プログラム(自作)導入
これらを実施してStarNetがコマンドで実行することができるようになります。(PixInsightで呼び出せるかそのうち試したい)
Homebrewインストール
HomebrewとはmacOS(またはLinux)用のパッケージマネージャで、macOSで動くアプリやコマンドを簡単に導入することができるツールです。
(余談ですが brew install --cask stellarium と入力するだけで、あのStellariumをインストールしちゃえます )
まずターミナルを起動します。以下のコマンドを入力しEnterします。
途中でパスワードを聞かれたら入力してください。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
※正確にはHomebrewの公式サイトに記載のコマンドをコピー&ペーストで実行します。
すでにHomebrewを入れている場合には更新しておきます。
brew update
pyenvインストール
Pythonを入れる前にPythonの環境管理をするpyenvを入れます。
Homebrewが必要なものをまとめて入れてくれます。
brew install pyenv
pyenvを使うための設定として ~/.zprofile に以下の設定を追記します。
export PIPENV_VENV_IN_PROJECT=true
if [ `uname` = "Darwin" ]; then
# set op homebrew
if [ -e /opt/homebrew ]; then
HOMEBREW_ROOT=/opt/homebrew
else
HOMEBREW_ROOT=/usr/local
fi
export HOMEBREW_ROOT
eval $(${HOMEBREW_ROOT}/bin/brew shellenv)
# set up pyenv
export PYENV_ROOT=${HOMEBREW_ROOT}/var/pyenv
if command -v pyenv 1>/dev/null 2>&1; then
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
fi
fi
併せて ~/.zshrc に以下の設定を追記します。
if [ `uname` = "Darwin" ]; then
if command -v pyenv 1>/dev/null 2>&1; then
eval "$(pyenv init -)"
fi
fi
(この辺はコマンドラインで触らない人は何のことやらだろうなと思いながら書いています。)
ここで一度ターミナルを再起動させます。
pyenvの準備が整ったか確認しましょう。
pyenv --help
Usage: pyenv <command> [<args>]
の後に色々出てきていればOKです。
Pythonインストール
まずインストールできるPythonの最新バージョンを確認します。
pyenv install --list | egrep '^[ ]+[3]\.[0-9\.]+$' | grep ' 3.9' | tail -n 1
※この記事を記述している2021/09/18時点では 3.9.7 が表示されていました。
それではPythonをインストールします。
※以下の 3.9.7 は表示されたバージョンに合わせて変更してください。
pyenv install 3.9.7
Installed Pytnon-3.9.7 と表示されたら成功です。
実際にインストールされたバージョンに切り替えを行います。
pyenv global 3.9.7
切り替えられたかどうか pyenv versions 確認します。
pyenv versions
以下のように入れたバージョンに * が付いていたら切り替えられています。
system
* 3.9.7 (set by /usr/local/var/pyenv/version)
ここでまたターミナルを再起動して、実際に動作バージョンを確認します。
python --version
Python 3.9.7 (※実際に導入したバージョン )が表示されればOKです。
Pythonの切り替えができたら、関連ツールのアップグレードとインストールを行います。
まずはpipとsetuptoolsのアップグレードです。
python -m pip install pip --upgrade
python -m pip install setuptools --upgrade
続いてpipenvをインストールします。
python -m pip install pipenv
これで基本的なPythonの環境が整いました。
TensorFlowインストール
やっとTensorFlowまでたどり着きました。ここから一般的なPython環境からStarNetたるAIの力を活用するライブラリのインストールです。
TensorFlow本体は以下のコマンドでインストールされます。
pip3 install --upgrade tensorflow
Successfully installedと表示されたらOKです。
続いてStarNetを動作させるのに必要なライブラリをインストールします。
4つあるので以下の4行を順番に入力していってください。
この↓一番上のライブラリがStarNetらしいなと思うTIFFファイル形式を取り扱うためのライブラリです。
pip install tifffile
pip install ipython
pip install pillow
pip install matplotlib
それぞれで Successfully installedと表示されたらOKです。
GitHubからStarNetのプログラムをダウンロード
とうとうStarNetまでたどり着きました。
せっかくなのでこのままコマンドでGitからダウンロードします。
(Gitというのは公開プログラムの管理がされている仕組みです)
mkdir projects
cd projects
git clone https://github.com/nekitmm/starnet.git
そしてStarNetがTensorFlow 2.x用に公開しているモデルのバイナリファイルをダウンロードします。(なぜかDropboxです)
上記のリンクからDropboxのサイトを開き、↓右上のダウンロードボタンをクリックするとstarnet_weights2.zipがダウンロードされます。
ダウンロードしたzipファイルを展開し、starnetがダウンロードされたフォルダにコピーします。starnetは↓以下のフォルダに作成されています。
/Users/<ユーザー名>/projects/starnet
実行用簡易プログラム(自作)導入
最後に自分用に作った実行用簡易プログラムを導入します。
なんかココだけ自作で恐縮です。
上記の run.py をGoogleドライブからダウンロードしてください。
ダウンロードしたら同じ用にstarnetフォルダへコピーしてください。
実際に星を消してみよう
やっとすべての準備が整いました。動かしてみましょう。
使うときの手順を改めて確認するために、一旦ターミナルを再起動します。
ターミナルを起動してStarNetのあるフォルダへ移動します。
cd projects/starnet
続いてサンプルの画像でStarNetを動作させて星を消します。
python3 run.py rgb_test5.tif
環境にもよりますが数秒〜数分で完了すると思います。
以下のように表示されたら成功です。
処理開始:2021-09-18 21:26:05
開始時刻:2021-09-18 21:26:05
終了時刻:2021-09-18 21:26:30
所要時刻:0分25秒
rgb_test5_starless.tif ファイルが作成(更新)されていますか?
rgb_test5.tif ファイルと比べてみると明らかに星がなくなっていることが分かると思います!
自分のTIFFファイルで処理したいときには python3 run.py まで(スペースを忘れずに)まで入力して、Finderからドラッグアンドドロップすると良いです。
python3 run.py
私の手持ちの画像で実施した結果ですが、どうしても色が変わってしまって苦戦しているところでが、カラーバランスを整えた後で実行すると色の変化が少なめのように思います。
最後に何書いてあるのかよく分からないような記事をここまで読んでもらってありがとうございます。正直なところほとんどの人にはハードルが高いかと思います。
今後は直接やり取りができる方に説明し実施してもらってみて、改善できそうであれば改善してみます。
次はM1 Mac編を書こうと思います。