• Stars
    star
    186
  • Rank 206,005 (Top 5 %)
  • Language
    Python
  • License
    Mozilla Public Li...
  • Created over 4 years ago
  • Updated 11 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Python Object Detection Insights

Pyodi

Python Object Detection Insights

Documentation: https://gradiant.github.io/pyodi

Introduction

A simple tool for explore your object detection dataset. The goal of this library is to provide simple and intuitive visualizations from your dataset and automatically find the best parameters for generating a specific grid of anchors that can fit you data characteristics

Component Description
paint annotations paints COCO format annotations and predictions
ground-truth explore your dataset ground truth characteristics
evaluation evaluates AP and AR for between predictions and ground truth
train-config generation automatically generate anchors for your data
train-config evaluation evaluate the fitness between you data and your anchors
coco merge automatically merge COCO annotation files
coco split automatically split COCO annotation files in train and val subsets
crops split creates a new dataset by splitting images into crops and adapting the annotations file
crops merge translate COCO ground truth or COCO predictions crops split into original image coordinates

Installation

pip install pyodi

Usage

Pyodi includes different applications that can help you to extract the most from your dataset. You can download our TINY_COCO_ANIMAL dataset here in order to test the example commands. A classic flow could follow the following steps:

1. Annotation visualization

With pyodi paint_annotations you can easily visualize in a beautiful format your object detection dataset.

pyodi paint-annotations \
  $TINY_COCO_ANIMAL/annotations/train.json \
  $TINY_COCO_ANIMAL/sample_images \
  $TINY_COCO_ANIMAL/painted_images

COCO image with painted annotations

2. Ground truth exploration

It is very recommended to intensively explore your dataset before starting training. The analysis of your images and annotations will allow you to optimize aspects as the optimum image input size for your network or the shape distribution of the bounding boxes. You can use the ground_truth app for this task:

pyodi ground-truth $TINY_COCO_ANIMAL/annotations/train.json

Image shape distribution

Bbox distribution

Bbox center distribution

3. Train config generation

The design of anchors is critical for the performance of one-stage detectors. Pyodi can help you to automatically design a set of anchors that fit your data distribution.

pyodi train-config generation \
  $TINY_COCO_ANIMAL/annotations/train.json \
  --input-size [1280,720] \
  --n-ratios 3 --n-scales 3

Anchor clustering plot

4. Train config evaluation

Pyodi evaluation app has been designed with the aim of providing a simple tool to understand how well are your anchors matching your dataset. It automatically runs by default after executing train-config generation but it can also be run independently with:

pyodi train-config evaluation \
  $TINY_COCO_ANIMAL/annotations/train.json \
  $TINY_COCO_ANIMAL/resources/anchor_config.py \
  --input-size [1280,720]

Anchor overlap plot

Contributing

We appreciate all contributions to improve Pyodi. Please refer to Contributing guide for more info.

More Repositories

1

bigdata-charts

Curated Big Data Applications for Kubernetes
PLpgSQL
95
star
2

openverso-charts

Helm charts for 5G Technologies
Smarty
39
star
3

slack-notifier-jenkins-sl

Shared library for Jenkins Pipeline to send slack notifications well formatted
Groovy
29
star
4

bob.paper.icb2019.gradgpad

Generalized Presentation Attack Detection: a face anti-spoofing evaluation proposal
Python
27
star
5

dockerized-kibana

Kibana Visualization UI with Gradiant Branding
CSS
27
star
6

dockerized-hadoop

Files to create Hadoop docker images
Shell
18
star
7

openverso-images

Code to build Container Images for Openverso CNFs
Shell
16
star
8

BlackICE_Connect

C
13
star
9

FARO

FARO - Document Sensitivity Detector
Python
9
star
10

fastapi-cookiecutter-template

Cookiecutter template to create a new FastAPI project
Python
8
star
11

airflow-docker

Shell
8
star
12

pulpocon2022-estrategias-despliegue

8
star
13

pulpocon2022-monitorizacion-aplicaciones

Taller PulpoCon2022 "Monitorizando nuestras aplicaciones"
Shell
7
star
14

dockerized-spark

Files to create an Apache Spark docker image
Dockerfile
7
star
15

dockerized-hbase

Files to create HBASE docker images
Shell
6
star
16

SDN-QoS-PoC

Python
5
star
17

bob.gradiant.core

Python
3
star
18

ettus-device-plugin

Kubernetes device plugin to manage Ettus USRPs as Node Resources.
Python
2
star
19

smart-xapi-dsl

xAPI vocabulary used at the Smarted platform
TypeScript
2
star
20

AMQPCons

Module that consumes AMQP messages by connecting to queues and sends received data through MQTT topics
Go
2
star
21

grad-ssikit-android

Kotlin
2
star
22

gradiant-xapi-dsl

Shared xAPI vocabulary for eLearning projects
TypeScript
2
star
23

dockerized-gobblin

Files to create Gobblin docker image
Shell
2
star
24

AMQPPub

Module that publishes through AMQP messages sent to it by other services through MQTT topics
Go
1
star
25

grad-servicematrix-android

Kotlin
1
star
26

dockerized-opentsdb

Files to create an openTSDB docker image
Dockerfile
1
star
27

bob.gradiant.face.databases

Python
1
star
28

bob.gradiant.pad.evaluator

Python
1
star
29

tc-manager

TC-manager offers a REST API and a Web UI to configure traffic ingress control over a set of network interfaces.
Python
1
star
30

grad-ssikit-vclib-android

Kotlin
1
star
31

virtual-factory

Python
1
star