Table of Contents | ||||
---|---|---|---|---|
|
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.
Code Block | ||
---|---|---|
| ||
SemiF-AnnotationPipeline
└── data
├── semifield-developed-images
│ ├── NC_2022-07-27
│ │ ├── NC_2022-07-27.json
│ │ │
│ │ ├── autosfm
│ │ │ ├── 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
│ │ │ └── ...
│ │ │
│ │ └── metadata
│ │ ├── NC_1658926241.json
│ │ ├── NC_1658926255.json
│ │ └── ...
│ │
│ └── ...
│
├── semifield-cutouts
│ ├── NC_2022-07-27
│ │ ├── NC_1658926241_0.png
│ │ ├── NC_1658926241_0.json
│ │ ├── NC_1658926241_1.png
│ │ ├── NC_1658926241_1.json
│ │ ├── NC_1658926255_0.png
│ │ ├── NC_1658926255_0.json
│ │ └── ...
│ └── ...
│
├── semifield-models
│ └── plant_detector
│ └── best.pt
│
├── semifield-upload-images
│ └── ...
│
└── semifield-utils
├── MD
│ ├── shapefiles
│ │ │ ├── MD.shp
│ │ │ └── ...
│ │ └── GroundControlPoints.csv
├── NC
│ ├── shapefiles
│ │ ├── NC.shp
│ │ └── ...
│ └── GroundControlPoints.csv
└── species_info.json
|
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 | ||
---|---|---|
| ||
{
"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 | ||
---|---|---|
| ||
{
"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
Code Block | ||
---|---|---|
| ||
{
"blob_home": "data",
"data_root": "semifield-developed-images",
"batch_id": "NC_2022-07-27",
"image_id": "NC_1658926241",
"image_path": "images/NC_1658926241.jpg",
"plant_date": "2022-06-09",
"growth_stage": "vegetative",
"width": 4780,
"height": 3184,
"exif_meta": { ... },
"camera_info": { ... },
"cutout_ids": [ ... ],
"bboxes": [ ... ],
"fullres_height": 6368,
"fullres_width": 9560,
"schema_version": "1.0"
} |
Images - Exif
Uses Exif-Py
pip install exifread
Technical tag information can be found here
Code Block | ||
---|---|---|
| ||
"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 | ||
---|---|---|
| ||
"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 | ||
---|---|---|
| ||
"cutout_ids": [
"NC_1658926241_0",
"NC_1658926241_1",
"NC_1658926241_2",
"NC_1658926241_3"
], |
Images - Bounding Boxes
Code Block | ||
---|---|---|
| ||
"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
Code Block | ||
---|---|---|
| ||
{
"blob_home": "data",
"data_root": "semifield-cutouts",
"batch_id": "NC_2022-08-05",
"image_id": "NC_1659703400",
"cutout_id": "NC_1659703400_0",
"cutout_path": "NC_2022-08-05/NC_1659703400_0.png",
"cls": {
"scientific_name": "Amaranthus palmeri",
"common_name": "Palmer amaranth",
"USDA_symbol": "AMPA",
"EPPO": "AMAPA",
"authority": "Watson",
"collection_location": "NC",
"polygon_id": ""
},
"cutout_num": 0,
"is_primary": false,
"datetime": "2022:08:05 08:41:41",
"cutout_props": {
"area": 28153.0,
"area_bbox": 95480.0,
"area_convex": 50539.0,
"axis_major_length": 248.60737102397786,
"axis_minor_length": 212.34307812840584,
"centroid0": 156.52289276453664,
"centroid1": 184.76936738535858,
"eccentricity": 0.5200591323747853,
"solidity": 0.5570549476641802,
"perimeter": 1873.559666716433,
"is_green": true,
"green_sum": 17637
},
"extends_border": true,
"cutout_version": "1.0",
"schema_version": "1.0"
} |