2019年12月2日月曜日

本書の演習を Windows / macOS を用いて Anaconda 上の Spyder で実行する方法

1. はじめに

(2026.5 動作確認済)
本書の演習を Windows / macOS で動作している Anaconda 上の Spyder で実行する方法に関する質問が時々あります。
Anaconda での実行を正式にサポートすることはできませんが、本ページでそのヒントをいくつか記します。

なお、本ページの内容はWindowsのユーザー名に日本語文字や半角スペースなどが含まれていると実行できません。
ただし、最近は「Microsoftアカウント」でユーザーを作成することが多いので、この問題は起こりにくくなっています。 なぜなら、Microsoftアカウントでは登録したメールアドレスの先頭数文字がユーザー名となり、 メールアドレスには日本語文字や半角スペースは含まれないためです。

2. ツールのインストール

それでは、本書の演習をWindowsなどで実施するために必要な Anaconda のインストールと設定の方法を解説します。

まず、Anaconda のダウンロードは、こちらのページで「Skip registration」をクリックすることから始まります。
現れたページの末尾で下図のように「Windows 64-Bit Graphical Installer」をクリックし、インストール用のファイルをダウンロードします。

macOS に対するヒント
macOS 用は、M1/M2 チップなどの系列用の「64-Bit (Apple silicon) Graphical Installer」をダウンロードすることになります。
Intel 版 macOS を用いている方は、こちらより「Anaconda3-2025.06-1-MacOSX-x86_64.pkg」をダウンロードするのが良いと思います。
なお、macOS版では下記の制限があります。ご了承ください。
  • Intel版: じゃんけんシステム(9章、10章、mediapipeじゃんけん) で映像が出ない
  • Apple silicon版: じゃんけんシステム(9章、10章) で映像と音声が出ない。mediapipeが動作しない


ダウンロードされたファイル(執筆時なら Anaconda3-2025.12-2-Windows-x86_64.exe)をダブルクリックし、Anaconda のインストールを行ってください。
基本的には、現れた画面で促されるままに「Next」、「I Agree」、「Next」、「Next」、「Install」、「Next」、「Next」とボタンをクリックして行くだけです。
最後の画面は下記の通りですが、2つの選択肢のチェックを外し「Finish」ボタンを押しましょう。それでインストールが終了します。
なお、チェックを外し忘れると、Anaconda Navigator というアプリケーションが起動してしまいます。ここでは Anaconda Navigator の起動は不要なので 「×」ボタンなどで全て閉じてください。 「Quit Anaconda Navigator?」と聞かれたら「Don't show again」にチェックを入れて「Yes」をクリックします。 さらに、「Do you with to update to Anaconda Navigator x.x.x now?」 のように Anaconda Navigator をアップデートするか?と英語で聞くウインドウも現われることがありますが、 「No, don't show again」をクリックして無視してください。

「アップデートは自分の意志で行う」ものとし、Anaconda 等からアップデートを促されたときは基本的に無視する、という方針です。 これは、アップデートにより、動くべきものが動かなくなるリスクを避けるためです。

また、インストール中に下記のエラーが出る場合、冒頭で触れた「ユーザー名に問題のある文字が含まれている」場合になります。このまま先に進めてもうまくいきませんので、Windowsでに日本語文字を含まないユーザーを作り直すしかありません。
Error: Due to incompatibility with several Python libraries, 'Destination Folder' cannot contain non-ascii characters (special characters or diacritics). Please choose another location.
ただし、最近は「Microsoftアカウント」でユーザーを作成することが多いので、この問題は起こりにくくなっています。
なぜなら、Microsoftアカウントでは登録したメールアドレスの先頭数文字がユーザー名となり、メールアドレスには日本語文字や半角スペースは含まれないためです。

さて、Anaconda のインストールが終わったら、スタートメニューから Anaconda を起動しましょう。 Windows 11 の場合、スタートメニューの右上にある「すべて」を一度クリックすると、 アルファベット順のアプリケーション一覧が表示されるので、 その「A」の項目から下図の「Anaconda (anaconda3)」という項目 (フォルダ) を見つけましょう。

