megadetector 5.0.28__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 +231 -224
  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 +340 -337
  65. megadetector/detection/pytorch_detector.py +304 -262
  66. megadetector/detection/run_detector.py +177 -164
  67. megadetector/detection/run_detector_batch.py +364 -363
  68. megadetector/detection/run_inference_with_yolov5_val.py +328 -325
  69. megadetector/detection/run_tiled_inference.py +256 -249
  70. megadetector/detection/tf_detector.py +24 -24
  71. megadetector/detection/video_utils.py +290 -282
  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 +415 -415
  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 +219 -146
  79. megadetector/postprocessing/detector_calibration.py +173 -168
  80. megadetector/postprocessing/generate_csv_report.py +508 -499
  81. megadetector/postprocessing/load_api_results.py +23 -20
  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 +313 -298
  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 -66
  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 +10 -10
  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 +1018 -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 +1457 -398
  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 +61 -61
  115. megadetector/utils/string_utils.py +147 -26
  116. megadetector/utils/url_utils.py +463 -173
  117. megadetector/utils/wi_utils.py +2629 -2526
  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 +401 -397
  122. megadetector/visualization/visualize_db.py +197 -190
  123. megadetector/visualization/visualize_detector_output.py +79 -73
  124. {megadetector-5.0.28.dist-info → megadetector-5.0.29.dist-info}/METADATA +135 -132
  125. megadetector-5.0.29.dist-info/RECORD +163 -0
  126. {megadetector-5.0.28.dist-info → megadetector-5.0.29.dist-info}/WHEEL +1 -1
  127. {megadetector-5.0.28.dist-info → megadetector-5.0.29.dist-info}/licenses/LICENSE +0 -0
  128. {megadetector-5.0.28.dist-info → megadetector-5.0.29.dist-info}/top_level.txt +0 -0
  129. megadetector/data_management/importers/add_nacti_sizes.py +0 -52
  130. megadetector/data_management/importers/add_timestamps_to_icct.py +0 -79
  131. megadetector/data_management/importers/animl_results_to_md_results.py +0 -158
  132. megadetector/data_management/importers/auckland_doc_test_to_json.py +0 -373
  133. megadetector/data_management/importers/auckland_doc_to_json.py +0 -201
  134. megadetector/data_management/importers/awc_to_json.py +0 -191
  135. megadetector/data_management/importers/bellevue_to_json.py +0 -272
  136. megadetector/data_management/importers/cacophony-thermal-importer.py +0 -793
  137. megadetector/data_management/importers/carrizo_shrubfree_2018.py +0 -269
  138. megadetector/data_management/importers/carrizo_trail_cam_2017.py +0 -289
  139. megadetector/data_management/importers/cct_field_adjustments.py +0 -58
  140. megadetector/data_management/importers/channel_islands_to_cct.py +0 -913
  141. megadetector/data_management/importers/eMammal/copy_and_unzip_emammal.py +0 -180
  142. megadetector/data_management/importers/eMammal/eMammal_helpers.py +0 -249
  143. megadetector/data_management/importers/eMammal/make_eMammal_json.py +0 -223
  144. megadetector/data_management/importers/ena24_to_json.py +0 -276
  145. megadetector/data_management/importers/filenames_to_json.py +0 -386
  146. megadetector/data_management/importers/helena_to_cct.py +0 -283
  147. megadetector/data_management/importers/idaho-camera-traps.py +0 -1407
  148. megadetector/data_management/importers/idfg_iwildcam_lila_prep.py +0 -294
  149. megadetector/data_management/importers/import_desert_lion_conservation_camera_traps.py +0 -387
  150. megadetector/data_management/importers/jb_csv_to_json.py +0 -150
  151. megadetector/data_management/importers/mcgill_to_json.py +0 -250
  152. megadetector/data_management/importers/missouri_to_json.py +0 -490
  153. megadetector/data_management/importers/nacti_fieldname_adjustments.py +0 -79
  154. megadetector/data_management/importers/noaa_seals_2019.py +0 -181
  155. megadetector/data_management/importers/osu-small-animals-to-json.py +0 -364
  156. megadetector/data_management/importers/pc_to_json.py +0 -365
  157. megadetector/data_management/importers/plot_wni_giraffes.py +0 -123
  158. megadetector/data_management/importers/prepare_zsl_imerit.py +0 -131
  159. megadetector/data_management/importers/raic_csv_to_md_results.py +0 -416
  160. megadetector/data_management/importers/rspb_to_json.py +0 -356
  161. megadetector/data_management/importers/save_the_elephants_survey_A.py +0 -320
  162. megadetector/data_management/importers/save_the_elephants_survey_B.py +0 -329
  163. megadetector/data_management/importers/snapshot_safari_importer.py +0 -758
  164. megadetector/data_management/importers/snapshot_serengeti_lila.py +0 -1067
  165. megadetector/data_management/importers/snapshotserengeti/make_full_SS_json.py +0 -150
  166. megadetector/data_management/importers/snapshotserengeti/make_per_season_SS_json.py +0 -153
  167. megadetector/data_management/importers/sulross_get_exif.py +0 -65
  168. megadetector/data_management/importers/timelapse_csv_set_to_json.py +0 -490
  169. megadetector/data_management/importers/ubc_to_json.py +0 -399
  170. megadetector/data_management/importers/umn_to_json.py +0 -507
  171. megadetector/data_management/importers/wellington_to_json.py +0 -263
  172. megadetector/data_management/importers/wi_to_json.py +0 -442
  173. megadetector/data_management/importers/zamba_results_to_md_results.py +0 -180
  174. megadetector/data_management/lila/add_locations_to_island_camera_traps.py +0 -101
  175. megadetector/data_management/lila/add_locations_to_nacti.py +0 -151
  176. megadetector-5.0.28.dist-info/RECORD +0 -209
