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.
- megadetector/api/batch_processing/api_core/batch_service/score.py +4 -5
- megadetector/api/batch_processing/api_core_support/aggregate_results_manually.py +1 -1
- megadetector/api/batch_processing/api_support/summarize_daily_activity.py +1 -1
- megadetector/api/batch_processing/integration/digiKam/xmp_integration.py +2 -2
- megadetector/api/batch_processing/integration/eMammal/test_scripts/push_annotations_to_emammal.py +1 -1
- megadetector/api/batch_processing/integration/eMammal/test_scripts/select_images_for_testing.py +1 -1
- megadetector/api/synchronous/api_core/tests/load_test.py +2 -3
- megadetector/classification/aggregate_classifier_probs.py +3 -3
- megadetector/classification/analyze_failed_images.py +5 -5
- megadetector/classification/cache_batchapi_outputs.py +5 -5
- megadetector/classification/create_classification_dataset.py +11 -12
- megadetector/classification/crop_detections.py +10 -10
- megadetector/classification/csv_to_json.py +8 -8
- megadetector/classification/detect_and_crop.py +13 -15
- megadetector/classification/evaluate_model.py +7 -7
- megadetector/classification/identify_mislabeled_candidates.py +6 -6
- megadetector/classification/json_to_azcopy_list.py +1 -1
- megadetector/classification/json_validator.py +29 -32
- megadetector/classification/map_classification_categories.py +9 -9
- megadetector/classification/merge_classification_detection_output.py +12 -9
- megadetector/classification/prepare_classification_script.py +19 -19
- megadetector/classification/prepare_classification_script_mc.py +23 -23
- megadetector/classification/run_classifier.py +4 -4
- megadetector/classification/save_mislabeled.py +6 -6
- megadetector/classification/train_classifier.py +1 -1
- megadetector/classification/train_classifier_tf.py +9 -9
- megadetector/classification/train_utils.py +10 -10
- megadetector/data_management/annotations/annotation_constants.py +1 -1
- megadetector/data_management/camtrap_dp_to_coco.py +45 -45
- megadetector/data_management/cct_json_utils.py +101 -101
- megadetector/data_management/cct_to_md.py +49 -49
- megadetector/data_management/cct_to_wi.py +33 -33
- megadetector/data_management/coco_to_labelme.py +75 -75
- megadetector/data_management/coco_to_yolo.py +189 -189
- megadetector/data_management/databases/add_width_and_height_to_db.py +3 -2
- megadetector/data_management/databases/combine_coco_camera_traps_files.py +38 -38
- megadetector/data_management/databases/integrity_check_json_db.py +202 -188
- megadetector/data_management/databases/subset_json_db.py +33 -33
- megadetector/data_management/generate_crops_from_cct.py +38 -38
- megadetector/data_management/get_image_sizes.py +54 -49
- megadetector/data_management/labelme_to_coco.py +130 -124
- megadetector/data_management/labelme_to_yolo.py +78 -72
- megadetector/data_management/lila/create_lila_blank_set.py +81 -83
- megadetector/data_management/lila/create_lila_test_set.py +32 -31
- megadetector/data_management/lila/create_links_to_md_results_files.py +18 -18
- megadetector/data_management/lila/download_lila_subset.py +21 -24
- megadetector/data_management/lila/generate_lila_per_image_labels.py +91 -91
- megadetector/data_management/lila/get_lila_annotation_counts.py +30 -30
- megadetector/data_management/lila/get_lila_image_counts.py +22 -22
- megadetector/data_management/lila/lila_common.py +70 -70
- megadetector/data_management/lila/test_lila_metadata_urls.py +13 -14
- megadetector/data_management/mewc_to_md.py +339 -340
- megadetector/data_management/ocr_tools.py +258 -252
- megadetector/data_management/read_exif.py +231 -224
- megadetector/data_management/remap_coco_categories.py +26 -26
- megadetector/data_management/remove_exif.py +31 -20
- megadetector/data_management/rename_images.py +187 -187
- megadetector/data_management/resize_coco_dataset.py +41 -41
- megadetector/data_management/speciesnet_to_md.py +41 -41
- megadetector/data_management/wi_download_csv_to_coco.py +55 -55
- megadetector/data_management/yolo_output_to_md_output.py +117 -120
- megadetector/data_management/yolo_to_coco.py +195 -188
- megadetector/detection/change_detection.py +831 -0
- megadetector/detection/process_video.py +340 -337
- megadetector/detection/pytorch_detector.py +304 -262
- megadetector/detection/run_detector.py +177 -164
- megadetector/detection/run_detector_batch.py +364 -363
- megadetector/detection/run_inference_with_yolov5_val.py +328 -325
- megadetector/detection/run_tiled_inference.py +256 -249
- megadetector/detection/tf_detector.py +24 -24
- megadetector/detection/video_utils.py +290 -282
- megadetector/postprocessing/add_max_conf.py +15 -11
- megadetector/postprocessing/categorize_detections_by_size.py +44 -44
- megadetector/postprocessing/classification_postprocessing.py +415 -415
- megadetector/postprocessing/combine_batch_outputs.py +20 -21
- megadetector/postprocessing/compare_batch_results.py +528 -517
- megadetector/postprocessing/convert_output_format.py +97 -97
- megadetector/postprocessing/create_crop_folder.py +219 -146
- megadetector/postprocessing/detector_calibration.py +173 -168
- megadetector/postprocessing/generate_csv_report.py +508 -499
- megadetector/postprocessing/load_api_results.py +23 -20
- megadetector/postprocessing/md_to_coco.py +129 -98
- megadetector/postprocessing/md_to_labelme.py +89 -83
- megadetector/postprocessing/md_to_wi.py +40 -40
- megadetector/postprocessing/merge_detections.py +87 -114
- megadetector/postprocessing/postprocess_batch_results.py +313 -298
- megadetector/postprocessing/remap_detection_categories.py +36 -36
- megadetector/postprocessing/render_detection_confusion_matrix.py +205 -199
- megadetector/postprocessing/repeat_detection_elimination/find_repeat_detections.py +57 -57
- megadetector/postprocessing/repeat_detection_elimination/remove_repeat_detections.py +27 -28
- megadetector/postprocessing/repeat_detection_elimination/repeat_detections_core.py +702 -677
- megadetector/postprocessing/separate_detections_into_folders.py +226 -211
- megadetector/postprocessing/subset_json_detector_output.py +265 -262
- megadetector/postprocessing/top_folders_to_bottom.py +45 -45
- megadetector/postprocessing/validate_batch_results.py +70 -70
- megadetector/taxonomy_mapping/map_lila_taxonomy_to_wi_taxonomy.py +52 -52
- megadetector/taxonomy_mapping/map_new_lila_datasets.py +15 -15
- megadetector/taxonomy_mapping/prepare_lila_taxonomy_release.py +14 -14
- megadetector/taxonomy_mapping/preview_lila_taxonomy.py +66 -66
- megadetector/taxonomy_mapping/retrieve_sample_image.py +16 -16
- megadetector/taxonomy_mapping/simple_image_download.py +8 -8
- megadetector/taxonomy_mapping/species_lookup.py +33 -33
- megadetector/taxonomy_mapping/taxonomy_csv_checker.py +14 -14
- megadetector/taxonomy_mapping/taxonomy_graph.py +10 -10
- megadetector/taxonomy_mapping/validate_lila_category_mappings.py +13 -13
- megadetector/utils/azure_utils.py +22 -22
- megadetector/utils/ct_utils.py +1018 -200
- megadetector/utils/directory_listing.py +21 -77
- megadetector/utils/gpu_test.py +22 -22
- megadetector/utils/md_tests.py +541 -518
- megadetector/utils/path_utils.py +1457 -398
- megadetector/utils/process_utils.py +41 -41
- megadetector/utils/sas_blob_utils.py +53 -49
- megadetector/utils/split_locations_into_train_val.py +61 -61
- megadetector/utils/string_utils.py +147 -26
- megadetector/utils/url_utils.py +463 -173
- megadetector/utils/wi_utils.py +2629 -2526
- megadetector/utils/write_html_image_list.py +137 -137
- megadetector/visualization/plot_utils.py +21 -21
- megadetector/visualization/render_images_with_thumbnails.py +37 -73
- megadetector/visualization/visualization_utils.py +401 -397
- megadetector/visualization/visualize_db.py +197 -190
- megadetector/visualization/visualize_detector_output.py +79 -73
- {megadetector-5.0.28.dist-info → megadetector-5.0.29.dist-info}/METADATA +135 -132
- megadetector-5.0.29.dist-info/RECORD +163 -0
- {megadetector-5.0.28.dist-info → megadetector-5.0.29.dist-info}/WHEEL +1 -1
- {megadetector-5.0.28.dist-info → megadetector-5.0.29.dist-info}/licenses/LICENSE +0 -0
- {megadetector-5.0.28.dist-info → megadetector-5.0.29.dist-info}/top_level.txt +0 -0
- megadetector/data_management/importers/add_nacti_sizes.py +0 -52
- megadetector/data_management/importers/add_timestamps_to_icct.py +0 -79
- megadetector/data_management/importers/animl_results_to_md_results.py +0 -158
- megadetector/data_management/importers/auckland_doc_test_to_json.py +0 -373
- megadetector/data_management/importers/auckland_doc_to_json.py +0 -201
- megadetector/data_management/importers/awc_to_json.py +0 -191
- megadetector/data_management/importers/bellevue_to_json.py +0 -272
- megadetector/data_management/importers/cacophony-thermal-importer.py +0 -793
- megadetector/data_management/importers/carrizo_shrubfree_2018.py +0 -269
- megadetector/data_management/importers/carrizo_trail_cam_2017.py +0 -289
- megadetector/data_management/importers/cct_field_adjustments.py +0 -58
- megadetector/data_management/importers/channel_islands_to_cct.py +0 -913
- megadetector/data_management/importers/eMammal/copy_and_unzip_emammal.py +0 -180
- megadetector/data_management/importers/eMammal/eMammal_helpers.py +0 -249
- megadetector/data_management/importers/eMammal/make_eMammal_json.py +0 -223
- megadetector/data_management/importers/ena24_to_json.py +0 -276
- megadetector/data_management/importers/filenames_to_json.py +0 -386
- megadetector/data_management/importers/helena_to_cct.py +0 -283
- megadetector/data_management/importers/idaho-camera-traps.py +0 -1407
- megadetector/data_management/importers/idfg_iwildcam_lila_prep.py +0 -294
- megadetector/data_management/importers/import_desert_lion_conservation_camera_traps.py +0 -387
- megadetector/data_management/importers/jb_csv_to_json.py +0 -150
- megadetector/data_management/importers/mcgill_to_json.py +0 -250
- megadetector/data_management/importers/missouri_to_json.py +0 -490
- megadetector/data_management/importers/nacti_fieldname_adjustments.py +0 -79
- megadetector/data_management/importers/noaa_seals_2019.py +0 -181
- megadetector/data_management/importers/osu-small-animals-to-json.py +0 -364
- megadetector/data_management/importers/pc_to_json.py +0 -365
- megadetector/data_management/importers/plot_wni_giraffes.py +0 -123
- megadetector/data_management/importers/prepare_zsl_imerit.py +0 -131
- megadetector/data_management/importers/raic_csv_to_md_results.py +0 -416
- megadetector/data_management/importers/rspb_to_json.py +0 -356
- megadetector/data_management/importers/save_the_elephants_survey_A.py +0 -320
- megadetector/data_management/importers/save_the_elephants_survey_B.py +0 -329
- megadetector/data_management/importers/snapshot_safari_importer.py +0 -758
- megadetector/data_management/importers/snapshot_serengeti_lila.py +0 -1067
- megadetector/data_management/importers/snapshotserengeti/make_full_SS_json.py +0 -150
- megadetector/data_management/importers/snapshotserengeti/make_per_season_SS_json.py +0 -153
- megadetector/data_management/importers/sulross_get_exif.py +0 -65
- megadetector/data_management/importers/timelapse_csv_set_to_json.py +0 -490
- megadetector/data_management/importers/ubc_to_json.py +0 -399
- megadetector/data_management/importers/umn_to_json.py +0 -507
- megadetector/data_management/importers/wellington_to_json.py +0 -263
- megadetector/data_management/importers/wi_to_json.py +0 -442
- megadetector/data_management/importers/zamba_results_to_md_results.py +0 -180
- megadetector/data_management/lila/add_locations_to_island_camera_traps.py +0 -101
- megadetector/data_management/lila/add_locations_to_nacti.py +0 -151
- megadetector-5.0.28.dist-info/RECORD +0 -209
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
remap_detection_categories.py
|
|
4
4
|
|
|
5
|
-
Given a MegaDetector results file, remap the category IDs according to a specified
|
|
5
|
+
Given a MegaDetector results file, remap the category IDs according to a specified
|
|
6
6
|
dictionary, writing the results to a new file.
|
|
7
7
|
|
|
8
8
|
Currently only supports remapping detection categories, not classification categories.
|
|
@@ -28,13 +28,13 @@ def remap_detection_categories(input_file,
|
|
|
28
28
|
overwrite=False):
|
|
29
29
|
"""
|
|
30
30
|
Given a MegaDetector results file [input_file], remap the category IDs according to the dictionary
|
|
31
|
-
[target_category_map], writing the results to [output_file]. The remapped dictionary needs to have
|
|
31
|
+
[target_category_map], writing the results to [output_file]. The remapped dictionary needs to have
|
|
32
32
|
the same category names as the input file's detection_categories dictionary.
|
|
33
|
-
|
|
33
|
+
|
|
34
34
|
Typically used to map, e.g., a variety of species to the class "mammal" or the class "animal".
|
|
35
|
-
|
|
35
|
+
|
|
36
36
|
Currently only supports remapping detection categories, not classification categories.
|
|
37
|
-
|
|
37
|
+
|
|
38
38
|
Args:
|
|
39
39
|
input_file (str): the MD .json results file to remap
|
|
40
40
|
output_file (str): the remapped .json file to write
|
|
@@ -43,21 +43,21 @@ def remap_detection_categories(input_file,
|
|
|
43
43
|
detection_categories dictionary.
|
|
44
44
|
extra_category_handling (str, optional): specifies what we should do if categories are present
|
|
45
45
|
in the source file that are not present in the target mapping:
|
|
46
|
-
|
|
46
|
+
|
|
47
47
|
* 'error' == Error in this case.
|
|
48
|
-
* 'drop_if_unused' == Don't include these in the output file's category mappings if they are
|
|
48
|
+
* 'drop_if_unused' == Don't include these in the output file's category mappings if they are
|
|
49
49
|
unused, error if they are.
|
|
50
50
|
* 'remap' == Remap to unused category IDs. This is reserved for future use, not currently
|
|
51
51
|
implemented.
|
|
52
52
|
overwrite (bool, optional): whether to overwrite [output_file] if it exists; if this is True and
|
|
53
53
|
[output_file] exists, this function is a no-op
|
|
54
|
-
|
|
54
|
+
|
|
55
55
|
"""
|
|
56
|
-
|
|
56
|
+
|
|
57
57
|
if os.path.exists(output_file) and (not overwrite):
|
|
58
|
-
print('File {} exists, bypassing remapping'.format(output_file))
|
|
58
|
+
print('File {} exists, bypassing remapping'.format(output_file))
|
|
59
59
|
return
|
|
60
|
-
|
|
60
|
+
|
|
61
61
|
assert os.path.isfile(input_file), \
|
|
62
62
|
'File {} does not exist'.format(input_file)
|
|
63
63
|
|
|
@@ -69,27 +69,27 @@ def remap_detection_categories(input_file,
|
|
|
69
69
|
d = json.load(f)
|
|
70
70
|
target_category_map = d['detection_categories']
|
|
71
71
|
assert isinstance(target_category_map,dict)
|
|
72
|
-
|
|
72
|
+
|
|
73
73
|
with open(input_file,'r') as f:
|
|
74
74
|
input_data = json.load(f)
|
|
75
|
-
|
|
75
|
+
|
|
76
76
|
input_images = input_data['images']
|
|
77
77
|
input_categories = input_data['detection_categories']
|
|
78
|
-
|
|
78
|
+
|
|
79
79
|
# Figure out which categories are actually used
|
|
80
80
|
used_category_ids = set()
|
|
81
81
|
for im in input_images:
|
|
82
|
-
|
|
82
|
+
|
|
83
83
|
if 'detections' not in im or im['detections'] is None:
|
|
84
84
|
continue
|
|
85
|
-
|
|
85
|
+
|
|
86
86
|
for det in im['detections']:
|
|
87
87
|
used_category_ids.add(det['category'])
|
|
88
88
|
used_category_names = [input_categories[cid] for cid in used_category_ids]
|
|
89
|
-
|
|
89
|
+
|
|
90
90
|
input_names_set = set(input_categories.values())
|
|
91
91
|
output_names_set = set(target_category_map.values())
|
|
92
|
-
|
|
92
|
+
|
|
93
93
|
# category_name = list(input_names_set)[0]
|
|
94
94
|
for category_name in input_names_set:
|
|
95
95
|
if category_name in output_names_set:
|
|
@@ -109,9 +109,9 @@ def remap_detection_categories(input_file,
|
|
|
109
109
|
else:
|
|
110
110
|
raise ValueError('Unrecognized extra category handling scheme {}'.format(
|
|
111
111
|
extra_category_handling))
|
|
112
|
-
|
|
112
|
+
|
|
113
113
|
output_category_name_to_output_category_id = invert_dictionary(target_category_map)
|
|
114
|
-
|
|
114
|
+
|
|
115
115
|
input_category_id_to_output_category_id = {}
|
|
116
116
|
for input_category_id in input_categories.keys():
|
|
117
117
|
category_name = input_categories[input_category_id]
|
|
@@ -120,48 +120,48 @@ def remap_detection_categories(input_file,
|
|
|
120
120
|
else:
|
|
121
121
|
output_category_id = output_category_name_to_output_category_id[category_name]
|
|
122
122
|
input_category_id_to_output_category_id[input_category_id] = output_category_id
|
|
123
|
-
|
|
123
|
+
|
|
124
124
|
# im = input_images[0]
|
|
125
125
|
for im in tqdm(input_images):
|
|
126
|
-
|
|
126
|
+
|
|
127
127
|
if 'detections' not in im or im['detections'] is None:
|
|
128
128
|
continue
|
|
129
|
-
|
|
129
|
+
|
|
130
130
|
# det = im['detections'][0]
|
|
131
131
|
for det in im['detections']:
|
|
132
132
|
det['category'] = input_category_id_to_output_category_id[det['category']]
|
|
133
|
-
|
|
133
|
+
|
|
134
134
|
input_data['detection_categories'] = target_category_map
|
|
135
|
-
|
|
135
|
+
|
|
136
136
|
with open(output_file,'w') as f:
|
|
137
137
|
json.dump(input_data,f,indent=1)
|
|
138
|
-
|
|
139
|
-
|
|
138
|
+
|
|
139
|
+
|
|
140
140
|
print('Saved remapped results to {}'.format(output_file))
|
|
141
|
-
|
|
141
|
+
|
|
142
142
|
|
|
143
143
|
#%% Interactive driver
|
|
144
144
|
|
|
145
145
|
if False:
|
|
146
|
-
|
|
146
|
+
|
|
147
147
|
pass
|
|
148
148
|
|
|
149
|
-
#%%
|
|
150
|
-
|
|
151
|
-
target_categories_file = '
|
|
149
|
+
#%%
|
|
150
|
+
|
|
151
|
+
target_categories_file = 'all-classes_usgs-only_yolov5x6.json'
|
|
152
152
|
target_category_map = target_categories_file
|
|
153
|
-
input_file = '
|
|
153
|
+
input_file = 'x.json'
|
|
154
154
|
|
|
155
155
|
output_file = input_file.replace('.json','_remapped.json')
|
|
156
156
|
assert output_file != input_file
|
|
157
157
|
overwrite = True
|
|
158
|
-
|
|
158
|
+
|
|
159
159
|
extra_category_handling = 'drop_if_unused'
|
|
160
|
-
|
|
160
|
+
|
|
161
161
|
remap_detection_categories(input_file=input_file,
|
|
162
162
|
output_file=output_file,
|
|
163
163
|
target_category_map=target_category_map,
|
|
164
|
-
extra_category_handling=extra_category_handling,
|
|
164
|
+
extra_category_handling=extra_category_handling,
|
|
165
165
|
overwrite=overwrite)
|
|
166
166
|
|
|
167
167
|
|