そして、「Anaconda (anaconda3)」フォルダにある、「Anaconda Prompt」をクリックして実行しましょう。
なお、最新の Windows 11 に更新している場合は、スタートメニューは上図と異なる可能性があります。 その場合、まず下図のように「すべて」の「ビュー」を「一覧」に変更してください。
そうすると、アプリ一覧がアルファベット順で現われるので、下図のように「Anaconda (anaconda3)」フォルダにある、「Anaconda Prompt」実行しましょう。
ただし、Windows 11 のバージョンによっては、Windows 11 のバグより、スタートメニューの項目がすぐには更新されない問題があります。 その場合、Windows 11 を再起動してからスタートメニューを探すことで、以下のような部分を見つけることができるでしょう。
最終的に、以下のようなプロンプトが現れます。


macOS に対するヒント
macOS では、Anaconda Prompt のかわりに macOS のターミナルを使います。


現れたプロンプトで各種ツールのインストール作業を始めます。ただし、最新のAnaconda環境でそのまま本書に必要なツールをインストールしようとすると、ツール同士のバージョンの衝突が起こりうまくインストールできないことがあります。そこで、「Pythonの仮想環境を作ってそこに必要なツールのインストールを行う」という方針にします。

なお、プロンプトの冒頭には「(base) C:Users\(ユーザー名)」という内容が書かれています。「(ユーザー名)」の部分は人によって異なります。
本ページ冒頭で「Windowsのユーザー名に日本語文字や半角スペースなどが含まれていると実行できません」と述べましたが、このユーザー名の部分に日本語文字などを含んではいけない、という意味なのでした。

さて、プロンプト上で下記のコマンドを実行して仮想環境を作成します。仮想環境に「tf2」という名称を付けていますが、これは「TensorFlowのバージョン2をインストールする仮想環境」という意味で付けました。さらに、仮想環境 tf2 で用いる Python のバージョンは 3.9 とします。3.9 にしたのは、安定性を重視したためです。
conda create -n tf2 python=3.9
なお、以後長いコマンドが続きます。Windows 11 をお使いの方でしたら、ブラウザ上で上のコマンドをコピーし、Ctrl-V によりコマンドをプロンプトに貼り付ければ楽に実行できます。
Windows 10 のプロンプトでは Ctrl-V は効かないはずですので、下図のようにメニューから貼り付けます。


貼り付けが完了した状態が下図で、この状態で「Enter」キーを押すことで、コマンドを楽に実行できるわけです。
なお、処理が進むと「Continue creating environment (y/[n])?」や「Proceed (y/[n])?」などと聞かれますので、どちらの場合もキーボードで「y」をタイプして「Enter」キーを押して作業を進めてください。

macOS に対するヒント
macOS では、先頭に (base) と書かれたターミナルで、
conda create -n tf2 python=3.9
を実行すればよい。


仮想環境の作成が完了したら、下記のコマンドを実行して作成した仮想環境「tf2」に入ります。
conda activate tf2
その結果、下図の状態になります。プロンプトの行頭が「(base)」から「(tf2)」に変化しており、環境が「base」から「tf2」に変わったことがわかります。
そのままの状態で、下記のコマンドを実行して、本書に必要なツールをインストールしましょう。このコマンドは特に長いので、注意してコピーして実行しましょう。先ほどと同様、 「Proceed (y/[n])?」と聞かれたときはキーボードで「y」をタイプして「Enter」キーを押して作業を進めてください。
conda install scikit-learn matplotlib pillow py-opencv tensorflow keras numpy spyder=5.5.1 console_shortcut toml
「done」と表示されていれば、ここまでの作業に成功しています。

macOS に対するヒント
macOS (Apple silicon版) では、以下のコマンドを用いてください。Intel 版は上記のコマンドのまま実行できます。
conda install scikit-learn matplotlib pillow py-opencv tensorflow keras numpy spyder=5.5.1 toml


