File size: 4,066 Bytes
9cc9e5d
97fb10e
43b7a51
c99d851
43b7a51
c99d851
 
a7ef999
c99d851
 
db5f0f5
c99d851
836aebe
db5f0f5
 
 
68c38b8
 
db5f0f5
c99d851
836aebe
 
db5f0f5
c99d851
836aebe
 
 
68c38b8
 
b86a654
 
 
db5f0f5
9cc9e5d
 
 
 
71812da
9cc9e5d
43b7a51
9cc9e5d
71812da
9cc9e5d
 
 
 
 
71812da
9cc9e5d
 
 
7a28749
9cc9e5d
 
 
 
 
db5f0f5
 
9cc9e5d
b86a654
836aebe
9cc9e5d
b86a654
db5f0f5
 
836aebe
68c38b8
b86a654
 
db5f0f5
 
 
68c38b8
db5f0f5
b86a654
db5f0f5
 
 
459de68
9cc9e5d
41ef509
db5f0f5
b86a654
db5f0f5
 
836aebe
db5f0f5
836aebe
 
 
db5f0f5
836aebe
1e97874
9cc9e5d
1e97874
836aebe
 
 
a7ef999
836aebe
 
 
 
 
 
a7ef999
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# YOLO: Official Implementation of YOLOv9, YOLOv7

![GitHub License](https://img.shields.io/github/license/WongKinYiu/YOLO)
![WIP](https://img.shields.io/badge/status-WIP-orange)
[![Hugging Face Spaces](https://img.shields.io/badge/%F0%9F%A4%97%20Hugging%20Face-Spaces-blue)](https://huggingface.co/spaces/henry000/YOLO)
> [!IMPORTANT]
> This project is currently a Work In Progress and may undergo significant changes. It is not recommended for use in production environments until further notice. Please check back regularly for updates.
>
> Use of this code is at your own risk and discretion. It is advisable to consult with the project owner before deploying or integrating into any critical systems.

Welcome to the official implementation of YOLOv7 and YOLOv9. This repository will contains the complete codebase, pre-trained models, and detailed instructions for training and deploying YOLOv9.

## TL;DR
- This is the official YOLO model implementation with an MIT License.
- For quick deployment: you can enter directly in the terminal:
```shell
pip install [email protected]:WongKinYiu/YOLO.git
yolo task=inference task.source=0 # source could be a single file, video, image folder, webcam ID
```

## Introduction
- [**YOLOv9**: Learning What You Want to Learn Using Programmable Gradient Information](https://arxiv.org/abs/2402.13616)
- [**YOLOv7**: Trainable Bag-of-Freebies Sets New State-of-the-Art for Real-Time Object Detectors](https://arxiv.org/abs/2207.02696)

## Installation
To get started with YOLOv9, clone this repository and install the required dependencies:
```shell
git clone [email protected]:WongKinYiu/YOLO.git
cd YOLO
pip install -r requirements.txt
```

## Features

<table>
<tr><td>

| Tools | pip 🐍 | HuggingFace πŸ€— | Docker 🐳 |
| -------------------- | :----: | :--------------: | :-------: |
| Compatibility       | βœ…     | βœ…               | πŸ§ͺ        |

|  Phase    | Training | Validation | Inference |
| ------------------- | :------: | :---------: | :-------: |
| Supported           | βœ…       | βœ…          | βœ…        |

</td><td>

| Device | CUDA       | CPU       | MPS       |
| ------------------ | :---------: | :-------: | :-------: |
| PyTorch            | v1.12      | v2.3+     | v1.12     |
| ONNX               | βœ…         | βœ…        | -         |
| TensorRT           | βœ…         | -        | -         |
| OpenVINO           | -          | πŸ§ͺ        | ❔        |

</td></tr> </table>



## Task
These are simple examples. For more customization details, please refer to [Notebooks](examples) and lower-level modifications **[HOWTO](docs/HOWTO.md)**.

## Training
To train YOLO on your dataset:

1. Modify the configuration file `data/config.yaml` to point to your dataset.
2. Run the training script:
```shell
python yolo/lazy.py task=train task.data.batch_size=8 model=v9-c
```

### Transfer Learning
To perform transfer learning with YOLOv9:
```shell
python yolo/lazy.py task=train task.data.batch_size=8 model=v9-c dataset={dataset_config} device={cpu, mps, cuda}
```

### Inference
To evaluate the model performance, use:
```shell
python yolo/lazy.py task=inference weight=weights/v9-c.pt model=v9-c task.fast_inference=deploy # use deploy weight
python yolo/lazy.py task=inference # if cloned from GitHub
yolo task=inference task.data.source={Any} # if pip installed
```

### Validation [WIP]
To validate the model performance, use:
```shell
# Work In Progress...
```

## Contributing
Contributions to the YOLOv9 project are welcome! See [CONTRIBUTING](docs/CONTRIBUTING.md) for guidelines on how to contribute.

## Star History
[![Star History Chart](https://api.star-history.com/svg?repos=WongKinYiu/YOLO&type=Date)](https://star-history.com/#WongKinYiu/YOLO&Date)

## Citations
```
@misc{wang2024yolov9,
      title={YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information},
      author={Chien-Yao Wang and I-Hau Yeh and Hong-Yuan Mark Liao},
      year={2024},
      eprint={2402.13616},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}
```