Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents
minLevel1
maxLevel2

Directory Structure

Processing occurs within the main SemiF-AnnotationPipeline repository which used for temporary data storage. Resulting data for each batch is then moved to the respective permanent blob locations.

Various types of data are used and produced during processing. Full resolution images are the main data input and are processed to produce plant segments, or cutouts, various types of masks, and metadata products for both original images and cutouts. This section describes how this is data structured, details its contents, and documents Image and Cutout metadata at length.

Directory Structure

Code Block
languagenone

...

data

...


  ├── semifield-developed-images

...


  │   ├── NC_2022-07-27
  

...

│   │   ├── NC_2022-07-27.json
  │   │   
  │   │   

...

├── autosfm
  │   

...

│   │   ├── 

...

NC_2022-07-27_preview.png
  

...

│   │   │   ├── detections.csv

...


  

...

│   │   │   ├── dem
  

...

│   │   │   │   └── dem.tif
  

...

│   │   │   ├── downscaled_photos

...


  │   │   │   │   ├── NC_1658926241.png

...


  │   │   │   │   ├── NC_1658926255.png

...


  │   │   │   │   └── ...
  

...

│   │   │   ├── downscaled_masks

...


  │   │   │   │   ├── NC_1658926241_mask.png

...


  

...

│   │   │   │   ├── NC_1658926255_mask.png
  

...

│   │   │   │   └── ...

...


  

...

│   │   │   ├── ortho

...


  

...

│   │   │   │   └── orthomosaic.tif
  

...

│   │   │   ├── project

...


  │   │   │   │   ├── NC_2022-07-27.psx

...


  

...

│   │   │   │   └── NC_2022-07-27.files

...


  │   │   │   └── reference

...


  │   │   │       ├── camera_reference.csv
  

...

│   │   │       ├── error_statistic.csv

...


  │   │   │       ├── fov.csv

...


  

...

│   │   │       └──gcp_reference.csv
  

...

│   │   │

...


  

...

│   │   ├── images

...


  

...

│   │   │   ├── NC_1658926241.png
  

...

│   │   │   ├── NC_1658926255.png

...


  │   │   │   └── ...

...


  

...

│   │   │
  

...

│   │   ├── masks
  

...

│   │   │   ├── NC_1658926241_mask.png
  

...

│   │   │   ├── NC_1658926255_mask.png

...


  │   │   │   └── ...

...


  

...

│   │   │
  

...

│   │   

...

├── 

...

plant-detections
  │   

...

│   │  

...

 ├── NC_1658926241.

...

csv
  

...

│   

...

│   │   

...

├── NC_1658926255.

...

csv
  

...

│   │      

...

└── ...
  │   

...

│   │

...


  │  

...

 │   ├── 

...

metadata
  │  

...

 │   │   ├── NC_1658926241

...

.json

...


  │   │  

...

 

...

│  

...

 

...

├── NC_1658926255

...

.

...

json
  

...

│  

...

 │  

...

 

...

...

   

...

└── ...

...


  

...

│  

...

 

...

│   │
  

...

│   │   

...

└── 

...

metamasks
  

...

│   │   

...

 

...

   ├── semantic_masks
  │   │       │   ├── NC_1658926241.png
  

...

│   │   

...

 

...

   │   ├── NC_1658926255.

...

png
  │   

...

│     

...

  

...

│   └── ...
  │   │    

...

Metadata

Batches

blob_home and data_root - storage location information

batch_id - unique batch identifier

upload_datetime - when image were uploaded to “uploads” blob storage

image_list - list of images contained in a single batch folder

schema_version - version of data schema used for organizing metadata

blob_home and data_root - storage location information

batch_id - unique batch identifier

upload_datetime - when image were uploaded to “uploads” blob storage

image_list - list of images contained in a single batch folder

schema_version - version of data schema used for organizing metadata

Code Block
languagejson
{
    "blob_home": "data",
    "data_root": "semifield-developed-images",
    "batch_id": "NC_2022-08-05",
    "upload_datetime": "2022-08-19_21:28:37",
    "image_list": [
        "images/NC_1659710908.jpg",
        "images/NC_1659711200.jpg",
        "images/NC_1659706234.jpg",
        ...
        "images/NC_1659709264.jpg",
        "images/NC_1659715086.jpg",
        "images/NC_1659706245.jpg"
        ],
    "schema_version": "1.0"
}
Code Block
languagejson
{
    "blob_home": "data",
    "data_root": "semifield-developed-images",
    "batch_id": "NC_2022-08-05",
    "upload_datetime": "2022-08-19_21:28:37",
    "image_list": [
        "images/NC_1659710908.jpg",
        "images/NC_1659711200.jpg",
        "images/NC_1659706234.jpg",
        ...
        "images/NC_1659709264.jpg",
        "images/NC_1659715086.jpg",
        "images/NC_1659706245.jpg"
        ],
    "schema_version": "1.0"
}

Images - general

blob_home and data_root - storage location information

batch_id - unique batch identifier

image_id - unique image id comprised of state abbreviation and UNIX timestamp

image_path - Image filename with a single parent directory

plant_date - plant date for entire batch. Does not account for replantings.

growth_stage - estimated growth stage based on planting date

width and height - image height and width in pixels. May be downscaled as a result of autosfm; however, image in the “images”directory are full sized images. See fullres_width and fullres_height

exif_meta

camera_info

cutout_ids

bboxes

fullres_height

fullres_width

fullres_width

...

languagejson

...

   └── instance_masks
  │   │           ├── NC_1658926241.png
  │   │           ├── NC_1658926255.png
  │   │           └── ...  
  │   └── ...
  │
  ├── semifield-cutouts
  │   ├── NC_2022-07-27

