megadetector 5.0.27__py3-none-any.whl → 5.0.29__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 (176) hide show
  1. megadetector/api/batch_processing/api_core/batch_service/score.py +4 -5
  2. megadetector/api/batch_processing/api_core_support/aggregate_results_manually.py +1 -1
  3. megadetector/api/batch_processing/api_support/summarize_daily_activity.py +1 -1
  4. megadetector/api/batch_processing/integration/digiKam/xmp_integration.py +2 -2
  5. megadetector/api/batch_processing/integration/eMammal/test_scripts/push_annotations_to_emammal.py +1 -1
  6. megadetector/api/batch_processing/integration/eMammal/test_scripts/select_images_for_testing.py +1 -1
  7. megadetector/api/synchronous/api_core/tests/load_test.py +2 -3
  8. megadetector/classification/aggregate_classifier_probs.py +3 -3
  9. megadetector/classification/analyze_failed_images.py +5 -5
  10. megadetector/classification/cache_batchapi_outputs.py +5 -5
  11. megadetector/classification/create_classification_dataset.py +11 -12
  12. megadetector/classification/crop_detections.py +10 -10
  13. megadetector/classification/csv_to_json.py +8 -8
  14. megadetector/classification/detect_and_crop.py +13 -15
  15. megadetector/classification/evaluate_model.py +7 -7
  16. megadetector/classification/identify_mislabeled_candidates.py +6 -6
  17. megadetector/classification/json_to_azcopy_list.py +1 -1
  18. megadetector/classification/json_validator.py +29 -32
  19. megadetector/classification/map_classification_categories.py +9 -9
  20. megadetector/classification/merge_classification_detection_output.py +12 -9
  21. megadetector/classification/prepare_classification_script.py +19 -19
  22. megadetector/classification/prepare_classification_script_mc.py +23 -23
  23. megadetector/classification/run_classifier.py +4 -4
  24. megadetector/classification/save_mislabeled.py +6 -6
  25. megadetector/classification/train_classifier.py +1 -1
  26. megadetector/classification/train_classifier_tf.py +9 -9
  27. megadetector/classification/train_utils.py +10 -10
  28. megadetector/data_management/annotations/annotation_constants.py +1 -1
  29. megadetector/data_management/camtrap_dp_to_coco.py +45 -45
  30. megadetector/data_management/cct_json_utils.py +101 -101
  31. megadetector/data_management/cct_to_md.py +49 -49
  32. megadetector/data_management/cct_to_wi.py +33 -33
  33. megadetector/data_management/coco_to_labelme.py +75 -75
  34. megadetector/data_management/coco_to_yolo.py +189 -189
  35. megadetector/data_management/databases/add_width_and_height_to_db.py +3 -2
  36. megadetector/data_management/databases/combine_coco_camera_traps_files.py +38 -38
  37. megadetector/data_management/databases/integrity_check_json_db.py +202 -188
  38. megadetector/data_management/databases/subset_json_db.py +33 -33
  39. megadetector/data_management/generate_crops_from_cct.py +38 -38
  40. megadetector/data_management/get_image_sizes.py +54 -49
  41. megadetector/data_management/labelme_to_coco.py +130 -124
  42. megadetector/data_management/labelme_to_yolo.py +78 -72
  43. megadetector/data_management/lila/create_lila_blank_set.py +81 -83
  44. megadetector/data_management/lila/create_lila_test_set.py +32 -31
  45. megadetector/data_management/lila/create_links_to_md_results_files.py +18 -18
  46. megadetector/data_management/lila/download_lila_subset.py +21 -24
  47. megadetector/data_management/lila/generate_lila_per_image_labels.py +91 -91
  48. megadetector/data_management/lila/get_lila_annotation_counts.py +30 -30
  49. megadetector/data_management/lila/get_lila_image_counts.py +22 -22
  50. megadetector/data_management/lila/lila_common.py +70 -70
  51. megadetector/data_management/lila/test_lila_metadata_urls.py +13 -14
  52. megadetector/data_management/mewc_to_md.py +339 -340
  53. megadetector/data_management/ocr_tools.py +258 -252
  54. megadetector/data_management/read_exif.py +232 -223
  55. megadetector/data_management/remap_coco_categories.py +26 -26
  56. megadetector/data_management/remove_exif.py +31 -20
  57. megadetector/data_management/rename_images.py +187 -187
  58. megadetector/data_management/resize_coco_dataset.py +41 -41
  59. megadetector/data_management/speciesnet_to_md.py +41 -41
  60. megadetector/data_management/wi_download_csv_to_coco.py +55 -55
  61. megadetector/data_management/yolo_output_to_md_output.py +117 -120
  62. megadetector/data_management/yolo_to_coco.py +195 -188
  63. megadetector/detection/change_detection.py +831 -0
  64. megadetector/detection/process_video.py +341 -338
  65. megadetector/detection/pytorch_detector.py +308 -266
  66. megadetector/detection/run_detector.py +186 -166
  67. megadetector/detection/run_detector_batch.py +366 -364
  68. megadetector/detection/run_inference_with_yolov5_val.py +328 -325
  69. megadetector/detection/run_tiled_inference.py +312 -253
  70. megadetector/detection/tf_detector.py +24 -24
  71. megadetector/detection/video_utils.py +291 -283
  72. megadetector/postprocessing/add_max_conf.py +15 -11
  73. megadetector/postprocessing/categorize_detections_by_size.py +44 -44
  74. megadetector/postprocessing/classification_postprocessing.py +808 -311
  75. megadetector/postprocessing/combine_batch_outputs.py +20 -21
  76. megadetector/postprocessing/compare_batch_results.py +528 -517
  77. megadetector/postprocessing/convert_output_format.py +97 -97
  78. megadetector/postprocessing/create_crop_folder.py +220 -147
  79. megadetector/postprocessing/detector_calibration.py +173 -168
  80. megadetector/postprocessing/generate_csv_report.py +508 -0
  81. megadetector/postprocessing/load_api_results.py +25 -22
  82. megadetector/postprocessing/md_to_coco.py +129 -98
  83. megadetector/postprocessing/md_to_labelme.py +89 -83
  84. megadetector/postprocessing/md_to_wi.py +40 -40
  85. megadetector/postprocessing/merge_detections.py +87 -114
  86. megadetector/postprocessing/postprocess_batch_results.py +319 -302
  87. megadetector/postprocessing/remap_detection_categories.py +36 -36
  88. megadetector/postprocessing/render_detection_confusion_matrix.py +205 -199
  89. megadetector/postprocessing/repeat_detection_elimination/find_repeat_detections.py +57 -57
  90. megadetector/postprocessing/repeat_detection_elimination/remove_repeat_detections.py +27 -28
  91. megadetector/postprocessing/repeat_detection_elimination/repeat_detections_core.py +702 -677
  92. megadetector/postprocessing/separate_detections_into_folders.py +226 -211
  93. megadetector/postprocessing/subset_json_detector_output.py +265 -262
  94. megadetector/postprocessing/top_folders_to_bottom.py +45 -45
  95. megadetector/postprocessing/validate_batch_results.py +70 -70
  96. megadetector/taxonomy_mapping/map_lila_taxonomy_to_wi_taxonomy.py +52 -52
  97. megadetector/taxonomy_mapping/map_new_lila_datasets.py +15 -15
  98. megadetector/taxonomy_mapping/prepare_lila_taxonomy_release.py +14 -14
  99. megadetector/taxonomy_mapping/preview_lila_taxonomy.py +66 -69
  100. megadetector/taxonomy_mapping/retrieve_sample_image.py +16 -16
  101. megadetector/taxonomy_mapping/simple_image_download.py +8 -8
  102. megadetector/taxonomy_mapping/species_lookup.py +33 -33
  103. megadetector/taxonomy_mapping/taxonomy_csv_checker.py +14 -14
  104. megadetector/taxonomy_mapping/taxonomy_graph.py +11 -11
  105. megadetector/taxonomy_mapping/validate_lila_category_mappings.py +13 -13
  106. megadetector/utils/azure_utils.py +22 -22
  107. megadetector/utils/ct_utils.py +1019 -200
  108. megadetector/utils/directory_listing.py +21 -77
  109. megadetector/utils/gpu_test.py +22 -22
  110. megadetector/utils/md_tests.py +541 -518
  111. megadetector/utils/path_utils.py +1511 -406
  112. megadetector/utils/process_utils.py +41 -41
  113. megadetector/utils/sas_blob_utils.py +53 -49
  114. megadetector/utils/split_locations_into_train_val.py +73 -60
  115. megadetector/utils/string_utils.py +147 -26
  116. megadetector/utils/url_utils.py +463 -173
  117. megadetector/utils/wi_utils.py +2629 -2868
  118. megadetector/utils/write_html_image_list.py +137 -137
  119. megadetector/visualization/plot_utils.py +21 -21
  120. megadetector/visualization/render_images_with_thumbnails.py +37 -73
  121. megadetector/visualization/visualization_utils.py +424 -404
  122. megadetector/visualization/visualize_db.py +197 -190
  123. megadetector/visualization/visualize_detector_output.py +126 -98
  124. {megadetector-5.0.27.dist-info → megadetector-5.0.29.dist-info}/METADATA +6 -3
  125. megadetector-5.0.29.dist-info/RECORD +163 -0
  126. {megadetector-5.0.27.dist-info → megadetector-5.0.29.dist-info}/WHEEL +1 -1
  127. megadetector/data_management/importers/add_nacti_sizes.py +0 -52
  128. megadetector/data_management/importers/add_timestamps_to_icct.py +0 -79
  129. megadetector/data_management/importers/animl_results_to_md_results.py +0 -158
  130. megadetector/data_management/importers/auckland_doc_test_to_json.py +0 -373
  131. megadetector/data_management/importers/auckland_doc_to_json.py +0 -201
  132. megadetector/data_management/importers/awc_to_json.py +0 -191
  133. megadetector/data_management/importers/bellevue_to_json.py +0 -272
  134. megadetector/data_management/importers/cacophony-thermal-importer.py +0 -793
  135. megadetector/data_management/importers/carrizo_shrubfree_2018.py +0 -269
  136. megadetector/data_management/importers/carrizo_trail_cam_2017.py +0 -289
  137. megadetector/data_management/importers/cct_field_adjustments.py +0 -58
  138. megadetector/data_management/importers/channel_islands_to_cct.py +0 -913
  139. megadetector/data_management/importers/eMammal/copy_and_unzip_emammal.py +0 -180
  140. megadetector/data_management/importers/eMammal/eMammal_helpers.py +0 -249
  141. megadetector/data_management/importers/eMammal/make_eMammal_json.py +0 -223
  142. megadetector/data_management/importers/ena24_to_json.py +0 -276
  143. megadetector/data_management/importers/filenames_to_json.py +0 -386
  144. megadetector/data_management/importers/helena_to_cct.py +0 -283
  145. megadetector/data_management/importers/idaho-camera-traps.py +0 -1407
  146. megadetector/data_management/importers/idfg_iwildcam_lila_prep.py +0 -294
  147. megadetector/data_management/importers/import_desert_lion_conservation_camera_traps.py +0 -387
  148. megadetector/data_management/importers/jb_csv_to_json.py +0 -150
  149. megadetector/data_management/importers/mcgill_to_json.py +0 -250
  150. megadetector/data_management/importers/missouri_to_json.py +0 -490
  151. megadetector/data_management/importers/nacti_fieldname_adjustments.py +0 -79
  152. megadetector/data_management/importers/noaa_seals_2019.py +0 -181
  153. megadetector/data_management/importers/osu-small-animals-to-json.py +0 -364
  154. megadetector/data_management/importers/pc_to_json.py +0 -365
  155. megadetector/data_management/importers/plot_wni_giraffes.py +0 -123
  156. megadetector/data_management/importers/prepare_zsl_imerit.py +0 -131
  157. megadetector/data_management/importers/raic_csv_to_md_results.py +0 -416
  158. megadetector/data_management/importers/rspb_to_json.py +0 -356
  159. megadetector/data_management/importers/save_the_elephants_survey_A.py +0 -320
  160. megadetector/data_management/importers/save_the_elephants_survey_B.py +0 -329
  161. megadetector/data_management/importers/snapshot_safari_importer.py +0 -758
  162. megadetector/data_management/importers/snapshot_serengeti_lila.py +0 -1067
  163. megadetector/data_management/importers/snapshotserengeti/make_full_SS_json.py +0 -150
  164. megadetector/data_management/importers/snapshotserengeti/make_per_season_SS_json.py +0 -153
  165. megadetector/data_management/importers/sulross_get_exif.py +0 -65
  166. megadetector/data_management/importers/timelapse_csv_set_to_json.py +0 -490
  167. megadetector/data_management/importers/ubc_to_json.py +0 -399
  168. megadetector/data_management/importers/umn_to_json.py +0 -507
  169. megadetector/data_management/importers/wellington_to_json.py +0 -263
  170. megadetector/data_management/importers/wi_to_json.py +0 -442
  171. megadetector/data_management/importers/zamba_results_to_md_results.py +0 -180
  172. megadetector/data_management/lila/add_locations_to_island_camera_traps.py +0 -101
  173. megadetector/data_management/lila/add_locations_to_nacti.py +0 -151
  174. megadetector-5.0.27.dist-info/RECORD +0 -208
  175. {megadetector-5.0.27.dist-info → megadetector-5.0.29.dist-info}/licenses/LICENSE +0 -0
  176. {megadetector-5.0.27.dist-info → megadetector-5.0.29.dist-info}/top_level.txt +0 -0
