# PyTorch YOLO
A minimal PyTorch implementation of YOLOv3, with support for training, inference and evaluation.
YOLOv4 and YOLOv7 weights are also compatible with this implementation.
## Installation
### Installing from source
For normal training and evaluation we recommend installing the package from source using a poetry virtual environment.
You need to join the virtual environment by running `poetry shell` in this directory before running any of the following commands without the `poetry run` prefix.
Also have a look at the other installing method, if you want to use the commands everywhere without opening a poetry-shell.
#### Download pretrained weights
```bash
./weights/download_weights.sh
```
#### Download COCO
```bash
./data/get_coco_dataset.sh
```
### Install via pip
This installation method is recommended, if you want to use this package as a dependency in another python project.
This method only includes the code, is less isolated and may conflict with other packages.
Weights and the COCO dataset need to be downloaded as stated above.
See __API__ for further information regarding the packages API.
It also enables the CLI tools `yolo-detect`, `yolo-train`, and `yolo-test` everywhere without any additional commands.
```bash
pip3 install pytorchyolo --user
```
## Test
Evaluates the model on COCO test dataset.
To download this dataset as well as weights, see above.
```bash
poetry run yolo-test --weights weights/yolov3.weights
```
| Model | mAP (min. 50 IoU) |
| ----------------------- |:-----------------:|
| YOLOv3 608 (paper) | 57.9 |
| YOLOv3 608 (this impl.) | 57.3 |
| YOLOv3 416 (paper) | 55.3 |
| YOLOv3 416 (this impl.) | 55.5 |
## Inference
Uses pretrained weights to make predictions on images. Below table displays the inference times when using as inputs images scaled to 256x256. The ResNet backbone measurements are taken from the YOLOv3 paper. The Darknet-53 measurement marked shows the inference time of this implementation on my 1080ti card.
| Backbone | GPU | FPS |
| ----------------------- |:--------:|:--------:|
| ResNet-101 | Titan X | 53 |
| ResNet-152 | Titan X | 37 |
| Darknet-53 (paper) | Titan X | 76 |
| Darknet-53 (this impl.) | 1080ti | 74 |
```bash
poetry run yolo-detect --images data/samples/
```
## Train
For argument descriptions have a look at `poetry run yolo-train --help`
#### Example (COCO)
To train on COCO using a Darknet-53 backend pretrained on ImageNet run:
```bash
poetry run yolo-train --data config/coco.data --pretrained_weights weights/darknet53.conv.74
```
#### Tensorboard
Track training progress in Tensorboard:
* Initialize training
* Run the command below
* Go to http://localhost:6006/
```bash
poetry run tensorboard --logdir='logs' --port=6006
```
Storing the logs on a slow drive possibly leads to a significant training speed decrease.
You can adjust the log directory using `--logdir <path>` when running `tensorboard` and `yolo-train`.
## Train on Custom Dataset
#### Custom model
Run the commands below to create a custom model definition, replacing `<num-classes>` with the number of classes in your dataset.
```bash
./config/create_custom_model.sh <num-classes> # Will create custom model 'yolov3-custom.cfg'
```
#### Classes
Add class names to `data/custom/classes.names`. This file should have one row per class name.
#### Image Folder
Move the images of your dataset to `data/custom/images/`.
#### Annotation Folder
Move your annotations to `data/custom/labels/`. The dataloader expects that the annotation file corresponding to the image `data/custom/images/train.jpg` has the path `data/custom/labels/train.txt`. Each row in the annotation file should define one bounding box, using the syntax `label_idx x_center y_center width height`. The coordinates should be scaled `[0, 1]`, and the `label_idx` should be zero-indexed and correspond to the row number of the class name in `data/custom/classes.names`.
#### Define Train and Validation Sets
In `data/custom/train.txt` and `data/custom/valid.txt`, add paths to images that will be used as train and validation data respectively.
#### Train
To train on the custom dataset run:
```bash
poetry run yolo-train --model config/yolov3-custom.cfg --data config/custom.data
```
Add `--pretrained_weights weights/darknet53.conv.74` to train using a backend pretrained on ImageNet.
## API
You are able to import the modules of this repo in your own project if you install the pip package `pytorchyolo`.
An example prediction call from a simple OpenCV python script would look like this:
```python
import cv2
from pytorchyolo import detect, models
# Load the YOLO model
model = models.load_model(
"<PATH_TO_YOUR_CONFIG_FOLDER>/yolov3.cfg",
"<PATH_TO_YOUR_WEIGHTS_FOLDER>/yolov3.weights")
# Load the image as a numpy array
img = cv2.imread("<PATH_TO_YOUR_IMAGE>")
# Convert OpenCV bgr to rgb
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
# Runs the YOLO model on the image
boxes = detect.detect_image(model, img)
print(boxes)
# Output will be a numpy array in the following format:
# [[x1, y1, x2, y2, confidence, class]]
```
For more advanced usage look at the method's doc strings.
## Credit
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
Python车牌自动识别系统源码基于PyQt5实现可视化界面(高分项目).zip个人经导师指导并认可通过的98分毕业设计项目,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者。也可作为课程设计、期末大作业。包含全部项目源码、该项目可以直接作为毕设使用。项目都经过严格调试,确保可以运行!
资源推荐
资源详情
资源评论
收起资源包目录
eriklindernoren-PyTorch-YOLOv3.zip (50个子文件)
eriklindernoren-PyTorch-YOLOv3
.github
dependabot.yml 501B
ISSUE_TEMPLATE
2_need_help.md 508B
3_feature_request.md 656B
1_bug_report.md 2KB
pull_request_template.md 489B
workflows
main.yml 1KB
assets
traffic.png 312KB
messi.png 258KB
giraffe.png 405KB
dog.png 342KB
weights
download_weights.sh 408B
data
samples
herd_of_horses.jpg 130KB
person.jpg 77KB
field.jpg 111KB
giraffe.jpg 374KB
dog.jpg 160KB
eagle.jpg 139KB
messi.jpg 124KB
street.jpg 100KB
room.jpg 83KB
custom
classes.names 6B
valid.txt 29B
labels
train.txt 34B
images
train.jpg 111KB
train.txt 29B
get_coco_dataset.sh 1KB
coco.names 625B
LICENSE 34KB
poetry.lock 114KB
pytorchyolo
__init__.py 0B
models.py 14KB
utils
utils.py 13KB
__init__.py 0B
parse_config.py 1KB
loss.py 9KB
augmentations.py 1KB
transforms.py 3KB
logger.py 790B
datasets.py 4KB
detect.py 11KB
train.py 10KB
test.py 8KB
pyproject.toml 1KB
.gitignore 153B
README.md 5KB
config
coco.data 115B
create_custom_model.sh 8KB
yolov3.cfg 8KB
yolov3-tiny.cfg 2KB
custom.data 99B
共 50 条
- 1
资源评论
流华追梦
- 粉丝: 4546
- 资源: 2149
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功