|
49 | 49 | <li class="toctree-l1"><a class="reference internal" href="../../../gdino_prelabelling.html">Grounding DINO Prelabeling</a></li> |
50 | 50 | <li class="toctree-l1"><a class="reference internal" href="../../../matching_logic.html">Matching Logic</a></li> |
51 | 51 | <li class="toctree-l1"><a class="reference internal" href="../../../human_in_loop.html">Human-in-the-Loop</a></li> |
52 | | -<li class="toctree-l1"><a class="reference internal" href="../../../augmentation.html">Augmentation Module</a></li> |
| 52 | +<li class="toctree-l1"><a class="reference internal" href="../../../augmentation.html">Augmentation</a></li> |
53 | 53 | <li class="toctree-l1"><a class="reference internal" href="../../../training.html">Training</a></li> |
54 | 54 | <li class="toctree-l1"><a class="reference internal" href="../../../distillation.html">Distillation</a></li> |
55 | 55 | <li class="toctree-l1"><a class="reference internal" href="../../../quantization.html">Quantization</a></li> |
| 56 | +<li class="toctree-l1"><a class="reference internal" href="../../../clean_pipeline.html">File Cleaning and Archiving</a></li> |
56 | 57 | <li class="toctree-l1"><a class="reference internal" href="../../../tests/index.html">Unit Tests</a></li> |
57 | 58 | <li class="toctree-l1"><a class="reference internal" href="../../../database.html">Database Schema Overview</a></li> |
58 | 59 | <li class="toctree-l1"><a class="reference internal" href="../../../api_reference/index.html">Code Reference</a></li> |
@@ -96,7 +97,32 @@ <h1>Source code for src.pipeline.augmentation</h1><div class="highlight"><pre> |
96 | 97 | <div class="viewcode-block" id="build_augmentation_transform"> |
97 | 98 | <a class="viewcode-back" href="../../../api_reference/augmentation.html#src.pipeline.augmentation.build_augmentation_transform">[docs]</a> |
98 | 99 | <span class="k">def</span><span class="w"> </span><span class="nf">build_augmentation_transform</span><span class="p">(</span><span class="n">config</span><span class="p">:</span> <span class="nb">dict</span><span class="p">)</span> <span class="o">-></span> <span class="n">A</span><span class="o">.</span><span class="n">Compose</span><span class="p">:</span> |
99 | | -<span class="w"> </span><span class="sd">"""Build the augmentation transform pipeline from config."""</span> |
| 100 | +<span class="w"> </span><span class="sd">"""</span> |
| 101 | +<span class="sd"> Build the augmentation transform pipeline from the given configuration.</span> |
| 102 | + |
| 103 | +<span class="sd"> This function constructs an Albumentations Compose object with a sequence of </span> |
| 104 | +<span class="sd"> image augmentation transforms. Each transform is applied with a configurable </span> |
| 105 | +<span class="sd"> probability and parameter set drawn from the `config` dictionary.</span> |
| 106 | + |
| 107 | +<span class="sd"> Supported transforms:</span> |
| 108 | +<span class="sd"> - HorizontalFlip</span> |
| 109 | +<span class="sd"> - RandomBrightnessContrast</span> |
| 110 | +<span class="sd"> - HueSaturationValue</span> |
| 111 | +<span class="sd"> - Blur</span> |
| 112 | +<span class="sd"> - GaussNoise</span> |
| 113 | +<span class="sd"> - ToGray</span> |
| 114 | +<span class="sd"> - Rotate</span> |
| 115 | + |
| 116 | +<span class="sd"> The transform also ensures bounding box alignment using 'pascal_voc' format.</span> |
| 117 | + |
| 118 | +<span class="sd"> Args:</span> |
| 119 | +<span class="sd"> config (dict): Dictionary containing probability values and parameters </span> |
| 120 | +<span class="sd"> for each augmentation transform.</span> |
| 121 | + |
| 122 | +<span class="sd"> Returns:</span> |
| 123 | +<span class="sd"> A.Compose: An Albumentations Compose object with the specified transformations </span> |
| 124 | +<span class="sd"> and bounding box handling.</span> |
| 125 | +<span class="sd"> """</span> |
100 | 126 | <span class="k">return</span> <span class="n">A</span><span class="o">.</span><span class="n">Compose</span><span class="p">(</span> |
101 | 127 | <span class="p">[</span> |
102 | 128 | <span class="c1"># Flips image horizontally, applied 50% of the time by default</span> |
@@ -132,8 +158,27 @@ <h1>Source code for src.pipeline.augmentation</h1><div class="highlight"><pre> |
132 | 158 | <span class="n">num_augmentations</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> |
133 | 159 | <span class="n">config</span><span class="p">:</span> <span class="nb">dict</span> |
134 | 160 | <span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> |
135 | | -<span class="w"> </span><span class="sd">"""Applies augmentations to each image N times and saves results.</span> |
136 | | -<span class="sd"> Also saves un-augmented images with no predictions into separate folders.</span> |
| 161 | +<span class="w"> </span><span class="sd">"""</span> |
| 162 | +<span class="sd"> Apply augmentations to each labeled image and save the results.</span> |
| 163 | + |
| 164 | +<span class="sd"> For each (image, label) pair, this function applies the given transformation </span> |
| 165 | +<span class="sd"> pipeline `num_augmentations` times. It saves the augmented images and their </span> |
| 166 | +<span class="sd"> updated prediction labels (in JSON format) to the specified output directories.</span> |
| 167 | + |
| 168 | +<span class="sd"> If an image has no predictions (empty bounding box list), the original image </span> |
| 169 | +<span class="sd"> is saved separately in a dedicated 'no_prediction_images' folder.</span> |
| 170 | + |
| 171 | +<span class="sd"> Args:</span> |
| 172 | +<span class="sd"> matched_pairs (list): List of tuples, each containing a Path to a JSON file </span> |
| 173 | +<span class="sd"> and its corresponding image file.</span> |
| 174 | +<span class="sd"> transform (A.Compose): Albumentations transformation pipeline.</span> |
| 175 | +<span class="sd"> output_img_dir (Path): Directory to save augmented images.</span> |
| 176 | +<span class="sd"> output_json_dir (Path): Directory to save augmented label files.</span> |
| 177 | +<span class="sd"> num_augmentations (int): Number of times to apply augmentations per image.</span> |
| 178 | +<span class="sd"> config (dict): Configuration dictionary that may include a base random seed.</span> |
| 179 | + |
| 180 | +<span class="sd"> Returns:</span> |
| 181 | +<span class="sd"> None</span> |
137 | 182 | <span class="sd"> """</span> |
138 | 183 | <span class="c1"># Separate folder for un-augmented no-prediction images and labels</span> |
139 | 184 | <span class="n">no_pred_img_dir</span> <span class="o">=</span> <span class="n">output_img_dir</span><span class="o">.</span><span class="n">parent</span> <span class="o">/</span> <span class="s2">"no_prediction_images"</span> |
@@ -201,14 +246,31 @@ <h1>Source code for src.pipeline.augmentation</h1><div class="highlight"><pre> |
201 | 246 | <a class="viewcode-back" href="../../../api_reference/augmentation.html#src.pipeline.augmentation.augment_dataset">[docs]</a> |
202 | 247 | <span class="k">def</span><span class="w"> </span><span class="nf">augment_dataset</span><span class="p">(</span><span class="n">image_dir</span><span class="p">:</span> <span class="n">Path</span><span class="p">,</span> <span class="n">output_dir</span><span class="p">:</span> <span class="n">Path</span><span class="p">,</span> <span class="n">config</span><span class="p">:</span> <span class="nb">dict</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> |
203 | 248 | <span class="w"> </span><span class="sd">"""</span> |
204 | | -<span class="sd"> Orchestrates augmentation pipeline.</span> |
205 | | -<span class="sd"> image_dir: path to labeled images</span> |
206 | | -<span class="sd"> output_dir: root output directory (will contain 'images' and 'labels')</span> |
207 | | -<span class="sd"> config: dictionary of augmentation settings</span> |
| 249 | +<span class="sd"> Orchestrates the full augmentation pipeline for a labeled image dataset.</span> |
| 250 | + |
| 251 | +<span class="sd"> This function matches labeled JSON files with their corresponding images,</span> |
| 252 | +<span class="sd"> builds the augmentation pipeline from the provided config, and applies</span> |
| 253 | +<span class="sd"> augmentations using `augment_images`.</span> |
| 254 | + |
| 255 | +<span class="sd"> Args:</span> |
| 256 | +<span class="sd"> image_dir (Path): Directory containing the original labeled images.</span> |
| 257 | +<span class="sd"> output_dir (Path): Root directory where augmented 'images/' and 'labels/' will be saved.</span> |
| 258 | +<span class="sd"> config (dict): Dictionary containing augmentation settings, including</span> |
| 259 | +<span class="sd"> number of augmentations and optional transform parameters.</span> |
| 260 | + |
| 261 | +<span class="sd"> Behavior:</span> |
| 262 | +<span class="sd"> - Loads label files from a `labeled_json_dir` (‘automl_workspace/data_pipeline/labeled’)</span> |
| 263 | +<span class="sd"> - Matches JSON labels to image files by filename stem</span> |
| 264 | +<span class="sd"> - Builds an Albumentations transform pipeline using `build_augmentation_transform`</span> |
| 265 | +<span class="sd"> - Applies the transform using `augment_images` with `num_augmentations` per image</span> |
| 266 | +<span class="sd"> - Logs counts of label files, image files, and successful matches</span> |
| 267 | + |
| 268 | +<span class="sd"> Returns:</span> |
| 269 | +<span class="sd"> None</span> |
208 | 270 | <span class="sd"> """</span> |
209 | 271 | <span class="n">num_augmentations</span> <span class="o">=</span> <span class="n">config</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"num_augmentations"</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span> |
210 | 272 |
|
211 | | - <span class="n">labeled_json_dir</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="s2">"automl_workspace/data_pipeline/labeled"</span><span class="p">)</span> |
| 273 | + <span class="n">labeled_json_dir</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="n">config</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"label_dir"</span><span class="p">,</span> <span class="s2">"automl_workspace/data_pipeline/labeled"</span><span class="p">))</span> |
212 | 274 | <span class="n">output_img_dir</span> <span class="o">=</span> <span class="n">output_dir</span> <span class="o">/</span> <span class="s2">"images"</span> |
213 | 275 | <span class="n">output_json_dir</span> <span class="o">=</span> <span class="n">output_dir</span> <span class="o">/</span> <span class="s2">"labels"</span> |
214 | 276 |
|
|
0 commit comments