最後に、画像処理に用いる opencv とじゃんけんシステムで音を鳴らすための playsound というライブラリをインストールしておきましょう。先頭が (tf2) のプロンプトのまま、下記のコマンドを実行します。
pip install opencv-contrib-python==4.10.0.84 playsound==1.2.2
以上で本書の演習を実行するために必要なツールのインストールは終わりです。インストールが完了すると、スタートメニューの「Anaconda (anaconda3)」の項目には下図のように「Spyder (tf2)」や「Anaconda Prompt (tf2)」が追加されています。ここで「Spyder (tf2)」をクリックし、Spyder を起動しましょう。
ただし、Windows 11 のバージョンによっては、Windows 11 のバグより、スタートメニューの項目がすぐには更新されない問題があります。 その場合、Windows 11 を再起動してからスタートメニューを探すことで、以下のような部分を見つけることができるでしょう。 ここで「Spyder (tf2)」をクリックし、Spyder を起動しましょう。
Spyderの起動時に、「Kite をインストール (Insall Kite)」とか「Start Tour」などという画面が現れたら、「無視 (Dismiss)」 を選択してください。
さらに、「Spyder x.x.x が利用可能です!」などというメッセージが出たら(英語の場合もあり得ます)、下図のように「起動時に更新をチェック」のチェックを外し、「いいえ」をクリックしてください。
Anaconda と同様、Spyder も更新しない方針だからです。


macOS に対するヒント
macOS では、ターミナルで
conda activate tf2
を実行してから
spyder
とコマンドで実行してください。


なお、仮想環境 tf2 用のSpyder が起動して、インターフェースが日本語ではなかった場合、メニューから「Tools」→「Preferences」を選択し、現れたウインドウで「Application」→「Advanced settings」を選択してLanguageを日本語に設定してください。その際、再起動を促されますのでそれに従えばインターフェースが日本語になります。


3. サンプルファイルの準備

次に、演習ファイルの用意です。まず、「書の内容を Pi Zero ~ Pi 5 で実行する方法」より、演習ファイル mlbb-sample-pi5.zip をダウンロードし、それが終わったら展開してください(ファイルを右クリックして「すべて展開」)。

さらに、カメラを用いる演習用に、「本書の演習をウェブカメラで実行する方法」にて紹介したウェブカメラ用の演習ファイル mlbb-webcam.zip をダウンロードし、こちらも展開してください。 そして、mlbb-webcam.zip を展開して現れるファイルを、全て本書の演習ファイルと同じフォルダに移動してください。これを行わないと正しく実行できない演習ファイルがあります。2個のファイルを上書きするか聞かれますが、上書きして構いません。

さて、サンプルの演習ファイルのあるフォルダにウェブカメラ用のファイルを加えると、「同じ番号のファイルが複数ある」状態になります。例えば、「ml-08-01」という番号がついたファイルは
  • ml-08-01-cameracheck.py
  • ml-08-01-cameracheck-webcam.py
の2つありますし、「ml-10-09」という番号のついたファイルも同様です。
  • ml-10-09-janken-deep.py
  • ml-10-09-janken-deep-webcam.py
このような場合、「webcam のついたファイルを使う」ようにしてください。上の例だと「ml-08-01-cameracheck-webcam.py」と「ml-10-09-janken-deep-webcam.py」ですね。
webcam のついていない方を実行するとエラーが出ますので注意してください。

以上でサンプルファイルの準備は完了です。

4. ファイルの実行に関する注意

