Spaces:
Runtime error
Runtime error
We are typically given an ARIS file and a "count file" that contains the human counts of fish at some temporal resolution. The "count file" might be a csv file, a text file, or something else. We'll create a json file that stores this information in a more convenient/universal format: | |
``` | |
{ // Information for a single clip | |
"clip_id" : // Unique id for this clip (perhaps a UUID?) | |
"aris_filename" : // Path to the ARIS file | |
"clip_name" : // Basename of annotation files | |
"start_frame" : // Start frame for this "count event", used to index into the ARIS file | |
"end_frame" : // End frame for this "count event", used to index into the ARIS file | |
"start_time" : // Start time in for this "count event" (this should be the sonartimestamp of the start_frame ) | |
"end_time " : // End time for this "count event" (this should be the sonartimestamp of the end_frame ) | |
"upstream_direction" : // Either `left` or `right` | |
"fish": [ // Should have one entry for each fish | |
{ | |
"frame" : , // Manual marking frame number | |
"direction" : , // Either `left`, `right`, or `undefined` | |
"length" : , // Length in meters | |
"x" : , // x position of marking | |
"y" : , // y position of marking | |
} | |
], | |
"aris_info" : { // Needed for generating a warped image from the raw ARIS samples | |
"camera_type" : , // ARIS camera type | |
"framerate" : , // Frames per second | |
"pixel_meter_size" : , // The size of a pixel in meters | |
"xdim" : , // The width of the warped image | |
"ydim" : , // The height of the warped image | |
"x_meter_start" : , // x start in meters | |
"y_meter_start" : , // y start in meters | |
"x_meter_stop" : , // x stop in meters | |
"y_meter_stop' : , // y stop in meters | |
} | |
} | |
``` | |
When a sequence of frames are annotated from an ARIS file (i.e. a "clip"), we will produce the following json file: | |
``` | |
{ // Annotation information for a single "clip" | |
"clip_id" : // a unique clip id, should match the `clip_id` in the clip info dictionary above. | |
"aris_filename" : // the name of the associated aris file | |
"start_frame" : // Start frame for this "clip", used to index into the ARIS file | |
"end_frame" : // End frame for this "clip", used to index into the ARIS file | |
"upstream_direction" : // Either `left` or `right` | |
"clip_meter_width" : // Width of a frame in meters | |
"clip_meter_height" : // Height of a frame in meters | |
"frames" : [ // Should have one entry for each frame | |
{ | |
"frame_num" : , // the frame number from the ARIS file | |
"fish" : [ // should have one entry for each fish that is present in this frame | |
{ | |
"fish_id" : // fish track id | |
"box" : [xmin, ymin, xmax, ymax] // in normalized coordinates (multiply by `xdim` and `ydim` to get unnormalized coordinates) | |
"visible" : // 0 means not visible (is this necessary?), 1 means visible | |
"human_labeled" : // 1 or 0 for whether a human did the annotation or if it was interpolated | |
} | |
] | |
} | |
], | |
"fish" : [ // Should have one entry for each fish | |
{ | |
"id" : // fish track id (should be unique) (0 based, not unique across clips) | |
"length" : // computed fish length in meters | |
"direction" : // computed swimming direction {left, right, none} | |
"start_frame_index" : // first frame this fish appears in | |
"end_frame_index" : // last frame this fish appears in | |
"color" : // a unique hex color value for this fish | |
} | |
] | |
} | |