@@ -1,180 +0,0 @@
1
- """
2
-
3
- zamba_results_to_md_results.py
4
-
5
- Convert a labels.csv file produced by Zamba Cloud to a MD results file suitable
6
- for import into Timelapse.
7
-
8
- Columns are expected to be:
9
-
10
- video_uuid (not used)
11
- original_filename (assumed to be a relative path name)
12
- top_k_label,top_k_probability, for k = 1..N
13
- [category name 1],[category name 2],...
14
- corrected_label
15
-
16
- Because the MD results file fundamentally stores detections, what we'll
17
- actually do is create bogus detections that fill the entire image.
18
-
19
- There is no special handling of empty/blank categories; because these results are
20
- based on a classifier, rather than a detector (where "blank" would be the absence of
21
- all other categories), "blank" can be queried in Timelapse just like any other class.
22
-
23
- """
24
-
25
- #%% Imports and constants
26
-
27
- import pandas as pd
28
- import json
29
-
30
-
31
- #%% Main function
32
-
33
- def zamba_results_to_md_results(input_file,output_file=None):
34
- """
35
- Converts the .csv file [input_file] to the MD-formatted .json file [output_file].
36
-
37
- If [output_file] is None, '.json' will be appended to the input file.
38
- """
39
-
40
- if output_file is None:
41
- output_file = input_file + '.json'
42
-
43
- df = pd.read_csv(input_file)
44
-
45
- expected_columns = ('video_uuid','corrected_label','original_filename')
46
- for s in expected_columns:
47
- assert s in df.columns,\
48
- 'Expected column {} not found, are you sure this is a Zamba results .csv file?'.format(
49
- s)
50
-
51
- # How many results are included per file?
52
- assert 'top_1_probability' in df.columns and 'top_1_label' in df.columns
53
- top_k = 2
54
- while(True):
55
- p_string = 'top_' + str(top_k) + '_probability'
56
- label_string = 'top_' + str(top_k) + '_label'
57
-
58
- if p_string in df.columns:
59
- assert label_string in df.columns,\
60
- 'Oops, {} is a column but {} is not'.format(
61
- p_string,label_string)
62
- top_k += 1
63
- continue
64
- else:
65
- assert label_string not in df.columns,\
66
- 'Oops, {} is a column but {} is not'.format(
67
- label_string,p_string)
68
- top_k -= 1
69
- break
70
-
71
- print('Found {} probability column pairs'.format(top_k))
72
-
73
- # Category names start after the fixed columns and the probability columns
74
- category_names = []
75
- column_names = list(df.columns)
76
- first_category_name_index = 0
77
- while('top_' in column_names[first_category_name_index] or \
78
- column_names[first_category_name_index] in expected_columns):
79
- first_category_name_index += 1
80
-
81
- i_column = first_category_name_index
82
- while( (i_column < len(column_names)) and (column_names[i_column] != 'corrected_label') ):
83
- category_names.append(column_names[i_column])
84
- i_column += 1
85
-
86
- print('Found {} categories:\n'.format(len(category_names)))
87
-
88
- for s in category_names:
89
- print(s)
90
-
91
- info = {}
92
- info['format_version'] = '1.3'
93
- info['detector'] = 'Zamba Cloud'
94
- info['classifier'] = 'Zamba Cloud'
95
-
96
- detection_category_id_to_name = {}
97
- for category_id,category_name in enumerate(category_names):
98
- detection_category_id_to_name[str(category_id)] = category_name
99
- detection_category_name_to_id = {v: k for k, v in detection_category_id_to_name.items()}
100
-
101
- images = []
102
-
103
- # i_row = 0; row = df.iloc[i_row]
104
- for i_row,row in df.iterrows():
105
-
106
- im = {}
107
- images.append(im)
108
- im['file'] = row['original_filename']
109
-
110
- detections = []
111
-
112
- # k = 1
113
- for k in range(1,top_k+1):
114
- label = row['top_{}_label'.format(k)]
115
- confidence = row['top_{}_probability'.format(k)]
116
- det = {}
117
- det['category'] = detection_category_name_to_id[label]
118
- det['conf'] = confidence
119
- det['bbox'] = [0,0,1.0,1.0]
120
- detections.append(det)
121
-
122
- im['detections'] = detections
123
-
124
- # ...for each row
125
-
126
- results = {}
127
- results['info'] = info
128
- results['detection_categories'] = detection_category_id_to_name
129
- results['images'] = images
130
-
131
- with open(output_file,'w') as f:
132
- json.dump(results,f,indent=1)
133
-
134
- # ...zamba_results_to_md_results(...)
135
-
136
-
137
- #%% Interactive driver
138
-
139
- if False:
140
-
141
- pass
142
-
143
- #%%
144
-
145
- input_file = r"G:\temp\labels-job-b95a4b76-e332-4e17-ab40-03469392d36a-2023-11-04_16-28-50.060130.csv"
146
- output_file = None
147
- zamba_results_to_md_results(input_file,output_file)
148
-
149
-
150
- #%% Command-line driver
151
-
152
- import sys,argparse
153
-
154
- def main():
155
-
156
- parser = argparse.ArgumentParser(
157
- description='Convert a Zamba-formatted .csv results file to a MD-formatted .json results file')
158
-
159
- parser.add_argument(
160
- 'input_file',
161
- type=str,
162
- help='input .csv file')
163
-
164
- parser.add_argument(
165
- '--output_file',
166
- type=str,
167
- default=None,
168
- help='output .json file (defaults to input file appended with ".json")')
169
-
170
- if len(sys.argv[1:]) == 0:
171
- parser.print_help()
172
- parser.exit()
173
-
174
- args = parser.parse_args()
175
-
176
- zamba_results_to_md_results(args.input_file,args.output_file)
177
-
178
- if __name__ == '__main__':
179
- main()
180
-
@@ -1,101 +0,0 @@
1
- """
2
-
3
- add_locations_to_island_camera_traps.py
4
-
5
- The Island Conservation Camera Traps dataset had unique camera identifiers embedded
6
- in filenames, but not in the proper metadata fields. This script copies that information
7
- to metadata.
8
-
9
- """
10
-
11
- #%% Imports and constants
12
-
13
- import os
14
- import json
15
- from tqdm import tqdm
16
-
17
- input_fn = os.path.expanduser('~/lila/metadata/island_conservation.json')
18
- output_fn = os.path.expanduser('~/tmp/island_conservation.json')
19
- preview_folder = os.path.expanduser('~/tmp/island_conservation_preview')
20
- image_directory = os.path.expanduser('~/data/icct/public/')
21
-
22
-
23
- #%% Prevent imports during testing
24
-
25
- if False:
26
-
27
- #%% Read input file
28
-
29
- with open(input_fn,'r') as f:
30
- d = json.load(f)
31
-
32
- d['info']
33
- d['info']['version'] = '1.01'
34
-
35
-
36
- #%% Find locations
37
-
38
- images = d['images']
39
-
40
- locations = set()
41
-
42
- for i_image,im in tqdm(enumerate(images),total=len(images)):
43
- tokens_fn = im['file_name'].split('/')
44
- tokens_id = im['id'].split('_')
45
- assert tokens_fn[0] == tokens_id[0]
46
- assert tokens_fn[1] == tokens_id[1]
47
- location = tokens_fn[0] + '_' + tokens_fn[1]
48
- im['location'] = location
49
- locations.add(location)
50
-
51
- locations = sorted(list(locations))
52
-
53
- for s in locations:
54
- print(s)
55
-
56
-
57
- #%% Write output file
58
-
59
- with open(output_fn,'w') as f:
60
- json.dump(d,f,indent=1)
61
-
62
-
63
- #%% Validate .json files
64
-
65
- from megadetector.data_management.databases import integrity_check_json_db
66
-
67
- options = integrity_check_json_db.IntegrityCheckOptions()
68
- options.baseDir = image_directory
69
- options.bCheckImageSizes = False
70
- options.bCheckImageExistence = True
71
- options.bFindUnusedImages = True
72
-
73
- sorted_categories, data, error_info = integrity_check_json_db.integrity_check_json_db(output_fn, options)
74
-
75
-
76
- #%% Preview labels
77
-
78
- from megadetector.visualization import visualize_db
79
-
80
- viz_options = visualize_db.DbVizOptions()
81
- viz_options.num_to_visualize = 2000
82
- viz_options.trim_to_images_with_bboxes = False
83
- viz_options.add_search_links = False
84
- viz_options.sort_by_filename = False
85
- viz_options.parallelize_rendering = True
86
- viz_options.classes_to_exclude = ['test']
87
- html_output_file, image_db = visualize_db.visualize_db(db_path=output_fn,
88
- output_dir=preview_folder,
89
- image_base_dir=image_directory,
90
- options=viz_options)
91
-
92
- from megadetector.utils import path_utils
93
- path_utils.open_file(html_output_file)
94
-
95
-
96
- #%% Zip output file
97
-
98
- from megadetector.utils.path_utils import zip_file
99
-
100
- zip_file(output_fn, verbose=True)
101
- assert os.path.isfile(output_fn + '.zip')
@@ -1,151 +0,0 @@
1
- """
2
-
3
- add_locations_to_nacti.py
4
-
5
- As of 10.2023, NACTI metadata only has very coarse location information (e.g. "Florida"),
6
- but camera IDs are embedded in filenames. This script pulls that information from filenames
7
- and adds it to metadata.
8
-
9
- """
10
-
11
- #%% Imports and constants
12
-
13
- import os
14
- import json
15
- import shutil
16
-
17
- from tqdm import tqdm
18
- from collections import defaultdict
19
-
20
- input_file = r'd:\lila\nacti\nacti_metadata.json.1.13\nacti_metadata.json'
21
- output_file = r'g:\temp\nacti_metadata.1.14.json'
22
-
23
-
24
- #%% Prevent execution during testing
25
-
26
- if False:
27
-
28
- #%% Read metadata
29
-
30
- with open(input_file,'r') as f:
31
- d = json.load(f)
32
-
33
- assert d['info']['version'] == 1.13
34
-
35
-
36
- #%% Map images to locations (according to the metadata)
37
-
38
- file_name_to_original_location = {}
39
-
40
- # im = dataset_labels['images'][0]
41
- for im in tqdm(d['images']):
42
- file_name_to_original_location[im['file_name']] = im['location']
43
-
44
- original_locations = set(file_name_to_original_location.values())
45
-
46
- print('Found {} locations in the original metadata:'.format(len(original_locations)))
47
- for loc in original_locations:
48
- print('[{}]'.format(loc))
49
-
50
-
51
- #%% Map images to new locations
52
-
53
- def path_to_location(relative_path):
54
-
55
- relative_path = relative_path.replace('\\','/')
56
- if relative_path in file_name_to_original_location:
57
- location_name = file_name_to_original_location[relative_path]
58
- if location_name == 'San Juan Mntns, Colorado':
59
- # "part0/sub000/2010_Unit150_Ivan097_img0003.jpg"
60
- tokens = relative_path.split('/')[-1].split('_')
61
- assert tokens[1].startswith('Unit')
62
- location_name = 'sanjuan_{}_{}_{}'.format(tokens[0],tokens[1],tokens[2])
63
- elif location_name == 'Lebec, California':
64
- # "part0/sub035/CA-03_08_13_2015_CA-03_0009738.jpg"
65
- tokens = relative_path.split('/')[-1].split('_')
66
- assert tokens[0].startswith('CA-') or tokens[0].startswith('TAG-')
67
- location_name = 'lebec_{}'.format(tokens[0])
68
- elif location_name == 'Archbold, FL':
69
- # "part1/sub110/FL-01_01_25_2016_FL-01_0040421.jpg"
70
- tokens = relative_path.split('/')[-1].split('_')
71
- assert tokens[0].startswith('FL-')
72
- location_name = 'archbold_{}'.format(tokens[0])
73
- else:
74
- assert location_name == ''
75
- tokens = relative_path.split('/')[-1].split('_')
76
- if tokens[0].startswith('CA-') or tokens[0].startswith('TAG-') or tokens[0].startswith('FL-'):
77
- location_name = '{}'.format(tokens[0])
78
-
79
- else:
80
-
81
- location_name = 'unknown'
82
-
83
- # print('Returning location {} for file {}'.format(location_name,relative_path))
84
-
85
- return location_name
86
-
87
- file_name_to_updated_location = {}
88
- updated_location_to_count = defaultdict(int)
89
- for im in tqdm(d['images']):
90
-
91
- updated_location = path_to_location(im['file_name'])
92
- file_name_to_updated_location[im['file_name']] = updated_location
93
- updated_location_to_count[updated_location] += 1
94
-
95
- updated_location_to_count = {k: v for k, v in sorted(updated_location_to_count.items(),
96
- key=lambda item: item[1],
97
- reverse=True)}
98
-
99
- updated_locations = set(file_name_to_updated_location.values())
100
-
101
- print('Found {} updated locations in the original metadata:'.format(len(updated_locations)))
102
- for loc in updated_location_to_count:
103
- print('{}: {}'.format(loc,updated_location_to_count[loc]))
104
-
105
-
106
- #%% Re-write metadata
107
-
108
- for im in d['images']:
109
- im['location'] = file_name_to_updated_location[im['file_name']]
110
- d['info']['version'] = 1.14
111
-
112
- with open(output_file,'w') as f:
113
- json.dump(d,f,indent=1)
114
-
115
-
116
- #%% For each location, sample some random images to make sure they look consistent
117
-
118
- input_base = r'd:\lila\nacti-unzipped'
119
- assert os.path.isdir(input_base)
120
-
121
- location_to_images = defaultdict(list)
122
-
123
- for im in d['images']:
124
- location_to_images[im['location']].append(im)
125
-
126
- n_to_sample = 10
127
- import random
128
- random.seed(0)
129
- sampling_folder_base = r'g:\temp\nacti_samples'
130
-
131
- for location in tqdm(location_to_images):
132
-
133
- images_this_location = location_to_images[location]
134
- if len(images_this_location) > n_to_sample:
135
- images_this_location = random.sample(images_this_location,n_to_sample)
136
-
137
- for i_image,im in enumerate(images_this_location):
138
-
139
- fn_relative = im['file_name']
140
- source_fn_abs = os.path.join(input_base,fn_relative)
141
- assert os.path.isfile(source_fn_abs)
142
- ext = os.path.splitext(fn_relative)[1]
143
- target_fn_abs = os.path.join(sampling_folder_base,'{}/{}'.format(
144
- location,'image_{}{}'.format(str(i_image).zfill(2),ext)))
145
- os.makedirs(os.path.dirname(target_fn_abs),exist_ok=True)
146
- shutil.copyfile(source_fn_abs,target_fn_abs)
147
-
148
- # ...for each image
149
-
150
- # ...for each location
151
-
@@ -1,208 +0,0 @@
1
- megadetector/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- megadetector/api/batch_processing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
- megadetector/api/batch_processing/api_core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
- megadetector/api/batch_processing/api_core/server.py,sha256=-g6hfaSp7dUaT-2-bUSXkLE-MJnig3gZ3W_GbNkoAE0,11618
5
- megadetector/api/batch_processing/api_core/server_api_config.py,sha256=AjmLStXYoMMwxZJSephYROEprcSkG5RPlOr7Zho9xLk,3277
6
- megadetector/api/batch_processing/api_core/server_app_config.py,sha256=tQCFsFv0wJCegHfnu-Za3okdXwEd4U522hiM0YGNkMY,1860
7
- megadetector/api/batch_processing/api_core/server_batch_job_manager.py,sha256=K7fMFBJA8Z1SkA4eBM-nymcq7VQjwZ6ZRaNnNKFlat8,10324
8
- megadetector/api/batch_processing/api_core/server_job_status_table.py,sha256=P621Df7RTTKqW8VlxnCqkBtIO4Ko5bSS6WbU0ETzPGY,5984
9
- megadetector/api/batch_processing/api_core/server_orchestration.py,sha256=LYHABzhOvP0NrM1VIjI6Vwb95YZ5xjQ52mUJW8oIOQ0,17003
10
- megadetector/api/batch_processing/api_core/server_utils.py,sha256=uJvnW50lSE_LnRtEyrFI2dbVSecmGudaRhUH6NcAx1M,3100
11
- megadetector/api/batch_processing/api_core/batch_service/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
- megadetector/api/batch_processing/api_core/batch_service/score.py,sha256=_hjUBIe0s9wmpmQwwDg-fd7tJMCn8735zJcgF15mTFo,17354
13
- megadetector/api/batch_processing/api_core_support/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
- megadetector/api/batch_processing/api_core_support/aggregate_results_manually.py,sha256=pPLRVb54kMzcndiRQx0JGna3v9cSX__hBc_7PZ8NFEU,2274
15
- megadetector/api/batch_processing/api_support/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
- megadetector/api/batch_processing/api_support/summarize_daily_activity.py,sha256=5H3DyXtdIW5uCp09Fbu9Tdf0hgfNKYnzv7v8Q7CPsDc,5382
17
- megadetector/api/batch_processing/data_preparation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
- megadetector/api/batch_processing/integration/digiKam/setup.py,sha256=7P1X3JYrBDXmLUeLRrzxNfDkL5lo-pY8nXsp9Cz8rOI,203
19
- megadetector/api/batch_processing/integration/digiKam/xmp_integration.py,sha256=zk5s7dD-FIkNnRxECT-0TAuBw7R__Or5_ft7Ha3iqMM,17774
20
- megadetector/api/batch_processing/integration/eMammal/test_scripts/config_template.py,sha256=UnvrgaFRBu59MuVUJa2WpG8ebcOJWcNeZEx6GWuYLzc,73
21
- megadetector/api/batch_processing/integration/eMammal/test_scripts/push_annotations_to_emammal.py,sha256=keqru1Ktbrj6J6TBEUm3e5N0Ps_0G2X4u4YVavWvDiU,3576
22
- megadetector/api/batch_processing/integration/eMammal/test_scripts/select_images_for_testing.py,sha256=OYMu97p8vprSv03QcnS6aSxPBocn9sgaozfUqq_JpyM,1369
23
- megadetector/api/synchronous/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24
- megadetector/api/synchronous/api_core/animal_detection_api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
- megadetector/api/synchronous/api_core/animal_detection_api/api_backend.py,sha256=g4HvPJ1bynLPzL79yta0GtWunxb8RjCADF56_YbYCsA,4955
26
- megadetector/api/synchronous/api_core/animal_detection_api/api_frontend.py,sha256=f16J7OBN87Tv0vVIIpXlyyVDeT6qYXDe5Kpr5XGqhdQ,10233
27
- megadetector/api/synchronous/api_core/animal_detection_api/config.py,sha256=05fVcLx0KK3wWFi62Mr-m_soewVn81qqeObUh-a2mrA,982
28
- megadetector/api/synchronous/api_core/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
29
- megadetector/api/synchronous/api_core/tests/load_test.py,sha256=bxyk3Oufl0V79vRsCPeRtWlE2o2KRtVgiqs7TSyP-iU,3277
30
- megadetector/classification/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
31
- megadetector/classification/aggregate_classifier_probs.py,sha256=gj6PBCe12Z05r3FbOHXuNJHPWyIogoQJvt4kFzApOqg,3429
32
- megadetector/classification/analyze_failed_images.py,sha256=boY5MupCWEceHHpiJ4au7Rhz8bzmABlTz2B5w08V2qQ,8446
33
- megadetector/classification/cache_batchapi_outputs.py,sha256=PvbQZYjskIUlzqQl3TDs0bptqCS37rmU14Ix9a5TPRE,6308
34
- megadetector/classification/create_classification_dataset.py,sha256=bxj3SRyARQfP2ohRT7zEdge_hfs8iBnDETGQWcvNBuI,25467
35
- megadetector/classification/crop_detections.py,sha256=gFqUch8iapeqlgSU7VSDBB3LgetyyfX5xU3lI9o4Ulk,20438
36
- megadetector/classification/csv_to_json.py,sha256=hXxUqM92e9AtZVk_BkkjHNi2gMkXHpwmDnYv_uplLxA,5889
37
- megadetector/classification/detect_and_crop.py,sha256=1rdR9uEURwNO6CAPdRuOc3SmiBLNMwYPUYcMaV3mLWI,37029
38
- megadetector/classification/evaluate_model.py,sha256=ed6LrBo-U49Q_0tbaEExVZI3GOdA1BVUnc01WwCDUzU,19320
39
- megadetector/classification/identify_mislabeled_candidates.py,sha256=zOWHmWeaiOpM9c0s1uHOKgxJSHyJJR-oAM4R6f1c7T0,5032
40
- megadetector/classification/json_to_azcopy_list.py,sha256=146gUlCOMw5oaiZzNR2z0q1-gn6q56hkxIfY4lMiPVE,1670
41
- megadetector/classification/json_validator.py,sha256=uLHWs9X1r_Hi5Gq7zqpQYl6mDc_7M2KAnbmU5Hu_EXs,26553
42
- megadetector/classification/map_classification_categories.py,sha256=2vAfbVnVtyq38SuHpdo3H_kjt8ZGc6FUOyl50VxHjMM,10679
43
- megadetector/classification/merge_classification_detection_output.py,sha256=rDYj6vEQT78nP3bsbrnyAGgHTJ3yxQFYIVQtpdWJxDw,20015
44
- megadetector/classification/prepare_classification_script.py,sha256=zE8j3wi8YJBkEnuqkIb-SK8xoEnAu-XtlkSiO8-zpdQ,6510
45
- megadetector/classification/prepare_classification_script_mc.py,sha256=zQV6Vlr0cQxPrFLNk33RlPKAFPA4VuhlHsz-FtAIWv4,7190
46
- megadetector/classification/run_classifier.py,sha256=8PtkQzCUceOyoYxMfriJzA9ZLz_-YAd3OEr2865i3SM,9339
47
- megadetector/classification/save_mislabeled.py,sha256=gNcMK7zVo-Q4XChiB-zVJMcwE6uDz6r4EgQA0KaE5sI,3408
48
- megadetector/classification/train_classifier.py,sha256=Ps-I7clNZsXht8yLjXP2ZSiqCMZqXYhzuldSkPsuW64,32338
49
- megadetector/classification/train_classifier_tf.py,sha256=aounVoV20Iz1X5VZzKfJEacUeXfA8o6DBGm0yrxPT08,28091
50
- megadetector/classification/train_utils.py,sha256=5XnwPGtIjtDFu4xend8BH97zYhulUhF0BJHA-uYzojg,11333
51
- megadetector/classification/efficientnet/__init__.py,sha256=e-jfknjzCc5a0CSW-TaZ2vi0SPU1OMIsayoz2s94QAo,182
52
- megadetector/classification/efficientnet/model.py,sha256=qJHWV9-rYKa4E_TIee5N_OjRhqDdM-icPpoMap3Q5HM,17040
53
- megadetector/classification/efficientnet/utils.py,sha256=dzrDrQQcvINdJFbODmrHQMUaM0RaUbct52zcSprseAg,24693
54
- megadetector/data_management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
- megadetector/data_management/camtrap_dp_to_coco.py,sha256=WC5u5nK5BwXpV26_pGy6CppQryJMgsJ9NtDbGIRQqLg,8629
56
- megadetector/data_management/cct_json_utils.py,sha256=DV4DX2gjkdR88d4KJAppuX830dqxwxcmQrqJrxEE9Z0,20150
57
- megadetector/data_management/cct_to_md.py,sha256=Q6ika31wwHLdRcdH_0QFs2o5elu44rhF4UEJ-u3edpk,5441
58
- megadetector/data_management/cct_to_wi.py,sha256=hnFErIlBDmhZtBv21kDW14MSdHlUjwtCGn2vnG-cN34,9771
59
- megadetector/data_management/coco_to_labelme.py,sha256=bDDuVzTcHdeDXt08hHC5ClqDfloexmp0LO2TH-6ltfg,9049
60
- megadetector/data_management/coco_to_yolo.py,sha256=0Z4gmE_OcORflaOR-zQ0YmGvKf4Gk5zBVmVgiZ0QIdg,29425
61
- megadetector/data_management/generate_crops_from_cct.py,sha256=Esq2Vlvp1AQvD8bmtC15OvoTZTHASBfcIVIuisxXT08,4383
62
- megadetector/data_management/get_image_sizes.py,sha256=2b6arj4gvoN-9f61lC3t1zAFFwYFxfb2iL83Tstoiik,6602
63
- megadetector/data_management/labelme_to_coco.py,sha256=8RUXALXbLpmS7UYUet4BAe9JVSDW7ojwDDpxYs072ZI,21231
64
- megadetector/data_management/labelme_to_yolo.py,sha256=dRePSOwU_jiCr0EakDQCz1Ct-ZHDxDglUk4HbM1LfWc,10034
65
- megadetector/data_management/mewc_to_md.py,sha256=FQ57B0nJ6V0ZxmfvkWUNQ2fY9JZoHNwQ5W0aLwiY-Ds,13398
66
- megadetector/data_management/ocr_tools.py,sha256=T9ClY3B-blnK3-UF1vpVdageknYsykm_6FAfqn0kliU,32529
67
- megadetector/data_management/read_exif.py,sha256=TIPf1OHFhuDq7M2H9MxcEEvN17G0dpJTriRTtiqIvxA,30474
68
- megadetector/data_management/remap_coco_categories.py,sha256=xbU3JW6o25YL8vV83KsOzK6_u1gGGbWDo1G0eOj4ncE,5123
69
- megadetector/data_management/remove_exif.py,sha256=vIWnJfw1i9JgyQKUDGEzzqkHro4ndykIPFWhtkm6RAU,2502
70
- megadetector/data_management/rename_images.py,sha256=ikIj_b5DY1rgaAn9n_IbwsnugAolczFNivh4xzfLPy8,6915
71
- megadetector/data_management/resize_coco_dataset.py,sha256=AaiV7efIcNnqsXsnQckmHq2G__7ZQHBV_jN6rhZfMjo,6810
72
- megadetector/data_management/speciesnet_to_md.py,sha256=VKi51sZyal08qBNNHX-63PjV0_B9JSg2hyPc0Dn5crs,1422
73
- megadetector/data_management/wi_download_csv_to_coco.py,sha256=ilnJZhNZK-FGUR-AfUSWjIDUk9Gytgxw7IOK_N8WKLE,8350
74
- megadetector/data_management/yolo_output_to_md_output.py,sha256=0ewFhTxdv8H5jaTv4kTpoxdzmOYFHbizvja41VCA_Ls,18307
75
- megadetector/data_management/yolo_to_coco.py,sha256=IbSsY1lJz5yOC8AkIJGpOMUIx8ol-ktsZ2EsI7P4Woc,27616
76
- megadetector/data_management/annotations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
77
- megadetector/data_management/annotations/annotation_constants.py,sha256=1597MpAr_HdidIHoDFj4RgUO3K5e2Xm2bGafGeonR2k,953
78
- megadetector/data_management/databases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
79
- megadetector/data_management/databases/add_width_and_height_to_db.py,sha256=X7A_iniGwlkhZ0jUNm564GT_mH2_RJGLD0aGP9cBhY0,749
80
- megadetector/data_management/databases/combine_coco_camera_traps_files.py,sha256=g1j8vc8d4bm5m3ts5ZI3TrOOs2FzZ575QY0akyMrClI,6889
81
- megadetector/data_management/databases/integrity_check_json_db.py,sha256=FUyw-cUEuQtg27y2N7GuZsh-HPTbfn7H3b3ws8FYG4Y,17717
82
- megadetector/data_management/databases/subset_json_db.py,sha256=0tKB_twdEsXxj9w2KOfQmXv4Hhbvbq3Aes2UMQG9yYU,4272
83
- megadetector/data_management/importers/add_nacti_sizes.py,sha256=jjGTpd36g5w7nLIeOatXRwu1Uti2GiGgP3-61QSg8oA,1156
84
- megadetector/data_management/importers/add_timestamps_to_icct.py,sha256=5l1TkWq3X4Mxed7zlZ07U1RQcjbzBnwcoftNiaruigM,2364
85
- megadetector/data_management/importers/animl_results_to_md_results.py,sha256=duvQkfFzONYHdTsJrhHyufpamK55r41IjkjFuPY7WmE,4698
86
- megadetector/data_management/importers/auckland_doc_test_to_json.py,sha256=tT4XnvY3c5idDkQByfN6Z646CNiCprS-75ytjbMbnVY,12911
87
- megadetector/data_management/importers/auckland_doc_to_json.py,sha256=EoNsAJvzTwcgHspE05eO0LHazMVYM7-yzFBit0FiJWk,5970
88
- megadetector/data_management/importers/awc_to_json.py,sha256=e1HjShGS2WC-l99FV89g1u0o2v5990Vh9XsjIukg6qQ,5327
89
- megadetector/data_management/importers/bellevue_to_json.py,sha256=mtlugpWhFjqBs4zgKvPGmBjWSM640BczzVV65zOHWVo,7918
90
- megadetector/data_management/importers/cacophony-thermal-importer.py,sha256=4o7gyX-uUlS3rkQZlOUGMaaUVT_pdTizcuXw4rvDrE4,28577
91
- megadetector/data_management/importers/carrizo_shrubfree_2018.py,sha256=ah14pfzLuDUph--qUqRqvWszOFY245rsIfAgCEF7F_I,7858
92
- megadetector/data_management/importers/carrizo_trail_cam_2017.py,sha256=gwpL0sM82A6UBn2qWilP15D-1lOzQchZuhxXMzZ_7Ws,8862
93
- megadetector/data_management/importers/cct_field_adjustments.py,sha256=wQmcntZNpHYRGjZvOcXqPxhAGdn1pDZa1pAXgTAyKmI,1348
94
- megadetector/data_management/importers/channel_islands_to_cct.py,sha256=yEhfdgrY7omQnhjn-q17C96uilNTI5M2EqYBFKEVxJU,29488
95
- megadetector/data_management/importers/ena24_to_json.py,sha256=7lv3Oe7mS4G1JEzagf8Pa4FMTqIu4ZGmn2AVykpJGXA,8270
96
- megadetector/data_management/importers/filenames_to_json.py,sha256=Jc_FydTiZWsB6WZp0UdVsmtAMTDNy8SHuEKaUI2glnM,10521
97
- megadetector/data_management/importers/helena_to_cct.py,sha256=IVTXXxDDxtbvYZaABCmnYWi2ZJ_1xpAXQG1TjOhRuVE,8712
98
- megadetector/data_management/importers/idaho-camera-traps.py,sha256=9BpMwygyN8OLimGsHIodNrikVgSK9SGkZJ0c10GxT-0,54112
99
- megadetector/data_management/importers/idfg_iwildcam_lila_prep.py,sha256=ql0fnO-IZuyT4611n8oYlTMDibhiDLDES1za1o6BEck,8194
100
- megadetector/data_management/importers/import_desert_lion_conservation_camera_traps.py,sha256=eILnUvSOR7upfewX_44cM8d73E9UQQxKYTkPUfIPMrY,12985
101
- megadetector/data_management/importers/jb_csv_to_json.py,sha256=IPoXwdz2OhrjMyK1Yv98PVmAD4VBZ9prSuXhx1xLfcg,3726
102
- megadetector/data_management/importers/mcgill_to_json.py,sha256=dfSxU1hHimyGT6Zt64XFrW63GWGsdKpqRrp5PE--xUw,6702
103
- megadetector/data_management/importers/missouri_to_json.py,sha256=C0ia3eCEZujVUKE2gmQc6ScsK8kXWM7m0ibeKgHfXNo,14848
104
- megadetector/data_management/importers/nacti_fieldname_adjustments.py,sha256=1oDCSuFXhc2b7JPIzkSb3DkusacdAjMM2GQZnhfFQCg,2027
105
- megadetector/data_management/importers/noaa_seals_2019.py,sha256=oar378j46fm27ygcbjrgN1rbq6h1SC8utAdSPNqiQt4,5152
106
- megadetector/data_management/importers/osu-small-animals-to-json.py,sha256=wBbnY8kqZrzRiujrNK750DB3mq14EyIz4Zlx9JHRTkw,10096
107
- megadetector/data_management/importers/pc_to_json.py,sha256=VmVvY5Fr8jMLmRkDZI9CuyLvrNuLrspJA9Q8Auxbw1A,10762
108
- megadetector/data_management/importers/plot_wni_giraffes.py,sha256=KdEjbItDOXbXj0fr0celfMp7z31Rr3S29SLWBCMY-4M,3772
109
- megadetector/data_management/importers/prepare_zsl_imerit.py,sha256=ohrUaTXIGg1M4_liptWaPa-4g3yNvc1E4o_knfHSE-8,3775
110
- megadetector/data_management/importers/raic_csv_to_md_results.py,sha256=37ycjxUcLPannopea5shCIpFnsUcROOx_0BpuQ0Pu6Q,15921
111
- megadetector/data_management/importers/rspb_to_json.py,sha256=y03v1d1un9mI3HZRCZinMB1pEkNvTb70S7Qkr3F76qg,9841
112
- megadetector/data_management/importers/save_the_elephants_survey_A.py,sha256=lugw8m5Nh2Fhs-FYo9L0mDL3_29nAweLxEul6GekdkI,10669
113
- megadetector/data_management/importers/save_the_elephants_survey_B.py,sha256=SWClXENsIePwifP8eJeRsj3kh3Bztl6Kzc_BdqNZvFw,11172
114
- megadetector/data_management/importers/snapshot_safari_importer.py,sha256=dQ1GmpHcrQCQF9YZ0UaLTvc_3aOZEDqWGcxzYQeq4ho,23605
115
- megadetector/data_management/importers/snapshot_serengeti_lila.py,sha256=-aYq_5IxhpcR6oxFYYVv98WVnGAr0mnVkbX-oJCPd8M,33865
116
- megadetector/data_management/importers/sulross_get_exif.py,sha256=Bt1tGYtr5CllxCe2BL8uI3SfPu3e1SSqijnOz--iRqQ,2071
117
- megadetector/data_management/importers/timelapse_csv_set_to_json.py,sha256=B9VbBltf3IdPBI2O1Cmg8wODhlIML4MQpjdhTFD4GP4,15916
118
- megadetector/data_management/importers/ubc_to_json.py,sha256=UhZ2P6WlLioLEPkfo7N7f168GErz7hQld00SSqOQ_Zg,14881
119
- megadetector/data_management/importers/umn_to_json.py,sha256=wCVgvz1x7gL67s1Avyx0NwBvwSjhNMcAwOnDHR0O5G0,16185
120
- megadetector/data_management/importers/wellington_to_json.py,sha256=TQivUZSgD-PeudGRAsgmsYznxDVaOPbbV4V9scnmZFg,7688
121
- megadetector/data_management/importers/wi_to_json.py,sha256=tdscGc8SQdRbtjsUVQyCBcxR7_TjPNb_A6OLLUhOe9I,13663
122
- megadetector/data_management/importers/zamba_results_to_md_results.py,sha256=DD13mDXAscQQekNSoTOFYROBfNdrLPVJnb_B32esesI,5300
123
- megadetector/data_management/importers/eMammal/copy_and_unzip_emammal.py,sha256=CoP8rZOuLDIIL5jajB4WLnMhum19Ol-UT4W25FiF3zE,6085
124
- megadetector/data_management/importers/eMammal/eMammal_helpers.py,sha256=Sv6PBAMDdlgwiek6Q3R6Rjio2RjtA-JpfgBr_Fmr9kA,6838
125
- megadetector/data_management/importers/eMammal/make_eMammal_json.py,sha256=6C_-6Qk-Xhz_87DEPHA-txw90AvXrybJy1PbQXQbqwo,6987
126
- megadetector/data_management/importers/snapshotserengeti/make_full_SS_json.py,sha256=khE3W0pO3Uq-UCfrLW_rpzWqjLll2JoBc360XeAuUGc,4126
127
- megadetector/data_management/importers/snapshotserengeti/make_per_season_SS_json.py,sha256=sAwvcR2siwblgY3LfTsbH4mXOXvJZCA246QIsQWuQBA,4316
128
- megadetector/data_management/lila/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
129
- megadetector/data_management/lila/add_locations_to_island_camera_traps.py,sha256=0vLRoxVT4gbEWEDEM9_qDyKm7DW_J7lVEbJDih0U7cY,2930
130
- megadetector/data_management/lila/add_locations_to_nacti.py,sha256=PJWuzVKswjEviehlNqACmNWFefhwTh9qeTubTtoq6eo,5394
131
- megadetector/data_management/lila/create_lila_blank_set.py,sha256=SBwpM0-pycW37TESXaJlc2oo_qIxYJoOzHhmmnBHWWI,19826
132
- megadetector/data_management/lila/create_lila_test_set.py,sha256=nnjaxbK-5uIP7hUT8rqlnWepKXauGEQsRS5-H8rOVrA,5184
133
- megadetector/data_management/lila/create_links_to_md_results_files.py,sha256=MvaPBAgdwoxaNrRaKZ8mGaOCky1BYXlrT08tPG9BrpM,3803
134
- megadetector/data_management/lila/download_lila_subset.py,sha256=0tzz43-uBA6fEPoxH7xy1yDXmwgwYcb5Wm11F6zZQtw,5477
135
- megadetector/data_management/lila/generate_lila_per_image_labels.py,sha256=bwixmPdgVDHyX-OsNfZkCK5jkumf4x3k5tvSFv1iRzI,18240
136
- megadetector/data_management/lila/get_lila_annotation_counts.py,sha256=DWysGF5y7E_RYEoAyvR5RUPTOZVbauTxfAwFcIbn5sc,5622
137
- megadetector/data_management/lila/get_lila_image_counts.py,sha256=UxXS5RDnSA_WbxE92qN-N7p-qR-jbyTsTZ7duLo06us,3620
138
- megadetector/data_management/lila/lila_common.py,sha256=74ecaGItH4AtCYeY1WSejLIcylhJPCJ1y97gYYL34PM,11080
139
- megadetector/data_management/lila/test_lila_metadata_urls.py,sha256=TPNkULZM3zeOLucD-KSGwD8tHsmGY1uHbCBV2_vPpY0,5080
140
- megadetector/detection/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
141
- megadetector/detection/process_video.py,sha256=SGCp98nYI-1LZnTwrTOFhiGs1PpFjrebsI078D2KC-Q,54470
142
- megadetector/detection/pytorch_detector.py,sha256=fpeAcWvSUsH4agQp1nq-yD-vtOkbz8b6M2ohvD_AzEs,45331
143
- megadetector/detection/run_detector.py,sha256=7Q6db9HzMLrsYtarR73_JEL9ESNCLtW28JP7cVrtTtw,39242
144
- megadetector/detection/run_detector_batch.py,sha256=2HrzCtQO1abILB_GnqhYiafdzIxW0X339m-ctY1cs_o,73052
145
- megadetector/detection/run_inference_with_yolov5_val.py,sha256=Ofu9B4yOmWso-S6JYalK0f_CvsG5tr2gkW_-rDskMD0,55291
146
- megadetector/detection/run_tiled_inference.py,sha256=vw0713eNuMiEOjHfweQl58zPHNxPOMdFWZ8bTDLhlMY,37883
147
- megadetector/detection/tf_detector.py,sha256=t9O6J7r1wHOkKbrwchducdJrAHSw38DDA7rF7_0urn0,8522
148
- megadetector/detection/video_utils.py,sha256=XqaaF8YQX-goSzHEoHasmkuNF7DrbFDil0Xd9KjHb5Q,43821
149
- megadetector/postprocessing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
150
- megadetector/postprocessing/add_max_conf.py,sha256=qTE1_0RwGAy6jLDkHrIo2pS84yNbUV11s4IZuAYGdIU,1514
151
- megadetector/postprocessing/categorize_detections_by_size.py,sha256=YdapcvjA6Dz2dPa2AFf1Dwyl7C-OmmP4G4OjhTOuaF4,5797
152
- megadetector/postprocessing/classification_postprocessing.py,sha256=kzTt83ZwqT5J4DxXQLPsgFxjeaRta3Q2rajm-I84uh4,40405
153
- megadetector/postprocessing/combine_batch_outputs.py,sha256=va6v1ZZzbQlq16S3gEqHKI5RbBuwRQ6ZoLAdDbIWYOQ,8416
154
- megadetector/postprocessing/compare_batch_results.py,sha256=dtRbutrJQNb0e9VO5bOQXMpPTj-rYJqrqrE3AaM6-NU,85613
155
- megadetector/postprocessing/convert_output_format.py,sha256=HwThfK76UPEAGa3KQbJ_tMKIrUvJ3JhKoQVWJt9dPBk,15447
156
- megadetector/postprocessing/create_crop_folder.py,sha256=VIjgg_NIS3VkojjdTYFRxSusWDur0F9gr2lgzO4fbiw,16146
157
- megadetector/postprocessing/detector_calibration.py,sha256=rzAsiUJhw8Y4RxSK1SMnsdjI3MYkFA9NP5vJ7CNsX0I,21820
158
- megadetector/postprocessing/load_api_results.py,sha256=rHH3brs7R2_p5bLcIoryVldRMQ4b32CMK4-0Kiej_SI,6971
159
- megadetector/postprocessing/md_to_coco.py,sha256=VfAXHSFZsMfzu1ppetZGDEG9ennJouIuUmFHuJdNtQY,15967
160
- megadetector/postprocessing/md_to_labelme.py,sha256=DDCsQpxZXQxWjPlsg1DM5yE33Fc_c8KatuDgt66Q8rQ,11696
161
- megadetector/postprocessing/md_to_wi.py,sha256=Yq-WdbWPcwkGkF5Iw7c6Ua6Ky723jYwJWY8Kl_KfgRE,1271
162
- megadetector/postprocessing/merge_detections.py,sha256=GfoDtDUdOyv9M4p8tTzUuaEPsgnmHu1pgnPsvSUfOq0,17778
163
- megadetector/postprocessing/postprocess_batch_results.py,sha256=uwMhxn6f4lOGg5ibIwV_D6Oam7TH9UIrXrcHxwIMaj4,85469
164
- megadetector/postprocessing/remap_detection_categories.py,sha256=d9IYTa0i_KbbrarJc_mczABmdwypscl5-KpK8Hx_z8o,6640
165
- megadetector/postprocessing/render_detection_confusion_matrix.py,sha256=_wsk4W0PbNiqmFuHy-EA0Z07B1tQLMsdCTPatnHAdZw,27382
166
- megadetector/postprocessing/separate_detections_into_folders.py,sha256=ua7mBe1Vg4-_JC6ZBhqPfv6uMBqfpIR4o_cmZo-2obY,33836
167
- megadetector/postprocessing/subset_json_detector_output.py,sha256=NcoQANmCrw3A07LFfWEOhdP6-V1SHpHmQwGE8SFggQ4,33993
168
- megadetector/postprocessing/top_folders_to_bottom.py,sha256=Dqk-KZXiRlIYlmLZmk6aUapmaaLJUKOf8wK1kxt9W6A,6283
169
- megadetector/postprocessing/validate_batch_results.py,sha256=_ptSqmtEd8VhHHho5wG7wN7_-hCWvZOKj7tMt9PkaB4,11586
170
- megadetector/postprocessing/repeat_detection_elimination/find_repeat_detections.py,sha256=VstahP4-XIA9tAIn0RlWyUoJEVtEyaukImNBkhexGBo,9538
171
- megadetector/postprocessing/repeat_detection_elimination/remove_repeat_detections.py,sha256=tARPxuY0OyQgpKU2XqiQPko3f-hHnWuISB8ZlZgXwxI,2819
172
- megadetector/postprocessing/repeat_detection_elimination/repeat_detections_core.py,sha256=JDHhkDEmrdUZsVnf9LC4ZZVd9jYmMKdUwdbzMz-F400,67923
173
- megadetector/taxonomy_mapping/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
174
- megadetector/taxonomy_mapping/map_lila_taxonomy_to_wi_taxonomy.py,sha256=6D_YHTeWTs6O8S9ABog2t9-wfQSh9dW2k9XTqXUZKfo,17927
175
- megadetector/taxonomy_mapping/map_new_lila_datasets.py,sha256=q6GZ3uUhFaLaGrVPvViZcyzbZJARR3Q557oGV8h0D9Y,4245
176
- megadetector/taxonomy_mapping/prepare_lila_taxonomy_release.py,sha256=kemgxFTriz92Z4fJL0FSimmhhLtC3nBZuZ-Cy9cl1kM,4812
177
- megadetector/taxonomy_mapping/preview_lila_taxonomy.py,sha256=X0keNAaM3l22XPf9ohRdYfob539Fnl7X4PeftZNLjXE,17795
178
- megadetector/taxonomy_mapping/retrieve_sample_image.py,sha256=4cfWsLRwS_EwAmQr2p5tA_W6glBK71tSjPfaHxUZQWs,1979
179
- megadetector/taxonomy_mapping/simple_image_download.py,sha256=wLhyMSocX_JhDGA6yLbEfpysz8MMI8YFJWaxyA-GZ9c,6932
180
- megadetector/taxonomy_mapping/species_lookup.py,sha256=Z7nVoyh7bi8dHT0cJ7U6lEyi2xJOQra_rlv-DREZ_-U,29811
181
- megadetector/taxonomy_mapping/taxonomy_csv_checker.py,sha256=A_zPwzY-ERz6xawxgk2Tpfsycl-1sDcjUiuaXXBppi8,4850
182
- megadetector/taxonomy_mapping/taxonomy_graph.py,sha256=ayrTFseVaIMbtMXhnjWCkZdxI5SAVe_BUtnanGewQpU,12263
183
- megadetector/taxonomy_mapping/validate_lila_category_mappings.py,sha256=1qyZr23bvZSVUYLQnO1XAtIZ4jdpARA5dxt8euKVyOA,2527
184
- megadetector/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
185
- megadetector/utils/azure_utils.py,sha256=0BdnkG2hW-X0yFpsJqmBhOd2wysz_LvhuyImPJMVPJs,6271
186
- megadetector/utils/ct_utils.py,sha256=Yr8NNg9KWo6dVc1dEMS6rZP0zb-HlqkgfnkxfkARRLE,27366
187
- megadetector/utils/directory_listing.py,sha256=42t8lDz8V3vPkGTGUd-UnSw2xKpqfpvb4BT-6xVAUmY,9689
188
- megadetector/utils/gpu_test.py,sha256=1NxvyJrD4mq_uuCysT0q9pSJyR-gpdQogB6O8TP4E2Q,3665
189
- megadetector/utils/md_tests.py,sha256=bMloXfts_sxG4vTEZq5pmUJ8-WLnsoU8mYkdz732YrE,75028
190
- megadetector/utils/path_utils.py,sha256=LDnFIbuajlc_iIlG4CzOoFml-RsyqFRBLKdPxvoQJz8,51659
191
- megadetector/utils/process_utils.py,sha256=K7-ZW_bJbMgeDBLDhYHMV84urM8H7L6IddQS5z3UgBw,5824
192
- megadetector/utils/sas_blob_utils.py,sha256=k76EcMmJc_otrEHcfV2fxAC6fNhxU88FxM3ddSYrsKU,16917
193
- megadetector/utils/split_locations_into_train_val.py,sha256=jvaDu1xKB51L3Xq2nXQo0XtXRjNRf8RglBApl1g6gHo,10101
194
- megadetector/utils/string_utils.py,sha256=ZQapJodzvTDyQhjZgMoMl3-9bqnKAUlORpws8Db9AkA,2050
195
- megadetector/utils/url_utils.py,sha256=yybWwJ-vl2A6Fci66i-xt_dl3Uqh72Ylnb8XOT2Grog,14835
196
- megadetector/utils/wi_utils.py,sha256=SNXF2GnBvzKrGw1dUexty9dLIyPBMgeARQb79e5yf7c,115008
197
- megadetector/utils/write_html_image_list.py,sha256=MhVAAv6th9Q2fldtE8hp_hHWFgJ_pcKJEk3YiK6dWY4,9415
198
- megadetector/visualization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
199
- megadetector/visualization/plot_utils.py,sha256=lOfU3uPrcuHZagV_1SN8erT8PujIepocgw6KZ17Ej6c,10671
200
- megadetector/visualization/render_images_with_thumbnails.py,sha256=kgJYW8BsqRO4C7T3sqItdBuSkZ64I1vOtIWAsVG4XBI,10589
201
- megadetector/visualization/visualization_utils.py,sha256=WU6S8J3be2jmBgEbXsLaX7wtJV6on0YytTLK4xHxoFE,75688
202
- megadetector/visualization/visualize_db.py,sha256=h1NSK_4ZR_NlwBn2JrYyCOv9C7_iqmLWWOk4T6YkyXw,25280
203
- megadetector/visualization/visualize_detector_output.py,sha256=oubAksx2V7YtBC34g5y4UOH0SVnIINGWjuvuacAaUBE,19112
204
- megadetector-5.0.27.dist-info/licenses/LICENSE,sha256=RMa3qq-7Cyk7DdtqRj_bP1oInGFgjyHn9-PZ3PcrqIs,1100
205
- megadetector-5.0.27.dist-info/METADATA,sha256=2IDbeR47q4bzJmiYx2BqnsmZ90_cMNf1hHmGw3tWoJg,6322
206
- megadetector-5.0.27.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
207
- megadetector-5.0.27.dist-info/top_level.txt,sha256=wf9DXa8EwiOSZ4G5IPjakSxBPxTDjhYYnqWRfR-zS4M,13
208
- megadetector-5.0.27.dist-info/RECORD,,