Windows 11 上の PyCharm で Ultralytics YOLO をデバッグ実行

1. 概要

Windows 11 に PyCharm をインストールし、Ultralytics YOLO をデバッグ実行しました。
今回は GPU を搭載していないノートパソコン LIFEBOOK WU2/D2 で確認しました。

補足:
このページの画像はクリックすると拡大されたより鮮明な画像として表示されます。
2. PyCharm のインストール

こちらのページの Install the Toolbox App の手順で PyCharm Community をインストールしました。

2.1. Windows 用の Toolbox App のダウンロード

こちらのページから Windows 用の Toolbox App の実行ファイルをダウンロードしました。

2.2. PyCharm Community のインストール

Toolbox App の実行ファイルをダブルクリックし、PyCharm Community をインストールしました。途中、下の画像のような選択項目が提示されます。二つ目の画像のように PyCharm Community は Install するアプリを選ぶ画面の下のほうにありました。Install をクリックしてしばらくすると三つ目の画像のようになります。

3. PyCharm で Ultralytics YOLO をデバッグ実行
3.1. PyCharm Community の起動

Windows 11 のスタートメニューから PyCharm Community を起動します。一つ目の画面で言語とエリア情報を選択します。二つ目の画面でチェックを入れ、Continue をクリックします。三つ目の画面でソフトウェア利用の統計情報を送信するか否かを選択します。

四つ目の画面が表示されるので、Customize をクリックします。特に変更する必要はありませんが、五つ目の画面の例では Keymap を emacs に変更しています。


3.2. PyCharm Project の作成と Ultralytics YOLO のインストール

一つ目の画像のように Projects を選択後、New Project をクリックします。二つ目の画像のように Name 欄に Project 名を入力し、Create ボタンをクリックします。この例では Project 名を TestUltralyticsYolo としています。三つ目の画像の左端の緑の枠内のボタンをクリックします。

一つ目の画像の左下の緑の枠内のリンクをクリックし、pip のバージョンを更新します。しばらくすると二つ目の画像のように pip のバージョンが更新されます。三つ目の画像の緑の枠内をクリックし、Package を追加します。

一つ目の画像のように From Version Control を選択します。二つ目の画像のように Install as editable (-e) にチェックを入れ、下記のような文字列を入力します。ダウンロードした Ultralytics の Python スクリプトの書き換えがすぐにプログラムの実行に反映されるようにするため、Install as editable にチェックを入れています。この設定でインストールする際、#egg=ultaralytics を末尾に追加しないとインストールに失敗してしまったため、下記のような文字列をセットしています。しばらくすると三つ目の画像のような画面になり、Ultralytics のインストールが完了します。

https://github.com/ultralytics/ultralytics#egg=ultralytics
3.3. Ultralytics YOLO の実行

一つ目の画像のように src フォルダを右クリックし、New -> Python File を選択します。二つ目の画像のように追加する Python File の名前を入力します。この例では test_yolo_object_detection.py としています。三つ目の画像のように test_yolo_object_detection.py に実行する Python スクリプトの中身を入力し、上部の緑の枠内をクリックしてスクリプトを実行します。

入力した Python スクリプトの中身は下記のようになっています。
source 変数にセットした文字列はこちらの鳥の画像のアドレスになります。

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO("yolov8n.pt")

# Define remote image or video URL
source = "https://www.leafwindow.com/wordpress-05/wp-content/uploads/2023/03/DSC00283-min-SonyAlpha-%E6%A8%AA.jpg"

# Run inference on the source
results = model(source)  # list of Results objects

# Save image
results[0].save("A_bird_taken_at_nagara_park.jpg")

ですが、ここまでの手順を終えた段階で Python スクリプトを実行すると下記のようなエラーがコンソールに出力されてしまいました。

