A mini package for daily tasks
Project description
TACV - A mini package for daily tasks
Installation
pip install tacv
Examples
2D Object Detection
For now, CenterNet supported. However, use it as prototype purpose only, there is no official benchmark on accuracy.
- First, create a config file for training/model config, see full config at
tacv/detection/sample_config.yml.
input_size: &input_size [ 224,448 ]
max_object: &max_obj 16
num_classes: &num_classes 5
train_config:
gpus: 0 # 0 means CPU, N means using N available GPU(s) for training
epoch: 600
batch_size: 32
shuffle: True
num_workers: 4
learning_rate: 0.0001
lr_decay_milestones: [ 80,160 ]
lr_decay_gamma: 0.5
weight_decay: 0.01
checkpoint_frequency: 1
amp: True
unfreeze_bbone_epoch: 200
initial_denom_lr: 5
loss_hm_reg_offset_weights: [ 1, 1, 0.1 ]
callback:
monitor: "val_loss"
dirpath: "logs/exp_name_1"
save_top_k: 20
mode: "min"
val_config:
batch_size: 1
checkpoint: ""
model:
num_classes: *num_classes
backbone_layers: 18
head_conv_channel: 64
max_object: *max_obj
input_shape: *input_size
- Second, create your own Dataset class that returns data as described in the
__getitem__()method, see following example:
from torch.utils.data import Dataset
import torch
class MockDataset(Dataset):
def __init__(self, max_objs):
self.max_objs = max_objs
def __getitem__(self, item):
image = torch.rand(3, 224, 448) # Shape = (3, H, W)
annos = torch.rand(self.max_objs, 5) # Shape = (MaxObjs x 5) , each row presents for (x,y,w,h,class_id)
masks = torch.zeros(
self.max_objs) # Shape = (MaxObjs,) each value is False or True (1 indicates having object)
masks[0:3] = True
return {"image": image, "annos": annos, "masks": masks}
def __len__(self):
return 1000
- Init
CenterNetTrainerand here we go
from tacv.detection import CenterNetTrainer
from torch.utils.data import random_split
config_path = "tacv/detection/sample_config.yml"
dataset = MockDataset(max_objs=16) # Replace with your custom dataset
train_set, val_set = random_split(dataset, [len(dataset)*0.9, len(dataset)-len(dataset)*0.9])
trainer = CenterNetTrainer(train_set, val_set, config_path)
trainer.train()
- Finally, do inference (TO BE UPDATED after coffee time).
File utils
Get all file paths from a directory
from tacv.fileUtils import get_all_files
file_paths = get_all_files("dir_name")
Returns a list of file absolute paths, for example
['./venvCondaTest/x86_64-conda_cos6-linux-gnu/bin/ld', './venvCondaTest/conda-meta/_libgcc_mutex-0.1-main.json', './venvCondaTest/conda-meta/xz-5.2.5-h7b6447c_0.json', './venvCondaTest/conda-meta/wheel-0.37.1-pyhd3eb1b0_0.json', './venvCondaTest/conda-meta/setuptools-58.0.4-py36h06a4308_0.json', './venvCondaTest/conda-meta/ca-certificates-2021.10.26-h06a4308_2.json', './venvCondaTest/conda-meta/readline-8.1.2-h7f8727e_1.json', './venvCondaTest/conda-meta/sqlite-3.37.2-hc218d9a_0.json', './venvCondaTest/conda-meta/libgcc-ng-9.3.0-h5101ec6_17.json', './venvCondaTest/conda-meta/ncurses-6.3-h7f8727e_2.json']
Save/load json data to/from file
from tacv.fileUtils import save_json,load_json
json_file = "myfile.json"
json_data = {"name":"Ta","age":100}
# save json
save_json(json_file,json_data)
# load json
json_data = load_json(json_file)
Visual
Draw 2D points onto an image
import cv2
from tacv.visual import draw_points
image = cv2.imread("myimage.jpg")
points = [(18,19),(55,55),(102,22),(66,22)]
draw_points(image,points,circular=True,color=(0,255,0),thickness=2)
cv2.imwrite("new_image.jpg",image)
Video
Synthesize a video from images
from tacv.video import images2video
image_dir = "my_images" #directory containing images in the same format
video_path = "tacv_test.mp4" #path to save the synthesized video
# common use case
images2video(image_dir,video_path,fps=24, image_ext = None, sort=False)
Parameters:
fps: default = 24image_ext: a string, specify image extension to synthesize the video, for example (jpg,png,...). If it isNone. All images will be grabbed. Default isNone.sort:TrueorFalse. Indicate if the images should be sorted by name before synthesizing the video. Default isTrue.
Extract images from a video
from tacv.video import video2images
video_path = "tacv_test.mp4" #path to video to be extracted to images
image_dir = "my_images" #directory to save the extracted images
video2images(video_path,image_dir,exist_ok=False, image_ext="jpg", verbose=True)
Parameters:
exist_ok: default is False. Ifimage_diralready contains images and this flag isFalse. The process will be cancel, otherwise it continues.image_ext: a string, specify image extension, for example (jpg,png,...). If it isNone. All images will be grabbed. Default isNone.verbose:TrueorFalse. Set it toTrueto view the extracting process. Default isTrue.
Geometry
Calculate 2D IOU of two polygons
from tacv.geometry import iou_2d
polygon_1 = [[0,0],[10,10],[0,10]]
polygon_2 = [[0, 20], [10, 10], [0, 0]]
print(iou_2d(polygon_1,polygon_2))
Command Line Interface
Synthesize a video from images
tacv_i2v image_dir video_path [optional: fps image_ext]
Extract images from a video
tacv_v2i video_path image_dir
For more
- Visit args description in source code
- Visit
test.pyfile
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
tacv-1.1.1.tar.gz
(19.2 kB
view details)
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
tacv-1.1.1-py3-none-any.whl
(21.6 kB
view details)
File details
Details for the file tacv-1.1.1.tar.gz.
File metadata
- Download URL: tacv-1.1.1.tar.gz
- Upload date:
- Size: 19.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.8.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c63755a801d43938879675faacc05fda13b65e559a78b558d4dcc458ae65581b
|
|
| MD5 |
c4dd3b0c87cd28f751a8ce442612ea29
|
|
| BLAKE2b-256 |
ebfb1113dacabfee8bb7cbef704b9e79d59e1bceebb2cedcb0b142abb0a90d1d
|
File details
Details for the file tacv-1.1.1-py3-none-any.whl.
File metadata
- Download URL: tacv-1.1.1-py3-none-any.whl
- Upload date:
- Size: 21.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.8.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
acda80eaa9ed732ba2c653fe56e9d46553d85da0a7b5dcf4578c7a88edbfec1b
|
|
| MD5 |
7fc10b2143f96f229b29f3e4e6ba56ff
|
|
| BLAKE2b-256 |
4f0551fd099b4612f373e91d0b2ce79175ed088faf1002ed71831211d183be6b
|