megadetector 5.0.27__py3-none-any.whl → 5.0.29__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of megadetector might be problematic. Click here for more details.
- 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 +232 -223
- 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 +341 -338
- megadetector/detection/pytorch_detector.py +308 -266
- megadetector/detection/run_detector.py +186 -166
- megadetector/detection/run_detector_batch.py +366 -364
- megadetector/detection/run_inference_with_yolov5_val.py +328 -325
- megadetector/detection/run_tiled_inference.py +312 -253
- megadetector/detection/tf_detector.py +24 -24
- megadetector/detection/video_utils.py +291 -283
- megadetector/postprocessing/add_max_conf.py +15 -11
- megadetector/postprocessing/categorize_detections_by_size.py +44 -44
- megadetector/postprocessing/classification_postprocessing.py +808 -311
- 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 +220 -147
- megadetector/postprocessing/detector_calibration.py +173 -168
- megadetector/postprocessing/generate_csv_report.py +508 -0
- megadetector/postprocessing/load_api_results.py +25 -22
- 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 +319 -302
- 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 -69
- 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 +11 -11
- megadetector/taxonomy_mapping/validate_lila_category_mappings.py +13 -13
- megadetector/utils/azure_utils.py +22 -22
- megadetector/utils/ct_utils.py +1019 -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 +1511 -406
- megadetector/utils/process_utils.py +41 -41
- megadetector/utils/sas_blob_utils.py +53 -49
- megadetector/utils/split_locations_into_train_val.py +73 -60
- megadetector/utils/string_utils.py +147 -26
- megadetector/utils/url_utils.py +463 -173
- megadetector/utils/wi_utils.py +2629 -2868
- 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 +424 -404
- megadetector/visualization/visualize_db.py +197 -190
- megadetector/visualization/visualize_detector_output.py +126 -98
- {megadetector-5.0.27.dist-info → megadetector-5.0.29.dist-info}/METADATA +6 -3
- megadetector-5.0.29.dist-info/RECORD +163 -0
- {megadetector-5.0.27.dist-info → megadetector-5.0.29.dist-info}/WHEEL +1 -1
- 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.27.dist-info/RECORD +0 -208
- {megadetector-5.0.27.dist-info → megadetector-5.0.29.dist-info}/licenses/LICENSE +0 -0
- {megadetector-5.0.27.dist-info → megadetector-5.0.29.dist-info}/top_level.txt +0 -0
|
@@ -25,14 +25,14 @@ print('Is GPU available? tf.test.is_gpu_available:', tf.test.is_gpu_available())
|
|
|
25
25
|
class TFDetector:
|
|
26
26
|
"""
|
|
27
27
|
A detector model loaded at the time of initialization. It is intended to be used with
|
|
28
|
-
TensorFlow-based versions of MegaDetector (v2, v3, or v4). If someone can find v1, I
|
|
28
|
+
TensorFlow-based versions of MegaDetector (v2, v3, or v4). If someone can find v1, I
|
|
29
29
|
suppose you could use this class for v1 also.
|
|
30
30
|
"""
|
|
31
|
-
|
|
32
|
-
#: TF versions of MD were trained with batch size of 1, and the resizing function is a
|
|
31
|
+
|
|
32
|
+
#: TF versions of MD were trained with batch size of 1, and the resizing function is a
|
|
33
33
|
#: part of the inference graph, so this is fixed.
|
|
34
34
|
#:
|
|
35
|
-
#: :meta private:
|
|
35
|
+
#: :meta private:
|
|
36
36
|
BATCH_SIZE = 1
|
|
37
37
|
|
|
38
38
|
|
|
@@ -40,13 +40,13 @@ class TFDetector:
|
|
|
40
40
|
"""
|
|
41
41
|
Loads a model from [model_path] and starts a tf.Session with this graph. Obtains
|
|
42
42
|
input and output tensor handles.
|
|
43
|
-
|
|
43
|
+
|
|
44
44
|
Args:
|
|
45
45
|
model_path (str): path to .pdb file
|
|
46
46
|
detector_options (dict, optional): key-value pairs that control detector
|
|
47
47
|
options; currently not used by TFDetector
|
|
48
48
|
"""
|
|
49
|
-
|
|
49
|
+
|
|
50
50
|
detection_graph = TFDetector.__load_model(model_path)
|
|
51
51
|
self.tf_session = tf.Session(graph=detection_graph)
|
|
52
52
|
self.image_tensor = detection_graph.get_tensor_by_name('image_tensor:0')
|
|
@@ -73,7 +73,7 @@ class TFDetector:
|
|
|
73
73
|
|
|
74
74
|
Returns: list of Python float, predicted bounding box coordinates [x1, y1, width, height]
|
|
75
75
|
"""
|
|
76
|
-
|
|
76
|
+
|
|
77
77
|
# change from [y1, x1, y2, x2] to [x1, y1, width, height]
|
|
78
78
|
width = tf_coords[3] - tf_coords[1]
|
|
79
79
|
height = tf_coords[2] - tf_coords[0]
|
|
@@ -96,7 +96,7 @@ class TFDetector:
|
|
|
96
96
|
|
|
97
97
|
Returns: the loaded graph.
|
|
98
98
|
"""
|
|
99
|
-
|
|
99
|
+
|
|
100
100
|
print('TFDetector: Loading graph...')
|
|
101
101
|
detection_graph = tf.Graph()
|
|
102
102
|
with detection_graph.as_default():
|
|
@@ -114,7 +114,7 @@ class TFDetector:
|
|
|
114
114
|
"""
|
|
115
115
|
Runs the detector on a single image.
|
|
116
116
|
"""
|
|
117
|
-
|
|
117
|
+
|
|
118
118
|
if isinstance(image,np.ndarray):
|
|
119
119
|
np_im = image
|
|
120
120
|
else:
|
|
@@ -133,10 +133,10 @@ class TFDetector:
|
|
|
133
133
|
return box_tensor_out, score_tensor_out, class_tensor_out
|
|
134
134
|
|
|
135
135
|
|
|
136
|
-
def generate_detections_one_image(self,
|
|
137
|
-
image,
|
|
138
|
-
image_id,
|
|
139
|
-
detection_threshold,
|
|
136
|
+
def generate_detections_one_image(self,
|
|
137
|
+
image,
|
|
138
|
+
image_id,
|
|
139
|
+
detection_threshold,
|
|
140
140
|
image_size=None,
|
|
141
141
|
skip_image_resizing=False,
|
|
142
142
|
augment=False):
|
|
@@ -146,15 +146,15 @@ class TFDetector:
|
|
|
146
146
|
Args:
|
|
147
147
|
image (Image): the PIL Image object (or numpy array) on which we should run the detector, with
|
|
148
148
|
EXIF rotation already handled.
|
|
149
|
-
image_id (str): a path to identify the image; will be in the "file" field of the output object
|
|
149
|
+
image_id (str): a path to identify the image; will be in the "file" field of the output object
|
|
150
150
|
detection_threshold (float): only detections above this threshold will be included in the return
|
|
151
151
|
value
|
|
152
152
|
image_size (tuple, optional): image size to use for inference, only mess with this
|
|
153
153
|
if (a) you're using a model other than MegaDetector or (b) you know what you're
|
|
154
154
|
doing
|
|
155
|
-
skip_image_resizing (bool, optional): whether to skip internal image resizing (and rely on external
|
|
155
|
+
skip_image_resizing (bool, optional): whether to skip internal image resizing (and rely on external
|
|
156
156
|
resizing). Not currently supported, but included here for compatibility with PTDetector.
|
|
157
|
-
augment (bool, optional): enable image augmentation. Not currently supported, but included
|
|
157
|
+
augment (bool, optional): enable image augmentation. Not currently supported, but included
|
|
158
158
|
here for compatibility with PTDetector.
|
|
159
159
|
|
|
160
160
|
Returns:
|
|
@@ -164,18 +164,18 @@ class TFDetector:
|
|
|
164
164
|
- 'detections' (a list of detection objects containing keys 'category', 'conf', and 'bbox')
|
|
165
165
|
- 'failure' (a failure string, or None if everything went fine)
|
|
166
166
|
"""
|
|
167
|
-
|
|
167
|
+
|
|
168
168
|
assert image_size is None, 'Image sizing not supported for TF detectors'
|
|
169
169
|
assert not skip_image_resizing, 'Image sizing not supported for TF detectors'
|
|
170
170
|
assert not augment, 'Image augmentation is not supported for TF detectors'
|
|
171
|
-
|
|
171
|
+
|
|
172
172
|
if detection_threshold is None:
|
|
173
173
|
detection_threshold = 0
|
|
174
|
-
|
|
174
|
+
|
|
175
175
|
result = { 'file': image_id }
|
|
176
|
-
|
|
176
|
+
|
|
177
177
|
try:
|
|
178
|
-
|
|
178
|
+
|
|
179
179
|
b_box, b_score, b_class = self._generate_detections_one_image(image)
|
|
180
180
|
|
|
181
181
|
# our batch size is 1; need to loop the batch dim if supporting batch size > 1
|
|
@@ -183,7 +183,7 @@ class TFDetector:
|
|
|
183
183
|
|
|
184
184
|
detections_cur_image = [] # will be empty for an image with no confident detections
|
|
185
185
|
max_detection_conf = 0.0
|
|
186
|
-
for b, s, c in zip(boxes, scores, classes):
|
|
186
|
+
for b, s, c in zip(boxes, scores, classes): #noqa
|
|
187
187
|
if s > detection_threshold:
|
|
188
188
|
detection_entry = {
|
|
189
189
|
'category': str(int(c)), # use string type for the numerical class label, not int
|
|
@@ -200,12 +200,12 @@ class TFDetector:
|
|
|
200
200
|
result['detections'] = detections_cur_image
|
|
201
201
|
|
|
202
202
|
except Exception as e:
|
|
203
|
-
|
|
203
|
+
|
|
204
204
|
result['failure'] = FAILURE_INFER
|
|
205
205
|
print('TFDetector: image {} failed during inference: {}'.format(image_id, str(e)))
|
|
206
206
|
|
|
207
207
|
return result
|
|
208
208
|
|
|
209
209
|
# ...def generate_detections_one_image(...)
|
|
210
|
-
|
|
210
|
+
|
|
211
211
|
# ...class TFDetector
|