Framework agnostic sliced/tiled inference + interactive ui + error analysis plots
This report summarizes scanner evidence for obss/sahi, a Python project with 5,541 GitHub stars. SynthScan examined 47,610 lines of code across 302 source files, recording 450 pattern matches distributed across 16 syntactic categories. The legacy adjusted pattern signal is 15.2 (Elevated pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 269 finding(s).
Are imports declared and package/API names verified? 79 finding(s).
Are wrappers, guards, and repeated structures necessary? 292 finding(s).
Which changes need focused human review? 450 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 450 distinct pattern matches across 16 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_coco_utils.py | 60 | def test_coco_remapping_dict_with_chained_ids(self) -> None: | CODE |
| LOW | tests/test_coco_utils.py | 347 | def test_split_coco_as_train_val(self) -> None: | CODE |
| LOW | tests/test_coco_utils.py | 413 | def test_coco_update_categories(self) -> None: | CODE |
| LOW | tests/test_coco_utils.py | 648 | def test_get_area_filtered_coco(self) -> None: | CODE |
| LOW | tests/test_coco_utils.py | 772 | def test_derived_coco_keeps_remapped_categories(self) -> None: | CODE |
| LOW | tests/test_coco_utils.py | 800 | def test_remove_invalid_coco_results_short_bbox(self) -> None: | CODE |
| LOW⚡ | tests/test_import_utils.py | 38 | def test_helpers_are_not_generators(func: Callable) -> None: | CODE |
| LOW⚡ | tests/test_import_utils.py | 48 | def test_get_package_info_installed(self) -> None: | CODE |
| LOW⚡ | tests/test_import_utils.py | 53 | def test_get_package_info_missing(self) -> None: | CODE |
| LOW⚡ | tests/test_import_utils.py | 58 | def test_passes_when_all_present(self) -> None: | CODE |
| LOW⚡ | tests/test_import_utils.py | 61 | def test_passes_for_empty_iterable(self) -> None: | CODE |
| LOW⚡ | tests/test_import_utils.py | 64 | def test_raises_only_for_missing(self) -> None: | CODE |
| LOW⚡ | tests/test_import_utils.py | 74 | def test_ensure_package_minimum_version( | CODE |
| LOW⚡ | tests/test_import_utils.py | 94 | def test_no_message_for_single_distribution(self, monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW⚡ | tests/test_import_utils.py | 98 | def test_no_message_when_versions_agree(self, monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW⚡ | tests/test_import_utils.py | 102 | def test_message_suggests_the_newest_version(self, monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW⚡ | tests/test_import_utils.py | 109 | def test_newest_version_is_compared_numerically(self, monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW⚡ | tests/test_combine.py | 62 | def test_batched_merging_empty(self, postprocess: Callable[..., dict[int, list[int]]]) -> None: | CODE |
| LOW⚡ | tests/test_combine.py | 72 | def test_class_aware_merging_empty(self, postprocess_class: type[NMMPostprocess]) -> None: | CODE |
| LOW⚡ | tests/test_combine.py | 151 | def test_nms_ios_small_inside_large(self) -> None: | CODE |
| LOW⚡ | tests/test_combine.py | 353 | def test_merge_postprocess_at_exact_threshold( | CODE |
| LOW⚡ | tests/test_combine.py | 363 | def test_nms_postprocess_single(self) -> None: | CODE |
| LOW⚡ | tests/test_combine.py | 521 | def test_metric_matrix_no_overlap(self) -> None: | CODE |
| LOW | tests/test_combine.py | 129 | def test_nms_equal_scores_deterministic(self) -> None: | CODE |
| LOW | tests/test_combine.py | 163 | def test_nms_iou_vs_ios_differ(self) -> None: | CODE |
| LOW | tests/test_combine.py | 243 | def test_high_threshold_keeps_all(self) -> None: | CODE |
| LOW | tests/test_combine.py | 324 | def test_nms_postprocess_class_agnostic_false(self) -> None: | CODE |
| LOW | tests/test_combine.py | 338 | def test_greedy_nmm_postprocess(self) -> None: | CODE |
| LOW | tests/test_combine.py | 391 | def test_invalid_backend_raises(self) -> None: | CODE |
| LOW | tests/test_combine.py | 398 | def test_resolve_cache_invalidation(self) -> None: | CODE |
| LOW | tests/test_combine.py | 417 | def test_auto_resolves_gpu_to_torchvision( | CODE |
| LOW | tests/test_combine.py | 440 | def test_forced_numpy_backend_dispatch(self) -> None: | CODE |
| LOW | tests/test_combine.py | 560 | def test_greedy_nmm_merge_order_parity(self) -> None: | CODE |
| LOW | tests/test_detectron2_model.py | 37 | def test_perform_inference_without_mask_output(self) -> None: | CODE |
| LOW | tests/test_detectron2_model.py | 70 | def test_convert_original_predictions_without_mask_output(self) -> None: | CODE |
| LOW | tests/test_detectron2_model.py | 117 | def test_convert_original_predictions_with_mask_output(self) -> None: | CODE |
| LOW | tests/test_huggingface_model.py | 109 | def test_convert_original_predictions() -> None: | CODE |
| LOW | tests/test_huggingface_model.py | 155 | def test_get_prediction_huggingface() -> None: | CODE |
| LOW | tests/test_huggingface_model.py | 196 | def test_get_prediction_automodel_huggingface() -> None: | CODE |
| LOW | tests/test_huggingface_model.py | 242 | def test_get_sliced_prediction_huggingface() -> None: | CODE |
| LOW | tests/test_table.py | 14 | def test_create_ascii_table_basic(self) -> None: | CODE |
| LOW | tests/test_huggingface_segmentation.py | 75 | def test_convert_original_predictions(model_path: str, segmentation_type: SegmentationType) -> None: | CODE |
| LOW | tests/test_huggingface_segmentation.py | 85 | def test_get_sliced_prediction(model_path: str, segmentation_type: SegmentationType) -> None: | CODE |
| LOW | tests/test_huggingface_segmentation.py | 113 | def test_get_prediction_detects_cars() -> None: | CODE |
| LOW | tests/test_slicing.py | 199 | def test_slice_file_suffix_inherits_a_lossless_source_extension(self, tmp_path: Path) -> None: | CODE |
| LOW | tests/test_slicing.py | 207 | def test_slice_image_from_path_matches_array_input(self) -> None: | CODE |
| LOW | tests/test_file_utils.py | 20 | def test_list_files_recursively(self, tmp_path: Path) -> None: | CODE |
| LOW | tests/test_torchvision.py | 37 | def test_load_model_without_config_path(self) -> None: | CODE |
| LOW | tests/test_torchvision.py | 63 | def test_perform_inference_without_mask_output(self) -> None: | CODE |
| LOW | tests/test_torchvision.py | 114 | def test_convert_original_predictions_without_mask_output(self) -> None: | CODE |
| LOW | tests/test_torchvision.py | 149 | def test_convert_original_predictions_with_mask_output(self) -> None: | CODE |
| LOW | tests/test_torchvision.py | 182 | def test_get_prediction_torchvision(self) -> None: | CODE |
| LOW | tests/test_torchvision.py | 217 | def test_get_sliced_prediction_torchvision(self) -> None: | CODE |
| LOW | tests/test_mmdetection_model.py | 48 | def test_perform_inference_with_mask_output(self) -> None: | CODE |
| LOW | tests/test_mmdetection_model.py | 96 | def test_perform_inference_without_mask_output(self) -> None: | CODE |
| LOW | tests/test_mmdetection_model.py | 137 | def test_convert_original_predictions_with_mask_output(self) -> None: | CODE |
| LOW | tests/test_mmdetection_model.py | 175 | def test_convert_original_predictions_without_mask_output(self) -> None: | CODE |
| LOW | tests/test_mmdetection_model.py | 222 | def test_perform_inference_without_mask_output_with_automodel(self) -> None: | CODE |
| LOW | tests/test_predict.py | 42 | def test_get_prediction_mmdet() -> None: | CODE |
| LOW | tests/test_predict.py | 136 | def test_prediction_category_remapping() -> None: | CODE |
| 117 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/data/models/mmdet_retinanet/default_runtime.py | 0 | mmdetection configuration file for default_runtime.py. | STRING |
| HIGH | …data/models/mmdet_cascade_mask_rcnn/default_runtime.py | 0 | mmdetection configuration file for default_runtime.py. | STRING |
| HIGH | tests/data/models/mmdet/_base_/default_runtime.py | 0 | mmdetection configuration file for default_runtime.py. | STRING |
| HIGH | sahi/models/rtdetr.py | 0 | detection model is initialized and set to self.model. | STRING |
| HIGH | sahi/models/libreyolo.py | 0 | detection model is initialized and set to self.model. | STRING |
| HIGH | sahi/models/yolo-world.py | 0 | detection model is initialized and set to self.model. | STRING |
| HIGH | sahi/models/mmdet.py | 0 | detection model is initialized and set to self.model. | STRING |
| HIGH | sahi/models/ultralytics.py | 0 | detection model is initialized and set to self.model. | STRING |
| HIGH | sahi/models/yolov5.py | 0 | detection model is initialized and set to self.model. | STRING |
| HIGH | sahi/models/torchvision.py | 0 | sets the underlying yolov5 model. args: model: any a yolov5 model **kwargs: any additional keyword arguments for model s | STRING |
| HIGH | sahi/models/mmdet.py | 0 | sets the underlying yolov5 model. args: model: any a yolov5 model **kwargs: any additional keyword arguments for model s | STRING |
| HIGH | sahi/models/ultralytics.py | 0 | sets the underlying yolov5 model. args: model: any a yolov5 model **kwargs: any additional keyword arguments for model s | STRING |
| HIGH | sahi/models/yolov5.py | 0 | sets the underlying yolov5 model. args: model: any a yolov5 model **kwargs: any additional keyword arguments for model s | STRING |
| HIGH | sahi/models/torchvision.py | 0 | returns if model output contains segmentation mask. | STRING |
| HIGH | sahi/models/roboflow.py | 0 | returns if model output contains segmentation mask. | STRING |
| HIGH | sahi/models/ultralytics.py | 0 | returns if model output contains segmentation mask. | STRING |
| HIGH | sahi/models/yolov5.py | 0 | returns if model output contains segmentation mask. | STRING |
| HIGH | sahi/models/torchvision.py | 0 | convert predictions to objectprediction list. self._original_predictions is converted to a list of prediction.objectpred | STRING |
| HIGH | sahi/models/mmdet.py | 0 | convert predictions to objectprediction list. self._original_predictions is converted to a list of prediction.objectpred | STRING |
| HIGH | sahi/models/detectron2.py | 0 | convert predictions to objectprediction list. self._original_predictions is converted to a list of prediction.objectpred | STRING |
| HIGH | sahi/models/huggingface.py | 0 | convert predictions to objectprediction list. self._original_predictions is converted to a list of prediction.objectpred | STRING |
| HIGH | sahi/models/ultralytics.py | 0 | convert predictions to objectprediction list. self._original_predictions is converted to a list of prediction.objectpred | STRING |
| HIGH | sahi/models/yolov5.py | 0 | convert predictions to objectprediction list. self._original_predictions is converted to a list of prediction.objectpred | STRING |
| HIGH | sahi/models/roboflow.py | 0 | convert predictions to objectprediction list. self._original_predictions is converted to a list of prediction.objectpred | STRING |
| HIGH | sahi/models/mmdet.py | 0 | prediction is performed using self.model and the prediction result is set to self._original_predictions. args: image: np | STRING |
| HIGH | sahi/models/detectron2.py | 0 | prediction is performed using self.model and the prediction result is set to self._original_predictions. args: image: np | STRING |
| HIGH | sahi/models/huggingface.py | 0 | prediction is performed using self.model and the prediction result is set to self._original_predictions. args: image: np | STRING |
| HIGH | sahi/models/ultralytics.py | 0 | prediction is performed using self.model and the prediction result is set to self._original_predictions. args: image: np | STRING |
| HIGH | sahi/models/yolov5.py | 0 | prediction is performed using self.model and the prediction result is set to self._original_predictions. args: image: np | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | tests/test_combine.py | 53 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_combine.py | 55 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_combine.py | 143 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_combine.py | 145 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_combine.py | 371 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_combine.py | 373 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_combine.py | 531 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_combine.py | 533 | # =========================================================================== | COMMENT |
| MEDIUM | tests/test_combine.py | 221 | # =========================================================================== | COMMENT |
| MEDIUM | tests/test_combine.py | 223 | # =========================================================================== | COMMENT |
| MEDIUM | tests/test_combine.py | 285 | # =========================================================================== | COMMENT |
| MEDIUM | tests/test_combine.py | 287 | # =========================================================================== | COMMENT |
| MEDIUM | tests/test_combine.py | 465 | # =========================================================================== | COMMENT |
| MEDIUM | tests/test_combine.py | 467 | # =========================================================================== | COMMENT |
| MEDIUM | tests/test_combine.py | 621 | # =========================================================================== | COMMENT |
| MEDIUM | tests/test_combine.py | 623 | # =========================================================================== | COMMENT |
| MEDIUM | scripts/detect_batch.py | 85 | # ── load model ──────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/detect_batch.py | 107 | # ── single-image detection + save ───────────────────────── | COMMENT |
| MEDIUM | scripts/detect_batch.py | 127 | # ── batch detection + save ──────────────────────────────── | COMMENT |
| MEDIUM | scripts/detect_batch.py | 145 | # ── speed benchmark ─────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/detect_batch.py | 178 | # ── consistency ──────────────────────────────────────────── | COMMENT |
| MEDIUM | sahi/postprocess/combine.py | 16 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | sahi/postprocess/combine.py | 18 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | sahi/postprocess/combine.py | 64 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | sahi/postprocess/combine.py | 66 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | sahi/postprocess/combine.py | 128 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | sahi/postprocess/combine.py | 130 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | sahi/postprocess/combine.py | 262 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | sahi/postprocess/combine.py | 264 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | sahi/postprocess/_numpy_backend.py | 31 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | sahi/postprocess/_numpy_backend.py | 33 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | sahi/postprocess/_numpy_backend.py | 222 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | sahi/postprocess/_numpy_backend.py | 224 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | sahi/postprocess/_numpy_backend.py | 370 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | sahi/postprocess/_numpy_backend.py | 372 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | sahi/postprocess/_torchvision_backend.py | 69 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | sahi/postprocess/_torchvision_backend.py | 71 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | sahi/postprocess/_numba_backend.py | 218 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | sahi/postprocess/_numba_backend.py | 220 | # --------------------------------------------------------------------------- | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_import_utils.py | 1 | CODE | |
| LOW | tests/test_combine.py | 3 | CODE | |
| LOW | tests/test_postprocess_utils.py | 3 | CODE | |
| LOW | tests/test_compatibility.py | 1 | CODE | |
| LOW | tests/test_detectron2_model.py | 3 | CODE | |
| LOW | tests/test_huggingface_model.py | 3 | CODE | |
| LOW | tests/test_libreyolo_model.py | 3 | CODE | |
| LOW | tests/test_table.py | 3 | CODE | |
| LOW | tests/test_huggingface_segmentation.py | 8 | CODE | |
| LOW | tests/test_high_level_api.py | 3 | CODE | |
| LOW | tests/test_prediction.py | 3 | CODE | |
| LOW | tests/test_file_utils.py | 3 | CODE | |
| LOW | tests/test_torchvision.py | 3 | CODE | |
| LOW | tests/test_mmdetection_model.py | 3 | CODE | |
| LOW | tests/test_predict.py | 3 | CODE | |
| LOW | tests/test_match_all_threshold.py | 9 | CODE | |
| LOW | tests/test_rtdet_model.py | 3 | CODE | |
| LOW | tests/test_torch_utils.py | 3 | CODE | |
| LOW | tests/test_shapely_utils.py | 3 | CODE | |
| LOW | tests/test_annotation.py | 3 | CODE | |
| LOW | tests/test_sparse_backend.py | 3 | CODE | |
| LOW | tests/test_ultralytics_model.py | 3 | CODE | |
| LOW | tests/test_coco_evaluation.py | 1 | CODE | |
| LOW | tests/test_cv_utils.py | 3 | CODE | |
| LOW | tests/test_huggingface_groundingdino_model.py | 3 | CODE | |
| LOW | tests/test_roboflow.py | 3 | CODE | |
| LOW | tests/utils/ultralytics.py | 3 | CODE | |
| LOW | scripts/detect_batch.py | 11 | CODE | |
| LOW | sahi/annotation.py | 6 | CODE | |
| LOW | sahi/auto_model.py | 3 | CODE | |
| LOW | sahi/__init__.py | 6 | CODE | |
| LOW | sahi/__init__.py | 12 | CODE | |
| LOW | sahi/__init__.py | 13 | CODE | |
| LOW | sahi/__init__.py | 14 | CODE | |
| LOW | sahi/__init__.py | 15 | CODE | |
| LOW | sahi/__init__.py | 16 | CODE | |
| LOW | sahi/__init__.py | 17 | CODE | |
| LOW | sahi/logger.py | 3 | CODE | |
| LOW | sahi/prediction.py | 3 | CODE | |
| LOW | sahi/utils/rtdetr.py | 3 | CODE | |
| LOW | sahi/utils/compatibility.py | 3 | CODE | |
| LOW | sahi/utils/file.py | 3 | CODE | |
| LOW | sahi/utils/mmdet.py | 3 | CODE | |
| LOW | sahi/utils/cv.py | 3 | CODE | |
| LOW | sahi/utils/table.py | 3 | CODE | |
| LOW | sahi/utils/shapely.py | 3 | CODE | |
| LOW | sahi/utils/import_utils.py | 3 | CODE | |
| LOW | sahi/utils/yolov5.py | 3 | CODE | |
| LOW | sahi/utils/torch_utils.py | 3 | CODE | |
| LOW | sahi/models/rtdetr.py | 6 | CODE | |
| LOW | sahi/models/libreyolo.py | 6 | CODE | |
| LOW | sahi/models/torchvision.py | 7 | CODE | |
| LOW | sahi/models/yolo-world.py | 6 | CODE | |
| LOW | sahi/models/yoloe.py | 7 | CODE | |
| LOW | sahi/models/mmdet.py | 7 | CODE | |
| LOW | sahi/models/detectron2.py | 7 | CODE | |
| LOW | sahi/models/huggingface.py | 7 | CODE | |
| LOW | sahi/models/roboflow.py | 7 | CODE | |
| LOW | sahi/models/huggingface_segmentation.py | 7 | CODE | |
| LOW | sahi/models/ultralytics.py | 7 | CODE | |
| 15 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_huggingface_model.py | 155 | CODE | |
| LOW | tests/test_huggingface_model.py | 196 | CODE | |
| LOW | tests/test_huggingface_model.py | 242 | CODE | |
| LOW | sahi/predict.py | 176 | CODE | |
| LOW | sahi/predict.py | 498 | CODE | |
| LOW | sahi/utils/coco.py | 1837 | CODE | |
| LOW | sahi/utils/coco.py | 1922 | CODE | |
| LOW | sahi/utils/coco.py | 1997 | CODE | |
| LOW | sahi/utils/coco.py | 958 | CODE | |
| LOW | sahi/utils/coco.py | 1007 | CODE | |
| LOW | sahi/utils/coco.py | 1419 | CODE | |
| LOW | sahi/utils/coco.py | 1480 | CODE | |
| LOW | sahi/utils/coco.py | 1518 | CODE | |
| LOW | sahi/utils/coco.py | 2226 | CODE | |
| LOW | sahi/utils/mmdet.py | 69 | CODE | |
| LOW | sahi/utils/cv.py | 257 | CODE | |
| LOW | sahi/utils/cv.py | 309 | CODE | |
| LOW | sahi/utils/cv.py | 623 | CODE | |
| LOW | sahi/utils/torch_utils.py | 73 | CODE | |
| LOW | sahi/models/mmdet.py | 221 | CODE | |
| LOW | sahi/models/roboflow.py | 119 | CODE | |
| LOW | sahi/models/roboflow.py | 201 | CODE | |
| LOW | sahi/models/ultralytics.py | 216 | CODE | |
| LOW | sahi/scripts/coco_error_analysis.py | 49 | CODE | |
| LOW | sahi/scripts/coco_error_analysis.py | 168 | CODE | |
| LOW | sahi/scripts/coco_error_analysis.py | 312 | CODE | |
| LOW | sahi/scripts/coco_evaluation.py | 72 | CODE | |
| LOW | sahi/postprocess/utils.py | 137 | CODE | |
| LOW | sahi/postprocess/utils.py | 164 | CODE | |
| LOW | sahi/postprocess/utils.py | 61 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/check_dependencies.sh | 1 | #!/bin/bash | COMMENT |
| LOW | tests/data/models/mmdet/_base_/datasets/wider_face.py | 1 | """MMDetection configuration file for wider_face.py.""" | COMMENT |
| LOW | …models/mmdet/_base_/datasets/objects365v2_detection.py | 1 | """MMDetection configuration file for objects365v2_detection.py.""" | COMMENT |
| LOW | …ta/models/mmdet/_base_/datasets/cityscapes_instance.py | 1 | """MMDetection configuration file for cityscapes_instance.py.""" | COMMENT |
| LOW | …ta/models/mmdet/_base_/datasets/cityscapes_instance.py | 101 | # persistent_workers=True, | COMMENT |
| LOW | …ts/data/models/mmdet/_base_/datasets/coco_detection.py | 1 | """MMDetection configuration file for coco_detection.py.""" | COMMENT |
| LOW | …ts/data/models/mmdet/_base_/datasets/coco_detection.py | 81 | # test_dataloader = dict( | COMMENT |
| LOW | …ata/models/mmdet/_base_/datasets/lvis_v0.5_instance.py | 1 | """MMDetection configuration file for lvis_v0.5_instance.py.""" | COMMENT |
| LOW | …a/models/mmdet/_base_/datasets/openimages_detection.py | 1 | """MMDetection configuration file for openimages_detection.py.""" | COMMENT |
| LOW | …a/models/mmdet/_base_/datasets/cityscapes_detection.py | 1 | """MMDetection configuration file for cityscapes_detection.py.""" | COMMENT |
| LOW | …ta/models/mmdet/_base_/datasets/semi_coco_detection.py | 1 | """MMDetection configuration file for semi_coco_detection.py.""" | COMMENT |
| LOW | …ta/models/mmdet/_base_/datasets/semi_coco_detection.py | 121 | dict(type="PackDetInputs", meta_keys=("img_id", "img_path", "ori_shape", "img_shape", "scale_factor")), | COMMENT |
| LOW | …sts/data/models/mmdet/_base_/datasets/coco_instance.py | 1 | """MMDetection configuration file for coco_instance.py.""" | COMMENT |
| LOW | …sts/data/models/mmdet/_base_/datasets/coco_instance.py | 81 | # test_dataloader = dict( | COMMENT |
| LOW | …sts/data/models/mmdet/_base_/datasets/coco_panoptic.py | 1 | """MMDetection configuration file for coco_panoptic.py.""" | COMMENT |
| LOW | …sts/data/models/mmdet/_base_/datasets/coco_panoptic.py | 81 | # batch_size=1, | COMMENT |
| LOW | …models/mmdet/_base_/datasets/coco_instance_semantic.py | 1 | """MMDetection configuration file for coco_instance_semantic.py.""" | COMMENT |
| LOW | …models/mmdet/_base_/datasets/objects365v1_detection.py | 1 | """MMDetection configuration file for objects365v1_detection.py.""" | COMMENT |
| LOW | tests/data/models/mmdet/_base_/datasets/voc0712.py | 1 | """MMDetection configuration file for voc0712.py.""" | COMMENT |
| LOW | tests/data/models/mmdet/_base_/datasets/deepfashion.py | 1 | """MMDetection configuration file for deepfashion.py.""" | COMMENT |
| LOW | tests/data/models/mmdet/yolox/yolox_s_8xb8-300e_coco.py | 61 | # Method 1: simply set the data root and let the file I/O module | COMMENT |
| LOW | docs/coco.md | 301 | # 'num_negative_images': 0, | COMMENT |
| LOW | docs/zh/coco.md | 301 | # 'num_images_per_category': {'human': 5684, 'vehicle': 6323}, | COMMENT |
| LOW | docs/tr/coco.md | 301 | # 'num_images_per_category': {'human': 5684, 'vehicle': 6323}, | COMMENT |
| LOW | sahi/postprocess/_sparse_backend.py | 21 | from shapely import STRtree | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/data/models/mmdet/_base_/datasets/wider_face.py | 7 | # Method 1: simply set the data root and let the file I/O module | COMMENT |
| LOW | …models/mmdet/_base_/datasets/objects365v2_detection.py | 8 | # Method 1: simply set the data root and let the file I/O module | COMMENT |
| LOW | …ta/models/mmdet/_base_/datasets/cityscapes_instance.py | 8 | # Method 1: simply set the data root and let the file I/O module | COMMENT |
| LOW | …ts/data/models/mmdet/_base_/datasets/coco_detection.py | 8 | # Method 1: simply set the data root and let the file I/O module | COMMENT |
| LOW | …ata/models/mmdet/_base_/datasets/lvis_v0.5_instance.py | 8 | # Method 1: simply set the data root and let the file I/O module | COMMENT |
| LOW | …a/models/mmdet/_base_/datasets/openimages_detection.py | 8 | # Method 1: simply set the data root and let the file I/O module | COMMENT |
| LOW | …a/models/mmdet/_base_/datasets/cityscapes_detection.py | 8 | # Method 1: simply set the data root and let the file I/O module | COMMENT |
| LOW | …ta/models/mmdet/_base_/datasets/semi_coco_detection.py | 8 | # Method 1: simply set the data root and let the file I/O module | COMMENT |
| LOW | …sts/data/models/mmdet/_base_/datasets/coco_instance.py | 8 | # Method 1: simply set the data root and let the file I/O module | COMMENT |
| LOW | …sts/data/models/mmdet/_base_/datasets/coco_panoptic.py | 8 | # Method 1: simply set the data root and let the file I/O module | COMMENT |
| LOW | …models/mmdet/_base_/datasets/coco_instance_semantic.py | 8 | # Method 1: simply set the data root and let the file I/O module | COMMENT |
| LOW | …models/mmdet/_base_/datasets/objects365v1_detection.py | 8 | # Method 1: simply set the data root and let the file I/O module | COMMENT |
| LOW | tests/data/models/mmdet/_base_/datasets/voc0712.py | 8 | # Method 1: simply set the data root and let the file I/O module | COMMENT |
| LOW | tests/data/models/mmdet/_base_/datasets/deepfashion.py | 8 | # Method 1: simply set the data root and let the file I/O module | COMMENT |
| LOW | tests/data/models/mmdet/yolox/yolox_s_8xb8-300e_coco.py | 61 | # Method 1: simply set the data root and let the file I/O module | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/test_match_all_threshold.py | 32 | except ImportError: # pragma: no cover - numba is optional | CODE |
| HIGH | tests/test_match_all_threshold.py | 43 | except ImportError: # pragma: no cover - torchvision is optional | CODE |
| HIGH | sahi/postprocess/backends.py | 39 | except ImportError: | CODE |
| HIGH | sahi/postprocess/backends.py | 84 | except ImportError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | docs/zh/guides/models.md | 407 | api_key="YOUR_API_KEY", # 也可以设置 ROBOFLOW_API_KEY | CODE |
| HIGH | docs/guides/models.md | 428 | api_key="YOUR_API_KEY", # or set ROBOFLOW_API_KEY | CODE |
| HIGH | docs/tr/guides/models.md | 407 | api_key="YOUR_API_KEY", # or set ROBOFLOW_API_KEY | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/detect_batch.py | 95 | except Exception as e: | CODE |
| LOW | sahi/utils/cv.py | 21 | except Exception: | CODE |
| LOW | sahi/utils/cv.py | 153 | except Exception as e: | CODE |
| LOW | sahi/utils/cv.py | 238 | except Exception: | CODE |
| LOW | sahi/utils/cv.py | 302 | except Exception as error: | CODE |
| LOW | sahi/utils/cv.py | 352 | except Exception as e: # handle large/tiff image reading | CODE |
| LOW | sahi/models/rtdetr.py | 26 | except Exception as e: | CODE |
| LOW | sahi/models/libreyolo.py | 25 | except Exception as e: | CODE |
| LOW | sahi/models/torchvision.py | 71 | except Exception as e: | CODE |
| LOW | sahi/models/yolo-world.py | 26 | except Exception as e: | CODE |
| LOW | sahi/models/yoloe.py | 118 | except Exception as e: | CODE |
| LOW | sahi/models/detectron2.py | 48 | except Exception as e: # try to load from local | CODE |
| LOW | sahi/models/detectron2.py | 75 | except Exception as e: | CODE |
| LOW | sahi/models/ultralytics.py | 67 | except Exception as e: | CODE |
| LOW | sahi/models/yolov5.py | 38 | except Exception as e: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | sahi/auto_model.py | 45 | Load a DetectionModel from given path. Args: model_type: str Name of the detection | STRING |
| HIGH | sahi/postprocess/combine.py | 442 | Apply Locality-Sensitive NMS to suppress overlapping predictions. Args: object_predictions: List of | STRING |
| HIGH | sahi/postprocess/utils.py | 339 | Check whether two predictions overlap at or above the given threshold. Args: pred1: First object prediction | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | sahi/__init__.py | 59 | __all__ = [ | CODE |
| LOW | sahi/logger.py | 98 | __all__ = ["PKG_INFO_LEVEL", "BaseSahiLogger", "SahiLogger", "SupportsPkgInfo", "logger"] | CODE |
| LOW | sahi/utils/coco.py | 896 | def update_categories(self, desired_name2id: dict[str, int], update_image_filenames: bool = False) -> None: | CODE |
| LOW | sahi/utils/coco.py | 1771 | def update_categories_from_file(desired_name2id: dict, coco_path: str, save_path: str) -> None: | CODE |
| LOW | sahi/models/torchvision.py | 77 | def set_model(self, model: Any, **kwargs: Any) -> None: | CODE |
| LOW | sahi/models/mmdet.py | 138 | def set_model(self, model: Any, **kwargs: Any) -> None: | CODE |
| LOW | sahi/models/huggingface.py | 117 | def set_model(self, model: Any, processor: Any | None = None, **kwargs: Any) -> None: | CODE |
| LOW | sahi/models/roboflow.py | 109 | def set_model(self, model: Any, **kwargs: Any) -> None: | CODE |
| LOW | sahi/models/huggingface_segmentation.py | 90 | def set_model(self, model: Any, processor: Any = None, **kwargs: Any) -> None: | CODE |
| LOW | sahi/models/ultralytics.py | 70 | def set_model(self, model: Any, **kwargs: Any) -> None: | CODE |
| LOW | sahi/models/yolov5.py | 41 | def set_model(self, model: Any, **kwargs: Any) -> None: | CODE |
| LOW | sahi/models/base.py | 110 | def set_model(self, model: Any, **kwargs: Any) -> None: | CODE |
| LOW | sahi/models/base.py | 124 | def set_device(self, device: str | None = None) -> None: | CODE |
| LOW | sahi/postprocess/__init__.py | 5 | __all__ = ["get_postprocess_backend", "set_postprocess_backend"] | CODE |
| LOW | sahi/postprocess/backends.py | 20 | def set_postprocess_backend(name: str) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | sahi/auto_model.py | 31 | CODE | |
| LOW | sahi/predict.py | 176 | CODE | |
| LOW | sahi/predict.py | 498 | CODE | |
| LOW | sahi/predict.py | 915 | CODE | |
| LOW | sahi/slicing.py | 305 | CODE | |
| LOW | sahi/slicing.py | 453 | CODE | |
| LOW | sahi/utils/cv.py | 510 | CODE | |
| LOW | sahi/utils/cv.py | 623 | CODE | |
| LOW | sahi/models/mmdet.py | 97 | CODE | |
| LOW | sahi/models/huggingface.py | 26 | CODE | |
| LOW | sahi/models/roboflow.py | 40 | CODE | |
| LOW | sahi/models/base.py | 31 | CODE | |
| LOW | sahi/scripts/coco_evaluation.py | 359 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | sahi/models/roboflow.py | 128 | from inference.core.exceptions import RoboflowAPINotAuthorizedError | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/check_dependencies.sh | 52 | # Check if the command runs without errors | COMMENT |
| LOW | tests/check_dependencies.sh | 62 | # Display the results | COMMENT |
| LOW | sahi/models/ultralytics.py | 189 | # Check if model has 'task' attribute (for both .pt and .onnx models) | COMMENT |
| LOW | sahi/models/ultralytics.py | 204 | # Check if model has 'task' attribute (for both .pt and .onnx models) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docs/guides/models.md | 195 | In addition to the [common parameters](#common-parameters), zero-shot | CODE |
| MEDIUM | docs/tr/guides/models.md | 184 | [Ortak parametrelere](#ortak-parametreler) ek olarak zero-shot (GroundingDINO) modelleri şunları kabul eder: | CODE |