1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Ultralyticsってなんだ? 〜脱!依存関係地獄〜

Posted at

ねらい・対象・ゴール・TL;DR

ねらい: Ultralyticsとは何者なのか、そしてなぜこいつが「依存関係地獄」を引き起こすのか、その正体と対処法を徹底解説する

対象:

  • 「pip install ultralyticsしたら環境が壊れた」経験者
  • YOLOを使いたいけど何からやればいいかわからない人
  • 物体検出を始めたいエンジニア・研究者

ゴール: Ultralyticsの正体を理解し、依存関係地獄から抜け出す術を身につける

TL;DR: UltralyticsはYOLOシリーズ(v5, v8, v11, v26)を開発・管理している企業/ライブラリ。便利だけど依存関係が複雑で環境破壊しがち。仮想環境は必須、--no-depsオプションを使った手動インストールという選択肢も覚えておこう。


はじめに:ある日突然やってくる「依存関係地獄」

「よーし、今日からYOLOで物体検出やるぞ」

意気揚々とpip install ultralyticsを叩いたその瞬間、ターミナルに流れる不穏なメッセージ。

ERROR: pip's dependency resolver does not currently take into account 
all the packages that are installed.

やっちまった。NumPyのバージョンが勝手に上がって、別のプロジェクトで使ってたPandasが動かなくなった。TensorFlowも道連れにされた。さっきまで動いてたJupyter Notebookが死んだ。

これが「依存関係地獄」ってやつだ。そしてこの地獄への入口を開けたのが、今日の主役「Ultralytics」である。


Ultralyticsとは?YOLOの「守護者」の正体

会社としてのUltralytics

Ultralyticsは、アメリカ・メリーランド州とスペイン・マドリードにオフィスを持つAI企業だ。創業者のGlenn Jocherは元々物理学の研究者で、粒子衝突の解析をしていた経験が物体検出への道を開いたという、なんともロマンのある話。

"The cross-platform app building toolkit"

— Ultralytics公式サイトより

いや待って、これTauriの説明文だった。失礼。Ultralyticsの方は:

"Ultralytics is a global leader in AI development"

— Quanta Intelligence記事より

そう、彼らはYOLOv5以降のYOLOシリーズを開発・メンテナンスしている、物体検出界のキーパーソンなのだ。

ライブラリとしてのUltralytics

pip install ultralyticsでインストールされるのは、Pythonパッケージとしての「ultralytics」。これ一つで、YOLOv5、YOLOv8、YOLO11(YOLOv11)、そして最新のYOLO26まで動かせるというスグレモノだ。

from ultralytics import YOLO

# たったこれだけで物体検出ができる
model = YOLO("yolov8n.pt")
results = model("image.jpg")

3行で物体検出。控えめに言って革命的。


YOLOの系譜:誰が作って誰が管理してるの?

ここでYOLOシリーズの歴史を整理しておこう。意外と知られていないけど、全部同じ人が作ってるわけじゃない。

Ultralytics製(同じエコシステム)

モデル リリース年 特徴
YOLOv5 2020 Ultralyticsの処女作。PyTorchベースで使いやすさ抜群
YOLOv8 2023 アンカーフリー設計。セグメンテーション・姿勢推定も対応
YOLO11 2024 効率化に注力。YOLOv8mより22%少ないパラメータで同等以上の精度
YOLO26 2025 NMSフリー。エッジデバイス向けに最適化

コミュニティ製(Ultralytics以外)

モデル リリース年 開発者
YOLOv1-v3 2015-2018 Joseph Redmon(元祖の人)
YOLOv4 2020 Alexey Bochkovskiy
YOLOv6 2022 Meituan(美団)
YOLOv7 2022 Chien-Yao Wang
YOLOv9 2024 同上
YOLOv10 2024 清華大学

つまり「YOLO」という名前を冠しているけど、v6、v7、v9、v10はUltralyticsの製品じゃない。ただし、YOLOv10は清華大学がUltralyticsのPythonパッケージを使って開発している。ややこしい。


なぜ依存関係地獄が起きるのか

原因1:依存パッケージが多すぎる

Ultralyticsのpyproject.tomlを覗くと、これでもかというほどの依存関係が並んでいる:

  • PyTorch / Torchvision(機械学習の本体)
  • NumPy(数値計算の王様)
  • OpenCV(画像処理の定番)
  • Matplotlib(可視化)
  • Pillow(画像読み込み)
  • Pandas、Polars(データ処理)
  • SciPy(科学計算)
  • その他もろもろ...

これらのパッケージはそれぞれが独自のバージョン制約を持っている。パッケージAは「NumPy 1.x系じゃないとダメ」と言い、パッケージBは「NumPy 2.0以上必須」と言う。pipはこの矛盾を解決しようとして、結局どっちかを犠牲にする。

原因2:NumPy 2.0問題

2024年以降、特に深刻なのがNumPy 2.0系の互換性問題だ。GitHub Issue #22346で報告されている通り:

"Installing/upgrading ultralytics on a Kaggle T4x2 notebook produces many pip dependency conflicts (numpy upgraded to 2.2.6) and subsequent yolo train fails with numpy.core.multiarray failed to import"

— GitHub Issue #22346より