あとは「Spyder (tf2)」からファイルを読みこんで実行するだけなのですが、いくつか注意がありますので順番に列挙します。
  • グラフ表示のあるプログラムでは、図のように「プロット」領域にグラフが現れます。



  • 7章最初に CUI で実行するじゃんけん (ml-07-01-janken-cui.py および ml-07-02-perceptron-cui.py) の実行には注意があります。まず、それらのファイルを開いた状態で「実行」→「ファイルごとの設定」を選択します。


    そした現れた画面で「カスタム設定でファイルを実行」にチェックを入れ、さらに「コンソール」の「外部システムターミナルで実行」を選択して「OK」してください。その設定をしてから実行しないと、プログラムを正しく終了できなくなります。
    なお、「ファイルごとの実行設定」の画面は小さく表示されることが多いので、ウインドウの端をつかんで大きくしてからご利用ください。

  • カメラを用いた演習、例えば ml-08-01-cameracheck.py と ml-08-01-cameracheck-webcam.py という同じ番号のファイルが複数見つかりますが、すべて末尾が「-webcam.py」という名前のファイルを選ぶようにしましょう。 これは上で mlbb-webcam.zip を展開した時に現れたファイルです。

    さらに、カメラを用いた演習でも「実行」→「ファイルごとの設定」で「カスタム設定でファイルを実行」にチェックを入れてから「コンソール」→「外部システムターミナルで実行」を選択してください。そうしないと、プログラム終了時にカメラが正常終了しません。

    また、カメラを用いた演習で手の形にが白く二値化されない場合、「書籍で用いたコマンドおよび追加情報」の「p.257 ml-08-02-binary.pyが手の形を反映していない場合」の項目を参考に、hmin、hmax、smin などのパラメータを調整する必要があります。

  • コマンドライン引数(ひきすう)の必要なプログラムの実行についてです。
    例えば、ml-08-03-learn.py の実行には下記のように「result.pkl」というコマンドライン引数をつける必要があるのでした。
    python3 ml-08-03-learn.py result.pkl
    
    これをSpyder で実現するためには、「実行」→「ファイルごとの設定」を開き、図のように「カスタム設定でファイルを実行」にチェックを入れ、さらに「一般設定」→「コマンドラインオプション」にチェックを入れてから、右側の入力欄に「result.pkl」と記入してOKボタンを押します。なお、古い Spyder では「カスタム設定でファイルを実行」のチェックが存在しない場合がありますがその場合は「一般設定」→「コマンドラインオプション」への記述だけで構いません。

    以上で演習ファイルにコマンドライン引数をつけて実行できます。文字通りこれは「ファイルごとの設定」ですので、演習ファイルを変更するごとに設定しなおす必要があります。

  • 9章で実行するじゃんけんシステム、ml-09-01-janken-webcam.py と ml-09-02-janken-shorten-webcam.pyは、「実行」→「ファイルごとの設定」で「カスタム設定でファイルを実行」にチェックを入れてから「コンソール」の「外部システムターミナルで実行」を選択して「OK」してください。そうしないと正常に終了できなくなります。「一般設定」の「コマンドラインオプション」への「result.pkl」の設定も必要です。

  • 10章最後に登場するじゃんけんシステムは、「実行」→「ファイルごとの設定」を開き、「カスタム設定でファイルを実行」にチェックを入れてから「外部システムターミナルで実行」を選択して「OK」してください。そうしないと正常に終了できなくなります。「一般設定」の「コマンドラインオプション」への「ml-hand-cnn.h5」の設定も必要です。


macOS に対するヒント
macOS (Intel/Apple silicon共通) では以下の点にご注意ください。ご了承ください。
  • 数字認識やじゃんけんなど、GUIを持ったプログラム(6章、7章、9章、10章およびmediapipeじゃんけん)も「外部システムターミナルで実行」しないと、プログラムが正常終了しません
  • じゃんけんシステム(9章、10章およびmediapipeじゃんけん)がマルチスレッドの問題でそのままでは動作しません。具体的には、映像を写す画面が開きません。
    プログラム中の「cv2.imshow('...', img)」の行の先頭に「#」を付けて無効にすると(すなわち、「#cv2.imshow('...', img)」のように)エラーは出なくなり、じゃんけんは動作します。
    ただし、映像を写す画面は開きませんのでご了承ください。
さらに、macOS (Apple silicon) では、じゃんけんシステムで音声を出力するための playsound が動作しません。そのため、先頭が (tf2) のターミナルで
pip uninstall playsound
を実行し、playsound を削除してください。cv2.imshow の無効化と合わせ、じゃんけんシステム (9章、10章) は映像なし、音声なしで動作するようになります。 また、macOS (Apple silison) では以下で紹介する mediapipe は動作しませんのでご了承ください。




