yolox_backbone is a deep-learning library and is a collection of YOLOX Backbone models.
Project description
YOLOX-Backbone
yolox-backbone is a deep-learning library and collection of YOLOX backbone models.
Install
pip install yolox-backbone
Load a Pretrained Model
Pretrained models can be loaded using yolox_backbone.create_model.
import yolox_backbone
m = yolox_backbone.create_model('yolox-s', pretrained=True)
m.eval()
Query the architecture information
After a feature backbone has been created, it can be queried to provide architecture information. The .scaling_factor attribute is a dictionary encapsulating the information about the scaling factor.
import yolox_backbone
m = yolox_backbone.create_model('yolox-s', pretrained=True)
print('Network scaling factor: ', m.scaling_factor)
Output:
Network scaling factor: {'depth': 0.33, 'width': 0.5}
Query the feature information
After a feature backbone has been created, it can be queried to provide channel information to the downstream heads without requiring static config or hardcoded constants. The .out_channels attribute is a dictionary encapsulating the information about the feature extraction points.
import yolox_backbone
m = yolox_backbone.create_model('yolox-s', pretrained=True)
print('Feature channels: ', m.out_channels)
Output:
Feature channels: {'P3': 128, 'P4': 256, 'P5': 512}
List Supported Models
import yolox_backbone
from pprint import pprint
model_names = yolox_backbone.list_models()
pprint(model_names)
Output:
['yolox-s',
'yolox-m',
'yolox-l',
'yolox-x',
'yolox-nano',
'yolox-tiny',
'yolox-darknet53']
Select specific feature levels
There is one creation argument impacting the output features.
out_featuresselects which FPN features to output
Support for different number of input channels
You can create the model without the constraint that the number of input channel is 3.
But you have to set pretrained to False.
import yolox_backbone
model = yolox_backbone.create_model(model_name=model_name,
pretrained=False,
input_tensor_channels=4,
out_features=["P3", "P4", "P5"]
)
Example
import yolox_backbone
import torch
from pprint import pprint
pprint(yolox_backbone.list_models())
model_names = yolox_backbone.list_models()
for model_name in model_names:
print("model_name: ", model_name)
model = yolox_backbone.create_model(model_name=model_name,
pretrained=True,
out_features=["P3", "P4", "P5"]
)
input_tensor = torch.randn((1, 3, 640, 640))
fpn_output_tensors = model(input_tensor)
p3 = fpn_output_tensors["P3"]
p4 = fpn_output_tensors["P4"]
p5 = fpn_output_tensors["P5"]
print("input_tensor.shape: ", input_tensor.shape)
print("p3.shape: ", p3.shape)
print("p4.shape: ", p4.shape)
print("p5.shape: ", p5.shape)
print("-" * 50)
Output:
['yolox-s', 'yolox-m', 'yolox-l', 'yolox-x', 'yolox-nano', 'yolox-tiny', 'yolox-darknet53']
model_name: yolox-s
input_tensor.shape: torch.Size([1, 3, 640, 640])
p3.shape: torch.Size([1, 128, 80, 80])
p4.shape: torch.Size([1, 256, 40, 40])
p5.shape: torch.Size([1, 512, 20, 20])
--------------------------------------------------
model_name: yolox-m
input_tensor.shape: torch.Size([1, 3, 640, 640])
p3.shape: torch.Size([1, 192, 80, 80])
p4.shape: torch.Size([1, 384, 40, 40])
p5.shape: torch.Size([1, 768, 20, 20])
--------------------------------------------------
model_name: yolox-l
input_tensor.shape: torch.Size([1, 3, 640, 640])
p3.shape: torch.Size([1, 256, 80, 80])
p4.shape: torch.Size([1, 512, 40, 40])
p5.shape: torch.Size([1, 1024, 20, 20])
--------------------------------------------------
model_name: yolox-x
input_tensor.shape: torch.Size([1, 3, 640, 640])
p3.shape: torch.Size([1, 320, 80, 80])
p4.shape: torch.Size([1, 640, 40, 40])
p5.shape: torch.Size([1, 1280, 20, 20])
--------------------------------------------------
model_name: yolox-nano
input_tensor.shape: torch.Size([1, 3, 640, 640])
p3.shape: torch.Size([1, 64, 80, 80])
p4.shape: torch.Size([1, 128, 40, 40])
p5.shape: torch.Size([1, 256, 20, 20])
--------------------------------------------------
model_name: yolox-tiny
input_tensor.shape: torch.Size([1, 3, 640, 640])
p3.shape: torch.Size([1, 96, 80, 80])
p4.shape: torch.Size([1, 192, 40, 40])
p5.shape: torch.Size([1, 384, 20, 20])
--------------------------------------------------
model_name: yolox-darknet53
input_tensor.shape: torch.Size([1, 3, 640, 640])
p3.shape: torch.Size([1, 128, 80, 80])
p4.shape: torch.Size([1, 256, 40, 40])
p5.shape: torch.Size([1, 512, 20, 20])
--------------------------------------------------
Acknowledgement
The docs are heavily based on timm docs. Thanks for their awesome works.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file yolox_backbone-0.0.1.9.tar.gz.
File metadata
- Download URL: yolox_backbone-0.0.1.9.tar.gz
- Upload date:
- Size: 13.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/59.5.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
577f85250e32c8e6bcc9f893fcf61c3f2e02ea3c7f8b4795466b45681884019b
|
|
| MD5 |
b7dece29b2583d446d18d27686dbed77
|
|
| BLAKE2b-256 |
a0d93b5a9dee4d6691f1f899af56863d7c8fdf413db49ffb6b1462db44e899a3
|
File details
Details for the file yolox_backbone-0.0.1.9-py3-none-any.whl.
File metadata
- Download URL: yolox_backbone-0.0.1.9-py3-none-any.whl
- Upload date:
- Size: 15.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/59.5.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
13bd254884522bde49dc9200e6fcc795aaa5869b98fec3a0160920915c84c59d
|
|
| MD5 |
2f9bf9d794b7839772774abfa258b16d
|
|
| BLAKE2b-256 |
7428fc6982bd1a012c3b62d3a97311ae738f5f6036b7d0a4ee52899e3783d183
|