PyTorch implementation of YOLOv3, YOLOv3-SPP, and YOLOv3-tiny for real-time object detection with training, validation, inference, and multi-format export.
This report summarizes scanner evidence for ultralytics/yolov3, a Python project with 10,616 GitHub stars. SynthScan examined 14,202 lines of code across 76 source files, recording 159 pattern matches distributed across 15 syntactic categories. The legacy adjusted pattern signal is 21.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? 93 finding(s).
Are imports declared and package/API names verified? 25 finding(s).
Are wrappers, guards, and repeated structures necessary? 55 finding(s).
Which changes need focused human review? 159 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 159 distinct pattern matches across 15 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 |
|---|---|---|---|---|
| HIGH | val.py | 65 | Saves detection results in a text format, including labels and optionally confidence scores. Args: predn (t | STRING |
| HIGH | val.py | 107 | Save detection results in JSON format containing image_id, category_id, bbox, and score per detection. Args: | STRING |
| HIGH | val.py | 148 | Computes correct prediction matrix for detections against ground truth labels at various IoU thresholds. Args: | STRING |
| HIGH | val.py | 222 | Validate a trained YOLOv3 detection model on a dataset and optionally save results in the requested formats. Args: | STRING |
| HIGH | val.py | 493 | Parses and returns command-line options for dataset paths, model parameters, and inference settings. Args: | STRING |
| HIGH | val.py | 566 | Executes model tasks including training, validation, and speed or study benchmarks based on specified options. Args | STRING |
| HIGH | export.py | 166 | Export a YOLOv3 model to TorchScript format, with optional optimization for mobile deployment. Args: model | STRING |
| HIGH | export.py | 198 | Export a YOLOv3 model to ONNX format with dynamic shape and simplification options. Args: model (torch.nn.M | STRING |
| HIGH | export.py | 269 | Export a YOLOv3 model to OpenVINO format with optional INT8 quantization and inference metadata. Args: file | STRING |
| HIGH | export.py | 350 | Export a YOLOv3 model to PaddlePaddle format using X2Paddle, writing model files and a metadata YAML. Args: | STRING |
| HIGH | export.py | 381 | Export a YOLOv3 model to CoreML format with optional quantization and Non-Maximum Suppression (NMS). Args: | STRING |
| HIGH | export.py | 426 | Export a YOLOv3 model to TensorRT engine format, optimizing it for GPU inference. Args: model (torch.nn.Mod | STRING |
| HIGH | export.py | 675 | Export a YOLOv3 PyTorch model to one or more deployment formats (TorchScript, ONNX, CoreML, TensorRT, etc.). Args: | STRING |
| HIGH | train.py | 106 | Train a YOLOv3 model on a custom dataset and manage the training process. Args: hyp (str | dict): Path to h | STRING |
| HIGH | train.py | 534 | Parse command line arguments for configuring the training of a YOLOv3 model. Args: known (bool): Flag to pa | STRING |
| HIGH | train.py | 602 | Main training/evolution script handling model checks, DDP setup, training, and hyperparameter evolution. Args: | STRING |
| HIGH | train.py | 802 | Run the training process for a YOLOv3 model with the specified configurations. Args: data (str): Path to th | STRING |
| HIGH | hubconf.py | 17 | Creates or loads a YOLOv3 model with specified configurations and optional pretrained weights. Args: name ( | STRING |
| HIGH | hubconf.py | 90 | Loads a custom or local YOLOv3 model from a specified path, with options for autoshaping and device assignment. Arg | STRING |
| HIGH | hubconf.py | 119 | Instantiates the YOLOv3 model with optional pretrained weights, configurable input channels, classes, autoshaping, a | STRING |
| HIGH | hubconf.py | 148 | Instantiates the YOLOv3-SPP model with optional pretrained weights, configurable input channels, classes, autoshapin | STRING |
| HIGH | hubconf.py | 174 | Instantiates the YOLOv3-tiny model with optional pretrained weights, configurable input channels, classes, autoshapi | STRING |
| HIGH | detect.py | 97 | Run YOLOv3 detection inference on various input sources such as images, videos, and streams. Args: weights | STRING |
| HIGH | detect.py | 290 | Parses and returns command-line options for running YOLOv3 model detection. Args: --weights (list[str]): Mo | STRING |
| HIGH | detect.py | 367 | Entry point for running the YOLOv3 model; checks requirements and calls `run` with parsed options. Args: op | STRING |
| HIGH | benchmarks.py | 55 | Run YOLOv3 benchmarks on multiple export formats and validate performance metrics. Args: weights (str | Pat | STRING |
| HIGH | benchmarks.py | 172 | Parses command line arguments for YOLOv3 inference and export configurations. Args: --weights (str): Path t | STRING |
| HIGH | benchmarks.py | 217 | Executes the export and benchmarking pipeline for YOLOv3 models, testing multiple export formats and validating perf | STRING |
| HIGH | utils/autoanchor.py | 68 | Create k-means evolved anchors from a training dataset. Args: dataset (str | LoadImagesAndLabels): Path to | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | val.py | 478 | except Exception as e: | CODE |
| LOW | export.py | 157 | except Exception as e: | CODE |
| LOW | export.py | 262 | except Exception as e: | CODE |
| LOW | export.py | 453 | except Exception: | CODE |
| LOW | hubconf.py | 66 | except Exception: | CODE |
| LOW | hubconf.py | 80 | except Exception as e: | CODE |
| LOW | benchmarks.py | 100 | except Exception as e: | CODE |
| LOW | benchmarks.py | 160 | except Exception: | CODE |
| LOW | utils/autobatch.py | 64 | except Exception as e: | CODE |
| LOW | utils/dataloaders.py | 484 | except Exception as e: | CODE |
| LOW | utils/dataloaders.py | 494 | except Exception: | CODE |
| LOW | utils/dataloaders.py | 645 | except Exception as e: | CODE |
| LOW | utils/dataloaders.py | 909 | except Exception as e: | CODE |
| LOW | utils/downloads.py | 20 | except Exception: | CODE |
| LOW | utils/downloads.py | 67 | except Exception as e: # url2 | CODE |
| LOW⚡ | utils/downloads.py | 110 | except Exception: | CODE |
| LOW⚡ | utils/downloads.py | 113 | except Exception: | CODE |
| LOW⚡ | utils/downloads.py | 116 | except Exception: | CODE |
| LOW | utils/plots.py | 290 | except Exception as e: | CODE |
| LOW | utils/autoanchor.py | 143 | except Exception: | CODE |
| LOW | utils/torch_utils.py | 149 | except Exception: | CODE |
| LOW | utils/torch_utils.py | 160 | except Exception: # no backward method | CODE |
| LOW | utils/torch_utils.py | 170 | except Exception as e: | CODE |
| LOW | utils/general.py | 228 | except Exception: | CODE |
| LOW | utils/general.py | 305 | except Exception as e: | CODE |
| LOW | utils/general.py | 452 | except Exception: | CODE |
| LOW | utils/general.py | 890 | except Exception: | CODE |
| LOW | utils/augmentations.py | 46 | except Exception as e: | CODE |
| LOW | utils/loggers/__init__.py | 113 | except Exception: | CODE |
| LOW | utils/loggers/__init__.py | 412 | except Exception as e: | CODE |
| LOW | utils/loggers/comet/comet_utils.py | 65 | except Exception: | CODE |
| LOW | models/yolo.py | 411 | except Exception as e: | CODE |
| LOW | .github/workflows/merge-main-into-prs.yml | 71 | except Exception as update_error: | CODE |
| LOW | .github/workflows/merge-main-into-prs.yml | 77 | except Exception as e: | CODE |
| LOW | data/Objects365.yaml | 438 | except Exception as e: | CODE |
| LOW | data/xView.yaml | 133 | except Exception as e: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | utils/triton.py | 4 | CODE | |
| LOW | utils/__init__.py | 6 | CODE | |
| LOW | utils/__init__.py | 6 | CODE | |
| LOW | utils/__init__.py | 6 | CODE | |
| LOW | utils/torch_utils.py | 13 | CODE | |
| LOW | utils/torch_utils.py | 13 | CODE | |
| LOW | utils/torch_utils.py | 13 | CODE | |
| LOW | utils/torch_utils.py | 13 | CODE | |
| LOW | utils/torch_utils.py | 13 | CODE | |
| LOW | utils/torch_utils.py | 13 | CODE | |
| LOW | utils/general.py | 4 | CODE | |
| LOW | utils/general.py | 32 | CODE | |
| LOW | utils/general.py | 33 | CODE | |
| LOW | utils/general.py | 33 | CODE | |
| LOW | utils/general.py | 41 | CODE | |
| LOW | utils/general.py | 42 | CODE | |
| LOW | utils/general.py | 42 | CODE | |
| LOW | utils/general.py | 42 | CODE | |
| LOW | utils/general.py | 45 | CODE | |
| LOW | utils/general.py | 45 | CODE | |
| LOW | utils/general.py | 45 | CODE | |
| LOW | utils/general.py | 55 | CODE | |
| LOW | utils/general.py | 55 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | val.py | 192 | CODE | |
| LOW | val.py | 565 | CODE | |
| LOW | train.py | 105 | CODE | |
| LOW | train.py | 601 | CODE | |
| LOW | hubconf.py | 16 | CODE | |
| LOW | detect.py | 68 | CODE | |
| LOW | utils/dataloaders.py | 864 | CODE | |
| LOW | utils/dataloaders.py | 229 | CODE | |
| LOW | utils/dataloaders.py | 438 | CODE | |
| LOW | utils/dataloaders.py | 764 | CODE | |
| LOW | utils/downloads.py | 82 | CODE | |
| LOW | utils/plots.py | 82 | CODE | |
| LOW | utils/torch_utils.py | 123 | CODE | |
| LOW | utils/torch_utils.py | 207 | CODE | |
| LOW | utils/general.py | 327 | CODE | |
| LOW | utils/general.py | 369 | CODE | |
| LOW | utils/general.py | 490 | CODE | |
| LOW | utils/general.py | 493 | CODE | |
| LOW | models/common.py | 435 | CODE | |
| LOW | models/common.py | 647 | CODE | |
| LOW | models/common.py | 812 | CODE | |
| LOW | models/common.py | 904 | CODE | |
| LOW | models/yolo.py | 298 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | val.py | 431 | # Print results | COMMENT |
| LOW | val.py | 437 | # Print results per class | COMMENT |
| LOW | detect.py | 225 | # Print results | COMMENT |
| LOW | detect.py | 277 | # Print results | COMMENT |
| LOW | benchmarks.py | 108 | # Print results | COMMENT |
| LOW | benchmarks.py | 163 | # Print results | COMMENT |
| LOW | utils/loggers/comet/__init__.py | 161 | # Check if running the Experiment with the Comet Optimizer | COMMENT |
| LOW | utils/loggers/comet/__init__.py | 456 | # Check if running Experiment with Comet Optimizer | COMMENT |
| LOW | utils/loggers/clearml/clearml_utils.py | 118 | # Set data to data_dict because wandb will crash without this information and opt is the best way | COMMENT |
| LOW | .github/workflows/merge-main-into-prs.yml | 59 | # Check if PR is behind the default branch | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | requirements.txt | 21 | # tensorboard>=2.4.1 # Visual logging (scalars, images) | COMMENT |
| LOW | requirements.txt | 41 | COMMENT | |
| LOW | pyproject.toml | 1 | # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license | COMMENT |
| LOW | models/common.py | 441 | fp16=False, | COMMENT |
| LOW | data/coco128.yaml | 1 | # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license | COMMENT |
| LOW | data/coco.yaml | 1 | # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license | COMMENT |
| LOW | data/GlobalWheat2020.yaml | 1 | # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license | COMMENT |
| LOW | data/VisDrone.yaml | 1 | # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license | COMMENT |
| LOW | data/SKU-110K.yaml | 1 | # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license | COMMENT |
| LOW | data/Objects365.yaml | 1 | # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license | COMMENT |
| LOW | data/xView.yaml | 1 | # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license | COMMENT |
| LOW | data/Argoverse.yaml | 1 | # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license | COMMENT |
| LOW | data/VOC.yaml | 1 | # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license | COMMENT |
| LOW | data/hyps/hyp.VOC.yaml | 1 | # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | export.py | 634 | pipeline.spec.description.metadata.userDefined.update( | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | val.py | 192 | CODE | |
| LOW | export.py | 657 | CODE | |
| LOW | detect.py | 68 | CODE | |
| LOW | benchmarks.py | 44 | CODE | |
| LOW | benchmarks.py | 121 | CODE | |
| LOW | utils/dataloaders.py | 73 | CODE | |
| LOW | utils/dataloaders.py | 438 | CODE | |
| LOW | utils/general.py | 630 | CODE | |
| LOW | utils/augmentations.py | 137 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | utils/triton.py | 42 | def create_input_placeholders() -> list[InferInput]: | CODE |
| LOW | utils/torch_utils.py | 76 | def torch_distributed_zero_first(local_rank: int): | CODE |
| LOW | utils/loggers/__init__.py | 154 | def on_pretrain_routine_start(self): | CODE |
| LOW | utils/loggers/comet/__init__.py | 367 | def download_dataset_artifact(self, artifact_path): | CODE |
| LOW | utils/loggers/comet/comet_utils.py | 22 | def download_model_checkpoint(opt, experiment): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | utils/augmentations.py | 44 | except ImportError: # package not installed, skip | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | utils/loggers/comet/README.md | 45 | api_key=YOUR_API_KEY | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | pyproject.toml | 14 | # For comprehensive documentation and usage instructions, visit: https://docs.ultralytics.com/models/yolov3 | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | utils/general.py | 868 | # ------------------------------------------------------------------------------------ | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | utils/loggers/comet/__init__.py | 10 | logger = logging.getLogger(__name__) | CODE |
| LOW | utils/loggers/comet/comet_utils.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | utils/loggers/comet/hpo.py | 13 | logger = logging.getLogger(__name__) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | train.py | 123 | # Example usage | STRING |
| LOW | utils/autobatch.py | 32 | # Usage: | COMMENT |