A pipeline for generating synthetic production line images
Project description
BlenderLine
1. Table of Contents
Table of Contents
2. Description
Coming soon!
3. Features
- Flexible: BlenderLine imposes as little constraints on your 3D modeling workflow as possible, giving you the freedom to model your production line as you see fit.
- Declarative: Instead of having to write the generation code yourself, BlenderLine enables you to define the desired behavior of objects on your production line using declarative configuration files.
- Powerful: Despite using declarative configuration files, BlenderLine is powerful enough to support a wide variety of use cases, ranging from narrow bottle counting lines (see
examples/example_beer
) to wide conveyor belts (example planned). - Convenient: BlenderLine includes tools to easily convert generated datasets into common computer vision dataset formats:
yolo_detection
yolo_segmentation
(planned)coco_detection
(planned)coco_segmentation
(planned)
4. Installation
The simplest way to install BlenderLine is using pip:
pip install blenderline
Alternatively, you can choose to clone the repository to make a local pip installation:
git clone https://github.com/maxvandenhoven/blenderline
cd blenderline
pip install -e .
Note that, by default, BlenderLine assumes that Blender is installed and available on your system PATH
, meaning that the Blender CLI can be invoked using only the blender
command. The platform-dependent documentation below can help you add Blender to your system PATH
:
Alternatively, you can use the optional --blender
argument in blenderline generate
to specify where Blender is installed on your system.
5. Usage
Generate Images
The blenderline generate
command is used to generate a dataset of synthetic images from a configuration file. You can test BlenderLine with the provided examples/example_beer/images.json
example as follows:
blenderline generate --config examples/example_beer/images.json --target data/raw
This will generate a dataset with the following structure:
data/
+- raw/
+- example_beer/
+- train/
| +- 0/
| | +- image__f0825a6262fc__0001.png
| | +- mask__0__8acdea079f10__0001.png
| | +- mask__1__0181a303d637__0001.png
| | +- ...
| +- 1/
| +- image__7abe7f02c7d9__0001.png
| +- mask__1__19abef8a5cef__0001.png
| +- mask__1__d980d4a83682__0001.png
| +- ...
+- valid/
| +- 0/...
| +- 1/...
+- label_mapping.json
While not strictly necessary, setting --target data/raw
will create a folder structure that allows you to track different versions of the data, e.g., after using the blenderline convert
command.
Note that the dataset root folder (here named example_beer
) contains subfolders for different splits defined in the configuration file. Each split contains a numbered list of instance folders, each containing a rendered image and a set of masks. An example instance might look as follows:
Image and mask files use the following naming convention:
image__<random image ID>__0001.png
mask__<class ID>__<random mask ID>__0001.png
Convert Dataset
Coming soon!
6. Roadmap
Version | Features |
---|---|
v0.1.0 (current) | Image generation pipeline + CLI interface |
v0.2.0 | YOLO detection conversion pipeline + CLI interface |
v0.3.0 | Documentation + tutorial + second example |
v0.4.0 | YOLO segmentation conversion pipeline + CLI interface |
v0.5.0 | COCO detection conversion pipeline + CLI interface |
v0.6.0 | COCO segmentation conversion pipeline + CLI interface |
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
Hashes for blenderline-0.1.5-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ef62dfd85b948488515053b7299086afca5c211cb0924347c77eb3186846e5c0 |
|
MD5 | 8eacd7543ce56474925fb462520e684f |
|
BLAKE2b-256 | 2225ee1e84786033aee10d788407ba8b6901f6e120720368ccdd25113c593727 |