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?

Darknetについて語ろう。

0
Posted at
  1. 起点:2013年、フレームワーク前夜のC言語
    最初のコミットは2013年11月4日、Joseph Redmonのpjreddie/darknet。当時の選択肢はCaffe(prototxt + C++)、Torch7(Lua)、Theano(Pythonでグラフをコンパイル)。この文脈でDarknetの設計を見ると、思想がはっきりする。 Ccoderun

単一バイナリ・依存ゼロ:C99 + CUDA。BLASすら自前(gemm.cにナイーブ実装が入っている)。研究室のマシンでも学生のノートでも make だけで動く。
.cfg という宣言的DSL:ネットワーク構造をINI風テキストで書く。Caffeのprototxtと同じ発想だが、はるかに薄い。parser.c が [convolutional] を読んで layer 構造体を作るだけ。
.weights = ヘッダ+float32の生ベタ配列:シリアライズ形式が「レイヤ順に並べただけ」。これが後年、ONNX変換やINT8量子化を外部から自由にやれる理由になっている(PyTorchのpickle依存とは対極)。

構造上の核心は struct layer が巨大なタグ付き共用体で、forward_* / backward_* を関数ポインタで持つこと。autogradは無い。勾配は人間が手で書く。これが後述するすべての運命を決めた。
2. YOLO本体の進化(2015–2018)

v1 (CVPR 2016):検出を「回帰問題」に落とした。7×7グリッド、全結合層で座標を直接吐く。R-CNN系の region proposal → 分類という二段構えを一段にしたのが本質。
v2 / YOLO9000 (2016):anchor box導入、BN全面採用、passthrough層、WordTreeによる分類データとの共同学習。
v3 (2018):3スケール出力(実質FPN)、softmaxを捨ててクラス毎sigmoid(マルチラベル化)。arXivのみで査読論文なし、しかも "Tech Report" と称した軽口の文体。この「論文の形式を無視する」姿勢自体が、後のバージョン番号の無政府状態の伏線になっている。

  1. 断絶点:2020年2月
    2020年2月、Redmonは自身の研究の軍事利用・プライバシー侵害への懸念を理由にCVの研究をやめると表明した。ここで見落とされがちな構造的な点: Towards Data Science
    Darknetには財団もCLAもガバナンスも無かった。だから継承は「制度」ではなく「事実」として起きた。AlexeyAB forkが既にコミュニティの実質的本体になっていたので、Redmonは自分のREADMEにAlexeyのリポジトリとYOLOv4論文へのリンクを貼るという形で追認しただけ。所有権ではなくmindshareが継承した。この「無主物ゆえに乗っ取り可能」という性質が、次節の混乱を生む。 Towards Data Science
    なお、「Redmonが辞めたからDarknetが停滞した」という通説は因果として弱い。停滞の主因はむしろ技術的で、cuDNN/PyTorchが演算子追加速度で圧倒し始めたこと、そしてautograd不在のせいで新しい損失関数(後のTAL、DFL、DETR系のHungarian matching)を試すコストがDarknetでは一桁高かったことにある。Redmonの離脱はその上に重なった事象で、単独原因ではない。
  2. AlexeyAB期(2016末–2021):訓練側エンジニアリングの時代
    AlexeyAB forkは2016年末から2021年7月まで活発で、YOLOv4 (2020-05) と YOLOv7 (2022-08) を生んだ。 Ccoderun
    ここで加わった価値は、実はアーキテクチャよりも訓練レシピだった。YOLOv4論文の実体は大規模なアブレーション研究で、"Bag of Freebies"(推論コスト増ゼロ:mosaic、CIoU loss、label smoothing、cosine annealing、self-adversarial training)と "Bag of Specials"(微量の推論コスト増:SPP、PAN、Mish、CSP)に分類した。BoFは推論時間を増やさず精度を上げ、訓練コストのみ増やす。BoSは推論コストをわずかに増やす代わりに精度を大きく改善する。 Towards Data Science
    つまりv4の貢献は「新しい構造の発明」ではなく「既存技法の網羅的評価と統合」で、これは工学として極めて正直だが、論文としては引用されにくいタイプの仕事だった。加えてWindowsビルド、Data augmentationパイプライン、-map による訓練中評価など、実務者を引き寄せたのは地味な部分。
    Alexeyの離脱後、Wang/Liao(中央研究院)がYOLOv7・v9系を継ぐが、これはもうDarknetというよりPyTorch実装が主軸になっていく。
  3. バージョン番号の無政府状態
    2020年、Ultralyticsが論文なしでPyTorch実装を "YOLOv5" と名乗った。「YOLO」が誰のものでもない(当時は商標主張が事実上不在だった)ため、バージョン番号がマーケティング資源として空き地化した。結果:
    名前主体系譜v5, v8, v11, v12Ultralytics独自PyTorch系v4, v7, v9Bochkovskiy / Wang & LiaoDarknet系→PyTorchv6美団 (Meituan)独自YOLOXMegviianchor-freePP-YOLOBaiduPaddlePaddlev10清華大NMS-free
    版番号と血統が完全に脱共役している。v9 → v10 → v11 は連続した改良ではなく別組織の別系統。これは通説的に「YOLOは進化し続けている」と語られるが、実態は「YOLOという名前空間を巡る競合」で、比較表の多くは異なる訓練レシピ・異なる評価プロトコルの混在を隠している。ここは疑ってかかるべき箇所。
    そしてUltralyticsがAGPL-3.0を採用したことが、産業側にとって決定的だった。AGPLはネットワーク越し提供でもソース開示義務を課すため、組込み・SI案件では実質使えず、商用ライセンス購入が必要になる。この一点が、次節のDarknet存続の最大の駆動力である。
  4. Hank.ai / Charette期(2023–現在)
    2023年、AlexeyAB forkをStéphane CharetteとHank.aiがフォークし、これが現在の「本流」とされている。2023年から2024年後半までがv2.x "OAK"で、既存機能を壊さないことを目標に、CMakeによるWindows/Linux/Mac統一ビルド、C++コンパイラへの移行、訓練時間短縮の最適化を行った。 CcoderunGitHub

V3 "Jazz" (2024-10):RTX 3090でLEGOデータセット動画を最大1000 FPS、1フレームあたり読込・リサイズ・処理込みで1ms以下と主張。 Codeberg
V4:ログ出力の抽象化(printf/std::cout 全廃)など、ライブラリとして組み込むための整備。
V5 "Moonlit" (2025-08):OpenBLAS対応(非GPUデバイスで特に有効)、ONNXエクスポートツール追加、リポジトリをCodebergへ移動しGitHubへ自動ミラー。さらにPGO対応、実験的なJavaバインディング。 CcoderunGitHub
v5.1 (2025-12):ONNXエクスポートが confs と boxes 両方のノードを出力、mAP関数の書き直し、小規模な最適化。 GitHub
V6 "Rouge":2026年リリース予定の開発ブランチ。 Ccoderun

この期の性格は明確で、研究ではなく保守・製品化。新アーキテクチャは入らない。入るのはビルドシステム、BLAS統合、ONNX出口、PGO、言語バインディング。つまり「Darknetを研究の道具から産業のランタイムへ再定義する」作業をやっている。GitHub→Codeberg移動も、ホスティング先の政策リスク(AI学習データ・Copilot問題)からの独立という同じ方向の判断と読める。
7. なぜ生き残ったのか(因果の整理)
主因は精度でも速度でもなく、制約条件の少なさだと思う:

ライセンス:完全に無償・オープンソースで、商用製品を含む既存プロジェクトに、ライセンスも料金も無しで組み込める。AGPLのUltralytics系との対比で、これが産業採用の第一決定要因。 Codeberg
Pythonランタイム不要:単一 .so / .dll。GStreamerプラグインや組込みに直接入る。
演算子の貧しさが逆に利点:conv + BN + leaky/mish + route + upsample しか無い。この単純さがINT8量子化・グラフ手術(ヘッドのチャネル削減など)を人間の手に負えるものにしている。PyTorch系の豊富な演算子は、量子化・エッジ展開では純粋な負債。
cfg/weightsが可読な静的形式:外部ツールを自作できる。

歴史を一言でまとめるなら、Darknetは**「研究者の個人ツールが、放棄され、ボランティアに継承され、最終的にライセンス条件という非技術的要因によって産業インフラとして生き残った」**という経路。技術的合理性ではなく制度的条件が生存を決めた事例として読める。

というのがAIによるまとめです。

上で述べられているOpenBLASは私がPRして採用されたんですよ、実は。

世間ではV8/V11というのがメジャーですが、Yoloのバージョンアップって、要するにMS COCOをいかに上手に解くかという話で、実世界で物体検知にどれだけそれが効くかというのは別の話になっています。
だから、業務に使うならライセンス的になんの問題が生じない、darknetを使うのが良いと思っています。

続きがあるかも。

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?