NumPy 2.0は内部APIが大きく変更されたので、古いバイナリホイールが動かなくなる。Ultralyticsをインストールすると勝手にNumPyが上がって、他のライブラリが死ぬ。典型的なパターンだ。

原因3:Debian/Ubuntu系のexternally-managed-environment

Debian 12以降、pipでシステムPythonにパッケージをインストールしようとすると、こんなエラーが出る:

error: externally-managed-environment

× This environment is externally managed

これ自体は正しい設計思想(システムPythonを保護する)なんだけど、Ultralyticsの内部でpip installを呼び出す処理があって、それが失敗する。

"AIUI, with yolov8 it is necessary to do pip install ultralytics. As of Debian 12, this is not permitted"

— GitHub Issue #7232より


脱・依存関係地獄:具体的な対処法

対処法1:仮想環境を使う(基本中の基本)

これを言うと「知ってるわ!」って怒られそうだけど、やってない人が本当に多い。

# venvで仮想環境作成
python -m venv ultralytics-env
source ultralytics-env/bin/activate  # Windowsは ultralytics-env\Scripts\activate

# この中でインストール
pip install ultralytics

Condaを使うならもっと安全:

conda create -n yolo python=3.11
conda activate yolo
pip install ultralytics

対処法2:--no-depsオプションで手動インストール

公式ドキュメントにも書いてある上級者向けテクニック。

"You can install the ultralytics package core without any dependencies using pip's --no-deps flag. This requires you to manually install all necessary dependencies afterward."

— Ultralytics公式ドキュメントより

# 依存なしでインストール
pip install ultralytics --no-deps

# 必要なものを個別に入れる
pip install torch torchvision
pip install numpy matplotlib pillow
pip install opencv-python-headless  # GUIなし環境ならこっち
pip install pyyaml psutil requests scipy

この方法なら、どのバージョンを入れるか自分でコントロールできる。既存環境との衝突を避けやすい。

対処法3:Dockerで隔離する

本気で環境を分離したいならDockerが最強。

FROM python:3.11-slim

RUN pip install ultralytics

WORKDIR /app
docker build -t my-yolo .
docker run -it --gpus all my-yolo python your_script.py

GPUを使うなら--gpus allを忘れずに。NVIDIA Container Toolkitの事前セットアップも必要。

対処法4:pipの依存解決を諦めさせる

最終手段。既存環境を壊す覚悟がある場合のみ:

pip install ultralytics --break-system-packages

これは本当の本当に最後の手段。何が起きても自己責任で。


YOLO11 vs YOLOv8:どっちを使うべき?

2024年9月にリリースされたYOLO11は、YOLOv8の正統進化版だ。

項目 YOLOv8 YOLO11
パラメータ数 基準 22%削減(mサイズ比較)
CPU推論速度 基準 約30%高速
mAP(COCO) 37.3%(n) 39.5%(n)
アーキテクチャ C2f + SPPF C3k2 + C2PSA

"YOLO11 achieves a 'Pareto improvement' over YOLOv8—offering higher accuracy with lower computational cost."

— Ultralytics公式ドキュメントより

パレート改善。つまり「どの観点から見ても良くなった」ということ。新規プロジェクトならYOLO11を選ばない理由がない。

切り替えは超簡単

# YOLOv8
model = YOLO("yolov8n.pt")

# YOLO11(これだけ)
model = YOLO("yolo11n.pt")

APIは完全互換。モデルファイルの名前を変えるだけ。


実践:トラブルシューティング辞典

症状1:No module named 'ultralytics'

原因:仮想環境の中と外を間違えている

# 今どの環境にいるか確認
which python
# または
python -c "import sys; print(sys.executable)"

仮想環境をactivateし忘れてないかチェック。

症状2:numpy.core.multiarray failed to import

原因:NumPyのバージョン不整合

# NumPyを固定バージョンで再インストール
pip uninstall numpy
pip install numpy==1.26.4  # 安定版

症状3:CUDA out of memory

原因:VRAMが足りない(モデルが大きすぎる)

# 小さいモデルに変更
model = YOLO("yolo11n.pt")  # nano版
# または
model = YOLO("yolo11s.pt")  # small版

# バッチサイズを下げる
model.train(data="dataset.yaml", batch=8)  # デフォルト16から下げる

症状4:Cannot find module @tauri-apps/cli-darwin-x64

原因:...待って、これTauriの記事で書くやつだった。


まとめ:Ultralyticsとの正しい付き合い方

Ultralyticsは間違いなく物体検出の民主化に貢献している素晴らしいプロジェクトだ。3行で物体検出ができる時代を作ったのは彼らの功績。

だけど、その便利さの裏には複雑な依存関係という代償がある。

依存関係地獄を避けるための3箇条

  1. 必ず仮想環境を使う(これだけで8割の問題は防げる)
  2. 既存プロジェクトへの追加は慎重に(新規環境を作ることを検討)
  3. --no-depsという選択肢を覚えておく(上級者向け)

YOLOは確実に進化し続けている。YOLO26ではNMSすら不要になって、さらにエッジデバイス向けに最適化される。この波に乗り遅れないように、まずは環境構築の壁を乗り越えよう。

物体検出の世界は、そこからが本番だ。


参考リンク


この記事が役に立ったら、ぜひフォローといいねをお願いします。質問があればコメント欄でどうぞ。

1
1
1

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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?