0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

pyinstaller + yolo v8 でエラー

Last updated at Posted at 2024-08-26

pyinstaller + YOLOv8 でEXEがうまく起動できなかった。

こんなエラーが出て起動できない。

image.png

スクロールして一番最後を見てみると、default.yamlファイルが見つからないとのこと。
FileNotFoundError: [Errno 2] No such file or directory: 'D:\\WoLNamesBlackedOut\\dist\\WoLNamesBlackedOut\\_internal\\ultralytics\\cfg\\default.yaml'

こんなこともあろうかと、既にQiitaの記事をストックしておいた!

ただ私のspecの書き方が悪いのか、すぱっと解決しませんでした。
学習させた重みファイルを参照したいので、

main.py
def resource_path(relative_path):
    if hasattr(sys, '_MEIPASS'):
        return os.path.join(sys._MEIPASS, relative_path)
    return os.path.join(os.path.abspath("."), relative_path)

model = YOLO(resource_path("my_yolov8n.yaml"))
model = YOLO(resource_path("my_yolov8n.pt"))

とし、pyinstallerのスペックでは、

main.spec
datas=[('my_yolov8n.pt','.'),('my_yolov8n.yaml','.'),]

としていたので、参考としたQiita記事のように、うまくultralyticsを追加できませんでした。

よろしい。ならば検索だ!

眺めていると、

Find yolo/utils/init.py, in about line34 change DEFAULT_CFG_PATH to absolute path above, official value
start with ‘ROOT / ...’.

という記述を見つけ、YOLOv8がパスを見失っていることが原因らしい・・・
そういえば最近そんなことあったな!

手前味噌ですが、自分の投稿が役に立ちました。
この時は、MMCV対応でしたが、同じ方法でうまく対応できました。
具体的には、

1.hook-ultralytics.py を作成

hook-ultralytics.py
from PyInstaller.utils.hooks import collect_data_files
datas = collect_data_files("ultralytics")

2.hook-ultralytics.py をhooksというフォルダに保存

image.png

3. main.specを次のように記述

main.spec
a = Analysis(
    ['main.py'],
    pathex=[],
    binaries=[],
    datas=[('my_yolov8n.pt','.'),('my_yolov8n.yaml','.'),],
    hiddenimports=[],
    hookspath=['./hooks'], #こちら
    hooksconfig={},
    runtime_hooks=[],
    excludes=[],
    noarchive=False,
    optimize=0,
)

このようにすることで、pyinstallerはhooksを参照し、hook-ultralytics.pyを実行してくれるようです。
結局、参考とさせていただいた記事と同じ内容を実施しているのではないかと思います。

めでたし、めでたし。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?