@@ -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,209 +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=wZ25oDQ3spdI4a-8uii8F1UFX7JvBatIi1JLGLYPsHE,13399
66
- megadetector/data_management/ocr_tools.py,sha256=T9ClY3B-blnK3-UF1vpVdageknYsykm_6FAfqn0kliU,32529
67
- megadetector/data_management/read_exif.py,sha256=aQKkhZ70vs-WT-7mIbujxN44WyuQFP47utZ7azsWQM4,30595
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=oUF8tzqGmAwUwFKJKnEHQ1hOOtfnn018vWesRUndMGA,54471
142
- megadetector/detection/pytorch_detector.py,sha256=_ENSlQSE04wvj3J8Bx8W95PCl-vPkuAeBJ29si-LD50,45334
143
- megadetector/detection/run_detector.py,sha256=zNq90YtuFVcx6zQa4AOO2vK5m1HnSS-H0qxo8kJlLH4,39431
144
- megadetector/detection/run_detector_batch.py,sha256=hXsib0h_IeA9AF1tkAHiwov8TyUK_1OMUWiVvPiO1lU,73129
145
- megadetector/detection/run_inference_with_yolov5_val.py,sha256=Ofu9B4yOmWso-S6JYalK0f_CvsG5tr2gkW_-rDskMD0,55291
146
- megadetector/detection/run_tiled_inference.py,sha256=LbBatyumn_0CFv8yaglEvyzaaiSSHyA8s5X0vDbd2gQ,40469
147
- megadetector/detection/tf_detector.py,sha256=t9O6J7r1wHOkKbrwchducdJrAHSw38DDA7rF7_0urn0,8522
148
- megadetector/detection/video_utils.py,sha256=UY5MP4PXkoVMTGIAgQqXw9tu-9KWv52KI6OMywO3_a4,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=aTSTqFBACR8kjxE-tEQwcpDH8XogzIUj479gcIDgY18,61069
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=mnoPDl5_hBVYpzUZeH0IpD3ZY_yHJyROOJi275DHMKg,16146
157
- megadetector/postprocessing/detector_calibration.py,sha256=rzAsiUJhw8Y4RxSK1SMnsdjI3MYkFA9NP5vJ7CNsX0I,21820
158
- megadetector/postprocessing/generate_csv_report.py,sha256=A2j5FD7PDBVEh2foVEBCdSWzi5KDHoUDE0iwvhEw2Fg,19858
159
- megadetector/postprocessing/load_api_results.py,sha256=oV9QlqHYhsVUuZJqABWhK9M23q5SGfk2eQjw3JKhaBQ,7046
160
- megadetector/postprocessing/md_to_coco.py,sha256=VfAXHSFZsMfzu1ppetZGDEG9ennJouIuUmFHuJdNtQY,15967
161
- megadetector/postprocessing/md_to_labelme.py,sha256=DDCsQpxZXQxWjPlsg1DM5yE33Fc_c8KatuDgt66Q8rQ,11696
162
- megadetector/postprocessing/md_to_wi.py,sha256=Yq-WdbWPcwkGkF5Iw7c6Ua6Ky723jYwJWY8Kl_KfgRE,1271
163
- megadetector/postprocessing/merge_detections.py,sha256=GfoDtDUdOyv9M4p8tTzUuaEPsgnmHu1pgnPsvSUfOq0,17778
164
- megadetector/postprocessing/postprocess_batch_results.py,sha256=BusnOgrFCVv2p6NUd2k-uhiQKWHGXwhtVupUo4TgycE,85582
165
- megadetector/postprocessing/remap_detection_categories.py,sha256=d9IYTa0i_KbbrarJc_mczABmdwypscl5-KpK8Hx_z8o,6640
166
- megadetector/postprocessing/render_detection_confusion_matrix.py,sha256=_wsk4W0PbNiqmFuHy-EA0Z07B1tQLMsdCTPatnHAdZw,27382
167
- megadetector/postprocessing/separate_detections_into_folders.py,sha256=ua7mBe1Vg4-_JC6ZBhqPfv6uMBqfpIR4o_cmZo-2obY,33836
168
- megadetector/postprocessing/subset_json_detector_output.py,sha256=NcoQANmCrw3A07LFfWEOhdP6-V1SHpHmQwGE8SFggQ4,33993
169
- megadetector/postprocessing/top_folders_to_bottom.py,sha256=Dqk-KZXiRlIYlmLZmk6aUapmaaLJUKOf8wK1kxt9W6A,6283
170
- megadetector/postprocessing/validate_batch_results.py,sha256=_ptSqmtEd8VhHHho5wG7wN7_-hCWvZOKj7tMt9PkaB4,11586
171
- megadetector/postprocessing/repeat_detection_elimination/find_repeat_detections.py,sha256=VstahP4-XIA9tAIn0RlWyUoJEVtEyaukImNBkhexGBo,9538
172
- megadetector/postprocessing/repeat_detection_elimination/remove_repeat_detections.py,sha256=tARPxuY0OyQgpKU2XqiQPko3f-hHnWuISB8ZlZgXwxI,2819
173
- megadetector/postprocessing/repeat_detection_elimination/repeat_detections_core.py,sha256=JDHhkDEmrdUZsVnf9LC4ZZVd9jYmMKdUwdbzMz-F400,67923
174
- megadetector/taxonomy_mapping/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
175
- megadetector/taxonomy_mapping/map_lila_taxonomy_to_wi_taxonomy.py,sha256=6D_YHTeWTs6O8S9ABog2t9-wfQSh9dW2k9XTqXUZKfo,17927
176
- megadetector/taxonomy_mapping/map_new_lila_datasets.py,sha256=q6GZ3uUhFaLaGrVPvViZcyzbZJARR3Q557oGV8h0D9Y,4245
177
- megadetector/taxonomy_mapping/prepare_lila_taxonomy_release.py,sha256=kemgxFTriz92Z4fJL0FSimmhhLtC3nBZuZ-Cy9cl1kM,4812
178
- megadetector/taxonomy_mapping/preview_lila_taxonomy.py,sha256=d1m5U0ov6Zdf0Y5SiidqVfqHpMjmWPpliVD5bwMMvQ8,17698
179
- megadetector/taxonomy_mapping/retrieve_sample_image.py,sha256=4cfWsLRwS_EwAmQr2p5tA_W6glBK71tSjPfaHxUZQWs,1979
180
- megadetector/taxonomy_mapping/simple_image_download.py,sha256=wLhyMSocX_JhDGA6yLbEfpysz8MMI8YFJWaxyA-GZ9c,6932
181
- megadetector/taxonomy_mapping/species_lookup.py,sha256=Z7nVoyh7bi8dHT0cJ7U6lEyi2xJOQra_rlv-DREZ_-U,29811
182
- megadetector/taxonomy_mapping/taxonomy_csv_checker.py,sha256=A_zPwzY-ERz6xawxgk2Tpfsycl-1sDcjUiuaXXBppi8,4850
183
- megadetector/taxonomy_mapping/taxonomy_graph.py,sha256=fexDfHIqW9mJJ34JPbeW0FWQ56_6lUu1RRoe2B5rQjg,12262
184
- megadetector/taxonomy_mapping/validate_lila_category_mappings.py,sha256=1qyZr23bvZSVUYLQnO1XAtIZ4jdpARA5dxt8euKVyOA,2527
185
- megadetector/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
186
- megadetector/utils/azure_utils.py,sha256=0BdnkG2hW-X0yFpsJqmBhOd2wysz_LvhuyImPJMVPJs,6271
187
- megadetector/utils/ct_utils.py,sha256=cR1qbP_h-xh7020nuGrB55TvIytERHQrR6xuSXIkQJQ,27399
188
- megadetector/utils/directory_listing.py,sha256=42t8lDz8V3vPkGTGUd-UnSw2xKpqfpvb4BT-6xVAUmY,9689
189
- megadetector/utils/gpu_test.py,sha256=1NxvyJrD4mq_uuCysT0q9pSJyR-gpdQogB6O8TP4E2Q,3665
190
- megadetector/utils/md_tests.py,sha256=bMloXfts_sxG4vTEZq5pmUJ8-WLnsoU8mYkdz732YrE,75028
191
- megadetector/utils/path_utils.py,sha256=nl74fQfhoofE8Qpmb20mkP9xZYFIkNBgV88XvhnIMV0,53155
192
- megadetector/utils/process_utils.py,sha256=K7-ZW_bJbMgeDBLDhYHMV84urM8H7L6IddQS5z3UgBw,5824
193
- megadetector/utils/sas_blob_utils.py,sha256=k76EcMmJc_otrEHcfV2fxAC6fNhxU88FxM3ddSYrsKU,16917
194
- megadetector/utils/split_locations_into_train_val.py,sha256=ldTWD5s8Q14nCGedvL70FAf7W8xZ9cBtTxIWFeI7ehM,10711
195
- megadetector/utils/string_utils.py,sha256=ZQapJodzvTDyQhjZgMoMl3-9bqnKAUlORpws8Db9AkA,2050
196
- megadetector/utils/url_utils.py,sha256=yybWwJ-vl2A6Fci66i-xt_dl3Uqh72Ylnb8XOT2Grog,14835
197
- megadetector/utils/wi_utils.py,sha256=OmYSTSCiWIuEnDHcQimPPrsHWPCEL9sMGQn6G8B8XTc,100877
198
- megadetector/utils/write_html_image_list.py,sha256=MhVAAv6th9Q2fldtE8hp_hHWFgJ_pcKJEk3YiK6dWY4,9415
199
- megadetector/visualization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
200
- megadetector/visualization/plot_utils.py,sha256=lOfU3uPrcuHZagV_1SN8erT8PujIepocgw6KZ17Ej6c,10671
201
- megadetector/visualization/render_images_with_thumbnails.py,sha256=kgJYW8BsqRO4C7T3sqItdBuSkZ64I1vOtIWAsVG4XBI,10589
202
- megadetector/visualization/visualization_utils.py,sha256=5PLL8Wa_TKmrItPH6z_n-b8h5EHn84qxce0VM3paG2k,76276
203
- megadetector/visualization/visualize_db.py,sha256=h1NSK_4ZR_NlwBn2JrYyCOv9C7_iqmLWWOk4T6YkyXw,25280
204
- megadetector/visualization/visualize_detector_output.py,sha256=1zjess07B7FevT7lThNqotdNrMPKdUnPmEu1zyMxci0,20278
205
- megadetector-5.0.28.dist-info/licenses/LICENSE,sha256=RMa3qq-7Cyk7DdtqRj_bP1oInGFgjyHn9-PZ3PcrqIs,1100
206
- megadetector-5.0.28.dist-info/METADATA,sha256=9uFX27-meAxvB_zHprROT4U7qhss6MDFYvobGdGjPr8,6449
207
- megadetector-5.0.28.dist-info/WHEEL,sha256=GHB6lJx2juba1wDgXDNlMTyM13ckjBMKf-OnwgKOCtA,91
208
- megadetector-5.0.28.dist-info/top_level.txt,sha256=wf9DXa8EwiOSZ4G5IPjakSxBPxTDjhYYnqWRfR-zS4M,13
209
- megadetector-5.0.28.dist-info/RECORD,,