はじめに
こんにちは。初投稿なので改善点などがあればリプ欄で教えてください。
画像認識について興味を持ったためYolo-v8を使ってみようと思ったのですが結果の保存に関してうまく行かないことがあったため備忘録として記録しておきたいと思います。
1,発生した問題
まずはYolo-v8を早速使ってみる
from ultralytics import YOLO
# モデル読み込み
model = YOLO("models/yolov8n.pt")
# 入力画像
results = model('bus.jpg',save=True)
前述したコードを実行すると以下のような画像認識の結果が出ます。
しっかりと画像認識されていますね!
しかし...ここで発生したのがこの結果の保存先問題です。
以下のターミナルの情報を見てもらうとわかるように実行ディレクトリと保存ディレクトリが違うことがわかります。
(env) hiromu@Hiromus-MBP Yolo % python -u "/Users/hiromu/MyPython/Yolo/yolo.py"
image 1/1 /Users/hiromu/MyPython/Yolo/bus.jpg: 640x480 4 persons, 1 bus, 1 stop sign, 57.4ms
Speed: 2.3ms preprocess, 57.4ms inference, 1.1ms postprocess per image at shape (1, 3, 640, 480)
Results saved to /Users/hiromu/hack/runs/detect/predict
2,解決のために行ってみたこと
なぜこのようなことが起きてしまったのか、原因を色々検索したのですが見当たりませんでした。
実は保存先のディレクトリは以前ハッカソンで画像認識を使ったディレクトリでありました。画像認識に関してはチームの他のメンバーが担当していたためファイルの管理をしていなかったのでそれが悪さしているのではないかと思い、友人に聞いてみたのですが何も設定などはしていないとのことでした。。。
①ディレクトリの削除
ハッカソンで使用したローカルディレクトリはGitHubに公開してあるため削除しても良いので削除し、再度実行したのですが何も解決しませんでした。
②ultralyticsの再インストール
yoloを使う際にインストールするモジュールなのですが特に解決しませんでした。
③保存先パスの指定
results = model('bus.jpg',save=True)
この部分を変更してパスを指定してみたのですがうまくいかず
results = model('bus.jpg', save=True, save_path='/Users/hiromu/MyPython')
3,解決
そもそもYoloの設定がおかしいのではないのかと思い、Yoloに設定などあるのかわからないままとりあえず調べてみることに・・・
あったー!!!
公式が丁寧に解説していました。すいません。公式様がやはり一番です。🙇
ということでこのページの下の方にある方法で設定見てみると
{'runs_dir': '/Users/hiromu/hack/runs'}
これですね。原因は。
設定変更をするためのコードを書いて希望するパスに変更し実行する。
from ultralytics import settings
# Update a setting
settings.update({'runs_dir': 'Users/hiromu/MyPython/Yolo'})
# Reset settings to default values
settings.reset()
(env) hiromu@Hiromus-MBP Yolo % python -u "/Users/hiromu/MyPython/Yolo/yolo.py"
image 1/1 /Users/hiromu/MyPython/Yolo/bus.jpg: 640x480 4 persons, 1 bus, 1 stop sign, 61.0ms
Speed: 4.4ms preprocess, 61.0ms inference, 4.4ms postprocess per image at shape (1, 3, 640, 480)
Results saved to runs/detect/predict
無事解決しました!!!!
これを解決するために5時間ほど費やしてしまいました😭
4,まとめ
OSSを使うときは公式ページをしっかり最初から読むことが何よりも大切だと感じました。
もちろんそれ以外でも。