Skip to main content

Generate thousands of new 2D images from a small batch of objects and backgrounds.

Project description

Flip

Python supported

Synthetic Data generation with Flip! Generate thousands of new 2D images from a small batch of objects and backgrounds.

Installation

Install Flip using pip:

pip install flip-data

Dependencies

Flip requires:

  • Python (>= 3.7)
  • Opencv (>= 4.3.0)
  • Numpy (>= 1.19.1)

Quick Start (Example)

To try Flip library you can run examples/data_generator.py. You will need to add background images and objects to compose your new training dataset, then place them in the following directories:

BACKGROUNDS_PATTERN = "examples/data/backgrounds/*"
OBJECTS_PATTERN = "examples/data/objects/**/*"

The main workflow in Flip is to create transformers and then execute them as follows:

## Import Flip transformers
import flip.transformers as tr

OUT_DIR = "examples/result"

...

## Create Child transformers
transform_objects = [
        tr.data_augmentation.Rotate(mode='random'),
        tr.data_augmentation.Flip(mode='y'),
        tr.data_augmentation.RandomResize(
            mode='symmetric_w',
            relation='parent',
            w_percentage_min=0.2,
            w_percentage_max=0.5
        )
    ]

## Create main transformer
transform = tr.Compose([
    tr.ApplyToObjects(transform_objects),
    tr.domain_randomization.ObjectsRandomPosition(
        x_min=0, y_min=0.4, x_max=0.7, y_max=0.7, mode='percentage'
    ),
    tr.data_augmentation.Flip('x'),
    tr.domain_randomization.Draw(),
    tr.labeler.CreateBoundingBoxes(),
    tr.io.CreateJson(out_dir=OUT_DIR, name='img_generate.jpg'),
    tr.io.CreateJson(out_dir=OUT_DIR, name='json_generated.jpg')
])

## Execute transformations
el = tr.Element(image=..., objects=...)
[el] = transform(el)

Object

Transformers

The main transformers are:

  • Transformer
  • Compose
  • ApplyToObjects
  • ApplyToBackground
  • ApplyToCreatedImage

By the way, all Transformers will be executed over objects of class Element and will return a new transformed Element.

Data Augmentation

  • Flip: Flip the Element in x or y axis.
  • RandomResize: Change the size of an Element randomly.
  • Rotate: Rotate Element randomly.
  • Color: Change color space or the element color.
  • Brightness: Changes the brightness in the image.
  • Contrast: Changes the contrast in the image.
  • Saturation: Changes the saturation in the image.
  • Noise: Add noise to the element image.
  • CutOut: Remove a section of the element in the desired area.
  • RandomCrop: Cut the image randomly.

Random Domain

  • Draw: Draw objects over background Element to merge them into a new image.
  • ObjectsRandomPosition: Set Random positions to objects over background Element.

Labeler

  • CreateBoundingBoxes: Draw bounding boxes around the objects contained by a background Element.
  • CreateMasks: Creates the segmentation mask for the objects contained in a background element.

IO

  • SaveImage: Save a .jpg File with the new generated image.
  • SaveMask: Save a .jpg File with the new generated mask.
  • Json: Save generated Labels as a Json.
  • Csv: Save generated Labels as a CSV.

Want to Contribute or have any doubts or feedback?

If you want extra info, email me at flip@linkedai.co

Report Issues

Please help us by reporting any issues you may have while using Flip.

License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

flip-data-0.2.1.tar.gz (29.0 kB view details)

Uploaded Source

Built Distribution

flip_data-0.2.1-py3-none-any.whl (36.5 kB view details)

Uploaded Python 3

File details

Details for the file flip-data-0.2.1.tar.gz.

File metadata

  • Download URL: flip-data-0.2.1.tar.gz
  • Upload date:
  • Size: 29.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for flip-data-0.2.1.tar.gz
Algorithm Hash digest
SHA256 f5f65b5849f985a79a9a9db504793dfb55f78946ec9df731955ec02da7ff2e29
MD5 213524a1871c7c0ac37f2ba990baceef
BLAKE2b-256 cdfb107d9ce75c539631cb741b5e5d19aaeef0adc20bdf4ef55f0242b73bb716

See more details on using hashes here.

File details

Details for the file flip_data-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: flip_data-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 36.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for flip_data-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 de9863e7b9f5b10e8675776adaecfa09ddcbb492587c4c15c58a8a872a47e8a1
MD5 4318339251588c843ff2c92f9cc6ecb5
BLAKE2b-256 f578a737b7f013e1a3d4f31a21cefaabc50a5d1509f7b31e22e21479e5b5c3b7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page