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
|
@@ -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,,
|