マーマイト
Marmite [Markdown makes sites] は、非常にシンプルな静的サイト ジェネレーターです。
Downcodes エディターは次のように述べています。「Marmite は非常にシンプルな静的 Web サイト ジェネレーターです。私は他の SSG をよく使用しますが、それらを最初から設定するのはいつも面倒だと感じています。マークダウン ファイルのディレクトリとコマンドを実行するだけで Web サイトを生成できます。これはそうです」本当に便利です。」
使用方法
マーマイトは 1 つの単純なことを行います。
マークダウンファイルをHTMLに変換
また、静的ファイルやメディア ファイルの生成や出力ディレクトリへのコピーも処理できます。
インストール
カーゴを使用してインストールします。
「バッシュ」
カーゴインストールマーマイト
`
または、リリース ページからプリコンパイルされたバイナリをダウンロードします。
使用
使い方はとても簡単です!
「バッシュ」
$ marmite フォルダー withmarkdownfiles 生成されたサイトへのパス
`
Web サイトは pathtogenerated_site/ ディレクトリに生成されます。
CLI
「バッシュ」
❯ マーマイト -- ヘルプ
Marmite は最も簡単な静的サイト ジェネレーターです。
用途:マーマイト [OPTIONS]
引数:
オプション:
--serve 組み込みの HTTP サーバーを使用してサイトを提供します
--watch 変更を検出し、サイトを自動的に再構築します。
- バインド
サーバーをバインドするアドレス [デフォルト: localhost:8000]
--config
カスタム構成ファイルへのパス [デフォルト: marmite.yaml]
--debug デバッグ メッセージを出力します。
--init-templates プロジェクト内のテンプレートを初期化します。
--start-theme テンプレートと静的アセットを使用してテーマを初期化します。
-h, --help ヘルプを印刷する
-V, --version バージョンを表示します
`
始めましょう
Marmite の使用を開始する方法を学ぶチュートリアル https://rochacbruno.github.io/marmite/getting-started.html を読み、数分かけてブログを作成してください。
書類
テンプレートのカスタマイズ方法、コメントの追加方法などの詳細については、https://rochacbruno.github.io/marmite/ をご覧ください。
要約する
マーマイトはとてもシンプルです。
このシンプルさがニーズに合わない場合は、他にも優れた静的 Web サイト ジェネレーターがあります。私がお勧めするものは次のとおりです。
ジキル
ヒューゴ
ギャツビー
Next.js
ダークネットオブジェクト検出フレームワークとYOLO
概要
Darknet は、C、C++、CUDA で書かれたオープンソースのニューラル ネットワーク フレームワークです。
YOLO (You Only Look Once) は、Darknet フレームワークで実行される最先端のリアルタイム物体検出システムです。
重要なリンク:
Hank.ai がダークネット/YOLO コミュニティにどのように役立つか
ダークネット/YOLO Web サイト
ダークネット/YOLOに関するよくある質問
ダークネット/YOLO Discord サーバー
紙
YOLOv7 論文
スケールされた YOLOv4 論文
YOLOv4 論文
YOLOv3 論文
一般情報
Darknet/YOLO フレームワークは、速度と精度の点で他のフレームワークや YOLO バージョンよりも常に優れています。
このフレームワークは完全に無料でオープンソースです。 Darknet/YOLO は、ライセンスや料金なしで、商用製品を含む既存のプロジェクトや製品に統合できます。
2024 年 10 月にリリースされた Darknet V3 (「Jazz」) は、NVIDIA RTX 3090 GPU を使用する場合、LEGO データセット ビデオを最大 1000 FPS で正確に実行できます。つまり、Darknet/YOLO は 1 ミリ秒以下で読み取ります。各ビデオ フレームを取得、サイズ変更、処理します。 。
Darknet/YOLO の CPU バージョンは、Raspberry Pi、クラウドおよび Colab サーバー、デスクトップ、ラップトップ、ハイエンドのトレーニング機器などのシンプルなデバイス上で実行できます。 Darknet/YOLO の GPU バージョンには、NVIDIA の CUDA 互換 GPU が必要です。
Darknet/YOLO は Linux、Windows、Mac 上で動作します。以下のビルド手順を参照してください。
ダークネットバージョン
2013 年から 2017 年に Joseph Redmon によって作成されたオリジナルの Darknet ツールにはバージョン番号がありませんでした。バージョン 0.x だと思います。
Alexey Bochkovskiy が 2017 年から 2021 年まで管理していた次に人気のある Darknet リポジトリにもバージョン番号がありませんでした。バージョン 1.x だと思われます。
Hank.ai が後援し、2023 年から Stéphane Charette によって保守されている Darknet リポジトリには、バージョン コマンドが搭載された最初のリポジトリです。 2023 年から 2024 年末までは、バージョン 2.x「OAK」に戻ります。
目標は、コード ベースに慣れながら、既存の機能をできるだけ壊さないようにすることです。
ビルド ステップを書き直したので、CMake を使用して Windows と Linux 上でビルドするための統一された方法が得られました。
C++ コンパイラを使用するようにコード ベースを変換します。
トレーニング中の chart.png が強化されました。
バグ修正とパフォーマンス関連の最適化。主にネットワークのトレーニングに必要な時間の短縮に関連します。
このコード ベースの最後のブランチは、v2 ブランチのバージョン 2.1 です。
開発の次の段階は 2024 年半ばに始まり、2024 年 10 月にリリースされます。 version コマンドは 3.x "JAZZ" を返すようになりました。
これらのコマンドのいずれかを実行する必要がある場合は、いつでも前の v2 ブランチをチェックアウトできます。不足しているコマンドの追加を調査できるよう、お知らせください。
多くの古いコマンドやメンテナンスされていないコマンドが削除されました。
トレーニングおよび推論中の最適化を含む、多くのパフォーマンスの最適化。
オリジナルの Darknet API を使用する変更された古い C API アプリケーションには若干の変更が必要です: https://darknetcv.ai/api/api.html
新しい Darknet V3 C および C++ API: https://darknetcv.ai/api/api.html
src-examples の新しいアプリケーションとサンプルコード: https://darknetcv.ai/api/files.html
MSCOCO の事前トレーニング済み重み
便宜上、いくつかの人気のある YOLO バージョンは MSCOCO データセットを使用して事前トレーニングされています。このデータ セットには 80 のカテゴリが含まれており、テキスト ファイル cfg/coco.names で確認できます。
Darknet/YOLO のテストに利用できる、LEGO Gears や Rolodex などのより単純なデータセットと事前トレーニングされた重みが他にもいくつかあります。詳細については、ダークネット/YOLO FAQ を参照してください。
MSCOCO の事前トレーニングされた重みは、いくつかの異なる場所またはこのリポジトリからダウンロードできます。
YOLOv2 (2016 年 11 月)
- yolov2-tiny.weights
- yolov2-full.weights
YOLOv3 (2018 年 5 月)
- yolov3-tiny.weights
- yolov3-full.weights
YOLOv4 (2020 年 5 月)
- yolov4-tiny.weights
- yolov4-full.weights
YOLOv7 (2022 年 8 月)
- yolov7-tiny.weights
- yolov7-full.weights
MSCOCO の事前トレーニング済み重みはデモンストレーションのみを目的としています。対応する .cfg および .names ファイル (MSCOCO の場合) は、cfg ディレクトリにあります。コマンド例:
「バッシュ」
wget --no-clobber https://github.com/hank-ai/darknet/releases/download/v2.0/yolov4-tiny.weights
darknet02displayannotatedimages coco.names yolov4-tiny.cfg yolov4-tiny.weights image1.jpg
darknet03display_videos coco.names yolov4-tiny.cfg yolov4-tiny.weights video1.avi
DarkHelp coco.names yolov4-tiny.cfg yolov4-tiny.weights image1.jpg
DarkHelp coco.names yolov4-tiny.cfg yolov4-tiny.weights video1.avi
`
独自のネットワークをトレーニングする必要があることに注意してください。 MSCOCO は、すべてが正常であることを確認するためによく使用されます。
建てる
過去 (2023 年以前) のさまざまな建設手法が統合されたソリューションに統合されました。 Darknet では、C++17 以降、OpenCV、および CMake を使用して必要なプロジェクト ファイルを生成する必要があります。
車を運転するのに整備士である必要がないのと同じように、Darknet/YOLO を構築、インストール、実行するのに C++ の知識は必要ありません。
Googleコラボ
Google Colab の手順は Linux の手順と同じです。新しいネットワークのトレーニングなど、特定のタスクを実行する方法を示す多数の Jupyter ノートブックが提供されています。
colab サブディレクトリにあるノートブックを参照するか、以下の Linux の手順に従ってください。
Linux CMake メソッド
1. 必要なソフトウェアをインストールします。
「バッシュ」
sudo apt-get install build-essential git libopencv-dev cmake
`
2. ダークネット リポジトリのクローンを作成します。
「バッシュ」
git clone https://github.com/hank-ai/darknet
`
3. ビルド ディレクトリを作成します。
「バッシュ」
CDダークネット
mkdir ビルド
CD ビルド
`
4. CMake を使用してビルド ファイルを生成します。
「バッシュ」
cmake -DCMAKEBUILDTYPE=リリース ..
`
5. ダークネットを構築する:
「バッシュ」
make -j4
`
6. Darknet をインストールします (オプション)。
「バッシュ」
パッケージを作る
sudo dpkg -i darknet-VERSION.deb
`
知らせ:
システムに NVIDIA GPU がインストールされている場合は、CUDA または CUDA+cuDNN をインストールして画像 (およびビデオ) 処理を高速化できます。
CUDA または CUDA+cuDNN をインストールする場合、または NVIDIA ソフトウェアをアップグレードする場合は、ビルド ディレクトリ内の CMakeCache.txt ファイルを削除し、Darknet を再構築する必要があります。
darknet version コマンドを使用して、Darknet が正常にインストールされたかどうかを確認できます。
Windows CMake メソッド
1. 必要なソフトウェアをインストールします。
「バッシュ」
winget インストール Git.Git
winget インストール Kitware.CMake
winget インストール nsis.nsis
winget インストール Microsoft.VisualStudio.2022.Community
`
2. Visual Studio のインストールを変更します。
- Windows の [スタート] メニューを開き、Visual Studio インストーラーを実行します。
- 「編集」をクリックします。
- 「C++を使用したデスクトップ開発」を選択します。
- 右下隅の「編集」をクリックし、「はい」をクリックします。
3. Microsoft VCPKG をインストールします。
「バッシュ」
CDC:
mkdir c:src
cd c:src
git clone https://github.com/microsoft/vcpkg
cd vcpkg
ブートストラップ-vcpkg.bat
.vcpkg.exe 統合インストール
.vcpkg.exe は PowerShell を統合します
.vcpkg.exe インストール opencv[contrib,dnn,freetype,jpeg,openmp,png,webp,world]:x64-windows
`
4. ダークネット リポジトリのクローンを作成します。
「バッシュ」
cd c:src
git clone https://github.com/hank-ai/darknet.git
CDダークネット
mkdir ビルド
CD ビルド
`
5. CMake を使用してビルド ファイルを生成します。
「バッシュ」
cmake -DCMAKEBUILDTYPE=リリース -DCMAKETOOLCHAINFILE=C:/src/vcpkg/scripts/buildsystems/vcpkg.cmake ..
`
6. ダークネットを構築する:
「バッシュ」
msbuild.exe /property:Platform=x64;Configuration=Release /target:Build -maxCpuCount -verbosity:normal -detailedsummary darknet.sln
msbuild.exe /property:Platform=x64;Configuration=Release PACKAGE.vcxproj
`
7. ダークネットをインストールします。
- ビルド ディレクトリ内の darknet-VERSION.exe ファイルを実行して、NSIS インストール ウィザードを開始します。
知らせ:
システムに NVIDIA GPU がインストールされている場合は、CUDA または CUDA+cuDNN をインストールして画像 (およびビデオ) 処理を高速化できます。
CUDA または CUDA+cuDNN をインストールする場合、または NVIDIA ソフトウェアをアップグレードする場合は、ビルド ディレクトリ内の CMakeCache.txt ファイルを削除し、Darknet を再構築する必要があります。
darknet.exe version コマンドを使用して、Darknet が正常にインストールされたかどうかを確認できます。
ダークネットの使用
CLI
以下は、Darknet でサポートされるすべてのコマンドの完全なリストではありません。
Darknet CLI に加えて、Darknet/YOLO の代替 CLI を提供する DarkHelp プロジェクト CLI にも注目してください。 DarkHelp CLI には、Darknet では利用できないいくつかの高度な機能もあります。 Darknet CLI と DarkHelp CLI は同時に使用できますが、相互に排他的ではありません。
以下に示すほとんどのコマンドでは、.names および .cfg ファイルに対応する .weights ファイルを使用する必要があります。独自のネットワークをトレーニングすることも (強くお勧めします!)、他の人がトレーニングしてインターネット上に無料で公開したニューラル ネットワークをダウンロードすることもできます。事前トレーニング データセットの例は次のとおりです。
レゴ ギア (画像内のオブジェクトを見つけます)
Rolodex (画像内のテキストを検索)
MSCOCO (標準 80 カテゴリの物体検出)
実行するコマンドには次のものがあります。
ダークネット ヘルプ: ヘルプ情報を表示します。
ダークネットバージョン: バージョンを確認します。
ダークネット ディテクタ テスト cars.data cars.cfg cars_best.weights image1.jpg: 予測に画像を使用します (V2)。
darknet02displayannotatedimagescars.cfg image1.jpg: 画像を使用した予測 (V3)。
DarkHelp 車.cfg 車.cfg 車_best.weights image1.jpg: 画像を使用した予測 (DarkHelp)。
ダークネット ディテクタ テスト Animals.data Animals.cfg Animalsbest.weights -extoutput Dog.jpg: 出力座標 (V2)。
darknet01inference_images 動物 dog.jpg: 出力座標 (V3)。
DarkHelp --json Animals.cfg Animals.names Animals_best.weights Dog.jpg: 出力座標 (DarkHelp)。
ダークネット ディテクタ デモ Animals.data Animals.cfg Animalbest.weights -extoutput test.mp4: ビデオを処理しています (V2)。
darknet03display_videos Animals.cfg test.mp4: ビデオの処理 (V3)。
DarkHelp Animals.cfg Animals.names Animals_best.weights test.mp4: ビデオを処理しています (DarkHelp)。
ダークネット ディテクタ デモ Animals.data Animals.cfg Animals_best.weights -c 0: Web カメラ (V2) から読み取ります。
darknet08display_webcam 動物: ウェブカメラから読み取ります (V3)。
ダークネット ディテクタ デモ Animals.data Animals.cfg Animalbest.weights test.mp4 -outfilename res.avi: 結果をビデオに保存します (V2)。
darknet05processvideosmultithreaded Animals.cfg Animals.names Animals_best.weights test.mp4: 結果をビデオに保存します (V3)。
DarkHelp Animals.cfg Animals.names Animals_best.weights test.mp4: 結果をビデオに保存します (DarkHelp)。
ダークネット ディテクタ デモ Animals.data Animals.cfg Animalsbest.weights test50.mp4 -jsonport 8070 -mjpegport 8090 -extoutput: JSON 形式 (V2) を使用します。
darknet06imagestojson 動物 image1.jpg: JSON 形式 (V3) を使用します。
DarkHelp --json Animals.names Animals.cfg Animals_best.weights image1.jpg: JSON 形式 (DarkHelp) を使用します。
ダークネット ディテクタのデモ Animals.data Animals.cfg Animals_best.weights -i 1 test.mp4: 特定の GPU で実行します。
ダークネット ディテクタ マップ Driving.data Driving.cfg Driving_best.weights ...: ニューラル ネットワークの精度を確認します。
ダークネット ディテクタ マップ Animals.data Animals.cfg Animalbest.weights -iouthresh 0.75: mAP@IoU=75 の精度を確認します。
ダークネット検出器 calcanchors Animals.data -numof_clusters 6 -width 320 -height 256: アンカー ポイントを再計算します。
darknet detecter -map -dont_show train Animals.data Animals.cfg: 新しいネットワークをトレーニングします。
電車
ファイルとディレクトリを設定するにはどうすればよいですか?
どのプロファイルを使用すればよいですか?
独自のネットワークをトレーニングする場合はどのコマンドを使用する必要がありますか?
DarkMark アノテーションとトレーニングを使用するのが最も簡単な方法で、必要なすべての Darknet ファイルが作成されます。これは間違いなく、新しいニューラル ネットワークをトレーニングする場合に推奨される方法です。
カスタム ネットワークをトレーニングするためにさまざまなファイルを手動でセットアップする場合は、次の手順に従います。
1. ファイルを保存する新しいフォルダーを作成します。たとえば、動物を検出するためのニューラル ネットワークを作成すると、~/nn/animals/ というディレクトリが作成されます。
2. テンプレートとして使用する Darknet 構成ファイルをコピーします。たとえば、cfg/yolov4-tiny.cfg を参照してください。作成したフォルダーに置きます。この例では、~/nn/animals/animals.cfg が作成されました。
3. 構成ファイルを配置するのと同じフォルダーに、animals.names テキスト ファイルを作成します。この例では、~/nn/animals/animals.names が作成されました。
4. テキスト エディタを使用して、animals.names ファイルを編集します。使用するカテゴリをリストします。各行には項目を 1 つだけ含める必要があり、空白行やコメントは含めることはできません。この例では、.names ファイルには次の 4 行が含まれます。
`
犬
猫
鳥
馬
`
5. 同じフォルダーにanimals.dataテキストファイルを作成します。この例では、.data ファイルには次のものが含まれます。
`
クラス=4
train=/home/ユーザー名/nn/animals/animals_train.txt
valid=/home/ユーザー名/nn/animals/animals_valid.txt
names=/ホーム/ユーザー名/nn/animals/animals.names
バックアップ=/ホーム/ユーザー名/nn/animals
`
6. 画像と注釈を保存するフォルダーを作成します。たとえば、これは ~/nn/animals/dataset のようになります。各画像には、その画像の注釈を説明する対応する .txt ファイルが必要です。 .txt コメント ファイルの形式は非常に特殊です。各注釈には注釈の正確な座標が含まれている必要があるため、これらのファイルを手動で作成することはできません。画像に注釈を付けるには、DarkMark または他の同様のソフトウェアを参照してください。 YOLO アノテーション形式については、Darknet/YOLO FAQ で説明されています。
7. .data ファイル内に名前を付けた「train」および「valid」テキスト ファイルを作成します。これら 2 つのテキスト ファイルには、ダークネットがトレーニングと検証 (mAP% の計算時) に使用する必要があるすべての画像をそれぞれリストする必要があります。 1 行に 1 つの画像。パスとファイル名は相対パスまたは絶対パスにすることができます。
8. テキスト エディタを使用して .cfg ファイルを変更します。
- バッチ=64であることを確認してください。
- 細分化に注意してください。ネットワークの規模と GPU で利用可能なメモリの量に応じて、サブディビジョンを増やす必要がある場合があります。最適な値は 1 なので、そこから始めます。 1 が機能しない場合は、Darknet/YOLO FAQ を参照してください。
- maxbatches=… に注意してください。カテゴリの数に 2000 を掛けた値から始めるとよいでしょう。この例では、動物が 4 匹いるため、4 * 2000 = 8000 となります。これは、maxbatches=8000 を使用することを意味します。
- 手順に注意してください=…。これは最大バッチの 80% と 90% に設定する必要があります。この例では、maxbatches が 8000 に設定されているため、steps=6400,7200 を使用します。
- width=... と height=.... に注意してください。これらはネットワークのディメンションです。 Darknet/YOLO FAQ では、使用する最適なサイズを計算する方法について説明しています。
- すべてのclasses=...行を探し、それを.namesファイル内のクラスの数で変更します。この例では、classes=4 を使用します。
- 各 [yolo] セクションの前にある [convolutional] セクション内のすべての filters=... 行を検索します。使用する値は (カテゴリの数 + 5) 3 です。これは、この例では (4 + 5) 3 = 27 であることを意味します。したがって、適切な行で filters=27 を使用します。
9. トレーニングを始めましょう!次のコマンドを実行します。
「バッシュ」
cd ~/nn/動物/
ダークネット ディテクタ -map -dont_show train Animals.data Animals.cfg
`
お待ちください。最適な重みは、animals_best.weights として保存されます。 chart.png ファイルを表示すると、トレーニングの進行状況を観察できます。新しいネットワークをトレーニングするときに使用する追加パラメータについては、Darknet/YOLO FAQ を参照してください。
トレーニング中に詳細を確認したい場合は、--verbose パラメーターを追加します。例えば:
「バッシュ」
ダークネット ディテクタ -map -dont_show --verbose train Animals.data Animals.cfg
`
その他のツールとリンク
Darknet/YOLO プロジェクトの管理、画像に注釈を付け、注釈を検証し、Darknet でのトレーニングに必要なファイルを生成するには、DarkMark を参照してください。
画像のタイリング、ビデオ内のオブジェクト追跡、または商用アプリケーションで簡単に使用できる強力な C++ API を操作するための Darknet の強力な代替 CLI については、DarkHelp を参照してください。
Darknet/YOLO FAQ を参照して、質問の回答に役立つかどうかを確認してください。
Stéphane の YouTube チャンネルにある多くのチュートリアルとサンプルビデオをチェックしてください。
サポートに関する質問がある場合、または他の Darknet/YOLO ユーザーとチャットしたい場合は、Darknet/YOLO Discord サーバーに参加してください。
ロードマップ
最終更新日: 2024-10-30
完了しました
トレーニング中に qsort() を std::sort() に置き換えました (その他の不明瞭な置き換えがまだ存在します)
check_missing、getchar()、system() を削除
C++ コンパイラを使用するように Darknet を変換します (Linux では g++、Windows では Visual Studio)
Windows ビルドを修正する
Python サポートを修正
ダークネットライブラリを構築する
予測のラベルを再度有効にします (「アルファベット」コード)
CUDA/GPU コードを再度有効にする
CUDNNを再度有効にする
CUDNN 半分を再度有効にする
CUDA アーキテクチャをハードコードしないでください
CUDA バージョン情報の改善
AVXを再度有効にする
古いソリューションと Makefile を削除します
OpenCVを非オプションにする
古い pthread ライブラリへの依存関係を削除する
STBの削除
新しい CUDA インストルメンテーションを使用するように CMakeLists.txt を書き換えます
古い「アルファベット」コードを削除し、データ/ラベル内の 700 以上の画像を削除しました
外部ソースコードをビルドする
バージョン番号の出力を改善する
トレーニング関連のパフォーマンスの最適化 (継続的なタスク)
推論に関連するパフォーマンスの最適化 (進行中のタスク)
可能な限り値による参照を使用する
.hpp ファイルをクリーンアップする
darknet.hを書き換える
cv::Mat を void* に変換せず、代わりに正しい C++ オブジェクトとして使用してください。
一貫して使用される内部イメージ構造を修正または維持する
ARM アーキテクチャ Jetson デバイスのビルドを修正
- 元の Jetson デバイスは NVIDIA でサポートされなくなったため (C++17 コンパイラーがない)、修正される可能性は低いです。
- 新しい Jetson Orin デバイスが実行中
V3 で Python API を修正
- より良い Python サポートが必要です (この問題について協力してくれる Python 開発者はいますか?)
短期的な目標
printf() を std::cout に置き換えます (作業中)
古い Zed カメラのサポートを確認してください
コマンドライン解析の改善と一貫性の向上 (作業中)
中期目標
すべての char* コードを削除し、std::string に置き換えます。
警告を非表示にせず、コンパイラ警告をクリーンアップします (作業中)
C でのカスタム イメージ構造の代わりに cv::Mat をより適切に使用する (作業中)
古いリスト関数を std::vector または std::list に置き換えます。
単一チャネルのグレースケール画像のサポートを修正
N > 3 の N チャネル画像のサポートを追加します (例: 余分な深さまたは熱チャネルを持つ画像)
進行中のコードのクリーンアップ (進行中)
長期的な目標
すべての GPU に関連する CUDA/CUDNN の問題を修正
CUDA+cuDNNコードを書き換える
非 NVIDIA GPU のサポートの追加を検討してください
回転された境界ボックス、または何らかの形式の「角度」サポート
キーポイント・骨格
ヒートマップ (作業中)
セグメンテーション