megadetector 5.0.12__py3-none-any.whl → 5.0.14__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 +178 -44
- 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 +548 -244
- megadetector/detection/pytorch_detector.py +33 -14
- megadetector/detection/run_detector.py +17 -5
- megadetector/detection/run_detector_batch.py +179 -65
- megadetector/detection/run_inference_with_yolov5_val.py +527 -357
- megadetector/detection/tf_detector.py +14 -3
- megadetector/detection/video_utils.py +284 -61
- 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/convert_output_format.py +12 -5
- 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 +380 -128
- megadetector/utils/path_utils.py +39 -6
- megadetector/utils/process_utils.py +13 -4
- megadetector/visualization/visualization_utils.py +7 -2
- megadetector/visualization/visualize_db.py +79 -77
- megadetector/visualization/visualize_detector_output.py +0 -1
- {megadetector-5.0.12.dist-info → megadetector-5.0.14.dist-info}/LICENSE +0 -0
- {megadetector-5.0.12.dist-info → megadetector-5.0.14.dist-info}/METADATA +2 -2
- {megadetector-5.0.12.dist-info → megadetector-5.0.14.dist-info}/RECORD +45 -43
- {megadetector-5.0.12.dist-info → megadetector-5.0.14.dist-info}/top_level.txt +0 -0
- {megadetector-5.0.12.dist-info → megadetector-5.0.14.dist-info}/WHEEL +0 -0
megadetector/utils/path_utils.py
CHANGED
|
@@ -733,9 +733,13 @@ def _get_file_size(filename,verbose=False):
|
|
|
733
733
|
return (filename,size)
|
|
734
734
|
|
|
735
735
|
|
|
736
|
-
def parallel_get_file_sizes(filenames,
|
|
737
|
-
|
|
738
|
-
|
|
736
|
+
def parallel_get_file_sizes(filenames,
|
|
737
|
+
max_workers=16,
|
|
738
|
+
use_threads=True,
|
|
739
|
+
verbose=False,
|
|
740
|
+
recursive=True,
|
|
741
|
+
convert_slashes=True,
|
|
742
|
+
return_relative_paths=False):
|
|
739
743
|
"""
|
|
740
744
|
Returns a dictionary mapping every file in [filenames] to the corresponding file size,
|
|
741
745
|
or None for errors. If [filenames] is a folder, will enumerate the folder (optionally recursively).
|
|
@@ -747,6 +751,10 @@ def parallel_get_file_sizes(filenames, max_workers=16,
|
|
|
747
751
|
use_threads (bool, optional): whether to use threads (True) or processes (False) for
|
|
748
752
|
parallel copying; ignored if max_workers <= 1
|
|
749
753
|
verbose (bool, optional): enable additionald debug output
|
|
754
|
+
recursive (bool, optional): enumerate recursively, only relevant if [filenames] is a folder.
|
|
755
|
+
convert_slashes (bool, optional): convert backslashes to forward slashes
|
|
756
|
+
return_relative_paths (bool, optional): return relative paths; only relevant if [filenames]
|
|
757
|
+
is a folder.
|
|
750
758
|
|
|
751
759
|
Returns:
|
|
752
760
|
dict: dictionary mapping filenames to file sizes in bytes
|
|
@@ -754,20 +762,45 @@ def parallel_get_file_sizes(filenames, max_workers=16,
|
|
|
754
762
|
|
|
755
763
|
n_workers = min(max_workers,len(filenames))
|
|
756
764
|
|
|
765
|
+
folder_name = None
|
|
766
|
+
|
|
767
|
+
if verbose:
|
|
768
|
+
print('Enumerating files')
|
|
769
|
+
|
|
757
770
|
if isinstance(filenames,str) and os.path.isdir(filenames):
|
|
771
|
+
|
|
772
|
+
folder_name = filenames
|
|
773
|
+
|
|
774
|
+
# Enumerate absolute paths here, we'll convert to relative later if requested
|
|
758
775
|
filenames = recursive_file_list(filenames,recursive=recursive,return_relative_paths=False)
|
|
776
|
+
|
|
777
|
+
if verbose:
|
|
778
|
+
print('Creating worker pool')
|
|
759
779
|
|
|
760
780
|
if use_threads:
|
|
781
|
+
pool_string = 'thread'
|
|
761
782
|
pool = ThreadPool(n_workers)
|
|
762
783
|
else:
|
|
784
|
+
pool_string = 'process'
|
|
763
785
|
pool = Pool(n_workers)
|
|
764
786
|
|
|
765
|
-
|
|
787
|
+
if verbose:
|
|
788
|
+
print('Created a {} pool of {} workers'.format(
|
|
789
|
+
pool_string,n_workers))
|
|
790
|
+
|
|
791
|
+
# This returns (filename,size) tuples
|
|
792
|
+
get_size_results = list(tqdm(pool.imap(
|
|
766
793
|
partial(_get_file_size,verbose=verbose),filenames), total=len(filenames)))
|
|
767
794
|
|
|
768
795
|
to_return = {}
|
|
769
|
-
for r in
|
|
770
|
-
|
|
796
|
+
for r in get_size_results:
|
|
797
|
+
fn = r[0]
|
|
798
|
+
if return_relative_paths and (folder_name is not None):
|
|
799
|
+
fn = os.path.relpath(fn,folder_name)
|
|
800
|
+
if convert_slashes:
|
|
801
|
+
fn = fn.replace('\\','/')
|
|
802
|
+
size = r[1]
|
|
803
|
+
to_return[fn] = size
|
|
771
804
|
|
|
772
805
|
return to_return
|
|
773
806
|
|
|
@@ -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,9 @@ 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,
|
|
64
|
+
echo_command=False):
|
|
63
65
|
"""
|
|
64
66
|
Run [cmd] (a single string) in a shell, capturing and printing output. Returns
|
|
65
67
|
a dictionary with fields "status" and "output".
|
|
@@ -76,12 +78,17 @@ def execute_and_print(cmd,print_output=True,encoding=None,errors=None,env=None,v
|
|
|
76
78
|
errors (str, optional): error handling, see Popen() documentation
|
|
77
79
|
env (dict, optional): environment variables, see Popen() documentation
|
|
78
80
|
verbose (bool, optional): enable additional debug console output
|
|
79
|
-
|
|
81
|
+
catch_exceptions (bool, optional): catch exceptions and include in the output, otherwise raise
|
|
82
|
+
echo_command (bool, optional): print the command before executing
|
|
83
|
+
|
|
80
84
|
Returns:
|
|
81
85
|
dict: a dictionary with fields "status" (the process return code) and "output"
|
|
82
86
|
(the content of stdout)
|
|
83
87
|
"""
|
|
84
88
|
|
|
89
|
+
if echo_command:
|
|
90
|
+
print('Running command:\n{}\n'.format(cmd))
|
|
91
|
+
|
|
85
92
|
to_return = {'status':'unknown','output':''}
|
|
86
93
|
output = []
|
|
87
94
|
try:
|
|
@@ -91,6 +98,8 @@ def execute_and_print(cmd,print_output=True,encoding=None,errors=None,env=None,v
|
|
|
91
98
|
print(s,end='',flush=True)
|
|
92
99
|
to_return['status'] = 0
|
|
93
100
|
except subprocess.CalledProcessError as cpe:
|
|
101
|
+
if not catch_exceptions:
|
|
102
|
+
raise
|
|
94
103
|
print('execute_and_print caught error: {} ({})'.format(cpe.output,str(cpe)))
|
|
95
104
|
to_return['status'] = cpe.returncode
|
|
96
105
|
to_return['output'] = output
|
|
@@ -1457,7 +1457,8 @@ def parallel_check_image_integrity(filenames,
|
|
|
1457
1457
|
modes=None,
|
|
1458
1458
|
max_workers=16,
|
|
1459
1459
|
use_threads=True,
|
|
1460
|
-
recursive=True
|
|
1460
|
+
recursive=True,
|
|
1461
|
+
verbose=False):
|
|
1461
1462
|
"""
|
|
1462
1463
|
Check whether we can successfully load a list of images via OpenCV and/or PIL.
|
|
1463
1464
|
|
|
@@ -1470,6 +1471,7 @@ def parallel_check_image_integrity(filenames,
|
|
|
1470
1471
|
parallelization
|
|
1471
1472
|
recursive (bool, optional): if [filenames] is a folder, whether to search recursively for images.
|
|
1472
1473
|
Ignored if [filenames] is a list.
|
|
1474
|
+
verbose (bool, optional): enable additional debug output
|
|
1473
1475
|
|
|
1474
1476
|
Returns:
|
|
1475
1477
|
list: a list of dicts, each with a key called 'file' (the value of [filename]), one key for
|
|
@@ -1480,9 +1482,12 @@ def parallel_check_image_integrity(filenames,
|
|
|
1480
1482
|
n_workers = min(max_workers,len(filenames))
|
|
1481
1483
|
|
|
1482
1484
|
if isinstance(filenames,str) and os.path.isdir(filenames):
|
|
1485
|
+
if verbose:
|
|
1486
|
+
print('Enumerating images in {}'.format(filenames))
|
|
1483
1487
|
filenames = find_images(filenames,recursive=recursive,return_relative_paths=False)
|
|
1484
1488
|
|
|
1485
|
-
|
|
1489
|
+
if verbose:
|
|
1490
|
+
print('Checking image integrity for {} filenames'.format(len(filenames)))
|
|
1486
1491
|
|
|
1487
1492
|
if n_workers <= 1:
|
|
1488
1493
|
|
|
@@ -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
|
|
@@ -174,7 +174,6 @@ def visualize_detector_output(detector_output_path,
|
|
|
174
174
|
f'Confidence threshold {confidence_threshold} is invalid, must be in (0, 1).')
|
|
175
175
|
|
|
176
176
|
if 'detection_categories' in detector_output:
|
|
177
|
-
print('Using custom label mapping')
|
|
178
177
|
detector_label_map = detector_output['detection_categories']
|
|
179
178
|
else:
|
|
180
179
|
detector_label_map = DEFAULT_DETECTOR_LABEL_MAP
|
|
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.14
|
|
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=-q0NqJ3VZSBovD_d6de-s3UR2NuKF6gSw2etfvVuRO4,27866
|
|
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
|
|
139
|
-
megadetector/detection/run_detector.py,sha256=
|
|
140
|
-
megadetector/detection/run_detector_batch.py,sha256=
|
|
141
|
-
megadetector/detection/run_inference_with_yolov5_val.py,sha256=
|
|
138
|
+
megadetector/detection/process_video.py,sha256=wNjv2LciLSzIu_wkMQMrSf9gOyv0NC-Busq-yYORG_0,42686
|
|
139
|
+
megadetector/detection/pytorch_detector.py,sha256=p70kAX5pqU4SO4GjYJmzbTPV4tKUp5WRapOs7vgSKes,13885
|
|
140
|
+
megadetector/detection/run_detector.py,sha256=biXbeS8aNDlidilxjzhZ-p4_wr2ID-rpsRklbNEd7ME,30094
|
|
141
|
+
megadetector/detection/run_detector_batch.py,sha256=V8gfcWNHu7r0Nj7seQVeFpB5ylkkhZK1gFwHuoiB4L4,56894
|
|
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=-vcBuYRRLKumUj6imcDYgCgClGji0a21uMjoUAtY3yw,8104
|
|
145
|
+
megadetector/detection/video_utils.py,sha256=e6XidwChyqkN5ga7yLbujMqKwXITvQGVWEw0qyAhSoA,32398
|
|
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=
|
|
152
|
-
megadetector/postprocessing/convert_output_format.py,sha256=
|
|
153
|
+
megadetector/postprocessing/compare_batch_results.py,sha256=7O5c6-JsIDpuIGobks_R9j8MPuiZQRnEtNnJQsJqICM,38918
|
|
154
|
+
megadetector/postprocessing/convert_output_format.py,sha256=HwThfK76UPEAGa3KQbJ_tMKIrUvJ3JhKoQVWJt9dPBk,15447
|
|
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=W8Ua4eh8Z1QHBUlhKoBTt-2a9XOEhVv2TgLu065_PlI,46842
|
|
184
|
+
megadetector/utils/path_utils.py,sha256=Uj_aNvA_P0buq-3ebQLZz-6to8mNO5JyBhD7n1-pUoU,37149
|
|
185
|
+
megadetector/utils/process_utils.py,sha256=2SdFVxqob-YUW2BTjUEavNuRH3jA4V05fbKMtrVSd3c,5635
|
|
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
|
|
@@ -189,11 +191,11 @@ megadetector/utils/write_html_image_list.py,sha256=apzoWkgZWG-ybCT4k92PlS4-guN_s
|
|
|
189
191
|
megadetector/visualization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
190
192
|
megadetector/visualization/plot_utils.py,sha256=lOfU3uPrcuHZagV_1SN8erT8PujIepocgw6KZ17Ej6c,10671
|
|
191
193
|
megadetector/visualization/render_images_with_thumbnails.py,sha256=kgJYW8BsqRO4C7T3sqItdBuSkZ64I1vOtIWAsVG4XBI,10589
|
|
192
|
-
megadetector/visualization/visualization_utils.py,sha256=
|
|
193
|
-
megadetector/visualization/visualize_db.py,sha256=
|
|
194
|
-
megadetector/visualization/visualize_detector_output.py,sha256=
|
|
195
|
-
megadetector-5.0.
|
|
196
|
-
megadetector-5.0.
|
|
197
|
-
megadetector-5.0.
|
|
198
|
-
megadetector-5.0.
|
|
199
|
-
megadetector-5.0.
|
|
194
|
+
megadetector/visualization/visualization_utils.py,sha256=jWiXlLpmWh_CH2vApZURclOC7fdip1aKWQ66wuNabyA,62369
|
|
195
|
+
megadetector/visualization/visualize_db.py,sha256=3FhOtn3GHvNsomwSpsSEzYe58lF9B4Ob3MEi_xplrdo,21256
|
|
196
|
+
megadetector/visualization/visualize_detector_output.py,sha256=LY8QgDWpWlXVLZJUskvT29CdkNvIlEsFTk4DC_lS6pk,17052
|
|
197
|
+
megadetector-5.0.14.dist-info/LICENSE,sha256=RMa3qq-7Cyk7DdtqRj_bP1oInGFgjyHn9-PZ3PcrqIs,1100
|
|
198
|
+
megadetector-5.0.14.dist-info/METADATA,sha256=yeX8szvUXU887ERsfi8lV8lSYEa4fBPM21KXbjNJOOI,7893
|
|
199
|
+
megadetector-5.0.14.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
|
200
|
+
megadetector-5.0.14.dist-info/top_level.txt,sha256=wf9DXa8EwiOSZ4G5IPjakSxBPxTDjhYYnqWRfR-zS4M,13
|
|
201
|
+
megadetector-5.0.14.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|