megadetector 10.0.3__py3-none-any.whl → 10.0.4__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/data_management/animl_to_md.py +158 -0
- megadetector/data_management/zamba_to_md.py +188 -0
- megadetector/detection/process_video.py +52 -40
- megadetector/detection/pytorch_detector.py +24 -34
- megadetector/detection/run_detector_batch.py +138 -93
- megadetector/detection/run_md_and_speciesnet.py +22 -4
- megadetector/detection/video_utils.py +5 -4
- megadetector/postprocessing/combine_batch_outputs.py +2 -0
- megadetector/postprocessing/separate_detections_into_folders.py +1 -1
- megadetector/postprocessing/subset_json_detector_output.py +1 -3
- megadetector/utils/ct_utils.py +53 -0
- megadetector/utils/md_tests.py +8 -7
- megadetector/utils/path_utils.py +4 -15
- megadetector/visualization/visualization_utils.py +1 -1
- megadetector/visualization/visualize_detector_output.py +6 -4
- {megadetector-10.0.3.dist-info → megadetector-10.0.4.dist-info}/METADATA +1 -1
- {megadetector-10.0.3.dist-info → megadetector-10.0.4.dist-info}/RECORD +20 -18
- {megadetector-10.0.3.dist-info → megadetector-10.0.4.dist-info}/WHEEL +0 -0
- {megadetector-10.0.3.dist-info → megadetector-10.0.4.dist-info}/licenses/LICENSE +0 -0
- {megadetector-10.0.3.dist-info → megadetector-10.0.4.dist-info}/top_level.txt +0 -0
megadetector/utils/ct_utils.py
CHANGED
|
@@ -16,6 +16,8 @@ import builtins
|
|
|
16
16
|
import datetime
|
|
17
17
|
import tempfile
|
|
18
18
|
import shutil
|
|
19
|
+
import platform
|
|
20
|
+
import sys
|
|
19
21
|
import uuid
|
|
20
22
|
|
|
21
23
|
import jsonpickle
|
|
@@ -1053,6 +1055,57 @@ def make_test_folder(subfolder=None):
|
|
|
1053
1055
|
append_guid=True)
|
|
1054
1056
|
|
|
1055
1057
|
|
|
1058
|
+
#%% Environment utilities
|
|
1059
|
+
|
|
1060
|
+
def is_sphinx_build():
|
|
1061
|
+
"""
|
|
1062
|
+
Determine whether we are running in the context of our Sphinx build.
|
|
1063
|
+
|
|
1064
|
+
Returns:
|
|
1065
|
+
bool: True if we're running a Sphinx build
|
|
1066
|
+
"""
|
|
1067
|
+
|
|
1068
|
+
is_sphinx = hasattr(builtins, '__sphinx_build__')
|
|
1069
|
+
return is_sphinx
|
|
1070
|
+
|
|
1071
|
+
|
|
1072
|
+
def is_running_in_gha():
|
|
1073
|
+
"""
|
|
1074
|
+
Determine whether we are running on a GitHub Actions runner.
|
|
1075
|
+
|
|
1076
|
+
Returns:
|
|
1077
|
+
bool: True if we're running in a GHA runner
|
|
1078
|
+
"""
|
|
1079
|
+
|
|
1080
|
+
running_in_gha = False
|
|
1081
|
+
|
|
1082
|
+
if ('GITHUB_ACTIONS' in os.environ):
|
|
1083
|
+
# Documentation is inconsistent on how this variable presents itself
|
|
1084
|
+
if isinstance(os.environ['GITHUB_ACTIONS'],bool) and \
|
|
1085
|
+
os.environ['GITHUB_ACTIONS']:
|
|
1086
|
+
running_in_gha = True
|
|
1087
|
+
elif isinstance(os.environ['GITHUB_ACTIONS'],str) and \
|
|
1088
|
+
os.environ['GITHUB_ACTIONS'].lower() == ('true'):
|
|
1089
|
+
running_in_gha = True
|
|
1090
|
+
|
|
1091
|
+
return running_in_gha
|
|
1092
|
+
|
|
1093
|
+
|
|
1094
|
+
def environment_is_wsl():
|
|
1095
|
+
"""
|
|
1096
|
+
Determines whether we're running in WSL.
|
|
1097
|
+
|
|
1098
|
+
Returns:
|
|
1099
|
+
True if we're running in WSL
|
|
1100
|
+
"""
|
|
1101
|
+
|
|
1102
|
+
if sys.platform not in ('linux','posix'):
|
|
1103
|
+
return False
|
|
1104
|
+
platform_string = ' '.join(platform.uname()).lower()
|
|
1105
|
+
return 'microsoft' in platform_string and 'wsl' in platform_string
|
|
1106
|
+
|
|
1107
|
+
|
|
1108
|
+
|
|
1056
1109
|
#%% Tests
|
|
1057
1110
|
|
|
1058
1111
|
def test_write_json():
|
megadetector/utils/md_tests.py
CHANGED
|
@@ -21,6 +21,7 @@ since much of what it tries to test is, e.g., imports.
|
|
|
21
21
|
import os
|
|
22
22
|
import json
|
|
23
23
|
import glob
|
|
24
|
+
import sys
|
|
24
25
|
import tempfile
|
|
25
26
|
import urllib
|
|
26
27
|
import urllib.request
|
|
@@ -141,9 +142,6 @@ class MDTestOptions:
|
|
|
141
142
|
#: Number of cores to use for multi-CPU inference tests
|
|
142
143
|
self.n_cores_for_multiprocessing_tests = 2
|
|
143
144
|
|
|
144
|
-
#: Number of cores to use for multi-CPU video tests
|
|
145
|
-
self.n_cores_for_video_tests = 2
|
|
146
|
-
|
|
147
145
|
#: Batch size to use when testing batches of size > 1
|
|
148
146
|
self.alternative_batch_size = 3
|
|
149
147
|
|
|
@@ -1062,7 +1060,6 @@ def run_python_tests(options):
|
|
|
1062
1060
|
video_options.input_video_file = os.path.join(options.scratch_dir,options.test_videos[0])
|
|
1063
1061
|
video_options.output_json_file = os.path.join(options.scratch_dir,'single_video_output.json')
|
|
1064
1062
|
video_options.frame_sample = 10
|
|
1065
|
-
video_options.n_cores = options.n_cores_for_video_tests
|
|
1066
1063
|
video_options.detector_options = copy(options.detector_options)
|
|
1067
1064
|
|
|
1068
1065
|
_ = process_videos(video_options)
|
|
@@ -1086,7 +1083,6 @@ def run_python_tests(options):
|
|
|
1086
1083
|
video_options.output_video_file = None
|
|
1087
1084
|
video_options.recursive = True
|
|
1088
1085
|
video_options.verbose = True
|
|
1089
|
-
video_options.n_cores = options.n_cores_for_video_tests
|
|
1090
1086
|
video_options.json_confidence_threshold = 0.05
|
|
1091
1087
|
video_options.time_sample = 2
|
|
1092
1088
|
video_options.detector_options = copy(options.detector_options)
|
|
@@ -1295,7 +1291,7 @@ def run_cli_tests(options):
|
|
|
1295
1291
|
|
|
1296
1292
|
batch_string = ' --batch_size {}'.format(options.alternative_batch_size)
|
|
1297
1293
|
|
|
1298
|
-
# I reduce the number of loader workers here to force batching to actually
|
|
1294
|
+
# I reduce the number of loader workers here to force batching to actually append; with a small
|
|
1299
1295
|
# number of images and a few that are intentionally corrupt, with the default number of loader
|
|
1300
1296
|
# workers we end up with batches that are mostly just one image.
|
|
1301
1297
|
cmd = base_cmd + ' --use_image_queue --preprocess_on_image_queue --loader_workers 2' + batch_string
|
|
@@ -1591,9 +1587,9 @@ def run_cli_tests(options):
|
|
|
1591
1587
|
|
|
1592
1588
|
cmd += ' "{}" "{}"'.format(options.default_model,options.scratch_dir)
|
|
1593
1589
|
cmd += ' --output_json_file "{}"'.format(video_inference_output_file)
|
|
1594
|
-
cmd += ' --n_cores {}'.format(options.n_cores_for_video_tests)
|
|
1595
1590
|
cmd += ' --frame_sample 4'
|
|
1596
1591
|
cmd += ' --verbose'
|
|
1592
|
+
cmd += ' --recursive'
|
|
1597
1593
|
cmd += ' --detector_options {}'.format(dict_to_kvp_list(options.detector_options))
|
|
1598
1594
|
|
|
1599
1595
|
cmd_results = execute_and_print(cmd)
|
|
@@ -1789,6 +1785,11 @@ def test_suite_entry_point():
|
|
|
1789
1785
|
options.skip_localhost_downloads = True
|
|
1790
1786
|
options.skip_import_tests = False
|
|
1791
1787
|
|
|
1788
|
+
if sys.platform == 'darwin':
|
|
1789
|
+
print('Detected a Mac environment, widening tolerance')
|
|
1790
|
+
options.max_coord_error = 0.05
|
|
1791
|
+
options.max_conf_error = 0.05
|
|
1792
|
+
|
|
1792
1793
|
options = download_test_data(options)
|
|
1793
1794
|
|
|
1794
1795
|
run_tests(options)
|
megadetector/utils/path_utils.py
CHANGED
|
@@ -36,6 +36,7 @@ from tqdm import tqdm
|
|
|
36
36
|
from megadetector.utils.ct_utils import is_iterable
|
|
37
37
|
from megadetector.utils.ct_utils import make_test_folder
|
|
38
38
|
from megadetector.utils.ct_utils import sort_dictionary_by_value
|
|
39
|
+
from megadetector.utils.ct_utils import environment_is_wsl
|
|
39
40
|
|
|
40
41
|
# Should all be lower-case
|
|
41
42
|
IMG_EXTENSIONS = ('.jpg', '.jpeg', '.gif', '.png', '.tif', '.tiff', '.bmp')
|
|
@@ -622,21 +623,7 @@ def is_executable(filename):
|
|
|
622
623
|
return which(filename) is not None
|
|
623
624
|
|
|
624
625
|
|
|
625
|
-
#%%
|
|
626
|
-
|
|
627
|
-
def environment_is_wsl():
|
|
628
|
-
"""
|
|
629
|
-
Determines whether we're running in WSL.
|
|
630
|
-
|
|
631
|
-
Returns:
|
|
632
|
-
True if we're running in WSL.
|
|
633
|
-
"""
|
|
634
|
-
|
|
635
|
-
if sys.platform not in ('linux','posix'):
|
|
636
|
-
return False
|
|
637
|
-
platform_string = ' '.join(platform.uname()).lower()
|
|
638
|
-
return 'microsoft' in platform_string and 'wsl' in platform_string
|
|
639
|
-
|
|
626
|
+
#%% WSL utilities
|
|
640
627
|
|
|
641
628
|
def wsl_path_to_windows_path(filename, failure_behavior='none'):
|
|
642
629
|
r"""
|
|
@@ -731,6 +718,8 @@ def windows_path_to_wsl_path(filename, failure_behavior='none'):
|
|
|
731
718
|
# ...def window_path_to_wsl_path(...)
|
|
732
719
|
|
|
733
720
|
|
|
721
|
+
#%% Platform-independent file openers
|
|
722
|
+
|
|
734
723
|
def open_file_in_chrome(filename):
|
|
735
724
|
"""
|
|
736
725
|
Open a file in chrome, regardless of file type. I typically use this to open
|
|
@@ -552,7 +552,7 @@ def render_detection_bounding_boxes(detections,
|
|
|
552
552
|
custom_strings (list of str, optional): optional set of strings to append to detection labels, should
|
|
553
553
|
have the same length as [detections]. Appended before any classification labels.
|
|
554
554
|
box_sort_order (str, optional): sorting scheme for detection boxes, can be None, "confidence", or
|
|
555
|
-
"reverse_confidence".
|
|
555
|
+
"reverse_confidence". "confidence" puts the highest-confidence boxes on top.
|
|
556
556
|
verbose (bool, optional): enable additional debug output
|
|
557
557
|
"""
|
|
558
558
|
|
|
@@ -24,10 +24,13 @@ from megadetector.detection.run_detector import get_typical_confidence_threshold
|
|
|
24
24
|
from megadetector.utils.ct_utils import get_max_conf
|
|
25
25
|
from megadetector.utils import write_html_image_list
|
|
26
26
|
from megadetector.utils.path_utils import path_is_abs
|
|
27
|
+
from megadetector.utils.path_utils import open_file
|
|
27
28
|
from megadetector.utils.wi_utils import load_md_or_speciesnet_file
|
|
28
29
|
from megadetector.visualization import visualization_utils as vis_utils
|
|
29
30
|
from megadetector.visualization.visualization_utils import blur_detections
|
|
30
31
|
|
|
32
|
+
default_box_sort_order = 'confidence'
|
|
33
|
+
|
|
31
34
|
|
|
32
35
|
#%% Constants
|
|
33
36
|
|
|
@@ -49,7 +52,7 @@ def _render_image(entry,
|
|
|
49
52
|
out_dir,
|
|
50
53
|
images_dir,
|
|
51
54
|
output_image_width,
|
|
52
|
-
box_sort_order=
|
|
55
|
+
box_sort_order=default_box_sort_order,
|
|
53
56
|
category_names_to_blur=None):
|
|
54
57
|
"""
|
|
55
58
|
Internal function for rendering a single image.
|
|
@@ -153,7 +156,7 @@ def visualize_detector_output(detector_output_path,
|
|
|
153
156
|
parallelize_rendering=False,
|
|
154
157
|
parallelize_rendering_n_cores=10,
|
|
155
158
|
parallelize_rendering_with_threads=True,
|
|
156
|
-
box_sort_order=
|
|
159
|
+
box_sort_order=default_box_sort_order,
|
|
157
160
|
category_names_to_blur=None):
|
|
158
161
|
"""
|
|
159
162
|
Draws bounding boxes on images given the output of a detector.
|
|
@@ -424,8 +427,7 @@ def main(): # noqa
|
|
|
424
427
|
html_output_file=args.html_output_file,
|
|
425
428
|
category_names_to_blur=category_names_to_blur)
|
|
426
429
|
|
|
427
|
-
if args.html_output_file is not None and args.open_html_output_file:
|
|
428
|
-
from megadetector.utils.path_utils import open_file
|
|
430
|
+
if (args.html_output_file is not None) and args.open_html_output_file:
|
|
429
431
|
open_file(args.html_output_file)
|
|
430
432
|
|
|
431
433
|
if __name__ == '__main__':
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: megadetector
|
|
3
|
-
Version: 10.0.
|
|
3
|
+
Version: 10.0.4
|
|
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>
|
|
@@ -30,6 +30,7 @@ megadetector/classification/efficientnet/__init__.py,sha256=e-jfknjzCc5a0CSW-TaZ
|
|
|
30
30
|
megadetector/classification/efficientnet/model.py,sha256=o7m379-FVeHrioW1HSJ48fLUqH9MMlf4b1BwktL2EoQ,17120
|
|
31
31
|
megadetector/classification/efficientnet/utils.py,sha256=76SQdh0zK7CFcwTW4kiechCGMHSftPT0tC1PtqNRLZI,24756
|
|
32
32
|
megadetector/data_management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
33
|
+
megadetector/data_management/animl_to_md.py,sha256=Z6PDJxeM_5dMZJBM3j0mxDPW2_1bNkXx0M3_qq42_Ig,4416
|
|
33
34
|
megadetector/data_management/camtrap_dp_to_coco.py,sha256=HoCGMzZTEvnudnAjbOr-mCizXHmc8mMNSUChy_Q9PkI,9673
|
|
34
35
|
megadetector/data_management/cct_json_utils.py,sha256=iybRIlARCsId-yWiwRckNZhfmY5aFFfsiJbyaXCDr1E,19535
|
|
35
36
|
megadetector/data_management/cct_to_md.py,sha256=e1fYevSz0m65n5H16uB6uwzNiXiwxjdB2ka5p68R4d0,5120
|
|
@@ -51,6 +52,7 @@ megadetector/data_management/speciesnet_to_md.py,sha256=kINd7PfWC1G-kawZH8YDigtB
|
|
|
51
52
|
megadetector/data_management/wi_download_csv_to_coco.py,sha256=rhqWSEmDiXs1GbHavoNwdGSqk01-a-4xmz7z7x1Qjs4,7973
|
|
52
53
|
megadetector/data_management/yolo_output_to_md_output.py,sha256=4wU31dHo8rSwge91m0bO0YAYrytvmxZH0YRHiRjRGa8,22509
|
|
53
54
|
megadetector/data_management/yolo_to_coco.py,sha256=5fa7VAbRZQgWK-03DeyVhpj6qeIW6cT7v8B33rhsN3I,31003
|
|
55
|
+
megadetector/data_management/zamba_to_md.py,sha256=f6hK0pdVY0FhN_7DqKhY5BswYps7fO-Hy5ojmRvntok,5314
|
|
54
56
|
megadetector/data_management/annotations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
55
57
|
megadetector/data_management/annotations/annotation_constants.py,sha256=Fp_uaFQbMzhjMBcXOBUuTA9eOmenjPboMQojPQUaJjI,951
|
|
56
58
|
megadetector/data_management/databases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -70,20 +72,20 @@ megadetector/data_management/lila/lila_common.py,sha256=IRWs46TrxcjckLidDwXPmb5O
|
|
|
70
72
|
megadetector/data_management/lila/test_lila_metadata_urls.py,sha256=ThU78Ks5V3rFyJSKStFcM5M2yTlhR_pgMTa6_KuF5Hs,5256
|
|
71
73
|
megadetector/detection/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
72
74
|
megadetector/detection/change_detection.py,sha256=Ne3GajbH_0KPBU8ruHp4Rkr0uKd5oKAMQ3CQTRKRHgQ,28659
|
|
73
|
-
megadetector/detection/process_video.py,sha256=
|
|
74
|
-
megadetector/detection/pytorch_detector.py,sha256=
|
|
75
|
+
megadetector/detection/process_video.py,sha256=iE-TA42IhrVwl3ftZ12mgaWv5CuttsI5SsivxSzpRiY,17498
|
|
76
|
+
megadetector/detection/pytorch_detector.py,sha256=ixU-2_AnCwEP33FaaqTZRoi1WxIUeM4x_ksbNT-tezA,59817
|
|
75
77
|
megadetector/detection/run_detector.py,sha256=TTX29zxDN_O7ja61sOmMIVewUz3yRvKg1D1AAYhVEkc,46851
|
|
76
|
-
megadetector/detection/run_detector_batch.py,sha256=
|
|
78
|
+
megadetector/detection/run_detector_batch.py,sha256=aZgiywL6arrdQ_l3jzlHctlccqL537lwVStjhi1hIWw,89823
|
|
77
79
|
megadetector/detection/run_inference_with_yolov5_val.py,sha256=A-AQuARVVy7oR9WtenCZwzvd5U3HQwihMr4Jkiv9U0g,53515
|
|
78
|
-
megadetector/detection/run_md_and_speciesnet.py,sha256=
|
|
80
|
+
megadetector/detection/run_md_and_speciesnet.py,sha256=Dp_SpJZp0pX9jzFtxM6zPCyBNq49uyQpMDAdNDLVorM,50280
|
|
79
81
|
megadetector/detection/run_tiled_inference.py,sha256=wrQkKIloHBO9v2i0nZ1_Tt75iFtVrnco3Y4FafoVxdw,39382
|
|
80
82
|
megadetector/detection/tf_detector.py,sha256=3b2MiqgMw8KBDzHQliUSDXWrmKpa9iZnfe6EgYpMcYo,8398
|
|
81
|
-
megadetector/detection/video_utils.py,sha256=
|
|
83
|
+
megadetector/detection/video_utils.py,sha256=JkCTK1-aNmLDHOEvlI1w5KS2ZssSdgzerLIUE8iX2_I,49785
|
|
82
84
|
megadetector/postprocessing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
83
85
|
megadetector/postprocessing/add_max_conf.py,sha256=9MYtsH2mwkiaZb7Qcor5J_HskfAj7d9srp8G_Qldpk0,1722
|
|
84
86
|
megadetector/postprocessing/categorize_detections_by_size.py,sha256=DpZpRNFlyeOfWuOc6ICuENgIWDCEtiErJ_frBZp9lYM,5382
|
|
85
87
|
megadetector/postprocessing/classification_postprocessing.py,sha256=CaT0O1-Y3FcdW1tO147etsTQhMBDoMHZwtYZbdukpMI,59916
|
|
86
|
-
megadetector/postprocessing/combine_batch_outputs.py,sha256=
|
|
88
|
+
megadetector/postprocessing/combine_batch_outputs.py,sha256=BEP8cVa0sMIPg7tkWQc_8vOEPnbmWjOsQdVJHe61uz8,8468
|
|
87
89
|
megadetector/postprocessing/compare_batch_results.py,sha256=RDlKLwea76rOWiDneSJUj6P_oMBMnD2BY4inoxLqQiw,84258
|
|
88
90
|
megadetector/postprocessing/convert_output_format.py,sha256=FiwKSiMyEeNVLLfjpQtx3CrMbchwNUaW2TgLmdXGFVo,14892
|
|
89
91
|
megadetector/postprocessing/create_crop_folder.py,sha256=T37HnvBEakikXY3n3Bgk5boFo_0-Z5aKnkEWXv-Ki4s,23166
|
|
@@ -97,8 +99,8 @@ megadetector/postprocessing/merge_detections.py,sha256=hvb4TJ6u1PyWOVQai9wZk72li
|
|
|
97
99
|
megadetector/postprocessing/postprocess_batch_results.py,sha256=iAoCLKgwfC_vlrUGNg9cI694nzohJLNvdT7R0FScfLI,84597
|
|
98
100
|
megadetector/postprocessing/remap_detection_categories.py,sha256=BE6Ce-PGBEx1FyG3XwbYp2D5sh5xUlVf6fonaMuPMAg,7927
|
|
99
101
|
megadetector/postprocessing/render_detection_confusion_matrix.py,sha256=oNvDTh5td5ynELNnhz4XaLP2HiwLuojkJlob15TpgcY,26365
|
|
100
|
-
megadetector/postprocessing/separate_detections_into_folders.py,sha256=
|
|
101
|
-
megadetector/postprocessing/subset_json_detector_output.py,sha256=
|
|
102
|
+
megadetector/postprocessing/separate_detections_into_folders.py,sha256=Yvpkl_MsWbGoo4zvQHrXHkATRJaYdYligItfg9bvuV8,32262
|
|
103
|
+
megadetector/postprocessing/subset_json_detector_output.py,sha256=FiP1sUYfIBqOiSwjkJ6qkj4hvlF7yJsF7-y9tmfSShc,32187
|
|
102
104
|
megadetector/postprocessing/top_folders_to_bottom.py,sha256=zYrqMHjUZG8urh2CYphfs91ZQ620uqe-TL8jVYy8KVw,6049
|
|
103
105
|
megadetector/postprocessing/validate_batch_results.py,sha256=9nr7LeKMdki9Y821ag2bZFQCxuq0OqINDH7cPXyVcY8,12059
|
|
104
106
|
megadetector/postprocessing/repeat_detection_elimination/find_repeat_detections.py,sha256=XgVeyga8iSC01MAjXxb2rn-CgJTYHqC_gfxxEoSn4aw,9420
|
|
@@ -118,12 +120,12 @@ megadetector/taxonomy_mapping/validate_lila_category_mappings.py,sha256=sAKYreO1
|
|
|
118
120
|
megadetector/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
119
121
|
megadetector/tests/test_nms_synthetic.py,sha256=oY6xmT1sLSSN7weQJ8TPTaZgAiSiZ6s43EffUhwLWIw,14707
|
|
120
122
|
megadetector/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
121
|
-
megadetector/utils/ct_utils.py,sha256=
|
|
123
|
+
megadetector/utils/ct_utils.py,sha256=7K5gRd_Q9DVtMxly5eW8BIgtcGHIwiTeNdyeiLYfN-A,60033
|
|
122
124
|
megadetector/utils/directory_listing.py,sha256=CZBzwg0Fus1xuRAp3ycEBjViDdwwk4eKdGq06ZERLDg,6414
|
|
123
125
|
megadetector/utils/extract_frames_from_video.py,sha256=vjSVgxtb5z2syHCVYWc2KdNUpc-O6yY8nkbj_wqsIvY,12255
|
|
124
126
|
megadetector/utils/gpu_test.py,sha256=5zUfAVeSjH8I08eCqayFmMxL-0mix8SjJJTe5ORABvU,3544
|
|
125
|
-
megadetector/utils/md_tests.py,sha256=
|
|
126
|
-
megadetector/utils/path_utils.py,sha256=
|
|
127
|
+
megadetector/utils/md_tests.py,sha256=Iup4KjyIpLUpZ4TzzwEyGK61rg6aH7NrEQsdQ-ov51I,80300
|
|
128
|
+
megadetector/utils/path_utils.py,sha256=qU1jTBHYy11i5vOMslFEUjc1VBnxQHnDCPYkVzuUXms,98686
|
|
127
129
|
megadetector/utils/process_utils.py,sha256=gQcpH9WYvGPUs0FhtJ5_Xvl6JsvoGz8_mnDQk0PbTRM,5673
|
|
128
130
|
megadetector/utils/split_locations_into_train_val.py,sha256=fd_6pj1aWY6hybwaXvBn9kBcOHjI90U-OsTmEAGpeu8,10297
|
|
129
131
|
megadetector/utils/string_utils.py,sha256=r2Maw3zbzk3EyaZcNkdqr96yP_8m4ey6v0WxlemEY9U,6155
|
|
@@ -133,12 +135,12 @@ megadetector/utils/write_html_image_list.py,sha256=6Tbe5wyUxoBYJgH9yVrxxKCeWF2BV
|
|
|
133
135
|
megadetector/visualization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
134
136
|
megadetector/visualization/plot_utils.py,sha256=uDDlOhdaJ3V8sGj2kS9b0cgszKc8WCq2_ofl6TW_XUs,10727
|
|
135
137
|
megadetector/visualization/render_images_with_thumbnails.py,sha256=-XX4PG4wnrFjFTIwd0sMxXxKMxPuu0SZ_TfK3dI1x8Y,8425
|
|
136
|
-
megadetector/visualization/visualization_utils.py,sha256=
|
|
138
|
+
megadetector/visualization/visualization_utils.py,sha256=E5uvysS3F1S_yiPFxZty3U2f6cjuE8zG6XWggYOu-5o,75921
|
|
137
139
|
megadetector/visualization/visualize_db.py,sha256=8YDWSR0eMehXYdPtak9z8UUw35xV7hu-0eCuzgSLjWc,25558
|
|
138
|
-
megadetector/visualization/visualize_detector_output.py,sha256=
|
|
140
|
+
megadetector/visualization/visualize_detector_output.py,sha256=nrVpzjdm8OpuicRWbT7Dvob7lcaha0X26koBOmPaJYw,20286
|
|
139
141
|
megadetector/visualization/visualize_video_output.py,sha256=WqG9lr9LWO5x3NW3WRKrC_DOvyftLu0VkXkmCIFtbik,20257
|
|
140
|
-
megadetector-10.0.
|
|
141
|
-
megadetector-10.0.
|
|
142
|
-
megadetector-10.0.
|
|
143
|
-
megadetector-10.0.
|
|
144
|
-
megadetector-10.0.
|
|
142
|
+
megadetector-10.0.4.dist-info/licenses/LICENSE,sha256=RMa3qq-7Cyk7DdtqRj_bP1oInGFgjyHn9-PZ3PcrqIs,1100
|
|
143
|
+
megadetector-10.0.4.dist-info/METADATA,sha256=EzJOHeSHWnVFX6mWhnmC70BW8uIKtbIKUYKsUcSrXSQ,6353
|
|
144
|
+
megadetector-10.0.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
145
|
+
megadetector-10.0.4.dist-info/top_level.txt,sha256=wf9DXa8EwiOSZ4G5IPjakSxBPxTDjhYYnqWRfR-zS4M,13
|
|
146
|
+
megadetector-10.0.4.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|