C:\Users\fukag\PycharmProjects\TestUltralyticsYolo\.venv\Scripts\python.exe C:\Users\fukag\PycharmProjects\TestUltralyticsYolo\.venv\src\test_yolo_object_detection.py 
Traceback (most recent call last):
  File "C:\Users\fukag\PycharmProjects\TestUltralyticsYolo\.venv\src\test_yolo_object_detection.py", line 1, in <module>
    from ultralytics import YOLO
ImportError: cannot import name 'YOLO' from 'ultralytics' (unknown location)

Process finished with exit code 1
3.4. Ultralytics のパスの追加

Ultralytics のパッケージを参照した Python スクリプトを実行できるようにするため、Project の Interpreter Paths にインストールした Ultralytics のパスを追加します。

補足:
Path を追加する前に、インストールされた PyCharm Community 2024.2.2 を PyCharm Community 2024.2.3 に更新しました。上部の歯車の形状の Settings ボタン右上に、更新版が存在することを示す黄色い小さな丸が表示されていたため、クリックして PyCharm Community 2024.2.3 への更新を選択しました。

一つ目の画像のように画面上部の設定ボタンをクリックし、設定画面を開きます。二つ目の画像のように左のパネルから Project -> Python Interpreter を選択し、Python Interpreter を選択後、Show All を選択します。三つ目の画像の緑の枠内をクリックします。

一つ目の画像の緑の枠内をクリックし、Interpreter Paths を追加します。二つ目の画像のように、これまでの手順で Project 内にコピーされた Ultralytics のディレクトリを選択します。三つ目の画像は選択後の Interpreter Paths になります。

上記 3.3. で用意した Python スクリプトを再実行すると、今度はコンソールに下記のような文字列が出力されます。

C:\Users\fukag\PycharmProjects\TestUltralyticsYolo\.venv\Scripts\python.exe C:\Users\fukag\PycharmProjects\TestUltralyticsYolo\.venv\src\test_yolo_object_detection.py 

Found https://www.leafwindow.com/wordpress-05/wp-content/uploads/2023/03/DSC00283-min-SonyAlpha-横.jpg locally at DSC00283-min-SonyAlpha-横.jpg
image 1/1 C:\Users\fukag\PycharmProjects\TestUltralyticsYolo\.venv\src\DSC00283-min-SonyAlpha-横.jpg: 448x640 1 bird, 194.1ms
Speed: 7.8ms preprocess, 194.1ms inference, 14.6ms postprocess per image at shape (1, 3, 448, 640)

Process finished with exit code 0

Python スクリプトを実行して出力された A_bird_taken_at_nagara_park.jpg をダブルクリックすると、二つ目の画像のようになります。

3.5. Ultralytics YOLO の Debug 実行

一つ目の画像のようにコード左側の領域をマウスでクリックし、ブレイクポイントをセットします。そして、画面上部のデバッグボタンをクリックします。コンソールに下記のようなメッセージが出力されます。

import sys; print('Python %s on %s' % (sys.version, sys.platform))
C:\Users\fukag\PycharmProjects\TestUltralyticsYolo\.venv\Scripts\python.exe -X pycache_prefix=C:\Users\fukag\AppData\Local\JetBrains\PyCharmCE2024.2\cpython-cache "C:/Users/fukag/AppData/Local/Programs/PyCharm Community/plugins/python-ce/helpers/pydev/pydevd.py" --multiprocess --qt-support=auto --client 127.0.0.1 --port 60546 --file C:\Users\fukag\PycharmProjects\TestUltralyticsYolo\.venv\src\test_yolo_object_detection.py 
Connected to pydev debugger (build 242.23339.19)
Backend tkagg is interactive backend. Turning interactive mode on.

しばらくすると、セットしたブレイクポイントのコードを実行する直前でプログラムの実行が一時停止されます。二つ目の画像の緑の枠内のボタンをクリックすると、YOLO のインスタンスを生成している Ultralytics のコードの内部に移動します。

三つ目の画面は移動した先の Ultralytics のコードになります。class YOLO のコンストラクタに移動しています。

返信を残す

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

CAPTCHA