MCPcopy Index your code
hub / github.com/Tencent/ObjectDetection-OneStageDet

github.com/Tencent/ObjectDetection-OneStageDet @main

repository ↗ · DeepWiki ↗ · + Follow
723 symbols 1,683 edges 138 files 326 documented · 45%
README

Contents

Introduction
Requirements
Features
Getting Started
Credits

Introduction

Now we have implemented yolov2 and yolov3 in this repo, which is a generation object detection framework named OneStageDet(OSD), in the future we consider to implement yolo and ssd in a single framework.

Requirements

  • python 3.6
  • pytorch 0.4.0

Features

  • Include both Yolov2 and Yolov3
  • Good performance

|544x544 |VOC2007 Test(mAP)|Time per forward

(batch size = 1)| | :-: | :-:|:-:| | Yolov2 | 77.6% |11.5ms| | Yolov3 | 79.6% |23.1ms|

The models are trained from pretrained weights on imagenet with this implementation.

  • Train as fast as darknet
  • A lot of efficient backbones on hand

Like tiny yolov2, tiny yolov3, mobilenet, mobilenetv2, shufflenet(g2), shufflenetv2(1x), squeezenext(1.0-SqNxt-23v5), light xception, xception etc.

Check folder vedanet/network/backbone for details.

|416x416 |VOC2007 Test(mAP)| Time per forward

(batch size = 1)| | :-: | :-:| :-: | | TinyYolov2 | 57.5% | 2.4ms| | TinyYolov3 | 61.3% | 2.3ms|

The models are trained from scratch with this implementation.

Getting Started

Installation

1) Code
git clone xxxxx/ObjectDetection-OneStageDet
cd ObjectDetection-OneStageDet/
yolo_root=$(pwd)
cd ${yolo_root}/utils/test
make -j32
2) Data
wget https://pjreddie.com/media/files/VOCtrainval_11-May-2012.tar
wget https://pjreddie.com/media/files/VOCtrainval_06-Nov-2007.tar
wget https://pjreddie.com/media/files/VOCtest_06-Nov-2007.tar

tar xf VOCtrainval_11-May-2012.tar
tar xf VOCtrainval_06-Nov-2007.tar
tar xf VOCtest_06-Nov-2007.tar

cd VOCdevkit
VOCdevkit_root=$(pwd)

There will now be a VOCdevkit subdirectory with all the VOC training data in it.

mkdir ${VOCdevkit_root}/onedet_cache
cd ${yolo_root}

open examples/labels.py, let the variable ROOT point to ${VOCdevkit_root}

python examples/labels.py

open cfgs/yolov2.yml, let the data_root_dir point to ${VOCdevkit_root}/onedet_cache

open cfgs/yolov3.yml, let the data_root_dir point to ${VOCdevkit_root}/onedet_cache

3) weights

Download model weights from baidudrive or googledrive.

Or downlowd darknet19_448.conv.23 and darknet53.conv.74 from darknet website:

wget https://pjreddie.com/media/files/darknet19_448.conv.23

wget https://pjreddie.com/media/files/darknet53.conv.74

Then, move all the model weights to ${yolo_root}/weights directory.

Training

cd ${yolo_root}

1) Yolov2

1.1) open cfgs/yolov2.yml, let the weights of train block point to the pretrain weights

1.2) open cfgs/yolov2.yml, let the gpus of train block point to an available gpu id

1.3) If you want to print log onto screen, make the stdout of train block True in cfgs/yolov2.yml

1.4) run

python examples/train.py Yolov2

2) Yolov3

2.1) open cfgs/yolov3.yml, let the weights of train block point to the pretrain weights

2.2) open cfgs/yolov3.yml, let the gpus of train block point to an available gpu id

2.3) If you want to print log onto screen, make the stdout of train block True in cfgs/yolov3.yml

2.4) run

python examples/train.py Yolov3

3) Results

The logs and weights will be in ${yolo_root}/outputs.

4) Other models

There are many other models like tiny yolov2, tiny yolov3, mobilenet, mobilenetv2, shufflenet(g2), shufflenetv2(1x), squeezenext(1.0-SqNxt-23v5), light xception, xception etc. You can try these like 1) Yolov2 part.


Evaluation

cd ${yolo_root}

1) Yolov2

1.1) open cfgs/yolov2.yml, let the gpus of test block point to an available gpu id

1.2) run

python examples/test.py Yolov2

2) Yolov3

2.1) open cfgs/yolov3.yml, let the gpus of test block point to an available gpu id

2.2) run

python examples/test.py Yolov3

3) Results

The output bbox will be in ${yolo_root}/results, every line of the file in ${yolo_root}/results has a format like img_name confidence xmin ymin xmax ymax

4) Other models

There are many other models like tiny yolov2, tiny yolov3, mobilenet, mobilenetv2, shufflenet(g2), shufflenetv2(1x), squeezenext(1.0-SqNxt-23v5), light xception, xception etc. You can try these like 1) Yolov2 part.


Benchmarking the speed of network

cd ${yolo_root}

1) Yolov2

1.1) open cfgs/yolov2.yml, let the gpus of speed block point to an available gpu id

1.2) run

python examples/speed.py Yolov2

2) Yolov3

2.1) open cfgs/yolov3.yml, let the gpus of speed block point to an available gpu id

2.2) run

python examples/speed.py Yolov3

3) Tiny Yolov2

3.1) open cfgs/tiny_yolov2.yml, let the gpus of speed block point to an available gpu id

3.2) run

python examples/speed.py TinyYolov2

4) Tiny Yolov3

4.1) open cfgs/tiny_yolov3.yml, let the gpus of speed block point to an available gpu id

4.2) run

python examples/speed.py TinyYolov3

5) Mobilenet

5.1) open cfgs/region_mobilenet.yml, let the gpus of speed block point to an available gpu id

5.2) run

python examples/speed.py RegionMobilenet

6) Other backbones with region loss

You can try these like 5) Mobilenet part.


Credits

I got a lot of code from lightnet, thanks to EAVISE.

Core symbols most depended-on inside this repo

info
called by 29
utils/test/pycocotools/coco.py
compose
called by 11
vedanet/models/yolo_abc.py
init_weights
called by 11
vedanet/models/_lightnet.py
load_weights
called by 11
vedanet/models/_darknet.py
getAnnIds
called by 5
utils/test/pycocotools/coco.py
loadAnns
called by 5
utils/test/pycocotools/coco.py
create
called by 5
brambox/boxes/annotations/annotation.py
loadImgs
called by 4
utils/test/pycocotools/coco.py

Shape

Method 487
Class 153
Function 81
Route 2

Languages

Python100%

Modules by API surface

vedanet/network/layer/_darknet.py80 symbols
vedanet/data/transform/_preprocess.py37 symbols
utils/test/datasets/coco.py25 symbols
utils/test/datasets/imdb.py20 symbols
vedanet/models/_darknet.py19 symbols
utils/test/datasets/pascal_voc.py19 symbols
brambox/boxes/util/filters.py18 symbols
vedanet/data/transform/_postprocess.py15 symbols
vedanet/engine/engine.py14 symbols
vedanet/data/_dataloading.py14 symbols
utils/test/pycocotools/cocoeval.py13 symbols
utils/test/pycocotools/coco.py13 symbols

For agents

$ claude mcp add ObjectDetection-OneStageDet \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact