megadetector 5.0.28__py3-none-any.whl → 10.0.0__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/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/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/efficientnet/model.py +8 -8
- megadetector/classification/efficientnet/utils.py +6 -5
- 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 +26 -26
- 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 -2
- megadetector/data_management/camtrap_dp_to_coco.py +79 -46
- megadetector/data_management/cct_json_utils.py +103 -103
- 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 +210 -193
- megadetector/data_management/databases/add_width_and_height_to_db.py +86 -12
- megadetector/data_management/databases/combine_coco_camera_traps_files.py +40 -40
- megadetector/data_management/databases/integrity_check_json_db.py +228 -200
- megadetector/data_management/databases/subset_json_db.py +33 -33
- megadetector/data_management/generate_crops_from_cct.py +88 -39
- megadetector/data_management/get_image_sizes.py +54 -49
- megadetector/data_management/labelme_to_coco.py +133 -125
- megadetector/data_management/labelme_to_yolo.py +159 -73
- 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 +365 -107
- megadetector/data_management/lila/get_lila_annotation_counts.py +35 -33
- megadetector/data_management/lila/get_lila_image_counts.py +22 -22
- megadetector/data_management/lila/lila_common.py +73 -70
- megadetector/data_management/lila/test_lila_metadata_urls.py +28 -19
- megadetector/data_management/mewc_to_md.py +344 -340
- megadetector/data_management/ocr_tools.py +262 -255
- megadetector/data_management/read_exif.py +249 -227
- megadetector/data_management/remap_coco_categories.py +90 -28
- megadetector/data_management/remove_exif.py +81 -21
- megadetector/data_management/rename_images.py +187 -187
- megadetector/data_management/resize_coco_dataset.py +588 -120
- 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 +248 -122
- megadetector/data_management/yolo_to_coco.py +333 -191
- megadetector/detection/change_detection.py +832 -0
- megadetector/detection/process_video.py +340 -337
- megadetector/detection/pytorch_detector.py +358 -278
- megadetector/detection/run_detector.py +399 -186
- megadetector/detection/run_detector_batch.py +404 -377
- megadetector/detection/run_inference_with_yolov5_val.py +340 -327
- megadetector/detection/run_tiled_inference.py +257 -249
- megadetector/detection/tf_detector.py +24 -24
- megadetector/detection/video_utils.py +332 -295
- megadetector/postprocessing/add_max_conf.py +19 -11
- megadetector/postprocessing/categorize_detections_by_size.py +45 -45
- megadetector/postprocessing/classification_postprocessing.py +468 -433
- megadetector/postprocessing/combine_batch_outputs.py +23 -23
- megadetector/postprocessing/compare_batch_results.py +590 -525
- megadetector/postprocessing/convert_output_format.py +106 -102
- megadetector/postprocessing/create_crop_folder.py +347 -147
- megadetector/postprocessing/detector_calibration.py +173 -168
- megadetector/postprocessing/generate_csv_report.py +508 -499
- megadetector/postprocessing/load_api_results.py +48 -27
- megadetector/postprocessing/md_to_coco.py +133 -102
- megadetector/postprocessing/md_to_labelme.py +107 -90
- megadetector/postprocessing/md_to_wi.py +40 -40
- megadetector/postprocessing/merge_detections.py +92 -114
- megadetector/postprocessing/postprocess_batch_results.py +319 -301
- megadetector/postprocessing/remap_detection_categories.py +91 -38
- megadetector/postprocessing/render_detection_confusion_matrix.py +214 -205
- 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 +704 -679
- 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 +18 -19
- megadetector/taxonomy_mapping/prepare_lila_taxonomy_release.py +54 -33
- megadetector/taxonomy_mapping/preview_lila_taxonomy.py +67 -67
- megadetector/taxonomy_mapping/retrieve_sample_image.py +16 -16
- megadetector/taxonomy_mapping/simple_image_download.py +8 -8
- megadetector/taxonomy_mapping/species_lookup.py +156 -74
- 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/ct_utils.py +1049 -211
- megadetector/utils/directory_listing.py +21 -77
- megadetector/utils/gpu_test.py +22 -22
- megadetector/utils/md_tests.py +632 -529
- megadetector/utils/path_utils.py +1520 -431
- megadetector/utils/process_utils.py +41 -41
- megadetector/utils/split_locations_into_train_val.py +62 -62
- megadetector/utils/string_utils.py +148 -27
- megadetector/utils/url_utils.py +489 -176
- megadetector/utils/wi_utils.py +2658 -2526
- megadetector/utils/write_html_image_list.py +137 -137
- megadetector/visualization/plot_utils.py +34 -30
- megadetector/visualization/render_images_with_thumbnails.py +39 -74
- megadetector/visualization/visualization_utils.py +487 -435
- megadetector/visualization/visualize_db.py +232 -198
- megadetector/visualization/visualize_detector_output.py +82 -76
- {megadetector-5.0.28.dist-info → megadetector-10.0.0.dist-info}/METADATA +5 -2
- megadetector-10.0.0.dist-info/RECORD +139 -0
- {megadetector-5.0.28.dist-info → megadetector-10.0.0.dist-info}/WHEEL +1 -1
- megadetector/api/batch_processing/api_core/__init__.py +0 -0
- megadetector/api/batch_processing/api_core/batch_service/__init__.py +0 -0
- megadetector/api/batch_processing/api_core/batch_service/score.py +0 -439
- megadetector/api/batch_processing/api_core/server.py +0 -294
- megadetector/api/batch_processing/api_core/server_api_config.py +0 -97
- megadetector/api/batch_processing/api_core/server_app_config.py +0 -55
- megadetector/api/batch_processing/api_core/server_batch_job_manager.py +0 -220
- megadetector/api/batch_processing/api_core/server_job_status_table.py +0 -149
- megadetector/api/batch_processing/api_core/server_orchestration.py +0 -360
- megadetector/api/batch_processing/api_core/server_utils.py +0 -88
- megadetector/api/batch_processing/api_core_support/__init__.py +0 -0
- megadetector/api/batch_processing/api_core_support/aggregate_results_manually.py +0 -46
- megadetector/api/batch_processing/api_support/__init__.py +0 -0
- megadetector/api/batch_processing/api_support/summarize_daily_activity.py +0 -152
- megadetector/api/batch_processing/data_preparation/__init__.py +0 -0
- megadetector/api/synchronous/__init__.py +0 -0
- megadetector/api/synchronous/api_core/animal_detection_api/__init__.py +0 -0
- megadetector/api/synchronous/api_core/animal_detection_api/api_backend.py +0 -151
- megadetector/api/synchronous/api_core/animal_detection_api/api_frontend.py +0 -263
- megadetector/api/synchronous/api_core/animal_detection_api/config.py +0 -35
- megadetector/api/synchronous/api_core/tests/__init__.py +0 -0
- megadetector/api/synchronous/api_core/tests/load_test.py +0 -110
- 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/utils/azure_utils.py +0 -178
- megadetector/utils/sas_blob_utils.py +0 -509
- megadetector-5.0.28.dist-info/RECORD +0 -209
- /megadetector/{api/batch_processing/__init__.py → __init__.py} +0 -0
- {megadetector-5.0.28.dist-info → megadetector-10.0.0.dist-info}/licenses/LICENSE +0 -0
- {megadetector-5.0.28.dist-info → megadetector-10.0.0.dist-info}/top_level.txt +0 -0
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
test_lila_metadata_urls.py
|
|
4
4
|
|
|
5
|
-
Test that all the metadata URLs for LILA camera trap datasets are valid, including MegaDetector
|
|
5
|
+
Test that all the metadata URLs for LILA camera trap datasets are valid, including MegaDetector
|
|
6
6
|
results files.
|
|
7
7
|
|
|
8
8
|
Also pick an arbitrary image from each dataset and make sure that URL is valid.
|
|
@@ -18,6 +18,7 @@ import os
|
|
|
18
18
|
|
|
19
19
|
from megadetector.data_management.lila.lila_common import read_lila_metadata,\
|
|
20
20
|
read_metadata_file_for_dataset, read_lila_taxonomy_mapping
|
|
21
|
+
from megadetector.utils.url_utils import test_urls
|
|
21
22
|
|
|
22
23
|
# We'll write images, metadata downloads, and temporary files here
|
|
23
24
|
lila_local_base = os.path.expanduser('~/lila')
|
|
@@ -31,7 +32,7 @@ os.makedirs(metadata_dir,exist_ok=True)
|
|
|
31
32
|
md_results_dir = os.path.join(lila_local_base,'md_results')
|
|
32
33
|
os.makedirs(md_results_dir,exist_ok=True)
|
|
33
34
|
|
|
34
|
-
md_results_keys = ['
|
|
35
|
+
md_results_keys = ['mdv5a_results_raw','mdv5b_results_raw',
|
|
35
36
|
'md1000-redwood_results_raw','md_results_with_rde']
|
|
36
37
|
|
|
37
38
|
preferred_cloud = None # 'gcp' # 'azure', 'aws'
|
|
@@ -53,19 +54,21 @@ print('Loaded metadata URLs for {} datasets'.format(len(metadata_table)))
|
|
|
53
54
|
|
|
54
55
|
#%% Download and extract metadata and MD results for each dataset
|
|
55
56
|
|
|
56
|
-
# Takes ~
|
|
57
|
+
# Takes ~10 minutes if everything needs to be downloaded and unzipped
|
|
57
58
|
|
|
58
|
-
for ds_name in metadata_table.keys():
|
|
59
|
+
for ds_name in metadata_table.keys():
|
|
59
60
|
|
|
60
61
|
# Download the main metadata file for this dataset
|
|
61
62
|
metadata_table[ds_name]['json_filename'] = \
|
|
62
63
|
read_metadata_file_for_dataset(ds_name=ds_name,
|
|
63
64
|
metadata_dir=metadata_dir,
|
|
64
65
|
metadata_table=metadata_table,
|
|
65
|
-
force_download=force_download
|
|
66
|
-
|
|
66
|
+
force_download=force_download,
|
|
67
|
+
preferred_cloud=preferred_cloud)
|
|
68
|
+
|
|
67
69
|
# Download MD results for this dataset
|
|
68
70
|
for k in md_results_keys:
|
|
71
|
+
|
|
69
72
|
md_results_url = metadata_table[ds_name][k]
|
|
70
73
|
if md_results_url is None:
|
|
71
74
|
metadata_table[ds_name][k + '_filename'] = None
|
|
@@ -74,7 +77,10 @@ for ds_name in metadata_table.keys():
|
|
|
74
77
|
read_metadata_file_for_dataset(ds_name=ds_name,
|
|
75
78
|
metadata_dir=md_results_dir,
|
|
76
79
|
json_url=md_results_url,
|
|
77
|
-
force_download=force_download
|
|
80
|
+
force_download=force_download,
|
|
81
|
+
preferred_cloud=preferred_cloud)
|
|
82
|
+
|
|
83
|
+
# ...for each MD results file
|
|
78
84
|
|
|
79
85
|
# ...for each dataset
|
|
80
86
|
|
|
@@ -93,13 +99,13 @@ image_index = 2000
|
|
|
93
99
|
#
|
|
94
100
|
# ds_name = list(metadata_table.keys())[0]
|
|
95
101
|
for ds_name in metadata_table.keys():
|
|
96
|
-
|
|
102
|
+
|
|
97
103
|
if 'bbox' in ds_name:
|
|
98
104
|
print('Skipping bbox dataset {}'.format(ds_name))
|
|
99
105
|
continue
|
|
100
106
|
|
|
101
107
|
print('Processing dataset {}'.format(ds_name))
|
|
102
|
-
|
|
108
|
+
|
|
103
109
|
json_filename = metadata_table[ds_name]['json_filename']
|
|
104
110
|
with open(json_filename, 'r') as f:
|
|
105
111
|
data = json.load(f)
|
|
@@ -108,21 +114,23 @@ for ds_name in metadata_table.keys():
|
|
|
108
114
|
clouds = [preferred_cloud]
|
|
109
115
|
else:
|
|
110
116
|
clouds = ['gcp','aws','azure']
|
|
111
|
-
|
|
117
|
+
|
|
112
118
|
for cloud in clouds:
|
|
113
|
-
|
|
119
|
+
|
|
114
120
|
image_base_url = metadata_table[ds_name]['image_base_url_' + cloud]
|
|
115
121
|
assert not image_base_url.endswith('/')
|
|
116
|
-
|
|
122
|
+
|
|
117
123
|
# Download a test image
|
|
118
124
|
test_image_relative_path = data['images'][image_index]['file_name']
|
|
119
125
|
test_image_url = image_base_url + '/' + test_image_relative_path
|
|
120
|
-
|
|
126
|
+
|
|
121
127
|
url_to_source[test_image_url] = ds_name + ' metadata ({})'.format(cloud)
|
|
122
|
-
|
|
128
|
+
|
|
129
|
+
# ...for each cloud
|
|
130
|
+
|
|
123
131
|
# Grab an image from the MegaDetector results
|
|
124
|
-
|
|
125
|
-
# k = md_results_keys[
|
|
132
|
+
|
|
133
|
+
# k = md_results_keys[0]
|
|
126
134
|
for k in md_results_keys:
|
|
127
135
|
k_fn = k + '_filename'
|
|
128
136
|
if metadata_table[ds_name][k_fn] is not None:
|
|
@@ -133,14 +141,12 @@ for ds_name in metadata_table.keys():
|
|
|
133
141
|
url_to_source[md_image_url] = ds_name + ' ' + k
|
|
134
142
|
del md_results
|
|
135
143
|
del data
|
|
136
|
-
|
|
144
|
+
|
|
137
145
|
# ...for each dataset
|
|
138
146
|
|
|
139
147
|
|
|
140
148
|
#%% Test URLs
|
|
141
149
|
|
|
142
|
-
from megadetector.utils.url_utils import test_urls
|
|
143
|
-
|
|
144
150
|
urls_to_test = sorted(url_to_source.keys())
|
|
145
151
|
urls_to_test = [fn.replace('\\','/') for fn in urls_to_test]
|
|
146
152
|
|
|
@@ -154,3 +160,6 @@ for i_url,url in enumerate(urls_to_test):
|
|
|
154
160
|
if status_codes[i_url] != 200:
|
|
155
161
|
print('Status {} for {} ({})'.format(
|
|
156
162
|
status_codes[i_url],url,url_to_source[url]))
|
|
163
|
+
|
|
164
|
+
print('Tested {} URLs'.format(len(urls_to_test)))
|
|
165
|
+
|