Skip to content

Latest commit

 

History

History
259 lines (189 loc) · 9.75 KB

README.md

File metadata and controls

259 lines (189 loc) · 9.75 KB

This repo is available in English.
これはCVATとYOLOXで機械学習やってみた(近日公開)で使用しているレポジトリです.

YOLOXはYOLOのアンカーフリーバージョンで,よりシンプルでありながら,より優れたパフォーマンスを発揮します。YOLOXは、研究者と産業界のギャップを埋めることを目的としています.ベンチマークはこのような数値を示しています. 詳しくは,report on Arxivを参照して下さい.

あらかじめ用意していたデータベースからシステムが画像におけるメタデータを自動で付与してくれる,自動アノテーション機能を提供している無料のツールです.CVATでは自動アノテーションをAIで実現しており,yoloといったモデルを使用して自動で画像や動画のアノテーションを行なってくれます.このレポジトリではCVATから生成したPASCAL VOC 1.1 データセットを使用します.
CVATのセットアップや使用方法はQiitaのCVATの自動アノテーション機能を使ってみたを参照してください.

Components

  • CVATDatasets_ML.ipynb
    このノートブックではCVATで作成したデータセットを使用して,トレーニングをしてます.
    2021/9/1時点で最新の学習済みモデル(ver 0.1.1)を使用しています(セル番号56を参照).

  • add_voc.py
    CVATから生成したデータセットをYOLOXで学習するためのディレクトリを追加するためのスクリプトです.

How to Use CVATDatasets_ML.ipynb?

基本的にGoogle Colabで実行すると,学習->検証までのプロセスが完了しますが,一部変更する必要があるので,適宜変更して下さい.

データセットのダウンロード / Download your Dataset

CVATのデータセットをダウンロードします."Open Task" --> "Open Job" --> "Menu (ハンバーガーメニュー)" --> "Export as a dataset" --> "PASCAL VOC 1.1"のエクスポート形式を使用してください.
エクスポートしたzipファイルをDropBox等にアップし,共有リンクを以下の"URL"に記述してください.あるいは,Google Colabの初期設定のディレクトリ(sample_dataがあるディレクトリ)にアップしてください.その際ファイル名はBDD.zipに変換し,!curl -L "URL" > BDD.zipはコメントアウトして下さい.

クラス名の変更 / Change the Classes データセットのラベルに応じて,クラス名を変更するようにしてください.トレーニングプロセスが正しく機能するように,クラス名は小文字で書き,空白を入れないようにしてください.
CLASSES = (
  "malitozzo",
  "curry bread",
  "hot dog",
  "krone",
  "melon bread"
)
トレーニング済みの重みファイルをダウンロード / Download Pretrained Weights 適宜,最新のトレーニング済みモデルをダウンロードのリンクに変更して下さい.ただデフォルトでもしっかり機能するはずです.
!wget https://github.com/Megvii-BaseDetection/YOLOX/releases/download/0.1.1rc0/yolox_s.pth
トレーニング / Train the Model 適宜,エポック数を変更して下さい.
EPOCH_NUM = 150
モデルをテストする / Test the Model 適宜,テスト画像を変更して下さい.
TEST_IMAGE_PATH = "/content/drive/MyDrive/YOLOX-s/IMG.jpg"
トレーニング済みモデルをGoogle Driveにエクスポートする / Export Trained Weights to Your Google Drive モデルのコピー先として以下を指定していますが,適宜変更して下さい.
/content/drive/MyDrive/YOLOX-s

以下はほとんどFork元のままです-------------------------------

Quick Start

Installation

Step1. Install YOLOX.

git clone git@github.com:Megvii-BaseDetection/YOLOX.git
cd YOLOX
pip3 install -U pip && pip3 install -r requirements.txt
pip3 install -v -e .  # or  python3 setup.py develop

Step2. Install apex.

# skip this step if you don't want to train model.
git clone https://github.com/NVIDIA/apex
cd apex
pip3 install -v --disable-pip-version-check --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./

Step3. Install pycocotools.

pip3 install cython; pip3 install 'git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI'
Demo

Step1. Download a pretrained model from the benchmark table.

Step2. Use either -n or -f to specify your detector's config. For example:

python tools/demo.py image -n yolox-s -c /path/to/your/yolox_s.pth.tar --path assets/dog.jpg --conf 0.25 --nms 0.45 --tsize 640 --save_result --device [cpu/gpu]

or

python tools/demo.py image -f exps/default/yolox_s.py -c /path/to/your/yolox_s.pth.tar --path assets/dog.jpg --conf 0.25 --nms 0.45 --tsize 640 --save_result --device [cpu/gpu]

Demo for video:

python tools/demo.py video -n yolox-s -c /path/to/your/yolox_s.pth.tar --path /path/to/your/video --conf 0.25 --nms 0.45 --tsize 640 --save_result --device [cpu/gpu]
Reproduce our results on COCO

Step1. Prepare COCO dataset

cd <YOLOX_HOME>
ln -s /path/to/your/COCO ./datasets/COCO

Step2. Reproduce our results on COCO by specifying -n:

python tools/train.py -n yolox-s -d 8 -b 64 --fp16 -o
                         yolox-m
                         yolox-l
                         yolox-x
  • -d: number of gpu devices
  • -b: total batch size, the recommended number for -b is num-gpu * 8
  • --fp16: mixed precision training

Multi Machine Training

We also support multi-nodes training. Just add the following args:

  • --num_machines: num of your total training nodes
  • --machine_rank: specify the rank of each node

When using -f, the above commands are equivalent to:

python tools/train.py -f exps/default/yolox-s.py -d 8 -b 64 --fp16 -o
                         exps/default/yolox-m.py
                         exps/default/yolox-l.py
                         exps/default/yolox-x.py
Evaluation

We support batch testing for fast evaluation:

python tools/eval.py -n  yolox-s -c yolox_s.pth.tar -b 64 -d 8 --conf 0.001 [--fp16] [--fuse]
                         yolox-m
                         yolox-l
                         yolox-x
  • --fuse: fuse conv and bn
  • -d: number of GPUs used for evaluation. DEFAULT: All GPUs available will be used.
  • -b: total batch size across on all GPUs

To reproduce speed test, we use the following command:

python tools/eval.py -n  yolox-s -c yolox_s.pth.tar -b 1 -d 1 --conf 0.001 --fp16 --fuse
                         yolox-m
                         yolox-l
                         yolox-x
Tutorials

Deployment

  1. MegEngine in C++ and Python
  2. ONNX export and an ONNXRuntime
  3. TensorRT in C++ and Python
  4. ncnn in C++ and Java
  5. OpenVINO in C++ and Python

Third-party resources

Cite YOLOX

YOLOXを研究に使用する場合は、以下のBibTeXエントリを使用して引用してください。

 @article{yolox2021,
  title={YOLOX: Exceeding YOLO Series in 2021},
  author={Ge, Zheng and Liu, Songtao and Wang, Feng and Li, Zeming and Sun, Jian},
  journal={arXiv preprint arXiv:2107.08430},
  year={2021}
}

-----------------------------------------------

License

YOLOXは、Apache License 2.0のライセンスに基づいて配布されています。

references