megadetector 5.0.12__py3-none-any.whl → 5.0.13__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/server.py +1 -1
- megadetector/api/batch_processing/api_core/server_api_config.py +0 -1
- megadetector/api/batch_processing/api_core/server_job_status_table.py +0 -3
- megadetector/api/batch_processing/api_core/server_utils.py +0 -4
- megadetector/api/batch_processing/integration/eMammal/test_scripts/push_annotations_to_emammal.py +0 -1
- megadetector/api/synchronous/api_core/animal_detection_api/api_frontend.py +0 -3
- megadetector/classification/efficientnet/utils.py +0 -3
- megadetector/data_management/camtrap_dp_to_coco.py +0 -2
- megadetector/data_management/cct_json_utils.py +15 -6
- megadetector/data_management/coco_to_labelme.py +12 -1
- megadetector/data_management/databases/integrity_check_json_db.py +43 -27
- megadetector/data_management/importers/cacophony-thermal-importer.py +1 -4
- megadetector/data_management/ocr_tools.py +0 -4
- megadetector/data_management/read_exif.py +171 -43
- megadetector/data_management/rename_images.py +187 -0
- megadetector/data_management/wi_download_csv_to_coco.py +3 -2
- megadetector/data_management/yolo_output_to_md_output.py +7 -2
- megadetector/detection/process_video.py +360 -216
- megadetector/detection/pytorch_detector.py +17 -3
- megadetector/detection/run_inference_with_yolov5_val.py +527 -357
- megadetector/detection/tf_detector.py +3 -0
- megadetector/detection/video_utils.py +122 -30
- megadetector/postprocessing/categorize_detections_by_size.py +16 -14
- megadetector/postprocessing/classification_postprocessing.py +716 -0
- megadetector/postprocessing/compare_batch_results.py +101 -93
- megadetector/postprocessing/merge_detections.py +18 -7
- megadetector/postprocessing/postprocess_batch_results.py +133 -127
- megadetector/postprocessing/repeat_detection_elimination/repeat_detections_core.py +236 -232
- megadetector/postprocessing/subset_json_detector_output.py +66 -62
- megadetector/taxonomy_mapping/preview_lila_taxonomy.py +0 -2
- megadetector/utils/ct_utils.py +5 -4
- megadetector/utils/md_tests.py +311 -115
- megadetector/utils/path_utils.py +1 -0
- megadetector/utils/process_utils.py +6 -3
- megadetector/visualization/visualize_db.py +79 -77
- {megadetector-5.0.12.dist-info → megadetector-5.0.13.dist-info}/LICENSE +0 -0
- {megadetector-5.0.12.dist-info → megadetector-5.0.13.dist-info}/METADATA +2 -2
- {megadetector-5.0.12.dist-info → megadetector-5.0.13.dist-info}/RECORD +40 -38
- {megadetector-5.0.12.dist-info → megadetector-5.0.13.dist-info}/top_level.txt +0 -0
- {megadetector-5.0.12.dist-info → megadetector-5.0.13.dist-info}/WHEEL +0 -0
megadetector/utils/path_utils.py
CHANGED
|
@@ -747,6 +747,7 @@ def parallel_get_file_sizes(filenames, max_workers=16,
|
|
|
747
747
|
use_threads (bool, optional): whether to use threads (True) or processes (False) for
|
|
748
748
|
parallel copying; ignored if max_workers <= 1
|
|
749
749
|
verbose (bool, optional): enable additionald debug output
|
|
750
|
+
recursive (bool, optional): enumerate recursively, only relevant if [filenames] is a folder.
|
|
750
751
|
|
|
751
752
|
Returns:
|
|
752
753
|
dict: dictionary mapping filenames to file sizes in bytes
|
|
@@ -15,8 +15,6 @@ Includes handy example code for doing this on multiple processes/threads.
|
|
|
15
15
|
import os
|
|
16
16
|
import subprocess
|
|
17
17
|
|
|
18
|
-
os.environ["PYTHONUNBUFFERED"] = "1"
|
|
19
|
-
|
|
20
18
|
def execute(cmd,encoding=None,errors=None,env=None,verbose=False):
|
|
21
19
|
"""
|
|
22
20
|
Run [cmd] (a single string) in a shell, yielding each line of output to the caller.
|
|
@@ -37,6 +35,8 @@ def execute(cmd,encoding=None,errors=None,env=None,verbose=False):
|
|
|
37
35
|
int: the command's return code, always zero, otherwise a CalledProcessError is raised
|
|
38
36
|
"""
|
|
39
37
|
|
|
38
|
+
os.environ["PYTHONUNBUFFERED"] = "1"
|
|
39
|
+
|
|
40
40
|
if verbose:
|
|
41
41
|
if encoding is not None:
|
|
42
42
|
print('Launching child process with non-default encoding {}'.format(encoding))
|
|
@@ -59,7 +59,8 @@ def execute(cmd,encoding=None,errors=None,env=None,verbose=False):
|
|
|
59
59
|
return return_code
|
|
60
60
|
|
|
61
61
|
|
|
62
|
-
def execute_and_print(cmd,print_output=True,encoding=None,errors=None,
|
|
62
|
+
def execute_and_print(cmd,print_output=True,encoding=None,errors=None,
|
|
63
|
+
env=None,verbose=False,catch_exceptions=True):
|
|
63
64
|
"""
|
|
64
65
|
Run [cmd] (a single string) in a shell, capturing and printing output. Returns
|
|
65
66
|
a dictionary with fields "status" and "output".
|
|
@@ -91,6 +92,8 @@ def execute_and_print(cmd,print_output=True,encoding=None,errors=None,env=None,v
|
|
|
91
92
|
print(s,end='',flush=True)
|
|
92
93
|
to_return['status'] = 0
|
|
93
94
|
except subprocess.CalledProcessError as cpe:
|
|
95
|
+
if not catch_exceptions:
|
|
96
|
+
raise
|
|
94
97
|
print('execute_and_print caught error: {} ({})'.format(cpe.output,str(cpe)))
|
|
95
98
|
to_return['status'] = cpe.returncode
|
|
96
99
|
to_return['output'] = output
|
|
@@ -40,86 +40,88 @@ class DbVizOptions:
|
|
|
40
40
|
Parameters controlling the behavior of visualize_db().
|
|
41
41
|
"""
|
|
42
42
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
include_image_links = False
|
|
75
|
-
|
|
76
|
-
#: Should there be a text link back to each original image?
|
|
77
|
-
include_filename_links = False
|
|
78
|
-
|
|
79
|
-
#: Line width in pixels
|
|
80
|
-
box_thickness = 4
|
|
81
|
-
|
|
82
|
-
#: Number of pixels to expand each bounding box
|
|
83
|
-
box_expansion = 0
|
|
84
|
-
|
|
85
|
-
#: Only include images that contain annotations with these class names (not IDs)
|
|
86
|
-
#:
|
|
87
|
-
#: Mutually exclusive with classes_to_exclude
|
|
88
|
-
classes_to_include = None
|
|
89
|
-
|
|
90
|
-
#: Exclude images that contain annotations with these class names (not IDs)
|
|
91
|
-
#:
|
|
92
|
-
#: Mutually exclusive with classes_to_include
|
|
93
|
-
classes_to_exclude = None
|
|
94
|
-
|
|
95
|
-
#: Special tag used to say "show me all images with multiple categories"
|
|
96
|
-
#:
|
|
97
|
-
#: :meta private:
|
|
98
|
-
multiple_categories_tag = '*multiple*'
|
|
99
|
-
|
|
100
|
-
#: We sometimes flatten image directories by replacing a path separator with
|
|
101
|
-
#: another character. Leave blank for the typical case where this isn't necessary.
|
|
102
|
-
pathsep_replacement = '' # '~'
|
|
103
|
-
|
|
104
|
-
#: Parallelize rendering across multiple workers
|
|
105
|
-
parallelize_rendering = False
|
|
106
|
-
|
|
107
|
-
#: In theory, whether to parallelize with threads (True) or processes (False), but
|
|
108
|
-
#: process-based parallelization in this function is currently unsupported
|
|
109
|
-
parallelize_rendering_with_threads = True
|
|
110
|
-
|
|
111
|
-
#: Number of workers to use for parallelization; ignored if parallelize_rendering
|
|
112
|
-
#: is False
|
|
113
|
-
parallelize_rendering_n_cores = 25
|
|
43
|
+
def __init__(self):
|
|
44
|
+
|
|
45
|
+
#: Number of images to sample from the database, or None to visualize all images
|
|
46
|
+
self.num_to_visualize = None
|
|
47
|
+
|
|
48
|
+
#: Target size for rendering; set either dimension to -1 to preserve aspect ratio.
|
|
49
|
+
#:
|
|
50
|
+
#: If viz_size is None or (-1,-1), the original image size is used.
|
|
51
|
+
self.viz_size = (800, -1)
|
|
52
|
+
|
|
53
|
+
#: HTML rendering options; see write_html_image_list for details
|
|
54
|
+
#:
|
|
55
|
+
#:The most relevant option one might want to set here is:
|
|
56
|
+
#:
|
|
57
|
+
#: htmlOptions['maxFiguresPerHtmlFile']
|
|
58
|
+
#:
|
|
59
|
+
#: ...which can be used to paginate previews to a number of images that will load well
|
|
60
|
+
#: in a browser (5000 is a reasonable limit).
|
|
61
|
+
self.htmlOptions = write_html_image_list()
|
|
62
|
+
|
|
63
|
+
#: Whether to sort images by filename (True) or randomly (False)
|
|
64
|
+
self.sort_by_filename = True
|
|
65
|
+
|
|
66
|
+
#: Only show images that contain bounding boxes
|
|
67
|
+
self.trim_to_images_with_bboxes = False
|
|
68
|
+
|
|
69
|
+
#: Random seed to use for sampling images
|
|
70
|
+
self.random_seed = 0
|
|
71
|
+
|
|
72
|
+
#: Should we include Web search links for each category name?
|
|
73
|
+
self.add_search_links = False
|
|
114
74
|
|
|
115
|
-
|
|
116
|
-
|
|
75
|
+
#: Should each thumbnail image link back to the original image?
|
|
76
|
+
self.include_image_links = False
|
|
77
|
+
|
|
78
|
+
#: Should there be a text link back to each original image?
|
|
79
|
+
self.include_filename_links = False
|
|
80
|
+
|
|
81
|
+
#: Line width in pixels
|
|
82
|
+
self.box_thickness = 4
|
|
83
|
+
|
|
84
|
+
#: Number of pixels to expand each bounding box
|
|
85
|
+
self.box_expansion = 0
|
|
86
|
+
|
|
87
|
+
#: Only include images that contain annotations with these class names (not IDs)
|
|
88
|
+
#:
|
|
89
|
+
#: Mutually exclusive with classes_to_exclude
|
|
90
|
+
self.classes_to_include = None
|
|
91
|
+
|
|
92
|
+
#: Exclude images that contain annotations with these class names (not IDs)
|
|
93
|
+
#:
|
|
94
|
+
#: Mutually exclusive with classes_to_include
|
|
95
|
+
self.classes_to_exclude = None
|
|
96
|
+
|
|
97
|
+
#: Special tag used to say "show me all images with multiple categories"
|
|
98
|
+
#:
|
|
99
|
+
#: :meta private:
|
|
100
|
+
self.multiple_categories_tag = '*multiple*'
|
|
117
101
|
|
|
118
|
-
|
|
119
|
-
|
|
102
|
+
#: We sometimes flatten image directories by replacing a path separator with
|
|
103
|
+
#: another character. Leave blank for the typical case where this isn't necessary.
|
|
104
|
+
self.pathsep_replacement = '' # '~'
|
|
120
105
|
|
|
121
|
-
|
|
122
|
-
|
|
106
|
+
#: Parallelize rendering across multiple workers
|
|
107
|
+
self.parallelize_rendering = False
|
|
108
|
+
|
|
109
|
+
#: In theory, whether to parallelize with threads (True) or processes (False), but
|
|
110
|
+
#: process-based parallelization in this function is currently unsupported
|
|
111
|
+
self.parallelize_rendering_with_threads = True
|
|
112
|
+
|
|
113
|
+
#: Number of workers to use for parallelization; ignored if parallelize_rendering
|
|
114
|
+
#: is False
|
|
115
|
+
self.parallelize_rendering_n_cores = 25
|
|
116
|
+
|
|
117
|
+
#: Should we show absolute (True) or relative (False) paths for each image?
|
|
118
|
+
self.show_full_paths = False
|
|
119
|
+
|
|
120
|
+
#: Set to False to skip existing images
|
|
121
|
+
self.force_rendering = True
|
|
122
|
+
|
|
123
|
+
#: Enable additionald debug console output
|
|
124
|
+
self.verbose = False
|
|
123
125
|
|
|
124
126
|
|
|
125
127
|
#%% Helper functions
|
|
File without changes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: megadetector
|
|
3
|
-
Version: 5.0.
|
|
3
|
+
Version: 5.0.13
|
|
4
4
|
Summary: MegaDetector is an AI model that helps conservation folks spend less time doing boring things with camera trap images.
|
|
5
5
|
Author-email: Your friendly neighborhood MegaDetector team <cameratraps@lila.science>
|
|
6
6
|
Maintainer-email: Your friendly neighborhood MegaDetector team <cameratraps@lila.science>
|
|
@@ -114,7 +114,7 @@ print('Found {} detections above threshold'.format(len(detections_above_threshol
|
|
|
114
114
|
|
|
115
115
|
```
|
|
116
116
|
from megadetector.detection.run_detector_batch import \
|
|
117
|
-
load_and_run_detector_batch,write_results_to_file
|
|
117
|
+
load_and_run_detector_batch, write_results_to_file
|
|
118
118
|
from megadetector.utils import path_utils
|
|
119
119
|
import os
|
|
120
120
|
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
megadetector/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
2
|
megadetector/api/batch_processing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3
3
|
megadetector/api/batch_processing/api_core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
|
-
megadetector/api/batch_processing/api_core/server.py,sha256
|
|
5
|
-
megadetector/api/batch_processing/api_core/server_api_config.py,sha256=
|
|
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
6
|
megadetector/api/batch_processing/api_core/server_app_config.py,sha256=tQCFsFv0wJCegHfnu-Za3okdXwEd4U522hiM0YGNkMY,1860
|
|
7
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=
|
|
8
|
+
megadetector/api/batch_processing/api_core/server_job_status_table.py,sha256=P621Df7RTTKqW8VlxnCqkBtIO4Ko5bSS6WbU0ETzPGY,5984
|
|
9
9
|
megadetector/api/batch_processing/api_core/server_orchestration.py,sha256=LYHABzhOvP0NrM1VIjI6Vwb95YZ5xjQ52mUJW8oIOQ0,17003
|
|
10
|
-
megadetector/api/batch_processing/api_core/server_utils.py,sha256=
|
|
10
|
+
megadetector/api/batch_processing/api_core/server_utils.py,sha256=uJvnW50lSE_LnRtEyrFI2dbVSecmGudaRhUH6NcAx1M,3100
|
|
11
11
|
megadetector/api/batch_processing/api_core/batch_service/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
12
12
|
megadetector/api/batch_processing/api_core/batch_service/score.py,sha256=_hjUBIe0s9wmpmQwwDg-fd7tJMCn8735zJcgF15mTFo,17354
|
|
13
13
|
megadetector/api/batch_processing/api_core_support/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -18,12 +18,12 @@ megadetector/api/batch_processing/data_preparation/__init__.py,sha256=47DEQpj8HB
|
|
|
18
18
|
megadetector/api/batch_processing/integration/digiKam/setup.py,sha256=7P1X3JYrBDXmLUeLRrzxNfDkL5lo-pY8nXsp9Cz8rOI,203
|
|
19
19
|
megadetector/api/batch_processing/integration/digiKam/xmp_integration.py,sha256=zk5s7dD-FIkNnRxECT-0TAuBw7R__Or5_ft7Ha3iqMM,17774
|
|
20
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=
|
|
21
|
+
megadetector/api/batch_processing/integration/eMammal/test_scripts/push_annotations_to_emammal.py,sha256=keqru1Ktbrj6J6TBEUm3e5N0Ps_0G2X4u4YVavWvDiU,3576
|
|
22
22
|
megadetector/api/batch_processing/integration/eMammal/test_scripts/select_images_for_testing.py,sha256=OYMu97p8vprSv03QcnS6aSxPBocn9sgaozfUqq_JpyM,1369
|
|
23
23
|
megadetector/api/synchronous/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
24
24
|
megadetector/api/synchronous/api_core/animal_detection_api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
25
25
|
megadetector/api/synchronous/api_core/animal_detection_api/api_backend.py,sha256=6fo9k1byFZdxeHzov-qNFD1ZMClXPIG-BBUlZlbHoMw,4929
|
|
26
|
-
megadetector/api/synchronous/api_core/animal_detection_api/api_frontend.py,sha256=
|
|
26
|
+
megadetector/api/synchronous/api_core/animal_detection_api/api_frontend.py,sha256=f16J7OBN87Tv0vVIIpXlyyVDeT6qYXDe5Kpr5XGqhdQ,10233
|
|
27
27
|
megadetector/api/synchronous/api_core/animal_detection_api/config.py,sha256=05fVcLx0KK3wWFi62Mr-m_soewVn81qqeObUh-a2mrA,982
|
|
28
28
|
megadetector/api/synchronous/api_core/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
29
29
|
megadetector/api/synchronous/api_core/tests/load_test.py,sha256=bxyk3Oufl0V79vRsCPeRtWlE2o2KRtVgiqs7TSyP-iU,3277
|
|
@@ -50,32 +50,33 @@ megadetector/classification/train_classifier_tf.py,sha256=aounVoV20Iz1X5VZzKfJEa
|
|
|
50
50
|
megadetector/classification/train_utils.py,sha256=5XnwPGtIjtDFu4xend8BH97zYhulUhF0BJHA-uYzojg,11333
|
|
51
51
|
megadetector/classification/efficientnet/__init__.py,sha256=e-jfknjzCc5a0CSW-TaZ2vi0SPU1OMIsayoz2s94QAo,182
|
|
52
52
|
megadetector/classification/efficientnet/model.py,sha256=qJHWV9-rYKa4E_TIee5N_OjRhqDdM-icPpoMap3Q5HM,17040
|
|
53
|
-
megadetector/classification/efficientnet/utils.py,sha256=
|
|
53
|
+
megadetector/classification/efficientnet/utils.py,sha256=dzrDrQQcvINdJFbODmrHQMUaM0RaUbct52zcSprseAg,24693
|
|
54
54
|
megadetector/data_management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
55
|
-
megadetector/data_management/camtrap_dp_to_coco.py,sha256=
|
|
56
|
-
megadetector/data_management/cct_json_utils.py,sha256=
|
|
55
|
+
megadetector/data_management/camtrap_dp_to_coco.py,sha256=WC5u5nK5BwXpV26_pGy6CppQryJMgsJ9NtDbGIRQqLg,8629
|
|
56
|
+
megadetector/data_management/cct_json_utils.py,sha256=LuNbxU5EAslWanC08PTKzwzCUmesGnbbJhZ1e2dCgnI,15140
|
|
57
57
|
megadetector/data_management/cct_to_md.py,sha256=BvQ24XlYhgMYFcsvo6btR1k1UsiPL1vBoxegooJbxdA,5070
|
|
58
58
|
megadetector/data_management/cct_to_wi.py,sha256=hnFErIlBDmhZtBv21kDW14MSdHlUjwtCGn2vnG-cN34,9771
|
|
59
|
-
megadetector/data_management/coco_to_labelme.py,sha256=
|
|
59
|
+
megadetector/data_management/coco_to_labelme.py,sha256=Uql6f1TaMmKIZClCcqUB1bPxokdXgyAKsQm5pk5foKk,8986
|
|
60
60
|
megadetector/data_management/coco_to_yolo.py,sha256=rTDOh3XdoOoo7HCSH7obT3xpQgiSykf71ba8uOXfnxc,28121
|
|
61
61
|
megadetector/data_management/generate_crops_from_cct.py,sha256=Esq2Vlvp1AQvD8bmtC15OvoTZTHASBfcIVIuisxXT08,4383
|
|
62
62
|
megadetector/data_management/get_image_sizes.py,sha256=2b6arj4gvoN-9f61lC3t1zAFFwYFxfb2iL83Tstoiik,6602
|
|
63
63
|
megadetector/data_management/labelme_to_coco.py,sha256=8RUXALXbLpmS7UYUet4BAe9JVSDW7ojwDDpxYs072ZI,21231
|
|
64
64
|
megadetector/data_management/labelme_to_yolo.py,sha256=dRePSOwU_jiCr0EakDQCz1Ct-ZHDxDglUk4HbM1LfWc,10034
|
|
65
|
-
megadetector/data_management/ocr_tools.py,sha256=
|
|
66
|
-
megadetector/data_management/read_exif.py,sha256=
|
|
65
|
+
megadetector/data_management/ocr_tools.py,sha256=T9ClY3B-blnK3-UF1vpVdageknYsykm_6FAfqn0kliU,32529
|
|
66
|
+
megadetector/data_management/read_exif.py,sha256=BgV5SMZbPUoBdh0Mxljwzat_zO7B4xiD1liddbGV8gE,27635
|
|
67
67
|
megadetector/data_management/remap_coco_categories.py,sha256=xXWv0QhTjkUfc9RKtAZanK77HMSq_21mFg_34KFD6hw,2903
|
|
68
68
|
megadetector/data_management/remove_exif.py,sha256=9YwMUliszhVzkkUcotpRKA-a3h5WdQF1taQ594Bgm60,1666
|
|
69
|
+
megadetector/data_management/rename_images.py,sha256=AG3YIxXEYdGmK4G-rv0_XZIylPqOZpS6gfEkydF6oDg,6918
|
|
69
70
|
megadetector/data_management/resize_coco_dataset.py,sha256=AaiV7efIcNnqsXsnQckmHq2G__7ZQHBV_jN6rhZfMjo,6810
|
|
70
|
-
megadetector/data_management/wi_download_csv_to_coco.py,sha256=
|
|
71
|
-
megadetector/data_management/yolo_output_to_md_output.py,sha256=
|
|
71
|
+
megadetector/data_management/wi_download_csv_to_coco.py,sha256=ilnJZhNZK-FGUR-AfUSWjIDUk9Gytgxw7IOK_N8WKLE,8350
|
|
72
|
+
megadetector/data_management/yolo_output_to_md_output.py,sha256=VZtatLoryeh2pbh1fRAJe-ao7vtoNn6ACyRbAk-2Mlg,17561
|
|
72
73
|
megadetector/data_management/yolo_to_coco.py,sha256=G9XiB9D8PWaCq_kc61pKe2GkkuKwdJ7K7zsbGShb_jw,25176
|
|
73
74
|
megadetector/data_management/annotations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
74
75
|
megadetector/data_management/annotations/annotation_constants.py,sha256=1597MpAr_HdidIHoDFj4RgUO3K5e2Xm2bGafGeonR2k,953
|
|
75
76
|
megadetector/data_management/databases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
76
77
|
megadetector/data_management/databases/add_width_and_height_to_db.py,sha256=X7A_iniGwlkhZ0jUNm564GT_mH2_RJGLD0aGP9cBhY0,749
|
|
77
78
|
megadetector/data_management/databases/combine_coco_camera_traps_files.py,sha256=oeELrMgxhsJ6aNBxPQyu4CmsdtYnzS5GKZEV8U-XUdk,6693
|
|
78
|
-
megadetector/data_management/databases/integrity_check_json_db.py,sha256=
|
|
79
|
+
megadetector/data_management/databases/integrity_check_json_db.py,sha256=A8AAlpfAbbthUH3ZOQrvRjzliMl2RS8g764Nk7Ypuqk,17109
|
|
79
80
|
megadetector/data_management/databases/subset_json_db.py,sha256=JK71qSUpUZe7cJquyt2xEzirDoZq1Lrr2X0cgtHKBpA,3219
|
|
80
81
|
megadetector/data_management/importers/add_nacti_sizes.py,sha256=jjGTpd36g5w7nLIeOatXRwu1Uti2GiGgP3-61QSg8oA,1156
|
|
81
82
|
megadetector/data_management/importers/add_timestamps_to_icct.py,sha256=5l1TkWq3X4Mxed7zlZ07U1RQcjbzBnwcoftNiaruigM,2364
|
|
@@ -84,7 +85,7 @@ megadetector/data_management/importers/auckland_doc_test_to_json.py,sha256=tT4Xn
|
|
|
84
85
|
megadetector/data_management/importers/auckland_doc_to_json.py,sha256=EoNsAJvzTwcgHspE05eO0LHazMVYM7-yzFBit0FiJWk,5970
|
|
85
86
|
megadetector/data_management/importers/awc_to_json.py,sha256=e1HjShGS2WC-l99FV89g1u0o2v5990Vh9XsjIukg6qQ,5327
|
|
86
87
|
megadetector/data_management/importers/bellevue_to_json.py,sha256=oJMSF0r_snRXtppiwFy4vvP8gErEw6_7Kv1UJs59QLo,7919
|
|
87
|
-
megadetector/data_management/importers/cacophony-thermal-importer.py,sha256=
|
|
88
|
+
megadetector/data_management/importers/cacophony-thermal-importer.py,sha256=4o7gyX-uUlS3rkQZlOUGMaaUVT_pdTizcuXw4rvDrE4,28577
|
|
88
89
|
megadetector/data_management/importers/carrizo_shrubfree_2018.py,sha256=ah14pfzLuDUph--qUqRqvWszOFY245rsIfAgCEF7F_I,7858
|
|
89
90
|
megadetector/data_management/importers/carrizo_trail_cam_2017.py,sha256=gwpL0sM82A6UBn2qWilP15D-1lOzQchZuhxXMzZ_7Ws,8862
|
|
90
91
|
megadetector/data_management/importers/cct_field_adjustments.py,sha256=wQmcntZNpHYRGjZvOcXqPxhAGdn1pDZa1pAXgTAyKmI,1348
|
|
@@ -134,40 +135,41 @@ megadetector/data_management/lila/get_lila_image_counts.py,sha256=UxXS5RDnSA_Wbx
|
|
|
134
135
|
megadetector/data_management/lila/lila_common.py,sha256=IEnGoyRgcqbek1qJ1gFE83p1Pg_5kaMS-nQI25lRWIs,10132
|
|
135
136
|
megadetector/data_management/lila/test_lila_metadata_urls.py,sha256=2zKNjgqC3kxdFfyvQC3KTlpc9lf2iMzecHQBf--r_Tk,4438
|
|
136
137
|
megadetector/detection/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
137
|
-
megadetector/detection/process_video.py,sha256=
|
|
138
|
-
megadetector/detection/pytorch_detector.py,sha256
|
|
138
|
+
megadetector/detection/process_video.py,sha256=5uyJdARkEHfpeL8ASE3XS72WjNGkMqj6GH63joWxMSs,35622
|
|
139
|
+
megadetector/detection/pytorch_detector.py,sha256=gLhCTvBYa1X54cobxle-G9L5MlHDk0UUn353TEtmu4M,13557
|
|
139
140
|
megadetector/detection/run_detector.py,sha256=CxwCqE-T5ioQ1kb5Tn4HvzBMK0gvJwaAOl8HfDTWiVY,29745
|
|
140
141
|
megadetector/detection/run_detector_batch.py,sha256=MQ8cEVg92aTmysapPuj3JAr92HfnuopCHbDGoMZA7ko,52132
|
|
141
|
-
megadetector/detection/run_inference_with_yolov5_val.py,sha256=
|
|
142
|
+
megadetector/detection/run_inference_with_yolov5_val.py,sha256=u9i1ndwl_k0DsiAWYQcYrrrB9D9Wt56_k6iGTAetUaM,46786
|
|
142
143
|
megadetector/detection/run_tiled_inference.py,sha256=vw0713eNuMiEOjHfweQl58zPHNxPOMdFWZ8bTDLhlMY,37883
|
|
143
|
-
megadetector/detection/tf_detector.py,sha256
|
|
144
|
-
megadetector/detection/video_utils.py,sha256=
|
|
144
|
+
megadetector/detection/tf_detector.py,sha256=-Yr42X06HwGvYDflYbdBI8dND5ahBCzu-xXSfdWd6ag,7651
|
|
145
|
+
megadetector/detection/video_utils.py,sha256=4dQGEVk7rJ7bOrCHobrAMVwb-xE-Nu0cYptxLxPSW7w,27245
|
|
145
146
|
megadetector/detection/detector_training/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
146
147
|
megadetector/detection/detector_training/model_main_tf2.py,sha256=YwNsZ7hkIFaEuwKU0rHG_VyqiR_0E01BbdlD0Yx4Smo,4936
|
|
147
148
|
megadetector/postprocessing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
148
149
|
megadetector/postprocessing/add_max_conf.py,sha256=qTE1_0RwGAy6jLDkHrIo2pS84yNbUV11s4IZuAYGdIU,1514
|
|
149
|
-
megadetector/postprocessing/categorize_detections_by_size.py,sha256=
|
|
150
|
+
megadetector/postprocessing/categorize_detections_by_size.py,sha256=YdapcvjA6Dz2dPa2AFf1Dwyl7C-OmmP4G4OjhTOuaF4,5797
|
|
151
|
+
megadetector/postprocessing/classification_postprocessing.py,sha256=8uvlA0Gc8nakM5IE5Pud7WZfmF5kEhcYvxgQXcI9kl0,30429
|
|
150
152
|
megadetector/postprocessing/combine_api_outputs.py,sha256=xCJHEKca8YW-mupEr0yNNwwSBeL9NvcV1w3VtEzN4lk,8535
|
|
151
|
-
megadetector/postprocessing/compare_batch_results.py,sha256=
|
|
153
|
+
megadetector/postprocessing/compare_batch_results.py,sha256=7O5c6-JsIDpuIGobks_R9j8MPuiZQRnEtNnJQsJqICM,38918
|
|
152
154
|
megadetector/postprocessing/convert_output_format.py,sha256=IGCWoIJ1Z9RUI9yqpbL3t5KThDiElM3czmiTyXty72c,15002
|
|
153
155
|
megadetector/postprocessing/load_api_results.py,sha256=FqcaiPMuqTojZOV3Jn14pJESpuwjWGbZtcvJuVXUaDM,6861
|
|
154
156
|
megadetector/postprocessing/md_to_coco.py,sha256=t8zHN3QmwxuvcQKxLd_yMSjwncxy7YEoq2EGr0kwBDs,11049
|
|
155
157
|
megadetector/postprocessing/md_to_labelme.py,sha256=hejMKVxaz_xdtsGDPTQkeWuis7gzT-VOrL2Qf8ym1x0,11703
|
|
156
|
-
megadetector/postprocessing/merge_detections.py,sha256=
|
|
157
|
-
megadetector/postprocessing/postprocess_batch_results.py,sha256=
|
|
158
|
+
megadetector/postprocessing/merge_detections.py,sha256=AEMgMivhph1vph_t_Qv85d9iHynT2nvq7otN4KGrDLU,17776
|
|
159
|
+
megadetector/postprocessing/postprocess_batch_results.py,sha256=ucFW2WsuoxIgEC62CrgOLCOTO3LxIZ-LPCYRJ9xjais,78178
|
|
158
160
|
megadetector/postprocessing/remap_detection_categories.py,sha256=d9IYTa0i_KbbrarJc_mczABmdwypscl5-KpK8Hx_z8o,6640
|
|
159
161
|
megadetector/postprocessing/render_detection_confusion_matrix.py,sha256=_wsk4W0PbNiqmFuHy-EA0Z07B1tQLMsdCTPatnHAdZw,27382
|
|
160
162
|
megadetector/postprocessing/separate_detections_into_folders.py,sha256=k42gxnL8hbBiV0e2T-jmFrhxzIxnhi57Nx9cDSSL5s0,31218
|
|
161
|
-
megadetector/postprocessing/subset_json_detector_output.py,sha256=
|
|
163
|
+
megadetector/postprocessing/subset_json_detector_output.py,sha256=TIXIWEv0nh4cXvhMLcM_ZryM5ly1NOTkWopM2RjEpqQ,26822
|
|
162
164
|
megadetector/postprocessing/top_folders_to_bottom.py,sha256=Dqk-KZXiRlIYlmLZmk6aUapmaaLJUKOf8wK1kxt9W6A,6283
|
|
163
165
|
megadetector/postprocessing/repeat_detection_elimination/find_repeat_detections.py,sha256=e4Y9CyMyd-bLN3il8tu76vI0nVYHZlhZr6vcL0J4zQ0,9832
|
|
164
166
|
megadetector/postprocessing/repeat_detection_elimination/remove_repeat_detections.py,sha256=tARPxuY0OyQgpKU2XqiQPko3f-hHnWuISB8ZlZgXwxI,2819
|
|
165
|
-
megadetector/postprocessing/repeat_detection_elimination/repeat_detections_core.py,sha256=
|
|
167
|
+
megadetector/postprocessing/repeat_detection_elimination/repeat_detections_core.py,sha256=_RX0Gtb8YQPYdfQDGIvg1RvyqsdyanmEg1pqVmheHlg,67776
|
|
166
168
|
megadetector/taxonomy_mapping/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
167
169
|
megadetector/taxonomy_mapping/map_lila_taxonomy_to_wi_taxonomy.py,sha256=6D_YHTeWTs6O8S9ABog2t9-wfQSh9dW2k9XTqXUZKfo,17927
|
|
168
170
|
megadetector/taxonomy_mapping/map_new_lila_datasets.py,sha256=M-hRnQuqh5QhW-7LmTvYRex1Y2izQFSgEzb92gqqx1M,4062
|
|
169
171
|
megadetector/taxonomy_mapping/prepare_lila_taxonomy_release.py,sha256=N9TUgg3_2u4hc5OBRydvEpweC3RIJ9ry5bXoi1BXLAY,4676
|
|
170
|
-
megadetector/taxonomy_mapping/preview_lila_taxonomy.py,sha256=
|
|
172
|
+
megadetector/taxonomy_mapping/preview_lila_taxonomy.py,sha256=3e-e3rurissksHgRCrc-_oLJSy2KCxcvwtAQM7L2E1U,19549
|
|
171
173
|
megadetector/taxonomy_mapping/retrieve_sample_image.py,sha256=4cfWsLRwS_EwAmQr2p5tA_W6glBK71tSjPfaHxUZQWs,1979
|
|
172
174
|
megadetector/taxonomy_mapping/simple_image_download.py,sha256=_1dEGn4356mdQAy9yzkH5DntPO7-nQyYo2zm08ODpJc,6852
|
|
173
175
|
megadetector/taxonomy_mapping/species_lookup.py,sha256=B5arfF1OVICtTokVOtJcN8W2SxGmq46AO0SfA11Upt8,28291
|
|
@@ -176,11 +178,11 @@ megadetector/taxonomy_mapping/taxonomy_graph.py,sha256=ayrTFseVaIMbtMXhnjWCkZdxI
|
|
|
176
178
|
megadetector/taxonomy_mapping/validate_lila_category_mappings.py,sha256=1qyZr23bvZSVUYLQnO1XAtIZ4jdpARA5dxt8euKVyOA,2527
|
|
177
179
|
megadetector/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
178
180
|
megadetector/utils/azure_utils.py,sha256=0BdnkG2hW-X0yFpsJqmBhOd2wysz_LvhuyImPJMVPJs,6271
|
|
179
|
-
megadetector/utils/ct_utils.py,sha256=
|
|
181
|
+
megadetector/utils/ct_utils.py,sha256=RTMc0UszYuW9QpMo-qetaWder1mFWIzkMLL2UM6PYdY,17960
|
|
180
182
|
megadetector/utils/directory_listing.py,sha256=r4rg2xA4O9ZVxVtzPZzXIXa0DOEukAJMTTNcNSiQcuM,9668
|
|
181
|
-
megadetector/utils/md_tests.py,sha256=
|
|
182
|
-
megadetector/utils/path_utils.py,sha256=
|
|
183
|
-
megadetector/utils/process_utils.py,sha256=
|
|
183
|
+
megadetector/utils/md_tests.py,sha256=sD6HW_E5hqNcj-rjDVKlcwzBOT8W0WAY9khG3ofpvQE,44322
|
|
184
|
+
megadetector/utils/path_utils.py,sha256=E57sjmSzZ5FWd5aQvLiP7VvjVoyKa1S5yL0Oz-CdxRs,36049
|
|
185
|
+
megadetector/utils/process_utils.py,sha256=pSReAq30XGit_uTy5a-YeQ9_DlYIGMreQZ_kRAcvnJc,5330
|
|
184
186
|
megadetector/utils/sas_blob_utils.py,sha256=k76EcMmJc_otrEHcfV2fxAC6fNhxU88FxM3ddSYrsKU,16917
|
|
185
187
|
megadetector/utils/split_locations_into_train_val.py,sha256=jvaDu1xKB51L3Xq2nXQo0XtXRjNRf8RglBApl1g6gHo,10101
|
|
186
188
|
megadetector/utils/string_utils.py,sha256=ZQapJodzvTDyQhjZgMoMl3-9bqnKAUlORpws8Db9AkA,2050
|
|
@@ -190,10 +192,10 @@ megadetector/visualization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJ
|
|
|
190
192
|
megadetector/visualization/plot_utils.py,sha256=lOfU3uPrcuHZagV_1SN8erT8PujIepocgw6KZ17Ej6c,10671
|
|
191
193
|
megadetector/visualization/render_images_with_thumbnails.py,sha256=kgJYW8BsqRO4C7T3sqItdBuSkZ64I1vOtIWAsVG4XBI,10589
|
|
192
194
|
megadetector/visualization/visualization_utils.py,sha256=BIb1uCDD6TlHLDM_2uA-4lzcVcdiFLeKu8kuY2fct6g,62150
|
|
193
|
-
megadetector/visualization/visualize_db.py,sha256=
|
|
195
|
+
megadetector/visualization/visualize_db.py,sha256=3FhOtn3GHvNsomwSpsSEzYe58lF9B4Ob3MEi_xplrdo,21256
|
|
194
196
|
megadetector/visualization/visualize_detector_output.py,sha256=dFpQdLnbULO8wPGeN2z0muYNtHglUDsH-LeqdbYa6DY,17096
|
|
195
|
-
megadetector-5.0.
|
|
196
|
-
megadetector-5.0.
|
|
197
|
-
megadetector-5.0.
|
|
198
|
-
megadetector-5.0.
|
|
199
|
-
megadetector-5.0.
|
|
197
|
+
megadetector-5.0.13.dist-info/LICENSE,sha256=RMa3qq-7Cyk7DdtqRj_bP1oInGFgjyHn9-PZ3PcrqIs,1100
|
|
198
|
+
megadetector-5.0.13.dist-info/METADATA,sha256=F1YjjxKHnVp17PDYDGPDmFfntKjltACiD7dg8Kq1584,7893
|
|
199
|
+
megadetector-5.0.13.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
|
200
|
+
megadetector-5.0.13.dist-info/top_level.txt,sha256=wf9DXa8EwiOSZ4G5IPjakSxBPxTDjhYYnqWRfR-zS4M,13
|
|
201
|
+
megadetector-5.0.13.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|