見出し画像

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がダウンロードされます。

画像1

ダウンロードしたzipファイルを展開し、starnetがダウンロードされたフォルダにコピーします。starnetは↓以下のフォルダに作成されています。
/Users/<ユーザー名>/projects/starnet

画像2

実行用簡易プログラム(自作)導入

最後に自分用に作った実行用簡易プログラムを導入します。
なんかココだけ自作で恐縮です。

上記の 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 ファイルと比べてみると明らかに星がなくなっていることが分かると思います!

画像3

自分のTIFFファイルで処理したいときには python3 run.py まで(スペースを忘れずに)まで入力して、Finderからドラッグアンドドロップすると良いです。

python3 run.py 

私の手持ちの画像で実施した結果ですが、どうしても色が変わってしまって苦戦しているところでが、カラーバランスを整えた後で実行すると色の変化が少なめのように思います。

画像4

最後に何書いてあるのかよく分からないような記事をここまで読んでもらってありがとうございます。正直なところほとんどの人にはハードルが高いかと思います。
今後は直接やり取りができる方に説明し実施してもらってみて、改善できそうであれば改善してみます。

次はM1 Mac編を書こうと思います。

この記事が気に入ったらサポートをしてみませんか?