Skip to content

RIPS25-Analog/OC-Synthesis

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

148 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Setup instructions:

git clone --recursive https://github.com/RIPS25-Analog/OC-Synthesis.git ## clone recursively to also fetch submodules

cd OC-Synthesis
python -m venv env
source env/bin/activate

pip install ultralytics wandb
wandb login  # put API key

Data file structure

Create a data directory like /home/data, with subfolders called raw and processed

Real annotated data

The real annotated data should be contain images and labels within train-val-test splits:

└── /home/data/processed/[dataset_name]
    ├── train/
    |   ├── images/         # images of the same file type (e.g: 4_5.png, 15_10.png)
    |   └── labels/         # labels in darknet format (class_id, x, y, w, h) with same filenames as corresponding images (e.g: 4_5.txt, 15_10.txt)
    ├── val/                # same subfoldering as above
    └── test/               # same subfoldering as above

2D Approaches: Foreground Object & Background Data

Cut-n-Paste and Diffusion require a folder with images of foreground objects and a mask for each image, as well as a folder with background images:

└── /home/data/raw/[dataset_name]
    ├── foreground_objects/
    |   ├── class_name_1
    |   |   ├── images              # images of the same file type (e.g: 4_5.png, 15_10.png)
    |   |   └── masks               # masks with same filenames as corresponding images plus _mask attached at end (e.g: 4_5_mask.png, 15_10_mask.png)
    |   ├── ...
    |   └── class_name_8
    └── backgrounds/                # backgrounds of the same file type (e.g: 1.png, 2.png)

3D Approaches

3D Random Placement and 3D Copy-Paste require a folder with 3d models of objects, as well as folders with HDRI backgrounds and RGBD backgrounds

└── /home/data/raw/[dataset_name]
    ├── 3d_models/
    |   ├── class_name_1            # e.g: hammers
    |   |   ├── instance1           # e.g: big red hammer
    |   |   |   ├── instance1.obj   # 3D OBJ file
    |   |   |   ├── instance1.mtl   # MTL file to map texture image to object's faces
    |   |   |   └── instance1.png   # texture for 3d object
    |   |   ├── ...
    |   |   └── instance5           
    |   ├── ...
    |   ├── ...
    |   └── class_name_8
    └── backgrounds/
        ├── HDRI                    # contains HDRI background files of .exr filetype
        └── RGBD
            ├── image               # contains RGB images of the same filetype  (e.g: 0001.jpg)
            └── depth               # contains depth images with same filenames as corresponding images (e.g: 0001.mat)

Running scripts

To finetune YOLO on a specific data config file (in YOLO format):

python src/finetune_YOLO.py --data data/openimages-basic-v0.yaml --epochs 300 --freeze 23

To evaluate a particular YOLO finetuning run:

python src/evaluate_YOLO.py --run runs/openimages-basic-v0/train2

To run hyperopt for YOLO finetune on a specific data file:

python src/hyperparam_opt_YOLO.py --data data/openimages-basic-v0.yaml --epoch 100

To generate Cut n Paste dataset:

python src/Cut-and-Paste/dataset_generator.py --n_images 100 /home/data/pace/toycar_can_v2-extra/foreground_objects/ /home/data/processed/cnp-pace/test-100

To generate other datasets, view the respective subfolders within src.

About

synthetic data for object detection

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •