megadetector 5.0.7__py3-none-any.whl → 5.0.9__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of megadetector might be problematic. Click here for more details.

Files changed (191) hide show
  1. api/__init__.py +0 -0
  2. api/batch_processing/__init__.py +0 -0
  3. api/batch_processing/api_core/__init__.py +0 -0
  4. api/batch_processing/api_core/batch_service/__init__.py +0 -0
  5. api/batch_processing/api_core/batch_service/score.py +0 -1
  6. api/batch_processing/api_core/server_job_status_table.py +0 -1
  7. api/batch_processing/api_core_support/__init__.py +0 -0
  8. api/batch_processing/api_core_support/aggregate_results_manually.py +0 -1
  9. api/batch_processing/api_support/__init__.py +0 -0
  10. api/batch_processing/api_support/summarize_daily_activity.py +0 -1
  11. api/batch_processing/data_preparation/__init__.py +0 -0
  12. api/batch_processing/data_preparation/manage_local_batch.py +93 -79
  13. api/batch_processing/data_preparation/manage_video_batch.py +8 -8
  14. api/batch_processing/integration/digiKam/xmp_integration.py +0 -1
  15. api/batch_processing/integration/eMammal/test_scripts/push_annotations_to_emammal.py +0 -1
  16. api/batch_processing/postprocessing/__init__.py +0 -0
  17. api/batch_processing/postprocessing/add_max_conf.py +12 -12
  18. api/batch_processing/postprocessing/categorize_detections_by_size.py +32 -14
  19. api/batch_processing/postprocessing/combine_api_outputs.py +69 -55
  20. api/batch_processing/postprocessing/compare_batch_results.py +114 -44
  21. api/batch_processing/postprocessing/convert_output_format.py +62 -19
  22. api/batch_processing/postprocessing/load_api_results.py +17 -20
  23. api/batch_processing/postprocessing/md_to_coco.py +31 -21
  24. api/batch_processing/postprocessing/md_to_labelme.py +165 -68
  25. api/batch_processing/postprocessing/merge_detections.py +40 -15
  26. api/batch_processing/postprocessing/postprocess_batch_results.py +270 -186
  27. api/batch_processing/postprocessing/remap_detection_categories.py +170 -0
  28. api/batch_processing/postprocessing/render_detection_confusion_matrix.py +75 -39
  29. api/batch_processing/postprocessing/repeat_detection_elimination/find_repeat_detections.py +53 -44
  30. api/batch_processing/postprocessing/repeat_detection_elimination/remove_repeat_detections.py +25 -14
  31. api/batch_processing/postprocessing/repeat_detection_elimination/repeat_detections_core.py +244 -160
  32. api/batch_processing/postprocessing/separate_detections_into_folders.py +159 -114
  33. api/batch_processing/postprocessing/subset_json_detector_output.py +146 -169
  34. api/batch_processing/postprocessing/top_folders_to_bottom.py +77 -43
  35. api/synchronous/__init__.py +0 -0
  36. api/synchronous/api_core/animal_detection_api/__init__.py +0 -0
  37. api/synchronous/api_core/animal_detection_api/api_backend.py +0 -2
  38. api/synchronous/api_core/animal_detection_api/api_frontend.py +266 -268
  39. api/synchronous/api_core/animal_detection_api/config.py +35 -35
  40. api/synchronous/api_core/tests/__init__.py +0 -0
  41. api/synchronous/api_core/tests/load_test.py +109 -109
  42. classification/__init__.py +0 -0
  43. classification/aggregate_classifier_probs.py +21 -24
  44. classification/analyze_failed_images.py +11 -13
  45. classification/cache_batchapi_outputs.py +51 -51
  46. classification/create_classification_dataset.py +69 -68
  47. classification/crop_detections.py +54 -53
  48. classification/csv_to_json.py +97 -100
  49. classification/detect_and_crop.py +105 -105
  50. classification/evaluate_model.py +43 -42
  51. classification/identify_mislabeled_candidates.py +47 -46
  52. classification/json_to_azcopy_list.py +10 -10
  53. classification/json_validator.py +72 -71
  54. classification/map_classification_categories.py +44 -43
  55. classification/merge_classification_detection_output.py +68 -68
  56. classification/prepare_classification_script.py +157 -154
  57. classification/prepare_classification_script_mc.py +228 -228
  58. classification/run_classifier.py +27 -26
  59. classification/save_mislabeled.py +30 -30
  60. classification/train_classifier.py +20 -20
  61. classification/train_classifier_tf.py +21 -22
  62. classification/train_utils.py +10 -10
  63. data_management/__init__.py +0 -0
  64. data_management/annotations/__init__.py +0 -0
  65. data_management/annotations/annotation_constants.py +18 -31
  66. data_management/camtrap_dp_to_coco.py +238 -0
  67. data_management/cct_json_utils.py +107 -59
  68. data_management/cct_to_md.py +176 -158
  69. data_management/cct_to_wi.py +247 -219
  70. data_management/coco_to_labelme.py +272 -0
  71. data_management/coco_to_yolo.py +86 -62
  72. data_management/databases/__init__.py +0 -0
  73. data_management/databases/add_width_and_height_to_db.py +20 -16
  74. data_management/databases/combine_coco_camera_traps_files.py +35 -31
  75. data_management/databases/integrity_check_json_db.py +130 -83
  76. data_management/databases/subset_json_db.py +25 -16
  77. data_management/generate_crops_from_cct.py +27 -45
  78. data_management/get_image_sizes.py +188 -144
  79. data_management/importers/add_nacti_sizes.py +8 -8
  80. data_management/importers/add_timestamps_to_icct.py +78 -78
  81. data_management/importers/animl_results_to_md_results.py +158 -160
  82. data_management/importers/auckland_doc_test_to_json.py +9 -9
  83. data_management/importers/auckland_doc_to_json.py +8 -8
  84. data_management/importers/awc_to_json.py +7 -7
  85. data_management/importers/bellevue_to_json.py +15 -15
  86. data_management/importers/cacophony-thermal-importer.py +13 -13
  87. data_management/importers/carrizo_shrubfree_2018.py +8 -8
  88. data_management/importers/carrizo_trail_cam_2017.py +8 -8
  89. data_management/importers/cct_field_adjustments.py +9 -9
  90. data_management/importers/channel_islands_to_cct.py +10 -10
  91. data_management/importers/eMammal/copy_and_unzip_emammal.py +1 -0
  92. data_management/importers/ena24_to_json.py +7 -7
  93. data_management/importers/filenames_to_json.py +8 -8
  94. data_management/importers/helena_to_cct.py +7 -7
  95. data_management/importers/idaho-camera-traps.py +7 -7
  96. data_management/importers/idfg_iwildcam_lila_prep.py +10 -10
  97. data_management/importers/jb_csv_to_json.py +9 -9
  98. data_management/importers/mcgill_to_json.py +8 -8
  99. data_management/importers/missouri_to_json.py +18 -18
  100. data_management/importers/nacti_fieldname_adjustments.py +10 -10
  101. data_management/importers/noaa_seals_2019.py +8 -8
  102. data_management/importers/pc_to_json.py +7 -7
  103. data_management/importers/plot_wni_giraffes.py +7 -7
  104. data_management/importers/prepare-noaa-fish-data-for-lila.py +359 -359
  105. data_management/importers/prepare_zsl_imerit.py +7 -7
  106. data_management/importers/rspb_to_json.py +8 -8
  107. data_management/importers/save_the_elephants_survey_A.py +8 -8
  108. data_management/importers/save_the_elephants_survey_B.py +9 -9
  109. data_management/importers/snapshot_safari_importer.py +26 -26
  110. data_management/importers/snapshot_safari_importer_reprise.py +665 -665
  111. data_management/importers/snapshot_serengeti_lila.py +14 -14
  112. data_management/importers/sulross_get_exif.py +8 -9
  113. data_management/importers/timelapse_csv_set_to_json.py +11 -11
  114. data_management/importers/ubc_to_json.py +13 -13
  115. data_management/importers/umn_to_json.py +7 -7
  116. data_management/importers/wellington_to_json.py +8 -8
  117. data_management/importers/wi_to_json.py +9 -9
  118. data_management/importers/zamba_results_to_md_results.py +181 -181
  119. data_management/labelme_to_coco.py +309 -159
  120. data_management/labelme_to_yolo.py +103 -60
  121. data_management/lila/__init__.py +0 -0
  122. data_management/lila/add_locations_to_island_camera_traps.py +9 -9
  123. data_management/lila/add_locations_to_nacti.py +147 -147
  124. data_management/lila/create_lila_blank_set.py +114 -31
  125. data_management/lila/create_lila_test_set.py +8 -8
  126. data_management/lila/create_links_to_md_results_files.py +106 -106
  127. data_management/lila/download_lila_subset.py +92 -90
  128. data_management/lila/generate_lila_per_image_labels.py +56 -43
  129. data_management/lila/get_lila_annotation_counts.py +18 -15
  130. data_management/lila/get_lila_image_counts.py +11 -11
  131. data_management/lila/lila_common.py +103 -70
  132. data_management/lila/test_lila_metadata_urls.py +132 -116
  133. data_management/ocr_tools.py +173 -128
  134. data_management/read_exif.py +161 -99
  135. data_management/remap_coco_categories.py +84 -0
  136. data_management/remove_exif.py +58 -62
  137. data_management/resize_coco_dataset.py +32 -44
  138. data_management/wi_download_csv_to_coco.py +246 -0
  139. data_management/yolo_output_to_md_output.py +86 -73
  140. data_management/yolo_to_coco.py +535 -95
  141. detection/__init__.py +0 -0
  142. detection/detector_training/__init__.py +0 -0
  143. detection/process_video.py +85 -33
  144. detection/pytorch_detector.py +43 -25
  145. detection/run_detector.py +157 -72
  146. detection/run_detector_batch.py +189 -114
  147. detection/run_inference_with_yolov5_val.py +118 -51
  148. detection/run_tiled_inference.py +113 -42
  149. detection/tf_detector.py +51 -28
  150. detection/video_utils.py +606 -521
  151. docs/source/conf.py +43 -0
  152. md_utils/__init__.py +0 -0
  153. md_utils/azure_utils.py +9 -9
  154. md_utils/ct_utils.py +249 -70
  155. md_utils/directory_listing.py +59 -64
  156. md_utils/md_tests.py +968 -862
  157. md_utils/path_utils.py +655 -155
  158. md_utils/process_utils.py +157 -133
  159. md_utils/sas_blob_utils.py +20 -20
  160. md_utils/split_locations_into_train_val.py +45 -32
  161. md_utils/string_utils.py +33 -10
  162. md_utils/url_utils.py +208 -27
  163. md_utils/write_html_image_list.py +51 -35
  164. md_visualization/__init__.py +0 -0
  165. md_visualization/plot_utils.py +102 -109
  166. md_visualization/render_images_with_thumbnails.py +34 -34
  167. md_visualization/visualization_utils.py +908 -311
  168. md_visualization/visualize_db.py +109 -58
  169. md_visualization/visualize_detector_output.py +61 -42
  170. {megadetector-5.0.7.dist-info → megadetector-5.0.9.dist-info}/METADATA +21 -17
  171. megadetector-5.0.9.dist-info/RECORD +224 -0
  172. {megadetector-5.0.7.dist-info → megadetector-5.0.9.dist-info}/WHEEL +1 -1
  173. {megadetector-5.0.7.dist-info → megadetector-5.0.9.dist-info}/top_level.txt +1 -0
  174. taxonomy_mapping/__init__.py +0 -0
  175. taxonomy_mapping/map_lila_taxonomy_to_wi_taxonomy.py +342 -335
  176. taxonomy_mapping/map_new_lila_datasets.py +154 -154
  177. taxonomy_mapping/prepare_lila_taxonomy_release.py +142 -134
  178. taxonomy_mapping/preview_lila_taxonomy.py +591 -591
  179. taxonomy_mapping/retrieve_sample_image.py +12 -12
  180. taxonomy_mapping/simple_image_download.py +11 -11
  181. taxonomy_mapping/species_lookup.py +10 -10
  182. taxonomy_mapping/taxonomy_csv_checker.py +18 -18
  183. taxonomy_mapping/taxonomy_graph.py +47 -47
  184. taxonomy_mapping/validate_lila_category_mappings.py +83 -76
  185. data_management/cct_json_to_filename_json.py +0 -89
  186. data_management/cct_to_csv.py +0 -140
  187. data_management/databases/remove_corrupted_images_from_db.py +0 -191
  188. detection/detector_training/copy_checkpoints.py +0 -43
  189. md_visualization/visualize_megadb.py +0 -183
  190. megadetector-5.0.7.dist-info/RECORD +0 -202
  191. {megadetector-5.0.7.dist-info → megadetector-5.0.9.dist-info}/LICENSE +0 -0
@@ -1,191 +0,0 @@
1
- ########
2
- #
3
- # remove_corrupted_images_from_db.py
4
- #
5
- # Given a coco-camera-traps .json file, checks all images for corruption
6
- # and generates a new .json file that only contains the non-corrupted images.
7
- #
8
- ########
9
-
10
- #%% Imports and constants
11
-
12
- import argparse
13
- import gc
14
- import json
15
- import sys
16
- import os
17
- import time
18
-
19
- from multiprocessing.pool import ThreadPool
20
-
21
- import humanfriendly
22
- import numpy as np
23
- import tensorflow as tf
24
-
25
- N_THREADS = 16
26
- DEBUG_MAX_IMAGES = -1
27
- IMAGE_PRINT_FREQUENCY = 10
28
-
29
-
30
- #%% Function definitions
31
-
32
- def check_images(images, image_file_root):
33
- """
34
- Checks all the images in [images] for corruption using TF.
35
-
36
- [images] is a list of image dictionaries, as they would appear in COCO
37
- files.
38
-
39
- Returns a dictionary mapping image IDs to booleans.
40
- """
41
-
42
- # I sometimes pass in a list of images, sometimes a dict with a single
43
- # element mapping a job ID to the list of images
44
- if isinstance(images,dict):
45
- assert(len(images) == 1)
46
- jobID = list(images.keys())[0]
47
- images = images[jobID]
48
- else:
49
- jobID = 0
50
-
51
- keep_im = {im['id']:True for im in images}
52
-
53
- count = 0
54
- nImages = len(images)
55
-
56
- # We're about to start a lot of TF sessions, and we don't want gobs
57
- # of debugging information printing out for every session.
58
- os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
59
- config=tf.ConfigProto(log_device_placement=False)
60
-
61
- # At some point we were creating a single session and looping over images
62
- # within that session, but the only way I found to reliably not run out
63
- # of GPU memory was to create a session per image and gc.collect() after
64
- # each session.
65
- for iImage,im in enumerate(images):
66
-
67
- with tf.Session(config=config) as sess:
68
-
69
- if ((DEBUG_MAX_IMAGES > 0) and (iImage >= DEBUG_MAX_IMAGES)):
70
- print('Breaking after {} images'.format(DEBUG_MAX_IMAGES))
71
- break
72
-
73
- if (count % IMAGE_PRINT_FREQUENCY == 0):
74
- print('Job {}: processed {} of {} images'.format(jobID,count,nImages))
75
-
76
- count += 1
77
- image_file = os.path.join(image_file_root,im['file_name'])
78
- assert(os.path.isfile(image_file))
79
-
80
- try:
81
- image_data = tf.gfile.FastGFile(image_file,'rb').read()
82
- image = tf.image.decode_jpeg(image_data)
83
- sess.run(image)
84
- except:
85
- keep_im[im['id']] = False
86
-
87
- gc.collect()
88
-
89
- return keep_im
90
-
91
-
92
- def remove_corrupted_images_from_database(data, image_file_root):
93
- """
94
- Given the COCO database [data], checks all images for corruption using
95
- TF, and returns a subset of [data] containing only non-corrupted images.
96
- """
97
-
98
- # Map Image IDs to boolean (should I keep this image?)
99
- images = data['images']
100
-
101
- if (N_THREADS == 1):
102
-
103
- keep_im = check_images(images,image_file_root)
104
-
105
- else:
106
-
107
- start = time.time()
108
- imageChunks = np.array_split(images,N_THREADS)
109
- # Convert to lists, append job numbers to the image lists
110
- for iChunk in range(0,len(imageChunks)):
111
- imageChunks[iChunk] = list(imageChunks[iChunk])
112
- imageChunks[iChunk] = {iChunk:imageChunks[iChunk]}
113
- pool = ThreadPool(N_THREADS)
114
- # results = pool.imap_unordered(lambda x: fetch_url(x,nImages), indexedUrlList)
115
- results = pool.map(lambda x: check_images(x,image_file_root), imageChunks)
116
- processingTime = time.time() - start
117
-
118
- # Merge results
119
- keep_im = {}
120
- for d in results:
121
- keep_im.update(d)
122
- bValid = keep_im.values()
123
-
124
- print("Checked image corruption in {}, found {} invalid images (of {})".format(
125
- humanfriendly.format_timespan(processingTime),
126
- len(bValid)-sum(bValid),len(bValid)))
127
-
128
- data['images'] = [im for im in data['images'] if keep_im[im['id']]]
129
- data['annotations'] = [ann for ann in data['annotations'] if keep_im[ann['image_id']]]
130
-
131
- return data
132
-
133
-
134
- #%% Interactive driver
135
-
136
- if False:
137
-
138
- #%%
139
-
140
- # base_dir = r'D:\temp\snapshot_serengeti_tfrecord_generation'
141
- base_dir = r'/data/ss_corruption_check'
142
- input_file = os.path.join(base_dir,'imerit_batch7_renamed.json')
143
- output_file = os.path.join(base_dir,'imerit_batch7_renamed_uncorrupted.json')
144
- image_file_root = os.path.join(base_dir,'imerit_batch7_images_renamed')
145
- assert(os.path.isfile(input_file))
146
- assert(os.path.isdir(image_file_root))
147
-
148
- # Load annotations
149
- with open(input_file,'r') as f:
150
- data = json.load(f)
151
-
152
- # Check for corruption
153
- data_uncorrupted = remove_corrupted_images_from_database(data,image_file_root)
154
-
155
- # Write out only the uncorrupted data
156
- json.dump(data_uncorrupted, open(output_file,'w'))
157
-
158
-
159
- #%% Command-line driver
160
-
161
- def main():
162
-
163
- parser = argparse.ArgumentParser(description = 'Remove images from a .json file that can''t be opened in TF')
164
-
165
- parser.add_argument('--input_file', dest='input_file',
166
- help='Path to .json database that includes corrupted jpegs',
167
- type=str, required=True)
168
- parser.add_argument('--image_file_root', dest='image_file_root',
169
- help='Path to image files',
170
- type=str, required=True)
171
- parser.add_argument('--output_file', dest='output_file',
172
- help='Path to store uncorrupted .json database',
173
- type=str, required=True)
174
-
175
- if len(sys.argv[1:]) == 0:
176
- parser.print_help()
177
- parser.exit()
178
-
179
- args = parser.parse_args()
180
-
181
- print('Reading input file')
182
- with open(args.input_file,'r') as f:
183
- data = json.load(f)
184
- print('Removing corrupted images from database')
185
- uncorrupted_data = remove_corrupted_images_from_database(data, args.image_file_root)
186
-
187
- json.dump(uncorrupted_data, open(args.output_file,'w'))
188
-
189
-
190
- if __name__ == '__main__':
191
- main()
@@ -1,43 +0,0 @@
1
- ########
2
- #
3
- # copy_checkpoints.py
4
- #
5
- # Run this script with specified source_dir and target_dir while the model is training to make a copy
6
- # of every checkpoint (checkpoints are kept once an hour by default and is difficult to adjust)
7
- #
8
- ########
9
-
10
- #%% Imports and constants
11
-
12
- import time
13
- import os
14
- import shutil
15
-
16
- check_every_n_minutes = 10
17
-
18
- source_dir = '/datadrive/megadetectorv3/experiments/190425'
19
- target_dir = '/datadrive/megadetectorv3/experiments/0425_checkpoints'
20
-
21
- os.makedirs(target_dir, exist_ok=True)
22
-
23
-
24
- #%% Main loop
25
-
26
- num_checks = 0
27
-
28
- while True:
29
-
30
- num_checks += 1
31
- print('Checking round {}.'.format(num_checks))
32
-
33
- for f in os.listdir(source_dir):
34
- # do not copy event or evaluation results
35
- if f.startswith('model') or f.startswith('graph'):
36
- target_path = os.path.join(target_dir, f)
37
- if not os.path.exists(target_path):
38
- _ = shutil.copy(os.path.join(source_dir, f), target_path)
39
- print('Copied {}.'.format(f))
40
-
41
- print('End of round {}.'.format(num_checks))
42
-
43
- time.sleep(check_every_n_minutes * 60)
@@ -1,183 +0,0 @@
1
- ########
2
- #
3
- # visualize_megadb.py
4
- #
5
- # Create visual previews of images/sequences in MegaDB.
6
- #
7
- ########
8
-
9
- #%% Imports
10
-
11
- import argparse
12
- import json
13
- import os
14
- import sys
15
- from random import shuffle
16
- from multiprocessing.pool import ThreadPool
17
- from functools import partial
18
- import io
19
-
20
- from tqdm import tqdm
21
-
22
- from data_management.megadb.megadb_utils import MegadbUtils
23
- from md_utils.write_html_image_list import write_html_image_list
24
- from md_visualization import visualization_utils as vis_utils
25
-
26
-
27
- #%% Support functions
28
-
29
- def render_image_info(rendering, args):
30
-
31
- storage_client = rendering['storage_client']
32
- image_obj = io.BytesIO()
33
-
34
- try:
35
- storage_client.download_blob(rendering['blob_path']).readinto(image_obj)
36
- except Exception as e:
37
- print(f'Image not found in blob storage: {rendering["blob_path"]}')
38
- print(e)
39
- return
40
-
41
- # resize is for displaying them more quickly
42
- image = vis_utils.resize_image(
43
- vis_utils.open_image(image_obj), args.output_image_width)
44
- vis_utils.render_megadb_bounding_boxes(rendering['bbox'], image)
45
-
46
- annotated_img_name = rendering['annotated_img_name']
47
- annotated_img_path = os.path.join(
48
- args.output_dir, 'rendered_images', annotated_img_name)
49
- image.save(annotated_img_path)
50
-
51
-
52
- def visualize_sequences(datasets_table, sequences, args):
53
-
54
- num_images = 0
55
-
56
- images_html = []
57
- rendering_info = []
58
-
59
- for seq in sequences:
60
- if 'images' not in seq:
61
- continue
62
-
63
- # dataset and seq_id are required fields
64
- dataset_name = seq['dataset']
65
- seq_id = seq['seq_id']
66
-
67
- # sort the images in the sequence
68
-
69
- images_in_seq = sorted(seq['images'], key=lambda x: x['frame_num']) if len(seq['images']) > 1 else seq['images']
70
-
71
- for im in images_in_seq:
72
- if args.trim_to_images_bboxes_labeled and 'bbox' not in im:
73
- continue
74
-
75
- num_images += 1
76
-
77
- blob_path = MegadbUtils.get_full_path(
78
- datasets_table, dataset_name, im['file'])
79
- frame_num = im.get('frame_num', -1)
80
-
81
- # if no class label on the image, show class label on the sequence
82
- im_class = im.get('class', None)
83
- if im_class is None:
84
- im_class = seq.get('class', [])
85
-
86
- rendering = {}
87
- rendering['storage_client'] = MegadbUtils.get_storage_client(
88
- datasets_table, dataset_name)
89
- rendering['blob_path'] = blob_path
90
- rendering['bbox'] = im.get('bbox', [])
91
-
92
- annotated_img_name = 'anno_' + blob_path.replace('/', args.pathsep_replacement).replace('\\', args.pathsep_replacement)
93
- rendering['annotated_img_name'] = annotated_img_name
94
-
95
- rendering_info.append(rendering)
96
-
97
- images_html.append({
98
- 'filename': 'rendered_images/{}'.format(annotated_img_name),
99
- 'title': 'Seq ID: {}. Frame number: {}<br/> Image file: {}<br/> number of boxes: {}, image class labels: {}'.format(seq_id, frame_num, blob_path, len(rendering['bbox']), im_class),
100
- 'textStyle': 'font-family:verdana,arial,calibri;font-size:80%;text-align:left;margin-top:20;margin-bottom:5'
101
- })
102
-
103
- if num_images >= args.num_to_visualize:
104
- print('num_images visualized is {}'.format(num_images))
105
- break
106
-
107
- # pool = ThreadPool()
108
- render_image_info_partial = partial(render_image_info, args=args)
109
- # print('len of rendering_info', len(rendering_info))
110
- # tqdm(pool.imap_unordered(render_image_info_partial, rendering_info), total=len(rendering_info))
111
-
112
- for rendering in tqdm(rendering_info):
113
- render_image_info_partial(rendering)
114
-
115
- print('Making HTML...')
116
-
117
- html_path = os.path.join(args.output_dir, 'index.html')
118
- # options = write_html_image_list()
119
- # options['headerHtml']
120
- write_html_image_list(
121
- filename=html_path,
122
- images=images_html
123
- )
124
-
125
-
126
- #%% Command-line driver
127
-
128
- def main():
129
-
130
- parser = argparse.ArgumentParser()
131
- parser.add_argument(
132
- 'megadb_entries', type=str,
133
- help='Path to a json list of MegaDB entries')
134
- parser.add_argument(
135
- 'output_dir', action='store', type=str,
136
- help='Output directory for html and rendered images')
137
- parser.add_argument(
138
- '--trim_to_images_bboxes_labeled', action='store_true',
139
- help='Only include images that have been sent for bbox labeling (but '
140
- 'may be actually empty). Turn this on if QAing annotations.')
141
- parser.add_argument(
142
- '--num_to_visualize', action='store', type=int, default=200,
143
- help='Number of images to visualize (all comformant images in a '
144
- 'sequence are shown, so may be a few more than specified). '
145
- 'Sequences are shuffled. Default: 200. Use -1 to visualize all.')
146
- parser.add_argument(
147
- '--pathsep_replacement', action='store', type=str, default='~',
148
- help='Replace path separators in relative filenames with another '
149
- 'character (default ~)')
150
- parser.add_argument(
151
- '-w', '--output_image_width', type=int, default=700,
152
- help='an integer indicating the desired width in pixels of the output '
153
- 'annotated images. Use -1 to not resize.')
154
-
155
- if len(sys.argv[1:]) == 0:
156
- parser.print_help()
157
- parser.exit()
158
-
159
- args = parser.parse_args()
160
-
161
- assert 'COSMOS_ENDPOINT' in os.environ and 'COSMOS_KEY' in os.environ
162
-
163
- os.makedirs(args.output_dir, exist_ok=True)
164
- os.makedirs(os.path.join(args.output_dir, 'rendered_images'))
165
-
166
- print('Connecting to MegaDB to get the datasets table...')
167
- megadb_utils = MegadbUtils()
168
- datasets_table = megadb_utils.get_datasets_table()
169
-
170
- print('Loading the MegaDB entries...')
171
- with open(args.megadb_entries) as f:
172
- sequences = json.load(f)
173
- print('Total number of sequences: {}'.format(len(sequences)))
174
-
175
- # print('Checking that the MegaDB entries conform to the schema...')
176
- # sequences_schema_check.sequences_schema_check(sequences)
177
-
178
- shuffle(sequences)
179
- visualize_sequences(datasets_table, sequences, args)
180
-
181
-
182
- if __name__ == '__main__':
183
- main()
@@ -1,202 +0,0 @@
1
- api/batch_processing/api_core/server.py,sha256=BNqM5EK29B0haCW7rdeOzVqcCJDziZiD0Etc1mPs56c,11668
2
- api/batch_processing/api_core/server_api_config.py,sha256=G8X5wgqEXPrWWQpgDI9ua-JktiUgy9mOpEltXSIazLQ,3318
3
- api/batch_processing/api_core/server_app_config.py,sha256=tQCFsFv0wJCegHfnu-Za3okdXwEd4U522hiM0YGNkMY,1860
4
- api/batch_processing/api_core/server_batch_job_manager.py,sha256=K7fMFBJA8Z1SkA4eBM-nymcq7VQjwZ6ZRaNnNKFlat8,10324
5
- api/batch_processing/api_core/server_job_status_table.py,sha256=Wb8IGwft-_W9pi9ixSe81cCwuSocSP5FrzURzbAqdr4,6240
6
- api/batch_processing/api_core/server_orchestration.py,sha256=LYHABzhOvP0NrM1VIjI6Vwb95YZ5xjQ52mUJW8oIOQ0,17003
7
- api/batch_processing/api_core/server_utils.py,sha256=oFusP1E29op5DN1nEaR-jQZgRExqMDdzmRL6BHj8EDk,3314
8
- api/batch_processing/api_core/batch_service/score.py,sha256=ZuPQV7O1u9QNPhWVSYxQqvYgXo9p15e-XhnUyuz0vLE,17347
9
- api/batch_processing/api_core_support/aggregate_results_manually.py,sha256=8yDXbw12G8Y6SOv09tY-0hPXMNG_iRPv6mzxBiccsaU,2275
10
- api/batch_processing/api_support/summarize_daily_activity.py,sha256=SmRGAMWTKXf9bDXUPsTySMiIg8K1LDkAC8KVBVH_mPg,5383
11
- api/batch_processing/data_preparation/manage_local_batch.py,sha256=Nb9MxJyAJC2e4twWkoGfI-crSSgB9g8Ue28cbbeE5QA,88618
12
- api/batch_processing/data_preparation/manage_video_batch.py,sha256=fobPIMmfvdqa1OzxsurEYCFVnUTHGrtrGBiCq3xnYHs,9668
13
- api/batch_processing/integration/digiKam/setup.py,sha256=7P1X3JYrBDXmLUeLRrzxNfDkL5lo-pY8nXsp9Cz8rOI,203
14
- api/batch_processing/integration/digiKam/xmp_integration.py,sha256=AbGPTe9RjjOkKdiZDSElai61QyfeiLQQqJR2fiJpymA,17775
15
- api/batch_processing/integration/eMammal/test_scripts/config_template.py,sha256=UnvrgaFRBu59MuVUJa2WpG8ebcOJWcNeZEx6GWuYLzc,73
16
- api/batch_processing/integration/eMammal/test_scripts/push_annotations_to_emammal.py,sha256=eIzEKiwzCfifCOCGf-jf8G4dMuzyxQMWlrFzt-Z-nVk,3608
17
- api/batch_processing/integration/eMammal/test_scripts/select_images_for_testing.py,sha256=OYMu97p8vprSv03QcnS6aSxPBocn9sgaozfUqq_JpyM,1369
18
- api/batch_processing/postprocessing/add_max_conf.py,sha256=y4Xr_OHRxcop3vsLWQJ56eYIemm2HHKqVfvKJonTcQA,1530
19
- api/batch_processing/postprocessing/categorize_detections_by_size.py,sha256=b_O2OM44zIXewR4RjzeS2ue-32k5jE6KgjiPn8JRxAA,4877
20
- api/batch_processing/postprocessing/combine_api_outputs.py,sha256=WsOV4EsK9JUCMka1_-u-vinmWc6Ko8B0PD5fmwoXHh0,8233
21
- api/batch_processing/postprocessing/compare_batch_results.py,sha256=65Kq6mChsPElQfjhWgLDmnO9b6igatQvXiasB2YVHno,34652
22
- api/batch_processing/postprocessing/convert_output_format.py,sha256=aLboVVZdlGUNYOZhme0w8LtYrd04i15oK0apOgZaYWk,12947
23
- api/batch_processing/postprocessing/load_api_results.py,sha256=1BwpXUUQiGJeOUDfQTiA9thNd5jbSbOU3siTO1_Dw5s,6997
24
- api/batch_processing/postprocessing/md_to_coco.py,sha256=dRAkCGWtcNy_vsSTkX1h_0DZAsW6zNO7F-8XSkR8wAo,10139
25
- api/batch_processing/postprocessing/md_to_labelme.py,sha256=lfheIrXqzjq6lInmlYgYq354PrVvH2SPNXKr8e3S_DQ,7075
26
- api/batch_processing/postprocessing/merge_detections.py,sha256=B4QnqW9nvcEJpXzAK20TVB0t6L8c7PR5OjPy8FX-5Z8,15930
27
- api/batch_processing/postprocessing/postprocess_batch_results.py,sha256=l_uyOTTINq9GBZlHsAnPteEvA-rWmKZH-eWVcqbMPUM,73653
28
- api/batch_processing/postprocessing/render_detection_confusion_matrix.py,sha256=h-a7tWNBSe3VRUg-Z4aX-ySUzrF8NfiEYWA1lHbZrmo,25040
29
- api/batch_processing/postprocessing/separate_detections_into_folders.py,sha256=l5NKxDDxROc2EXt8EslrswXAZkQXgWTy5FSqCqa09Ug,28720
30
- api/batch_processing/postprocessing/subset_json_detector_output.py,sha256=EROwcj4K-abAwzyZjPCQocuayIVma85lV-D6WvvRMuc,26368
31
- api/batch_processing/postprocessing/top_folders_to_bottom.py,sha256=etJK9DmHppMe3WqGXypuilW-n-7hOjOO9w_k1khlaVU,5476
32
- api/batch_processing/postprocessing/repeat_detection_elimination/find_repeat_detections.py,sha256=fYqPZhaL-6cbpKHz96O3Ch65Y8xux2LQ2-ZlMGhOlM0,9053
33
- api/batch_processing/postprocessing/repeat_detection_elimination/remove_repeat_detections.py,sha256=YdMvM814TX0ZRTnP7BfowE62PoMoCOYcJOFl69DlKhQ,2189
34
- api/batch_processing/postprocessing/repeat_detection_elimination/repeat_detections_core.py,sha256=D-q20g9kLXCNB8IMyeLYxdMSvipzmgu2buEh--HJrC0,62882
35
- api/synchronous/api_core/animal_detection_api/api_backend.py,sha256=PJXV0RFb6FoPBmdRug5W_5nbFwY2C_8CvDpFHjDs9w4,4934
36
- api/synchronous/api_core/animal_detection_api/api_frontend.py,sha256=_FGLf5C2tXQABFEGaA2Kzq05hj_D60BaIfWLCI-Os_4,10690
37
- api/synchronous/api_core/animal_detection_api/config.py,sha256=yEf7JZwRJCtHEV80kYvnNnUFJNds_AYLhomffwfFQi0,1017
38
- api/synchronous/api_core/animal_detection_api/data_management/annotations/annotation_constants.py,sha256=P2CZCbAE0ImLLfaNRb1SMlP3q1fULWAIjgrYOrF9L0g,1566
39
- api/synchronous/api_core/animal_detection_api/detection/process_video.py,sha256=b2xcQThAdlgirumxynHULYLviCr_q5sCDfdkKEqVFyU,22089
40
- api/synchronous/api_core/animal_detection_api/detection/pytorch_detector.py,sha256=nI2xctI6FSdbWjSFHYlMT0LTH6CCATOe9DF-I8MLEpc,11505
41
- api/synchronous/api_core/animal_detection_api/detection/run_detector.py,sha256=LBveNOLE3AWSTcQ1MUbbWXaQIutr9e2vtz6RG2SjlWQ,23821
42
- api/synchronous/api_core/animal_detection_api/detection/run_detector_batch.py,sha256=eivQu5yee5WtBmNQRQ2p636Gf8IB5slyrQL4QRZ2HeM,41849
43
- api/synchronous/api_core/animal_detection_api/detection/run_inference_with_yolov5_val.py,sha256=yxMFxQQDvkydWVpM0ecopDXtPi89gaqMX0TKjyxNyjI,22118
44
- api/synchronous/api_core/animal_detection_api/detection/run_tiled_inference.py,sha256=cs1IehE2DXj8Nr3CbnYMXqwcFM1vUBT1Rm5We5nlcSM,28785
45
- api/synchronous/api_core/animal_detection_api/detection/tf_detector.py,sha256=xOO8kzd-Um2X_sAZyop524LM53nipv5pNx8YueGTJrc,6760
46
- api/synchronous/api_core/animal_detection_api/detection/video_utils.py,sha256=E96hywSwA_jTUcJNFdkneKPcH0XH_e2qRT5ovV-5SFM,18317
47
- api/synchronous/api_core/animal_detection_api/detection/detector_training/copy_checkpoints.py,sha256=t2c3Q4Pf82tAp_OjSG-veIjRPrX0tJYi-bSQmGL2m4c,1091
48
- api/synchronous/api_core/animal_detection_api/detection/detector_training/model_main_tf2.py,sha256=YwNsZ7hkIFaEuwKU0rHG_VyqiR_0E01BbdlD0Yx4Smo,4936
49
- api/synchronous/api_core/animal_detection_api/md_utils/azure_utils.py,sha256=SVoQNSknYlBcpZeGrH2v3Qgm5kXxBrqM5Sx2L_Lax-I,6243
50
- api/synchronous/api_core/animal_detection_api/md_utils/ct_utils.py,sha256=3_8p5wNnopQZPCIbchQXYnJmhuUTcDw46I4SK3qb--g,7600
51
- api/synchronous/api_core/animal_detection_api/md_utils/directory_listing.py,sha256=b3yUwZqK7LdvswXenDo4Y0ue4f4zjgpvncfZmzPGBpI,9598
52
- api/synchronous/api_core/animal_detection_api/md_utils/matlab_porting_tools.py,sha256=9IFR_uWM1egCMZT3MgoUmdOP8mp7CcF7L9HEbN_A_1E,2005
53
- api/synchronous/api_core/animal_detection_api/md_utils/path_utils.py,sha256=9ZMyzejC_kzAQlymXGghAAgp_WjCjLuOxWJrAC13TAk,12397
54
- api/synchronous/api_core/animal_detection_api/md_utils/process_utils.py,sha256=_LMebsTQX2PFxERj0-LoC-XCua23RPw3heu-ckp0Tjo,3049
55
- api/synchronous/api_core/animal_detection_api/md_utils/sas_blob_utils.py,sha256=GpjHn33N2b-XeBAtU3xhGbTIYcBs4YrXHtbQDmlGFvY,16955
56
- api/synchronous/api_core/animal_detection_api/md_utils/string_utils.py,sha256=tFTC9TarPFGa7_UkKF0_t6Q2naH9IEsDVM2DOxwkFTQ,1277
57
- api/synchronous/api_core/animal_detection_api/md_utils/url_utils.py,sha256=aFN7_WvzMJqYHL9t-SGCP2A0-mlYu1-P0HkZwgzUsKg,4598
58
- api/synchronous/api_core/animal_detection_api/md_utils/write_html_image_list.py,sha256=myXMdOwUERZWp9p2RPu8TcStCsu2X7aJNtcomlhoeqA,7573
59
- api/synchronous/api_core/animal_detection_api/md_visualization/visualization_utils.py,sha256=Up8hfM_KYyToIUhTv3sSrXGoYl8Hm57NO5t5AHMW3tk,31680
60
- api/synchronous/api_core/tests/load_test.py,sha256=Xiq2JFv9mnSHehwrm-grZ1Flv9qtkW-zUrTu1cYPry8,3386
61
- classification/aggregate_classifier_probs.py,sha256=1X5hpC2JRj790jyFEWES2RI1UbcjzhGcslhMJpvMpDM,3488
62
- classification/analyze_failed_images.py,sha256=WG2ubdkClRo6-v3JqD6dQ7X0aah1L_rYry2BHzirOYE,8463
63
- classification/cache_batchapi_outputs.py,sha256=EyVG8ynGSX3R7aiz6cN7mDhX7miyMg7FnMXnO2OzScQ,6400
64
- classification/create_classification_dataset.py,sha256=cBsuL_1KRZXIxBBnPI3xZmgDVMsfBv1_i1ZHR4W6oqE,25578
65
- classification/crop_detections.py,sha256=Xs_jnwgbfyUPGyOAi_AkYGstQyHzelw1avNcdfV8K2s,20510
66
- classification/csv_to_json.py,sha256=Di3kl8CRMlM63MqsBauAr0Jn42uTmrTs3eRA4RFkHq8,6088
67
- classification/detect_and_crop.py,sha256=LHKismSArVy23JeeGOKFGK2JdgcCwSOlsnwACiRCFxk,37158
68
- classification/evaluate_model.py,sha256=pyKY7ABcuCe4h0yfAquFVDNtnyV45yun-ttAa0etM-E,19378
69
- classification/identify_mislabeled_candidates.py,sha256=pHB9U_7LFBeLyY1AngIAtbrnma4luJVpwe7BWh9Qhhw,5111
70
- classification/json_to_azcopy_list.py,sha256=o57wLHJPDrP9OPSY-3x81WI3mmcH1DyIOUh3VQmMwxg,1670
71
- classification/json_validator.py,sha256=ZizcEPpW1J26p-oGyfvcffBy2voNRKCNXKF8NtxIt5A,26618
72
- classification/map_classification_categories.py,sha256=2B4K-TdE77VNw8XG1h8X7CuUvw0JSIrALdy6a1FvkXw,10738
73
- classification/merge_classification_detection_output.py,sha256=2FDTauvkbMZ3putJH837Ux67HTGsCAnGCOXhnnqjt6g,20123
74
- classification/prepare_classification_script.py,sha256=7xwqws57Fkn0rmH5sADlem9trOJkiriSRwPredeIXho,5952
75
- classification/prepare_classification_script_mc.py,sha256=IMCsLyGL70cViVTH0eow0sYDM9E81AsBGrctNveXP10,7440
76
- classification/run_classifier.py,sha256=eBpkZzP7TtrnwOIlc99fTpe1QocmDuERaIw9mXqwAWI,9363
77
- classification/save_mislabeled.py,sha256=WmOKNXgrvvIkUdehiiWHNiKc5M7q0UM2If0vea0_7K8,3466
78
- classification/train_classifier.py,sha256=M5hsPP-xdx94t6S5AhjzRrmNYcQAUMnUBL6Tkts6-F0,32329
79
- classification/train_classifier_tf.py,sha256=LhTteMic5CP5Zp3Q4tdh--ySa2rGwPB2Lg-IlrO04eI,28096
80
- classification/train_utils.py,sha256=o12OxP8ozli3e9DmOvzrjRDX278S3Ik5oz5EKD9mkIg,11355
81
- classification/efficientnet/__init__.py,sha256=e-jfknjzCc5a0CSW-TaZ2vi0SPU1OMIsayoz2s94QAo,182
82
- classification/efficientnet/model.py,sha256=qJHWV9-rYKa4E_TIee5N_OjRhqDdM-icPpoMap3Q5HM,17040
83
- classification/efficientnet/utils.py,sha256=TF5S2cn2lvlCO2dFhdFPdzjbBBs-SyZGZmEx_dsJMbo,24846
84
- data_management/cct_json_to_filename_json.py,sha256=AxYeOzZHkHF1UxHCUBtofXNKVdUK-5xTfZp3_iE7hFc,2416
85
- data_management/cct_json_utils.py,sha256=JX5pJh5QLyKDhcXheUYgbRSd99uB9Ui-EfsRZ_Fhw_I,12570
86
- data_management/cct_to_csv.py,sha256=urIL8IUByhKZ4FLLa9TKlzT6mu8upLzAPN1WNnDZdIY,3859
87
- data_management/cct_to_md.py,sha256=0QtqUdUkrema2BSNTeJqHYkDuwOLc7tOQwq1KxTbtPE,4485
88
- data_management/cct_to_wi.py,sha256=nJKUhLXcZXKE5tAR9UxbqCjeikfaABfB746wpv-1BmI,8336
89
- data_management/coco_to_yolo.py,sha256=8c-9cCjelKTwMOL6gQc9oAWum7UPxIr0FP_tiK8NyLc,25880
90
- data_management/generate_crops_from_cct.py,sha256=m6HJ8bB4N50HYV4SXAUV43k1XJl71QZmmWZ4L-9T45Y,4283
91
- data_management/get_image_sizes.py,sha256=yUCI5zQmA9G_GDaQiApwoafmO37cUi97dw-Ekh5leOE,4220
92
- data_management/labelme_to_coco.py,sha256=9RpOp-IV5miJag4KInLijR7koH8eZSztKdAmArhoMx4,14204
93
- data_management/labelme_to_yolo.py,sha256=XjhrmoGxyo1N-N8kueGzmy_m6FWR4SO8sNHFppoH-GQ,8480
94
- data_management/ocr_tools.py,sha256=8cVJMQvzvv_6HXV8zMR4nJH72-L_f3Dy9IjIb3E32Js,29920
95
- data_management/read_exif.py,sha256=HGCp5gvD8MHQ0xGGTX2_PD5JHFTdMtqjZ8ql2pt5Fn0,19036
96
- data_management/remove_exif.py,sha256=_WDrKfRwK0UWCkj4SiLutGCd7-WRaKYoTgLfBWPDhGU,1555
97
- data_management/resize_coco_dataset.py,sha256=pG1yVktPSp6Vc3DThrJO7lmo67_KvOdqEtFpwM6QjOA,7398
98
- data_management/yolo_output_to_md_output.py,sha256=vxUdn4bqg0S67ozvxtnlX77X6S7nCvyZbKAyvCh_Suc,16313
99
- data_management/yolo_to_coco.py,sha256=Xb9UVO-HHYrkJyxbASWJDZrZCyW3JwBPI_WN5SQHys4,8078
100
- data_management/annotations/annotation_constants.py,sha256=P2CZCbAE0ImLLfaNRb1SMlP3q1fULWAIjgrYOrF9L0g,1566
101
- data_management/databases/add_width_and_height_to_db.py,sha256=71mOEK3xo9gbxK1TVZzBA9nNi-1ElmBZbIPKrUm9XG0,619
102
- data_management/databases/combine_coco_camera_traps_files.py,sha256=cwu_REQXdHWfVLtCvTvFEIvM7z8GwHVoawVuHcWv2aw,6888
103
- data_management/databases/integrity_check_json_db.py,sha256=aQe36eEnhxHFpm9XGmFXCf4jsTvfXuBWMfKdIKKN4tU,14535
104
- data_management/databases/remove_corrupted_images_from_db.py,sha256=Dod8UQDFveAUJlrH9Svcp_HezdILRHp74TbAl3YGf84,6138
105
- data_management/databases/subset_json_db.py,sha256=UeVn3jlcpEw-K9E-QyRwxdzl7zaV80iv_u4v6kHUd_E,2749
106
- data_management/importers/add_nacti_sizes.py,sha256=qsBHPyJ7MPzl0vgJX5iErZxWkTJ6QRcyLJ8GM2YBu2U,1172
107
- data_management/importers/add_timestamps_to_icct.py,sha256=8XhQAIt_qw63qTMPobCKGl4O9RQZvZmhbmiSetOyNvA,2459
108
- data_management/importers/animl_results_to_md_results.py,sha256=tzYaPpiUte5A1VHulAbYO9-hzUIpE1xI5lJp6hS_JoI,4899
109
- data_management/importers/auckland_doc_test_to_json.py,sha256=9Fg-n_Kj2jK5iZVaPrioNkhlLNxGnrU5GS_44lsadKo,12910
110
- data_management/importers/auckland_doc_to_json.py,sha256=qSjBcR7FTd5_J2LO6WOoIFxSnE2IiIIqRkhbydULV7s,5952
111
- data_management/importers/awc_to_json.py,sha256=jLXmwGaq81wgH7HcpbAJoNMQP2CqkdfI1mvShdTGeqw,5307
112
- data_management/importers/bellevue_to_json.py,sha256=d5QhZMrOY4hRC9vghojCulX6G8qnVrymnKDx_mUlsRE,7909
113
- data_management/importers/cacophony-thermal-importer.py,sha256=0Y21Hx8Y4dMvpUpbKKMDYb0r-AqFD2k8N0Bf9q75geY,28621
114
- data_management/importers/carrizo_shrubfree_2018.py,sha256=pEdCh3z458dOnGIM_nXJIKlSb8Yv5yjr7Jjp32AwhaI,7827
115
- data_management/importers/carrizo_trail_cam_2017.py,sha256=Kw0SnOMt7DwIhnSEz5wjLpJ4pMjEx5n5PNPW36vrskk,8830
116
- data_management/importers/cct_field_adjustments.py,sha256=Kw1_gIxqXLovGa65jCRm9MIms6qfpqwTiOdM5unw9K8,1351
117
- data_management/importers/channel_islands_to_cct.py,sha256=DmEhjm7iG11yuJUVkXhqWuAXOLYQvV3AXY8nkwyf2oY,29483
118
- data_management/importers/ena24_to_json.py,sha256=XkJX0clvJREilzDByuoP6cuaOXvXnQoFkG25XoA8opU,8248
119
- data_management/importers/filenames_to_json.py,sha256=wzleV-02pwNHKAVvqhkAwahIJ6La_-OCPEXTOg64ezM,10526
120
- data_management/importers/helena_to_cct.py,sha256=imo-SRsib7c7NIM0vSE_6zbb3X7jA5XiIJrM6RbAoQA,8701
121
- data_management/importers/idaho-camera-traps.py,sha256=xKXfrwTpdMWJM1U92eWXxKhtW57iIjB9YyS4b_nA4e0,54058
122
- data_management/importers/idfg_iwildcam_lila_prep.py,sha256=emnKiw1TckZFsCI1uMgFIZUw1CERAVqufr9Tay94YAc,8166
123
- data_management/importers/jb_csv_to_json.py,sha256=u3IZwDboObYlxtUSa35G8P3t_L48m2Ak5v7Fl8hCnGM,3730
124
- data_management/importers/mcgill_to_json.py,sha256=ZxsNW9qFi6Kyu8SJ0BB5uK7AMuBW92QOOKXHPbIgPwY,6718
125
- data_management/importers/missouri_to_json.py,sha256=y9lbLaD8bGM4m9iqGHIicyZOByeJGfZOF51RikHMSFU,14840
126
- data_management/importers/nacti_fieldname_adjustments.py,sha256=57PyfOft2Ws-1AcG4_9mzOcB3uW4IFxaZ3z0LsItUUU,2045
127
- data_management/importers/noaa_seals_2019.py,sha256=wYcjhARv4IUJgawXcAnwIAOGZq5GORG8ElE_7JZSVCk,5145
128
- data_management/importers/pc_to_json.py,sha256=9Nin7R47aaE5bjXjvq7A2trv2vFdJVYzhLHwLFji5Tg,10718
129
- data_management/importers/plot_wni_giraffes.py,sha256=V_kAzbYjtXEBUCdSwSGsEEemLN9aVyZuKhoSZQEvkCI,3787
130
- data_management/importers/prepare-noaa-fish-data-for-lila.py,sha256=WIkuR4ozEeHwzQPs54jIDIbAgKf1I4taZNgpHHzh-Rc,12774
131
- data_management/importers/prepare_zsl_imerit.py,sha256=9wTh9w6kyQXJoA2h0kuzzcoCF1lFNfO9eRlSTnV6unY,3754
132
- data_management/importers/rspb_to_json.py,sha256=L-E4IcwvnwZ_I142dQ6BbQpAqZmNoAcVIuiwtuYGDXw,9834
133
- data_management/importers/save_the_elephants_survey_A.py,sha256=OpGLHXLj1VGZQefZ1R59_mSiQ2KkKN11PyvKWWJnVbY,10639
134
- data_management/importers/save_the_elephants_survey_B.py,sha256=qex23iOkUBttfDvoCeBw3NLVSbkf1xQtS8VhrvN4SgM,11167
135
- data_management/importers/snapshot_safari_importer.py,sha256=h5xSAlFgxckBXmKLKrIIs9Hegq5StgGMaG5pTCPSpc8,23591
136
- data_management/importers/snapshot_safari_importer_reprise.py,sha256=yRzgIYvcvMnlNL0sWv3ZUCNzo2e5_sy3k4DC18xh0Mc,22996
137
- data_management/importers/snapshot_serengeti_lila.py,sha256=mZ_hR7yHfeZFkLtuAO1U7kWRq3_wDtBE28-qXUZmBzo,33854
138
- data_management/importers/sulross_get_exif.py,sha256=nc9MwF_5_Nlsv7f0W74G71G-MF5EZDZIvLqDeKvcwWc,2088
139
- data_management/importers/timelapse_csv_set_to_json.py,sha256=7g1senO7SWUavktI9n214M2SwApN84TPuNTJPxHhZ3A,15902
140
- data_management/importers/ubc_to_json.py,sha256=MP_whIR-CVhNPCE3vQF_tk-6_EpmxWwR40E7pOA10mI,14869
141
- data_management/importers/umn_to_json.py,sha256=emUVCtNfbJmgHS22fBL8GaAMiblaJen52-IuqiFiWyI,16177
142
- data_management/importers/wellington_to_json.py,sha256=QFcVfAxflUVHTMuGhXGxe3z3iMKJ0B8Nziwpx6XcoLE,7671
143
- data_management/importers/wi_to_json.py,sha256=xuHFXE6tuaUnZmiFik18_3UCSCQx9abaG_2TnaRn0Xg,13656
144
- data_management/importers/zamba_results_to_md_results.py,sha256=UV0Iczxf_ghR3yL8D8KUAEg1j81_BavdzWhAFtg6wHQ,5594
145
- data_management/importers/eMammal/copy_and_unzip_emammal.py,sha256=gVB0drYUeCghWXFDpaJkCL0qdmFjMW75YAEEhFe38js,6080
146
- data_management/importers/eMammal/eMammal_helpers.py,sha256=Sv6PBAMDdlgwiek6Q3R6Rjio2RjtA-JpfgBr_Fmr9kA,6838
147
- data_management/importers/eMammal/make_eMammal_json.py,sha256=6C_-6Qk-Xhz_87DEPHA-txw90AvXrybJy1PbQXQbqwo,6987
148
- data_management/importers/snapshotserengeti/make_full_SS_json.py,sha256=khE3W0pO3Uq-UCfrLW_rpzWqjLll2JoBc360XeAuUGc,4126
149
- data_management/importers/snapshotserengeti/make_per_season_SS_json.py,sha256=sAwvcR2siwblgY3LfTsbH4mXOXvJZCA246QIsQWuQBA,4316
150
- data_management/lila/add_locations_to_island_camera_traps.py,sha256=nsIJXyw2IhOwwM9A0SCn108Fg297fRUdADXGUAN8Y34,2561
151
- data_management/lila/add_locations_to_nacti.py,sha256=KVMWwSJx-gYI_J6J8y-AqsWnOTgidtebotJjYPfsj00,5017
152
- data_management/lila/create_lila_blank_set.py,sha256=ScGlqalOySsmZEvYtEn4pGNxGOj0qHyxGs-F5URTmk8,16359
153
- data_management/lila/create_lila_test_set.py,sha256=WxM-LuhtNiee3CLeVPxUEWsfbybgZd7oluZu6epl69A,4825
154
- data_management/lila/create_links_to_md_results_files.py,sha256=f0pXY2Lyj9DtRlgFpmLqNBs2qWd--B8N6UAt8E26tcM,3916
155
- data_management/lila/download_lila_subset.py,sha256=nJjzKuMOYJa2lBJcXOEZloWjbFlQW_USke49DJdNruM,5283
156
- data_management/lila/generate_lila_per_image_labels.py,sha256=b0FDiYbs5BI8wdk221ysr-p1PsprfRFwMIgv65BYS6Y,17351
157
- data_management/lila/get_lila_annotation_counts.py,sha256=QVSKCmeLzliFZimjzi8AClS0Gz94pDMYckjw2cOm-7E,5490
158
- data_management/lila/get_lila_image_counts.py,sha256=r5p2wPL5vuKKO8DWia3Tll-EZZWFNUvax6ljaYtrKsk,3625
159
- data_management/lila/lila_common.py,sha256=vzazQR3UzvRxbxdBvRBcCbQ9pw0DUD3iWjUscV-nUvo,8785
160
- data_management/lila/test_lila_metadata_urls.py,sha256=jDInoM5WD_EoahR_b5yTjrj6pkiitvj_Kz_1U0uSDzE,3966
161
- detection/process_video.py,sha256=wuMoV-DJde_QlTiNAxsRjlDttiLl2e2BiJuyTQBINIE,26825
162
- detection/pytorch_detector.py,sha256=WG6Q4KueBoA8lCZCdR2PrgbQAHs3HCO6MF01Ful4tfc,11992
163
- detection/run_detector.py,sha256=XmQ4s-B7IlkxJye56y6uvx2vx6Ml3IBTo3Wx0SalO1Q,26036
164
- detection/run_detector_batch.py,sha256=dgPwvEAOTutpuEKE6TCopjj5w9J1Eb9jOvT3lyEmoNc,46937
165
- detection/run_inference_with_yolov5_val.py,sha256=tjHovM8I2YWvDsBcWV0h6hJaAjckTEN7foJ_X6IetIo,33755
166
- detection/run_tiled_inference.py,sha256=mL1WxA4bWEf2TaT3xK-hXjA4_5ABBwfXx9zVbmhaWB4,33930
167
- detection/tf_detector.py,sha256=xOO8kzd-Um2X_sAZyop524LM53nipv5pNx8YueGTJrc,6760
168
- detection/video_utils.py,sha256=70dx6_D9zQhAHatzHA0Bo3LreOJe98A859O243dFIvs,19425
169
- detection/detector_training/copy_checkpoints.py,sha256=t2c3Q4Pf82tAp_OjSG-veIjRPrX0tJYi-bSQmGL2m4c,1091
170
- detection/detector_training/model_main_tf2.py,sha256=YwNsZ7hkIFaEuwKU0rHG_VyqiR_0E01BbdlD0Yx4Smo,4936
171
- md_utils/azure_utils.py,sha256=SVoQNSknYlBcpZeGrH2v3Qgm5kXxBrqM5Sx2L_Lax-I,6243
172
- md_utils/ct_utils.py,sha256=CbuSL-XqI5jU9ShxEgnvIKqQF_BzbDPSTULPBmEVAnU,12908
173
- md_utils/directory_listing.py,sha256=dgxMczSOEH352YXdWRuNo_ujsonRrPJXFeuS7ocpe9k,9615
174
- md_utils/md_tests.py,sha256=FWqv74nBmN5772cSgRxnFZX8zZ3tikwMFr_rhvdV24Y,33316
175
- md_utils/path_utils.py,sha256=g_ASvwJCeN6eGtypuwrSfCxNM7Gx15oeC6TXwJ6yYJc,16573
176
- md_utils/process_utils.py,sha256=YkD38KLgceuqvMvDXIcVyzY51npUuUT3tOAjjF5Mvf8,4316
177
- md_utils/sas_blob_utils.py,sha256=GpjHn33N2b-XeBAtU3xhGbTIYcBs4YrXHtbQDmlGFvY,16955
178
- md_utils/split_locations_into_train_val.py,sha256=psiWoXkYYLLOfjVHUyOhaa3fh9mmlm7HGFthklWbMaA,9241
179
- md_utils/string_utils.py,sha256=Edwa07IWu7-QTNoMmvQYNnYgpwxxNh9VhXQ8AXMX3Qg,1600
180
- md_utils/url_utils.py,sha256=2Ee459ZRQ4Ms-52WRhyiEBICHACKmigrRnYRi6JtCdQ,4593
181
- md_utils/write_html_image_list.py,sha256=VLbeJnrRPm-D-_KFDVAnrU3alrXUr6eOr4WOv4-ugwk,7036
182
- md_visualization/plot_utils.py,sha256=eppaGgI0k73jhvOCruNrNO-VLH3EEFpFP2la_rZo57E,10712
183
- md_visualization/render_images_with_thumbnails.py,sha256=XJcL5qxu5pe2LQ4MqnD-O6dM_cPxGGNoqk5U_rZzFUQ,10391
184
- md_visualization/visualization_utils.py,sha256=2OJKG_L70XYCCdhLGmQ5-HD9nCaHisqIJoRGIYb0L1g,35297
185
- md_visualization/visualize_db.py,sha256=x6Y--RazaPvUayEch_Dr10NV0P0C7l0ZB29-vjW5WjI,18931
186
- md_visualization/visualize_detector_output.py,sha256=aeg8DbwfddW5CDe84V2dt07eWMyxr4QdFcwTYbC_Lnk,15814
187
- md_visualization/visualize_megadb.py,sha256=ZHFMgQv-zjXwvyT6gEfLe2BzodvBNfQYEh0b6P_59TE,6188
188
- taxonomy_mapping/map_lila_taxonomy_to_wi_taxonomy.py,sha256=kFDp6r25LhYVkyrm-35TgBc2vgXXh6SmoARqO4aE9PU,16517
189
- taxonomy_mapping/map_new_lila_datasets.py,sha256=rJlj-HuP9wNN2RvIlcWfqnW5N7cyiGLWglbe3FsFG0Q,4324
190
- taxonomy_mapping/prepare_lila_taxonomy_release.py,sha256=Ser_lwpbYR75fMMcE49uT90t7o02dRZ7wY0GUyhzK9c,4357
191
- taxonomy_mapping/preview_lila_taxonomy.py,sha256=iCcvf8dDsh1WZIZWq2ppua5wloAst6F6lphsS9vRTKQ,20144
192
- taxonomy_mapping/retrieve_sample_image.py,sha256=BySUy69DeGwPiIs9Ws5vIILJCTXeVImE5AVoawOiECM,1992
193
- taxonomy_mapping/simple_image_download.py,sha256=dXXVhhaR_bI-Elmk4Tmjt2ftdYzHbkuJCTzIMOJfLKs,6874
194
- taxonomy_mapping/species_lookup.py,sha256=oRqaUbiH_xULH7z5mkrtaFhacxlyM8KT-V-c4FnNq4w,28303
195
- taxonomy_mapping/taxonomy_csv_checker.py,sha256=xmV2SBOfQEuZBMGmXyUzbuNxvd_oXKysXkxU6-IhKJg,4874
196
- taxonomy_mapping/taxonomy_graph.py,sha256=ZDm2enGanBlm8KXWvCndqmeerOp9LREaetSl-Lxy07s,12361
197
- taxonomy_mapping/validate_lila_category_mappings.py,sha256=CApYVWIZ8TTJ3vvQTgfjIvWDGHpPo-Zn9jqJFaw3DNw,2314
198
- megadetector-5.0.7.dist-info/LICENSE,sha256=RMa3qq-7Cyk7DdtqRj_bP1oInGFgjyHn9-PZ3PcrqIs,1100
199
- megadetector-5.0.7.dist-info/METADATA,sha256=xgK96jYJkxj6kXvCzY3y8HlYb0-Oa44nmfETb2Ba7xI,7513
200
- megadetector-5.0.7.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
201
- megadetector-5.0.7.dist-info/top_level.txt,sha256=-mFGpqnmviVz0Vyr2GxZ_kTo_PBPNoK6h4JtqIMjZGQ,88
202
- megadetector-5.0.7.dist-info/RECORD,,