megadetector 5.0.9__py3-none-any.whl → 5.0.11__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-5.0.9.dist-info → megadetector-5.0.11.dist-info}/LICENSE +0 -0
- {megadetector-5.0.9.dist-info → megadetector-5.0.11.dist-info}/METADATA +12 -11
- megadetector-5.0.11.dist-info/RECORD +5 -0
- megadetector-5.0.11.dist-info/top_level.txt +1 -0
- api/__init__.py +0 -0
- api/batch_processing/__init__.py +0 -0
- api/batch_processing/api_core/__init__.py +0 -0
- api/batch_processing/api_core/batch_service/__init__.py +0 -0
- api/batch_processing/api_core/batch_service/score.py +0 -439
- api/batch_processing/api_core/server.py +0 -294
- api/batch_processing/api_core/server_api_config.py +0 -98
- api/batch_processing/api_core/server_app_config.py +0 -55
- api/batch_processing/api_core/server_batch_job_manager.py +0 -220
- api/batch_processing/api_core/server_job_status_table.py +0 -152
- api/batch_processing/api_core/server_orchestration.py +0 -360
- api/batch_processing/api_core/server_utils.py +0 -92
- api/batch_processing/api_core_support/__init__.py +0 -0
- api/batch_processing/api_core_support/aggregate_results_manually.py +0 -46
- api/batch_processing/api_support/__init__.py +0 -0
- api/batch_processing/api_support/summarize_daily_activity.py +0 -152
- api/batch_processing/data_preparation/__init__.py +0 -0
- api/batch_processing/data_preparation/manage_local_batch.py +0 -2391
- api/batch_processing/data_preparation/manage_video_batch.py +0 -327
- api/batch_processing/integration/digiKam/setup.py +0 -6
- api/batch_processing/integration/digiKam/xmp_integration.py +0 -465
- api/batch_processing/integration/eMammal/test_scripts/config_template.py +0 -5
- api/batch_processing/integration/eMammal/test_scripts/push_annotations_to_emammal.py +0 -126
- api/batch_processing/integration/eMammal/test_scripts/select_images_for_testing.py +0 -55
- api/batch_processing/postprocessing/__init__.py +0 -0
- api/batch_processing/postprocessing/add_max_conf.py +0 -64
- api/batch_processing/postprocessing/categorize_detections_by_size.py +0 -163
- api/batch_processing/postprocessing/combine_api_outputs.py +0 -249
- api/batch_processing/postprocessing/compare_batch_results.py +0 -958
- api/batch_processing/postprocessing/convert_output_format.py +0 -397
- api/batch_processing/postprocessing/load_api_results.py +0 -195
- api/batch_processing/postprocessing/md_to_coco.py +0 -310
- api/batch_processing/postprocessing/md_to_labelme.py +0 -330
- api/batch_processing/postprocessing/merge_detections.py +0 -401
- api/batch_processing/postprocessing/postprocess_batch_results.py +0 -1904
- api/batch_processing/postprocessing/remap_detection_categories.py +0 -170
- api/batch_processing/postprocessing/render_detection_confusion_matrix.py +0 -661
- api/batch_processing/postprocessing/repeat_detection_elimination/find_repeat_detections.py +0 -211
- api/batch_processing/postprocessing/repeat_detection_elimination/remove_repeat_detections.py +0 -82
- api/batch_processing/postprocessing/repeat_detection_elimination/repeat_detections_core.py +0 -1631
- api/batch_processing/postprocessing/separate_detections_into_folders.py +0 -731
- api/batch_processing/postprocessing/subset_json_detector_output.py +0 -696
- api/batch_processing/postprocessing/top_folders_to_bottom.py +0 -223
- api/synchronous/__init__.py +0 -0
- api/synchronous/api_core/animal_detection_api/__init__.py +0 -0
- api/synchronous/api_core/animal_detection_api/api_backend.py +0 -152
- api/synchronous/api_core/animal_detection_api/api_frontend.py +0 -266
- api/synchronous/api_core/animal_detection_api/config.py +0 -35
- api/synchronous/api_core/animal_detection_api/data_management/annotations/annotation_constants.py +0 -47
- api/synchronous/api_core/animal_detection_api/detection/detector_training/copy_checkpoints.py +0 -43
- api/synchronous/api_core/animal_detection_api/detection/detector_training/model_main_tf2.py +0 -114
- api/synchronous/api_core/animal_detection_api/detection/process_video.py +0 -543
- api/synchronous/api_core/animal_detection_api/detection/pytorch_detector.py +0 -304
- api/synchronous/api_core/animal_detection_api/detection/run_detector.py +0 -627
- api/synchronous/api_core/animal_detection_api/detection/run_detector_batch.py +0 -1029
- api/synchronous/api_core/animal_detection_api/detection/run_inference_with_yolov5_val.py +0 -581
- api/synchronous/api_core/animal_detection_api/detection/run_tiled_inference.py +0 -754
- api/synchronous/api_core/animal_detection_api/detection/tf_detector.py +0 -165
- api/synchronous/api_core/animal_detection_api/detection/video_utils.py +0 -495
- api/synchronous/api_core/animal_detection_api/md_utils/azure_utils.py +0 -174
- api/synchronous/api_core/animal_detection_api/md_utils/ct_utils.py +0 -262
- api/synchronous/api_core/animal_detection_api/md_utils/directory_listing.py +0 -251
- api/synchronous/api_core/animal_detection_api/md_utils/matlab_porting_tools.py +0 -97
- api/synchronous/api_core/animal_detection_api/md_utils/path_utils.py +0 -416
- api/synchronous/api_core/animal_detection_api/md_utils/process_utils.py +0 -110
- api/synchronous/api_core/animal_detection_api/md_utils/sas_blob_utils.py +0 -509
- api/synchronous/api_core/animal_detection_api/md_utils/string_utils.py +0 -59
- api/synchronous/api_core/animal_detection_api/md_utils/url_utils.py +0 -144
- api/synchronous/api_core/animal_detection_api/md_utils/write_html_image_list.py +0 -226
- api/synchronous/api_core/animal_detection_api/md_visualization/visualization_utils.py +0 -841
- api/synchronous/api_core/tests/__init__.py +0 -0
- api/synchronous/api_core/tests/load_test.py +0 -110
- classification/__init__.py +0 -0
- classification/aggregate_classifier_probs.py +0 -108
- classification/analyze_failed_images.py +0 -227
- classification/cache_batchapi_outputs.py +0 -198
- classification/create_classification_dataset.py +0 -627
- classification/crop_detections.py +0 -516
- classification/csv_to_json.py +0 -226
- classification/detect_and_crop.py +0 -855
- classification/efficientnet/__init__.py +0 -9
- classification/efficientnet/model.py +0 -415
- classification/efficientnet/utils.py +0 -610
- classification/evaluate_model.py +0 -520
- classification/identify_mislabeled_candidates.py +0 -152
- classification/json_to_azcopy_list.py +0 -63
- classification/json_validator.py +0 -695
- classification/map_classification_categories.py +0 -276
- classification/merge_classification_detection_output.py +0 -506
- classification/prepare_classification_script.py +0 -194
- classification/prepare_classification_script_mc.py +0 -228
- classification/run_classifier.py +0 -286
- classification/save_mislabeled.py +0 -110
- classification/train_classifier.py +0 -825
- classification/train_classifier_tf.py +0 -724
- classification/train_utils.py +0 -322
- data_management/__init__.py +0 -0
- data_management/annotations/__init__.py +0 -0
- data_management/annotations/annotation_constants.py +0 -34
- data_management/camtrap_dp_to_coco.py +0 -238
- data_management/cct_json_utils.py +0 -395
- data_management/cct_to_md.py +0 -176
- data_management/cct_to_wi.py +0 -289
- data_management/coco_to_labelme.py +0 -272
- data_management/coco_to_yolo.py +0 -662
- data_management/databases/__init__.py +0 -0
- data_management/databases/add_width_and_height_to_db.py +0 -33
- data_management/databases/combine_coco_camera_traps_files.py +0 -206
- data_management/databases/integrity_check_json_db.py +0 -477
- data_management/databases/subset_json_db.py +0 -115
- data_management/generate_crops_from_cct.py +0 -149
- data_management/get_image_sizes.py +0 -188
- data_management/importers/add_nacti_sizes.py +0 -52
- data_management/importers/add_timestamps_to_icct.py +0 -79
- data_management/importers/animl_results_to_md_results.py +0 -158
- data_management/importers/auckland_doc_test_to_json.py +0 -372
- data_management/importers/auckland_doc_to_json.py +0 -200
- data_management/importers/awc_to_json.py +0 -189
- data_management/importers/bellevue_to_json.py +0 -273
- data_management/importers/cacophony-thermal-importer.py +0 -796
- data_management/importers/carrizo_shrubfree_2018.py +0 -268
- data_management/importers/carrizo_trail_cam_2017.py +0 -287
- data_management/importers/cct_field_adjustments.py +0 -57
- data_management/importers/channel_islands_to_cct.py +0 -913
- data_management/importers/eMammal/copy_and_unzip_emammal.py +0 -180
- data_management/importers/eMammal/eMammal_helpers.py +0 -249
- data_management/importers/eMammal/make_eMammal_json.py +0 -223
- data_management/importers/ena24_to_json.py +0 -275
- data_management/importers/filenames_to_json.py +0 -385
- data_management/importers/helena_to_cct.py +0 -282
- data_management/importers/idaho-camera-traps.py +0 -1407
- data_management/importers/idfg_iwildcam_lila_prep.py +0 -294
- data_management/importers/jb_csv_to_json.py +0 -150
- data_management/importers/mcgill_to_json.py +0 -250
- data_management/importers/missouri_to_json.py +0 -489
- data_management/importers/nacti_fieldname_adjustments.py +0 -79
- data_management/importers/noaa_seals_2019.py +0 -181
- data_management/importers/pc_to_json.py +0 -365
- data_management/importers/plot_wni_giraffes.py +0 -123
- data_management/importers/prepare-noaa-fish-data-for-lila.py +0 -359
- data_management/importers/prepare_zsl_imerit.py +0 -131
- data_management/importers/rspb_to_json.py +0 -356
- data_management/importers/save_the_elephants_survey_A.py +0 -320
- data_management/importers/save_the_elephants_survey_B.py +0 -332
- data_management/importers/snapshot_safari_importer.py +0 -758
- data_management/importers/snapshot_safari_importer_reprise.py +0 -665
- data_management/importers/snapshot_serengeti_lila.py +0 -1067
- data_management/importers/snapshotserengeti/make_full_SS_json.py +0 -150
- data_management/importers/snapshotserengeti/make_per_season_SS_json.py +0 -153
- data_management/importers/sulross_get_exif.py +0 -65
- data_management/importers/timelapse_csv_set_to_json.py +0 -490
- data_management/importers/ubc_to_json.py +0 -399
- data_management/importers/umn_to_json.py +0 -507
- data_management/importers/wellington_to_json.py +0 -263
- data_management/importers/wi_to_json.py +0 -441
- data_management/importers/zamba_results_to_md_results.py +0 -181
- data_management/labelme_to_coco.py +0 -548
- data_management/labelme_to_yolo.py +0 -272
- data_management/lila/__init__.py +0 -0
- data_management/lila/add_locations_to_island_camera_traps.py +0 -97
- data_management/lila/add_locations_to_nacti.py +0 -147
- data_management/lila/create_lila_blank_set.py +0 -557
- data_management/lila/create_lila_test_set.py +0 -151
- data_management/lila/create_links_to_md_results_files.py +0 -106
- data_management/lila/download_lila_subset.py +0 -177
- data_management/lila/generate_lila_per_image_labels.py +0 -515
- data_management/lila/get_lila_annotation_counts.py +0 -170
- data_management/lila/get_lila_image_counts.py +0 -111
- data_management/lila/lila_common.py +0 -300
- data_management/lila/test_lila_metadata_urls.py +0 -132
- data_management/ocr_tools.py +0 -874
- data_management/read_exif.py +0 -681
- data_management/remap_coco_categories.py +0 -84
- data_management/remove_exif.py +0 -66
- data_management/resize_coco_dataset.py +0 -189
- data_management/wi_download_csv_to_coco.py +0 -246
- data_management/yolo_output_to_md_output.py +0 -441
- data_management/yolo_to_coco.py +0 -676
- detection/__init__.py +0 -0
- detection/detector_training/__init__.py +0 -0
- detection/detector_training/model_main_tf2.py +0 -114
- detection/process_video.py +0 -703
- detection/pytorch_detector.py +0 -337
- detection/run_detector.py +0 -779
- detection/run_detector_batch.py +0 -1219
- detection/run_inference_with_yolov5_val.py +0 -917
- detection/run_tiled_inference.py +0 -935
- detection/tf_detector.py +0 -188
- detection/video_utils.py +0 -606
- docs/source/conf.py +0 -43
- md_utils/__init__.py +0 -0
- md_utils/azure_utils.py +0 -174
- md_utils/ct_utils.py +0 -612
- md_utils/directory_listing.py +0 -246
- md_utils/md_tests.py +0 -968
- md_utils/path_utils.py +0 -1044
- md_utils/process_utils.py +0 -157
- md_utils/sas_blob_utils.py +0 -509
- md_utils/split_locations_into_train_val.py +0 -228
- md_utils/string_utils.py +0 -92
- md_utils/url_utils.py +0 -323
- md_utils/write_html_image_list.py +0 -225
- md_visualization/__init__.py +0 -0
- md_visualization/plot_utils.py +0 -293
- md_visualization/render_images_with_thumbnails.py +0 -275
- md_visualization/visualization_utils.py +0 -1537
- md_visualization/visualize_db.py +0 -551
- md_visualization/visualize_detector_output.py +0 -406
- megadetector-5.0.9.dist-info/RECORD +0 -224
- megadetector-5.0.9.dist-info/top_level.txt +0 -8
- taxonomy_mapping/__init__.py +0 -0
- taxonomy_mapping/map_lila_taxonomy_to_wi_taxonomy.py +0 -491
- taxonomy_mapping/map_new_lila_datasets.py +0 -154
- taxonomy_mapping/prepare_lila_taxonomy_release.py +0 -142
- taxonomy_mapping/preview_lila_taxonomy.py +0 -591
- taxonomy_mapping/retrieve_sample_image.py +0 -71
- taxonomy_mapping/simple_image_download.py +0 -218
- taxonomy_mapping/species_lookup.py +0 -834
- taxonomy_mapping/taxonomy_csv_checker.py +0 -159
- taxonomy_mapping/taxonomy_graph.py +0 -346
- taxonomy_mapping/validate_lila_category_mappings.py +0 -83
- {megadetector-5.0.9.dist-info → megadetector-5.0.11.dist-info}/WHEEL +0 -0
md_utils/azure_utils.py
DELETED
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
|
|
3
|
-
azure_utils.py
|
|
4
|
-
|
|
5
|
-
Miscellaneous Azure Blob Storage utilities
|
|
6
|
-
|
|
7
|
-
Requires azure-storage-blob>=12.4.0
|
|
8
|
-
|
|
9
|
-
"""
|
|
10
|
-
|
|
11
|
-
import json
|
|
12
|
-
from md_utils import path_utils
|
|
13
|
-
from typing import Any, Iterable, List, Optional, Tuple, Union
|
|
14
|
-
|
|
15
|
-
from azure.storage.blob import BlobPrefix, ContainerClient
|
|
16
|
-
|
|
17
|
-
from md_utils import sas_blob_utils
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
def walk_container(container_client: ContainerClient,
|
|
21
|
-
max_depth: int = -1,
|
|
22
|
-
prefix: str = '',
|
|
23
|
-
store_folders: bool = True,
|
|
24
|
-
store_blobs: bool = True,
|
|
25
|
-
debug_max_items: int = -1) -> Tuple[List[str], List[str]]:
|
|
26
|
-
"""
|
|
27
|
-
Recursively walk folders a Azure Blob Storage container.
|
|
28
|
-
|
|
29
|
-
Based on:
|
|
30
|
-
https://github.com/Azure/azure-sdk-for-python/blob/master/sdk/storage/azure-storage-blob/samples/blob_samples_walk_blob_hierarchy.py
|
|
31
|
-
"""
|
|
32
|
-
|
|
33
|
-
depth = 1
|
|
34
|
-
|
|
35
|
-
def walk_blob_hierarchy(prefix: str,
|
|
36
|
-
folders: Optional[List[str]] = None,
|
|
37
|
-
blobs: Optional[List[str]] = None
|
|
38
|
-
) -> Tuple[List[str], List[str]]:
|
|
39
|
-
if folders is None:
|
|
40
|
-
folders = []
|
|
41
|
-
if blobs is None:
|
|
42
|
-
blobs = []
|
|
43
|
-
|
|
44
|
-
nonlocal depth
|
|
45
|
-
|
|
46
|
-
if 0 < max_depth < depth:
|
|
47
|
-
return folders, blobs
|
|
48
|
-
|
|
49
|
-
for item in container_client.walk_blobs(name_starts_with=prefix):
|
|
50
|
-
short_name = item.name[len(prefix):]
|
|
51
|
-
if isinstance(item, BlobPrefix):
|
|
52
|
-
# print('F: ' + prefix + short_name)
|
|
53
|
-
if store_folders:
|
|
54
|
-
folders.append(prefix + short_name)
|
|
55
|
-
depth += 1
|
|
56
|
-
walk_blob_hierarchy(item.name, folders=folders, blobs=blobs)
|
|
57
|
-
if (debug_max_items > 0
|
|
58
|
-
and len(folders) + len(blobs) > debug_max_items):
|
|
59
|
-
return folders, blobs
|
|
60
|
-
depth -= 1
|
|
61
|
-
else:
|
|
62
|
-
if store_blobs:
|
|
63
|
-
blobs.append(prefix + short_name)
|
|
64
|
-
|
|
65
|
-
return folders, blobs
|
|
66
|
-
|
|
67
|
-
folders, blobs = walk_blob_hierarchy(prefix=prefix)
|
|
68
|
-
|
|
69
|
-
assert all(s.endswith('/') for s in folders)
|
|
70
|
-
folders = [s.strip('/') for s in folders]
|
|
71
|
-
|
|
72
|
-
return folders, blobs
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
def list_top_level_blob_folders(container_client: ContainerClient) -> List[str]:
|
|
76
|
-
"""
|
|
77
|
-
List all top-level folders in a container.
|
|
78
|
-
"""
|
|
79
|
-
|
|
80
|
-
top_level_folders, _ = walk_container(
|
|
81
|
-
container_client, max_depth=1, store_blobs=False)
|
|
82
|
-
return top_level_folders
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
def concatenate_json_lists(input_files: Iterable[str],
|
|
86
|
-
output_file: Optional[str] = None
|
|
87
|
-
) -> List[Any]:
|
|
88
|
-
"""
|
|
89
|
-
Given a list of JSON files that contain lists (typically string
|
|
90
|
-
filenames), concatenates the lists into a single list and optionally
|
|
91
|
-
writes out this list to a new output JSON file.
|
|
92
|
-
"""
|
|
93
|
-
|
|
94
|
-
output_list = []
|
|
95
|
-
for fn in input_files:
|
|
96
|
-
with open(fn, 'r') as f:
|
|
97
|
-
file_list = json.load(f)
|
|
98
|
-
output_list.extend(file_list)
|
|
99
|
-
if output_file is not None:
|
|
100
|
-
with open(output_file, 'w') as f:
|
|
101
|
-
json.dump(output_list, f, indent=1)
|
|
102
|
-
return output_list
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
def upload_file_to_blob(account_name: str,
|
|
106
|
-
container_name: str,
|
|
107
|
-
local_path: str,
|
|
108
|
-
blob_name: str,
|
|
109
|
-
sas_token: str,
|
|
110
|
-
overwrite: bool=False) -> str:
|
|
111
|
-
"""
|
|
112
|
-
Uploads a local file to Azure Blob Storage and returns the uploaded
|
|
113
|
-
blob URI with SAS token.
|
|
114
|
-
"""
|
|
115
|
-
|
|
116
|
-
container_uri = sas_blob_utils.build_azure_storage_uri(
|
|
117
|
-
account=account_name, container=container_name, sas_token=sas_token)
|
|
118
|
-
with open(local_path, 'rb') as data:
|
|
119
|
-
return sas_blob_utils.upload_blob(
|
|
120
|
-
container_uri=container_uri, blob_name=blob_name, data=data,
|
|
121
|
-
overwrite=overwrite)
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
def enumerate_blobs_to_file(
|
|
125
|
-
output_file: str,
|
|
126
|
-
account_name: str,
|
|
127
|
-
container_name: str,
|
|
128
|
-
sas_token: Optional[str] = None,
|
|
129
|
-
blob_prefix: Optional[str] = None,
|
|
130
|
-
blob_suffix: Optional[Union[str, Tuple[str]]] = None,
|
|
131
|
-
rsearch: Optional[str] = None,
|
|
132
|
-
limit: Optional[int] = None,
|
|
133
|
-
verbose: Optional[bool] = True
|
|
134
|
-
) -> List[str]:
|
|
135
|
-
"""
|
|
136
|
-
Enumerates blobs in a container, and writes the blob names to an output
|
|
137
|
-
file.
|
|
138
|
-
|
|
139
|
-
Args:
|
|
140
|
-
output_file: str, path to save list of files in container
|
|
141
|
-
If ends in '.json', writes a JSON string. Otherwise, writes a
|
|
142
|
-
newline-delimited list. Can be None, in which case this is just a
|
|
143
|
-
convenient wrapper for blob enumeration.
|
|
144
|
-
account_name: str, Azure Storage account name
|
|
145
|
-
container_name: str, Azure Blob Storage container name
|
|
146
|
-
sas_token: optional str, container SAS token, leading ? will be removed if present.
|
|
147
|
-
blob_prefix: optional str, returned results will only contain blob names
|
|
148
|
-
to with this prefix
|
|
149
|
-
blob_suffix: optional str or tuple of str, returned results will only
|
|
150
|
-
contain blob names with this/these suffix(es). The blob names will
|
|
151
|
-
be lowercased first before comparing with the suffix(es).
|
|
152
|
-
rsearch: optional str, returned results will only contain blob names
|
|
153
|
-
that match this regex. Can also be a list of regexes, in which case
|
|
154
|
-
blobs matching *any* of the regex's will be returned.
|
|
155
|
-
limit: int, maximum # of blob names to list
|
|
156
|
-
if None, then returns all blob names
|
|
157
|
-
|
|
158
|
-
Returns: list of str, sorted blob names, of length limit or shorter.
|
|
159
|
-
"""
|
|
160
|
-
|
|
161
|
-
if sas_token is not None and len(sas_token) > 9 and sas_token[0] == '?':
|
|
162
|
-
sas_token = sas_token[1:]
|
|
163
|
-
|
|
164
|
-
container_uri = sas_blob_utils.build_azure_storage_uri(
|
|
165
|
-
account=account_name, container=container_name, sas_token=sas_token)
|
|
166
|
-
|
|
167
|
-
matched_blobs = sas_blob_utils.list_blobs_in_container(
|
|
168
|
-
container_uri=container_uri, blob_prefix=blob_prefix,
|
|
169
|
-
blob_suffix=blob_suffix, rsearch=rsearch, limit=limit, verbose=verbose)
|
|
170
|
-
|
|
171
|
-
if output_file is not None:
|
|
172
|
-
path_utils.write_list_to_file(output_file, matched_blobs)
|
|
173
|
-
|
|
174
|
-
return matched_blobs
|