5. MediaPipe のサンプルプログラムの実行に関する注意

また、Anaconda の Spyder で「Raspberry Pi 5 でリアルタイムな姿勢推定と物体検出」の内容を実行したい場合の解説を行います。

まず、mediapipe のインストールが必要です。「Anaconda Prompt (tf2)」を起動し、先頭が (tf2) のコマンドプロンプトで下記のコマンドを実行してインストールします。
pip install mediapipe==0.10.11
その後、姿勢推定と物体検出を以下の手順で実行します。
<姿勢推定の場合>
  • 「mediapipe-python-sample」のサンプルファイルをダウンロードするときは、「こちらのリンク」の先で「Code」ボタン→「Download ZIP」とたどります。ZIPファイルをダウンロ―ド後は展開します。
  • 展開したプログラムのうち、ファイル名に「_picamera2.py」が含まれていないものは、ウェブカメラで実行できます。
  • どのプログラムを実行する場合も、「実行」→「ファイルごとの設定」において「カスタム設定でファイルを実行」にチェックを入れ、「コンソール」を「外部システムターミナルで実行」に設定します。カメラの種類を変えたい場合は、「一般設定」の「コマンドラインオプション」で「--device 1」などとカメラ番号を指定してください。

<物体検出の場合>
  • 「mediapipe」のサンプルファイルをダウンロードするときは、「こちらのリンク」の先で「Code」ボタン→「Download ZIP」とたどります。ZIPファイルをダウンロ―ド後は展開します。
  • 展開したプログラムのうち、「object_detection/raspberry_pi」フォルダにある「detect.py」を実行します。その前に、「efficientdet_lite0.tflite」をダウンロードし、「detect.py」と同じフォルダに保存しておきましょう。
  • ファイル実行時の設定として、「実行」→「ファイルごとの設定」において「カスタム設定でファイルを実行」にチェックを入れ、「コンソール」を「外部システムターミナルで実行」に設定します。さらに、 「一般設定」の「コマンドラインオプション」で「--model efficientdet_lite0.tflite」を指定します。 カメラの種類を変えたい場合は、「一般設定」の「コマンドラインオプション」を「--model efficientdet_lite0.tflite --cameraId 1」などとしてカメラ番号を指定してください。

さらに、Anaconda の Spyder で「Raspberry Pi 5 と mediapipe で AI とじゃんけん勝負してみた」の内容を実行したい場合、以下の手順で行ってください。
  • 「mediapipe-janken」のファイルをダウンロードするときは、「こちらのリンク」の先で「Code」ボタン→「Download ZIP」とたどります。ZIPファイルをダウンロ―ド後は展開します。
  • 手の形の学習済ファイルは ml-mediapipe-hand.h5 なのですが、配布されているファイルはバージョンの問題により Anaconda 上で動作しません(Raspberry Piでは動作する)。そのため、 ml-mediapipe-hand.h5 を Anaconda で作り直す必要があります。
  • 展開したプログラムのうち、ml-mediapipe-02-learn.py を開きます。「実行」→「ファイルごとの設定」において「カスタム設定でファイルを実行」にチェックを入れ、「一般設定」の「コマンドラインオプション」に保存先のファイル名を「ml-mediapipe-hand.h5」と指定します。これは、配布済のファイルの上書きとなります。その後、プログラムを実行すると学習済ファイル ml-mediapipe-hand.h5 が保存されます。
  • その後、ml-mediapipe-03-janken.py を実行します。「実行」→「ファイルごとの設定」において「カスタム設定でファイルを実行」にチェックを入れ、「コンソール」を「外部システムターミナルで実行」に設定し、「一般設定」の「コマンドラインオプション」に「ml-mediapipe-hand.h5」を指定します。以上の設定でファイルを実行してください。

0 件のコメント:

コメントを投稿