...


  │   

...

Images - Exif

Uses Exif-Py

pip install exifread

Technical tag information can be found here

Code Block
languagejson
    "exif_meta": {
        "ImageWidth": 9560,
        "ImageLength": 6368,
        "BitsPerSample": 8,
        "Compression": 1,
        "PhotometricInterpretation": 2,
        "Make": "SONY",
        "Model": "ILCE-7RM4",
        "Orientation": 1,
        "SamplesPerPixel": 3,
        "XResolution": "300",
        "YResolution": "300",
        "PlanarConfiguration": 1,
        "ResolutionUnit": 2,
        "Software": "RawTherapee 5.8",
        "DateTime": "2022:07:27 08:49:15",
        "Rating": 0,
        "ExifOffset": 4449,
        "ExposureTime": "1/200",
        "FNumber": "10",
        "ExposureProgram": 1,
        "ISOSpeedRatings": 100,
        "RecommendedExposureIndex": 100,
        "ExifVersion": [
            48,
            50,
            51,
            49
        ],
        "DateTimeOriginal": "2022:07:27 08:49:15",
        "DateTimeDigitized": "2022:07:27 08:49:15",
        "BrightnessValue": "9207/1280",
        "ExposureBiasValue": "0",
        "MaxApertureValue": "217/128",
        "MeteringMode": 5,
        "LightSource": 0,
        "Flash": 16,
        "FocalLength": "55",
        "FileSource": 3,
        "SceneType": 1,
        "CustomRendered": 0,
        "ExposureMode": 1,
        "WhiteBalance": 0,
        "DigitalZoomRatio": "1",
        "FocalLengthIn35mmFilm": 55,
        "SceneCaptureType": 0,
        "Contrast": 0,
        "Saturation": 0,
        "Sharpness": 0,
        "LensSpecification": [
            "55",
            "55",
            "9/5",
            "9/5"
        ],
        "LensModel": "FE 55mm F1.8 ZA",
        "BodySerialNumber": null,
        "MakerNote": null,
        "ImageDescription": "                               ",
        "UserComment": null,
        "ApplicationNotes": null,
        "Tag": null,
        "SubIFDs": 4450
    }

Images - Camera Info

camera_info

camera_location

pixel_width & pixel_height

yaw, pitch, roll

focal_length

fov

is_scaleable

Code Block
languagejson
    "camera_info": {
        "camera_location": [
            -0.1992725638544925,
            9.926811159768054,
            2.130928709515993
        ],
        "pixel_width": 0.0075333198937023,
        "pixel_height": 0.0075333198937023,
        "yaw": 183.89777711639093,
        "pitch": -2.3366362127596525,
        "roll": 0.7135915032770658,
        "focal_length": 8747.80961719926,
        "fov": {
            "top_left": [
                -0.8064812117393512,
                10.27414293412319
            ],
            "top_right": [
                0.3552128560424488,
                10.353294011316107
            ],
            "bottom_left": [
                -0.7537579837514339,
                9.50032830822
            ],
            "bottom_right": [
                0.4079360840303661,
                9.579479385412917
            ],
            "is_scaleable": true
        }
    }

Images - Cutouts

cutout_ids

Code Block
languagejson
"cutout_ids": [
        "NC_1658926241_0",
        "NC_1658926241_1",
        "NC_1658926241_2",
        "NC_1658926241_3"
    ],

Images - Bounding Boxes

Code Block
languagejson
"bboxes": [
        {
            "bbox_id": "NC_1658926241_0",
            "image_id": "NC_1658926241",
            "local_centroid": [
                0.7247684299945831,
                0.782112181186676
            ],
            "local_coordinates": {
                "top_left": [
                    4559.100573062897,
                    3592.980739593506
                ],
                "top_right": [
                    9298.47180843353,
                    3592.980739593506
                ],
                "bottom_left": [
                    4559.100573062897,
                    6368.0
                ],
                "bottom_right": [
                    9298.47180843353,
                    6368.0
                ],
                "is_scaleable": true
            },
            "global_centroid": [
                -0.3805987383493097,
                10.21634506227248
            ],
            "global_coordinates": {
                "top_left": [
                    -0.1245738268094071,
                    10.015139374543459
                ],
                "top_right": [
                    -0.7303918468219674,
                    10.11728321515172
                ],
                "bottom_left": [
                    -0.07889030276824338,
                    10.4175507500015
                ],
                "bottom_right": [
                    -0.682307173930376,
                    10.458062046757698
                ],
                "is_scaleable": true
            },
            "cls": {
                "scientific_name": "Amaranthus palmeri",
                "common_name": "Palmer amaranth",
                "USDA_symbol": "AMPA",
                "EPPO": "AMAPA",
                "authority": "Watson",
                "collection_location": "NC",
                "polygon_id": ""
            },
            "is_primary": false,
            "overlapping_bbox_ids": []
        },
      
        {
            ...
        }
        
    ],
          

Cutouts

...

languagejson

...

│   ├── NC_1658926241_0.png
  │   │   ├── NC_1658926241_0.json
  │   │   ├── NC_1658926241_0.jpg
  │   │   ├── NC_1658926241_0_mask.png
  │   │   └── ...
  │   └── ...
  │
  └── semifield-utils
      ├── MD
      │   ├── shapefiles
      │   │   │   ├── MD.shp
      │   │   │   └── ...
      │   │   └── GroundControlPoints.csv 
      ├── NC
      │   ├── shapefiles
      │   │   ├── NC.shp
      │   │   └── ...
      │   └── GroundControlPoints.csv         

...

 

...

         

...

 

...

       

...

 

...


      

...

└── species_info.json
       

...

   

...