Releases: fcakyon/yolov5-pip
v6.0.5
What's Changed
- coco dataset support, automatic aws weight upload by @fcakyon in #54
- add dataset upload, add neptune dataset tracking by @fcakyon in #59
- add windows support for dataset upload by @fcakyon in #61
- make pycocotools optional by @fcakyon in #56
- remove python 3.6 in tests by @fcakyon in #57
- add missing argument in readme by @fcakyon in #60
- fix omp error in windows by @fcakyon in #62
- fix weight s3 uri for windows by @fcakyon in #63
Full Changelog: 6.0.4...6.0.5
COCO Dataset Support
- Start a training using a COCO formatted dataset:
# data.yml
train_json_path: "train.json"
train_image_dir: "train_image_dir/"
val_json_path: "val.json"
val_image_dir: "val_image_dir/"
$ yolov5 train --data data.yaml --weights yolov5s.pt
New AWS and Neptune.AI Utilities
- Automatically upload weights and datasets to AWS S3 (with Neptune.AI artifact tracking integration):
export AWS_ACCESS_KEY_ID=YOUR_KEY
export AWS_SECRET_ACCESS_KEY=YOUR_KEY
$ yolov5 train --data data.yaml --weights yolov5s.pt --s3_upload_dir YOUR_S3_FOLDER_DIRECTORY --upload_dataset
- Add
yolo_s3_data_dir
intodata.yaml
to match Neptune dataset with a present dataset in S3.
# data.yml
train_json_path: "train.json"
train_image_dir: "train_image_dir/"
val_json_path: "val.json"
val_image_dir: "val_image_dir/"
yolo_s3_data_dir: s3://bucket_name/data_dir/
v6.0.4
v6.0.3
update v6.0.3
- update to 19.10.21 ultralytics/yolov5: https://github.com/ultralytics/yolov5/tree/a18b0c36cd4df0d3b9c2623c5dda009c5f281ac9
- fix a neptune logging error
v6.0.1
Use from Python
Basic
import yolov5
# load model
model = yolov5.load('yolov5s')
# set image
img = 'https://github.com/ultralytics/yolov5/raw/master/data/images/zidane.jpg'
# perform inference
results = model(img)
# inference with larger input size
results = model(img, size=1280)
# inference with test time augmentation
results = model(img, augment=True)
# parse results
predictions = results.pred[0]
boxes = predictions[:, :4] # x1, x2, y1, y2
scores = predictions[:, 4]
categories = predictions[:, 5]
# show detection bounding boxes on image
results.show()
# save results into "results/" folder
results.save(save_dir='results/')
Alternative
from yolov5 import YOLOv5
# set model params
model_path = "yolov5/weights/yolov5s.pt"
device = "cuda:0" # or "cpu"
# init yolov5 model
yolov5 = YOLOv5(model_path, device)
# load images
image1 = 'https://github.com/ultralytics/yolov5/raw/master/data/images/zidane.jpg'
image2 = 'https://github.com/ultralytics/yolov5/blob/master/data/images/bus.jpg'
# perform inference
results = yolov5.predict(image1)
# perform inference with larger input size
results = yolov5.predict(image1, size=1280)
# perform inference with test time augmentation
results = yolov5.predict(image1, augment=True)
# perform inference on multiple images
results = yolov5.predict([image1, image2], size=1280, augment=True)
# parse results
predictions = results.pred[0]
boxes = predictions[:, :4] # x1, x2, y1, y2
scores = predictions[:, 4]
categories = predictions[:, 5]
# show detection bounding boxes on image
results.show()
# save results into "results/" folder
results.save(save_dir='results/')
Train/Detect/Test/Export
- You can directly use these functions by importing them:
from yolov5 import train, val, detect, export
train.run(imgsz=640, data='coco128.yaml')
val.run(imgsz=640, data='coco128.yaml', weights='yolov5s.pt')
detect.run(imgsz=640)
export.run(imgsz=640, weights='yolov5s.pt')
- You can pass any argument as input:
from yolov5 import detect
img_url = 'https://github.com/ultralytics/yolov5/raw/master/data/images/zidane.jpg'
detect.run(source=img_url, weights="yolov5s6.pt", conf_thres=0.25, imgsz=640)
Use from CLI
You can call yolov5 train
, yolov5 detect
, yolov5 val
and yolov5 export
commands after installing the package via pip
:
Training
Finetune one of the pretrained YOLOv5 models using your custom data.yaml
:
$ yolov5 train --data data.yaml --weights yolov5s.pt --batch-size 16 --img 640
yolov5m.pt 8
yolov5l.pt 4
yolov5x.pt 2
Visualize your experiments via Neptune.AI:
$ yolov5 train --data data.yaml --weights yolov5s.pt --neptune_project NAMESPACE/PROJECT_NAME --neptune_token YOUR_NEPTUNE_TOKEN
Inference
yolov5 detect command runs inference on a variety of sources, downloading models automatically from the latest YOLOv5 release and saving results to runs/detect
.
$ yolov5 detect --source 0 # webcam
file.jpg # image
file.mp4 # video
path/ # directory
path/*.jpg # glob
rtsp://170.93.143.139/rtplive/470011e600ef003a004ee33696235daa # rtsp stream
rtmp://192.168.1.105/live/test # rtmp stream
http://112.50.243.8/PLTV/88888888/224/3221225900/1.m3u8 # http stream
Export
You can export your fine-tuned YOLOv5 weights to any format such as torchscript
, onnx
, coreml
, pb
, tflite
, tfjs
:
$ yolov5 export --weights yolov5s.pt --include 'torchscript,onnx,coreml,pb,tfjs'
v5.0.10
v5.0.9
v5.0.8
-
update to 24.08.21 ultralytics/yolov5
-
cli api changes:
Use from CLI
You can call yolov5 train
, yolov5 detect
, yolov5 val
and yolov5 export
commands after installing the package via pip
:
Run commands below to reproduce results on COCO dataset (dataset auto-downloads on first use). Training times for YOLOv5s/m/l/x are 2/4/6/8 days on a single V100 (multi-GPU times faster). Use the largest --batch-size
your GPU allows (batch sizes shown for 16 GB devices).
$ yolov5 train --data coco.yaml --cfg yolov5s.yaml --weights '' --batch-size 64
yolov5m 40
yolov5l 24
yolov5x 16
yolov5 detect command runs inference on a variety of sources, downloading models automatically from the latest YOLOv5 release and saving results to runs/detect
.
$ yolov5 detect --img 1280 --source 0 # webcam
file.jpg # image
file.mp4 # video
path/ # directory
path/*.jpg # glob
rtsp://170.93.143.139/rtplive/470011e600ef003a004ee33696235daa # rtsp stream
rtmp://192.168.1.105/live/test # rtmp stream
http://112.50.243.8/PLTV/88888888/224/3221225900/1.m3u8 # http stream
To run inference on example images in yolov5/data/images
:
v5.0.7
v5.0.6
Install
Install yolov5 using pip (for Python >=3.7)
pip install yolov5
Install yolov5 using pip `(for Python 3.6)`
pip install "numpy>=1.18.5,<1.20" "matplotlib>=3.2.2,<4"
pip install yolov5
Use from Python
Basic
import yolov5
# load model
model = yolov5.load('yolov5s')
# set image
img = 'https://github.com/ultralytics/yolov5/raw/master/data/images/zidane.jpg'
# perform inference
results = model(img)
# inference with larger input size
results = model(img, size=1280)
# inference with test time augmentation
results = model(img, augment=True)
# parse results
predictions = results.pred[0]
boxes = predictions[:, :4] # x1, x2, y1, y2
scores = predictions[:, 4]
categories = predictions[:, 5]
# show detection bounding boxes on image
results.show()
# save results into "results/" folder
results.save(save_dir='results/')
Alternative
from yolov5 import YOLOv5
# set model params
model_path = "yolov5/weights/yolov5s.pt" # it automatically downloads yolov5s model to given path
device = "cuda" # or "cpu"
# init yolov5 model
yolov5 = YOLOv5(model_path, device)
# load images
image1 = 'https://github.com/ultralytics/yolov5/raw/master/data/images/zidane.jpg'
image2 = 'https://github.com/ultralytics/yolov5/blob/master/data/images/bus.jpg'
# perform inference
results = yolov5.predict(image1)
# perform inference with larger input size
results = yolov5.predict(image1, size=1280)
# perform inference with test time augmentation
results = yolov5.predict(image1, augment=True)
# perform inference on multiple images
results = yolov5.predict([image1, image2], size=1280, augment=True)
# parse results
predictions = results.pred[0]
boxes = predictions[:, :4] # x1, x2, y1, y2
scores = predictions[:, 4]
categories = predictions[:, 5]
# show detection bounding boxes on image
results.show()
# save results into "results/" folder
results.save(save_dir='results/')
Train/Detect/Test/Export
- You can directly use these functions by importing them:
from yolov5 import train, test, detect, export
train.run(imgsz=640, data='coco128.yaml')
test.run(imgsz=640, data='coco128.yaml', weights='yolov5s.pt')
detect.run(imgsz=640)
export.run(imgsz=640, weights='yolov5s.pt')
- You can pass any argument as input:
from yolov5 import detect
img_url = 'https://github.com/ultralytics/yolov5/raw/master/data/images/zidane.jpg'
detect.run(source=img_url, weights="yolov5s6.pt", conf_thres=0.25, imgsz=640)
Use from CLI
You can call yolo_train
, yolo_detect
, yolo_test
and yolo_export
commands after installing the package via pip
:
Training
Run commands below to reproduce results on COCO dataset (dataset auto-downloads on first use). Training times for YOLOv5s/m/l/x are 2/4/6/8 days on a single V100 (multi-GPU times faster). Use the largest --batch-size
your GPU allows (batch sizes shown for 16 GB devices).
$ yolo_train --data coco.yaml --cfg yolov5s.yaml --weights '' --batch-size 64
yolov5m 40
yolov5l 24
yolov5x 16
Inference
yolo_detect command runs inference on a variety of sources, downloading models automatically from the latest YOLOv5 release and saving results to runs/detect
.
$ yolo_detect --source 0 # webcam
file.jpg # image
file.mp4 # video
path/ # directory
path/*.jpg # glob
rtsp://170.93.143.139/rtplive/470011e600ef003a004ee33696235daa # rtsp stream
rtmp://192.168.1.105/live/test # rtmp stream
http://112.50.243.8/PLTV/88888888/224/3221225900/1.m3u8 # http stream
To run inference on example images in yolov5/data/images
:
v5.0.5
- Synchronized with 11.05.21 ultralytics/yolov5 repo.
PLUS:
-
neptune ai support:
yolo_train --data coco.yaml --weights yolov5s.pt --neptune_token YOUR_TOKEN --neptune_project YOUR/PROJECT
-
mmdet style metric logging support
yolo_train --data coco.yaml --weights yolov5s.pt --mmdet_tags