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 | |
| } | |
| ] | |
| } | |