Spaces:
Runtime error
Runtime error
from aris import create_metadata_table | |
import json | |
example_metadata = { | |
"FILE_NAME": "static/example_metadata/fisheye", | |
"FRAME_RATE": 6.548702716827393, | |
"UPSTREAM_FISH": 0, | |
"DOWNSTREAM_FISH": 0, | |
"NONDIRECTIONAL_FISH": 14, | |
"TOTAL_FISH": 14, | |
"TOTAL_FRAMES": 644, | |
"EXPECTED_FRAMES": -1, | |
"TOTAL_TIME": "0:01:38", | |
"EXPECTED_TIME": "0:00:00", | |
"UPSTREAM_MOTION": "Right To Left", | |
"COUNT_FILE_NAME": "N/A", | |
"EDITOR_ID": "N/A", | |
"INTENSITY": "0.0 dB", | |
"THRESHOLD": "0.0 dB", | |
"WINDOW_START": 1, | |
"WINDOW_END": 17, | |
"WATER_TEMP": "13 degC", | |
"FISH": [ | |
{ | |
"FILE": 1, | |
"TOTAL": 1, | |
"FRAME_NUM": 12, | |
"DIR": " N/A", | |
"R": 13.403139282569885, | |
"THETA": 0.1706, | |
"L": 63.739999999999995, | |
"DR": -1, | |
"LDR": -1, | |
"ASPECT": -1, | |
"TIME": "11:54:40", | |
"DATE": "2018-07-09", | |
"LATITUDE": "N 00 d 0.00000 m", | |
"LONGITUDE": "E 000 d 0.00000 m", | |
"PAN": None, | |
"TILT": None, | |
"ROLL": 0, | |
"SPECIES": "Unknown", | |
"MOTION": "Running <-->", | |
"Q": -1, | |
"N": -1, | |
"COMMENT": "" | |
}, { | |
"FILE": 1, | |
"TOTAL": 2, | |
"FRAME_NUM": 35, | |
"DIR": " N/A", | |
"R": 13.206211097755432, | |
"THETA": -9.1195, | |
"L": 73.33, | |
"DR": -1, | |
"LDR": -1, | |
"ASPECT": -1, | |
"TIME": "11:54:44", | |
"DATE": "2018-07-09", | |
"LATITUDE": "N 00 d 0.00000 m", | |
"LONGITUDE": "E 000 d 0.00000 m", | |
"PAN": None, | |
"TILT": None, | |
"ROLL": 0, | |
"SPECIES": "Unknown", | |
"MOTION": "Running <-->", | |
"Q": -1, | |
"N": -1, | |
"COMMENT": "" | |
}, { | |
"FILE": 1, | |
"TOTAL": 3, | |
"FRAME_NUM": 122, | |
"DIR": " N/A", | |
"R": 13.219339643409729, | |
"THETA": -9.3961, | |
"L": 84.77, | |
"DR": -1, | |
"LDR": -1, | |
"ASPECT": -1, | |
"TIME": "11:54:58", | |
"DATE": "2018-07-09", | |
"LATITUDE": "N 00 d 0.00000 m", | |
"LONGITUDE": "E 000 d 0.00000 m", | |
"PAN": None, | |
"TILT": None, | |
"ROLL": 0, | |
"SPECIES": "Unknown", | |
"MOTION": "Running <-->", | |
"Q": -1, | |
"N": -1, | |
"COMMENT": "" | |
}, { | |
"FILE": 1, | |
"TOTAL": 4, | |
"FRAME_NUM": 123, | |
"DIR": "N/A", | |
"R": 12.996154367286682, | |
"THETA": 10.7991, | |
"L": 59.919999999999995, | |
"DR": -1, | |
"LDR": -1, | |
"ASPECT": -1, | |
"TIME": "11:54:58", | |
"DATE": "2018-07-09", | |
"LATITUDE": "N 00 d 0.00000 m", | |
"LONGITUDE": "E 000 d 0.00000 m", | |
"PAN": None, | |
"TILT": None, | |
"ROLL": 0, | |
"SPECIES": "Unknown", | |
"MOTION": "Running <-->", | |
"Q": -1, | |
"N": -1, | |
"COMMENT": "" | |
}, { | |
"FILE": 1, | |
"TOTAL": 5, | |
"FRAME_NUM": 130, | |
"DIR": " N/A", | |
"R": 12.484141086769105, | |
"THETA": -8.2654, | |
"L": 70.89999999999999, | |
"DR": -1, | |
"LDR": -1, | |
"ASPECT": -1, | |
"TIME": "11:54:59", | |
"DATE": "2018-07-09", | |
"LATITUDE": "N 00 d 0.00000 m", | |
"LONGITUDE": "E 000 d 0.00000 m", | |
"PAN": None, | |
"TILT": None, | |
"ROLL": 0, | |
"SPECIES": "Unknown", | |
"MOTION": "Running <-->", | |
"Q": -1, | |
"N": -1, | |
"COMMENT": "" | |
}, { | |
"FILE": 1, | |
"TOTAL": 6, | |
"FRAME_NUM": 218, | |
"DIR": " N/A", | |
"R": 13.232468189064026, | |
"THETA": -9.3961, | |
"L": 77.25999999999999, | |
"DR": -1, | |
"LDR": -1, | |
"ASPECT": -1, | |
"TIME": "11:55:12", | |
"DATE": "2018-07-09", | |
"LATITUDE": "N 00 d 0.00000 m", | |
"LONGITUDE": "E 000 d 0.00000 m", | |
"PAN": None, | |
"TILT": None, | |
"ROLL": 0, | |
"SPECIES": "Unknown", | |
"MOTION": "Running <-->", | |
"Q": -1, | |
"N": -1, | |
"COMMENT": "" | |
}, { | |
"FILE": 1, | |
"TOTAL": 7, | |
"FRAME_NUM": 278, | |
"DIR": " N/A", | |
"R": 13.967666745704651, | |
"THETA": -12.8758, | |
"L": 37.51, | |
"DR": -1, | |
"LDR": -1, | |
"ASPECT": -1, | |
"TIME": "11:55:22", | |
"DATE": "2018-07-09", | |
"LATITUDE": "N 00 d 0.00000 m", | |
"LONGITUDE": "E 000 d 0.00000 m", | |
"PAN": None, | |
"TILT": None, | |
"ROLL": 0, | |
"SPECIES": "Unknown", | |
"MOTION": "Running <-->", | |
"Q": -1, | |
"N": -1, | |
"COMMENT": "" | |
}, { | |
"FILE": 1, | |
"TOTAL": 8, | |
"FRAME_NUM": 302, | |
"DIR": " N/A", | |
"R": 13.25872528037262, | |
"THETA": -9.1195, | |
"L": 79.5, | |
"DR": -1, | |
"LDR": -1, | |
"ASPECT": -1, | |
"TIME": "11:55:25", | |
"DATE": "2018-07-09", | |
"LATITUDE": "N 00 d 0.00000 m", | |
"LONGITUDE": "E 000 d 0.00000 m", | |
"PAN": None, | |
"TILT": None, | |
"ROLL": 0, | |
"SPECIES": "Unknown", | |
"MOTION": "Running <-->", | |
"Q": -1, | |
"N": -1, | |
"COMMENT": "" | |
}, { | |
"FILE": 1, | |
"TOTAL": 9, | |
"FRAME_NUM": 331, | |
"DIR": " N/A", | |
"R": 13.25872528037262, | |
"THETA": -9.1195, | |
"L": 80.67, | |
"DR": -1, | |
"LDR": -1, | |
"ASPECT": -1, | |
"TIME": "11:55:30", | |
"DATE": "2018-07-09", | |
"LATITUDE": "N 00 d 0.00000 m", | |
"LONGITUDE": "E 000 d 0.00000 m", | |
"PAN": None, | |
"TILT": None, | |
"ROLL": 0, | |
"SPECIES": "Unknown", | |
"MOTION": "Running <-->", | |
"Q": -1, | |
"N": -1, | |
"COMMENT": "" | |
}, { | |
"FILE": 1, | |
"TOTAL": 10, | |
"FRAME_NUM": 450, | |
"DIR": " N/A", | |
"R": 13.324368008644104, | |
"THETA": -8.5535, | |
"L": 83.1, | |
"DR": -1, | |
"LDR": -1, | |
"ASPECT": -1, | |
"TIME": "11:55:48", | |
"DATE": "2018-07-09", | |
"LATITUDE": "N 00 d 0.00000 m", | |
"LONGITUDE": "E 000 d 0.00000 m", | |
"PAN": None, | |
"TILT": None, | |
"ROLL": 0, | |
"SPECIES": "Unknown", | |
"MOTION": "Running <-->", | |
"Q": -1, | |
"N": -1, | |
"COMMENT": "" | |
}, { | |
"FILE": 1, | |
"TOTAL": 11, | |
"FRAME_NUM": 495, | |
"DIR": " N/A", | |
"R": 13.481910556495666, | |
"THETA": -9.1195, | |
"L": 86.39, | |
"DR": -1, | |
"LDR": -1, | |
"ASPECT": -1, | |
"TIME": "11:55:55", | |
"DATE": "2018-07-09", | |
"LATITUDE": "N 00 d 0.00000 m", | |
"LONGITUDE": "E 000 d 0.00000 m", | |
"PAN": None, | |
"TILT": None, | |
"ROLL": 0, | |
"SPECIES": "Unknown", | |
"MOTION": "Running <-->", | |
"Q": -1, | |
"N": -1, | |
"COMMENT": "" | |
}, { | |
"FILE": 1, | |
"TOTAL": 12, | |
"FRAME_NUM": 526, | |
"DIR": " N/A", | |
"R": 13.04866854990387, | |
"THETA": 10.5397, | |
"L": 55.37, | |
"DR": -1, | |
"LDR": -1, | |
"ASPECT": -1, | |
"TIME": "11:56:00", | |
"DATE": "2018-07-09", | |
"LATITUDE": "N 00 d 0.00000 m", | |
"LONGITUDE": "E 000 d 0.00000 m", | |
"PAN": None, | |
"TILT": None, | |
"ROLL": 0, | |
"SPECIES": "Unknown", | |
"MOTION": "Running <-->", | |
"Q": -1, | |
"N": -1, | |
"COMMENT": "" | |
}, { | |
"FILE": 1, | |
"TOTAL": 13, | |
"FRAME_NUM": 538, | |
"DIR": " N/A", | |
"R": 13.416267828224182, | |
"THETA": -9.668, | |
"L": 82.38, | |
"DR": -1, | |
"LDR": -1, | |
"ASPECT": -1, | |
"TIME": "11:56:02", | |
"DATE": "2018-07-09", | |
"LATITUDE": "N 00 d 0.00000 m", | |
"LONGITUDE": "E 000 d 0.00000 m", | |
"PAN": None, | |
"TILT": None, | |
"ROLL": 0, | |
"SPECIES": "Unknown", | |
"MOTION": "Running <-->", | |
"Q": -1, | |
"N": -1, | |
"COMMENT": "" | |
}, { | |
"FILE": 1, | |
"TOTAL": 14, | |
"FRAME_NUM": 624, | |
"DIR": " N/A", | |
"R": 13.29811091733551, | |
"THETA": -8.8385, | |
"L": 77.44, | |
"DR": -1, | |
"LDR": -1, | |
"ASPECT": -1, | |
"TIME": "11:56:16", | |
"DATE": "2018-07-09", | |
"LATITUDE": "N 00 d 0.00000 m", | |
"LONGITUDE": "E 000 d 0.00000 m", | |
"PAN": None, | |
"TILT": None, | |
"ROLL": 0, | |
"SPECIES": "Unknown", | |
"MOTION": "Running <-->", | |
"Q": -1, | |
"N": -1, | |
"COMMENT": "" | |
} | |
], | |
"DATE": "2018-07-09", | |
"START": "11:54:39", | |
"END": "11:56:18" | |
} | |
def load_example_result(result, table_headers, info_headers): | |
fish_table, fish_info = create_metadata_table(example_metadata, table_headers, info_headers) | |
result['path_zip'] = ["static/example/input_file_results.zip"] | |
result['path_video'] = ["static/example/input_file_results.mp4"] | |
result['path_json'] = ["static/example/input_file_results.json"] | |
result['path_marking'] = ["static/example/input_file_marking.txt"] | |
result['fish_table'] = [fish_table] | |
result['fish_info'] = [fish_info] | |
def reset_state(result, state): | |
# Reset Result | |
result["path_video"] = [] | |
result["path_zip"] = [] | |
result["path_json"] = [] | |
result["path_marking"] = [] | |
result["fish_table"] = [] | |
result["fish_info"] = [] | |
# Reset State | |
state['files'] = [] | |
state['index'] = 0 | |
state['total'] = 0 | |
def convert_json_to_vatic(json_path, vatic_path="static/example/input_file_vatic.xml"): | |
xml = '<?xml version="1.0" encoding="utf-8"?>\n'; | |
xml += '<annotation>\n'; | |
xml += ' <folder>not available</folder>\n'; | |
xml += ' <filename>not available</filename>\n'; | |
xml += ' <source>\n'; | |
xml += ' <type>video</type>\n'; | |
xml += ' <sourceImage>vatic frames</sourceImage>\n'; | |
xml += ' <sourceAnnotation>vatic</sourceAnnotation>\n'; | |
xml += ' </source>\n'; | |
with open(json_path, 'r') as f: | |
annotation = json.loads(f.read()) | |
frames = annotation['frames'] | |
nbr_frames = len(frames) | |
fishes = {} | |
for frame in annotation['frames']: | |
frame_nbr = str(frame['frame_num']) | |
for fish in frame['fish']: | |
track_id = fish['fish_id'] | |
if (not track_id in fishes): fishes[track_id] = {'id': track_id, 'frames': []} | |
fishes[track_id]['frames'].append({ | |
'frame': frame_nbr, | |
'x_min': str(round(fish['bbox'][0]*522)), | |
'y_min': str(round(fish['bbox'][1]*700)), | |
'x_max': str(round(fish['bbox'][2]*522)), | |
'y_max': str(round(fish['bbox'][3]*700)), | |
'visible': str(fish['visible']), | |
'truth': "1" | |
}) | |
for fish_id in fishes: | |
fish = fishes[fish_id] | |
xml += ' <object>\n'; | |
xml += ' <name>fish</name>\n'; | |
xml += ' <moving>true</moving>\n'; | |
xml += ' <action/>\n'; | |
xml += ' <verified>0</verified>\n'; | |
xml += ' <id>' + str(fish['id']) + '</id>\n'; | |
xml += ' <createdFrame>0</createdFrame>\n'; | |
xml += ' <startFrame>0</startFrame>\n'; | |
xml += ' <endFrame>' + str(nbr_frames - 1 ) + '</endFrame>\n'; | |
for frame in fish['frames']: | |
xml += ' '; | |
xml += '<polygon>'; | |
xml += '<t>' + str(frame['frame']) + '</t>'; | |
xml += '<pt><x>' + frame['x_min'] + '</x><y>' + frame['y_min'] + '</y><l>' + frame['truth'] + '</l></pt>'; | |
xml += '<pt><x>' + frame['x_min'] + '</x><y>' + frame['y_max'] + '</y><l>' + frame['truth'] + '</l></pt>'; | |
xml += '<pt><x>' + frame['x_max'] + '</x><y>' + frame['y_max'] + '</y><l>' + frame['truth'] + '</l></pt>'; | |
xml += '<pt><x>' + frame['x_max'] + '</x><y>' + frame['y_min'] + '</y><l>' + frame['truth'] + '</l></pt>'; | |
xml += '</polygon>\n'; | |
xml += ' </object>\n'; | |
xml += '</annotation>\n'; | |
if vatic_path: | |
with open(vatic_path, 'w') as f: | |
f.write(xml) | |
return xml | |
convert_json_to_vatic("static/example/input_file_results.json") | |