Repository Analysis

ultralytics/yolov3

PyTorch implementation of YOLOv3, YOLOv3-SPP, and YOLOv3-tiny for real-time object detection with training, validation, inference, and multi-format export.

20.8 Moderate AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of ultralytics/yolov3, a Python project with 10,599 GitHub stars. SynthScan v2.0 examined 14,208 lines of code across 76 source files, recording 158 pattern matches distributed across 14 syntactic categories. The overall adjusted score of 20.8 places this repository in the Moderate AI signal band.

The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).

20.8
Adjusted Score
20.8
Raw Score
100%
Time Factor
2026-08-28
Last Push
10.6K
Stars
Python
Language
14.2K
Lines of Code
76
Files
158
Pattern Hits
2026-08-29
Scan Date
0.41
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.

Severity Breakdown

Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.

CRITICAL 1HIGH 30MEDIUM 2LOW 125

Directory Score Breakdown

This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.

Pattern Findings

The scanner identified 158 distinct pattern matches across 14 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.

Docstring Block Structure29 hits · 145 pts
SeverityFileLineSnippetContext
HIGHval.py65Saves detection results in a text format, including labels and optionally confidence scores. Args: predn (tSTRING
HIGHval.py107Save detection results in JSON format containing image_id, category_id, bbox, and score per detection. Args: STRING
HIGHval.py148Computes correct prediction matrix for detections against ground truth labels at various IoU thresholds. Args: STRING
HIGHval.py222Validate a trained YOLOv3 detection model on a dataset and optionally save results in the requested formats. Args: STRING
HIGHval.py493Parses and returns command-line options for dataset paths, model parameters, and inference settings. Args: STRING
HIGHval.py566Executes model tasks including training, validation, and speed or study benchmarks based on specified options. ArgsSTRING
HIGHexport.py166Export a YOLOv3 model to TorchScript format, with optional optimization for mobile deployment. Args: model STRING
HIGHexport.py198Export a YOLOv3 model to ONNX format with dynamic shape and simplification options. Args: model (torch.nn.MSTRING
HIGHexport.py269Export a YOLOv3 model to OpenVINO format with optional INT8 quantization and inference metadata. Args: fileSTRING
HIGHexport.py350Export a YOLOv3 model to PaddlePaddle format using X2Paddle, writing model files and a metadata YAML. Args: STRING
HIGHexport.py381Export a YOLOv3 model to CoreML format with optional quantization and Non-Maximum Suppression (NMS). Args: STRING
HIGHexport.py426Export a YOLOv3 model to TensorRT engine format, optimizing it for GPU inference. Args: model (torch.nn.ModSTRING
HIGHexport.py675Export a YOLOv3 PyTorch model to one or more deployment formats (TorchScript, ONNX, CoreML, TensorRT, etc.). Args: STRING
HIGHtrain.py106Train a YOLOv3 model on a custom dataset and manage the training process. Args: hyp (str | dict): Path to hSTRING
HIGHtrain.py534Parse command line arguments for configuring the training of a YOLOv3 model. Args: known (bool): Flag to paSTRING
HIGHtrain.py602Main training/evolution script handling model checks, DDP setup, training, and hyperparameter evolution. Args: STRING
HIGHtrain.py802Run the training process for a YOLOv3 model with the specified configurations. Args: data (str): Path to thSTRING
HIGHhubconf.py17Creates or loads a YOLOv3 model with specified configurations and optional pretrained weights. Args: name (STRING
HIGHhubconf.py90Loads a custom or local YOLOv3 model from a specified path, with options for autoshaping and device assignment. ArgSTRING
HIGHhubconf.py119Instantiates the YOLOv3 model with optional pretrained weights, configurable input channels, classes, autoshaping, aSTRING
HIGHhubconf.py148Instantiates the YOLOv3-SPP model with optional pretrained weights, configurable input channels, classes, autoshapinSTRING
HIGHhubconf.py174Instantiates the YOLOv3-tiny model with optional pretrained weights, configurable input channels, classes, autoshapiSTRING
HIGHdetect.py97Run YOLOv3 detection inference on various input sources such as images, videos, and streams. Args: weights STRING
HIGHdetect.py290Parses and returns command-line options for running YOLOv3 model detection. Args: --weights (list[str]): MoSTRING
HIGHdetect.py367Entry point for running the YOLOv3 model; checks requirements and calls `run` with parsed options. Args: opSTRING
HIGHbenchmarks.py55Run YOLOv3 benchmarks on multiple export formats and validate performance metrics. Args: weights (str | PatSTRING
HIGHbenchmarks.py172Parses command line arguments for YOLOv3 inference and export configurations. Args: --weights (str): Path tSTRING
HIGHbenchmarks.py217Executes the export and benchmarking pipeline for YOLOv3 models, testing multiple export formats and validating perfSTRING
HIGHutils/autoanchor.py68Create k-means evolved anchors from a training dataset. Args: dataset (str | LoadImagesAndLabels): Path to STRING
Excessive Try-Catch Wrapping36 hits · 38 pts
SeverityFileLineSnippetContext
LOWval.py478 except Exception as e:CODE
LOWexport.py157 except Exception as e:CODE
LOWexport.py262 except Exception as e:CODE
LOWexport.py453 except Exception:CODE
LOWhubconf.py66 except Exception:CODE
LOWhubconf.py80 except Exception as e:CODE
LOWbenchmarks.py100 except Exception as e:CODE
LOWbenchmarks.py160 except Exception:CODE
LOWutils/autobatch.py64 except Exception as e:CODE
LOWutils/dataloaders.py484 except Exception as e:CODE
LOWutils/dataloaders.py494 except Exception:CODE
LOWutils/dataloaders.py645 except Exception as e:CODE
LOWutils/dataloaders.py909 except Exception as e:CODE
LOWutils/downloads.py20 except Exception:CODE
LOWutils/downloads.py67 except Exception as e: # url2CODE
LOWutils/downloads.py110 except Exception:CODE
LOWutils/downloads.py113 except Exception:CODE
LOWutils/downloads.py116 except Exception:CODE
LOWutils/plots.py290 except Exception as e:CODE
LOWutils/autoanchor.py143 except Exception:CODE
LOWutils/torch_utils.py149 except Exception:CODE
LOWutils/torch_utils.py160 except Exception: # no backward methodCODE
LOWutils/torch_utils.py170 except Exception as e:CODE
LOWutils/general.py228 except Exception:CODE
LOWutils/general.py305 except Exception as e:CODE
LOWutils/general.py452 except Exception:CODE
LOWutils/general.py890 except Exception:CODE
LOWutils/augmentations.py46 except Exception as e:CODE
LOWutils/loggers/__init__.py113 except Exception:CODE
LOWutils/loggers/__init__.py412 except Exception as e:CODE
LOWutils/loggers/comet/comet_utils.py65 except Exception:CODE
LOWmodels/yolo.py411 except Exception as e:CODE
LOW.github/workflows/merge-main-into-prs.yml74 except Exception as update_error:CODE
LOW.github/workflows/merge-main-into-prs.yml80 except Exception as e:CODE
LOWdata/Objects365.yaml438 except Exception as e:CODE
LOWdata/xView.yaml133 except Exception as e:CODE
Unused Imports23 hits · 23 pts
SeverityFileLineSnippetContext
LOWutils/triton.py4CODE
LOWutils/__init__.py6CODE
LOWutils/__init__.py6CODE
LOWutils/__init__.py6CODE
LOWutils/torch_utils.py13CODE
LOWutils/torch_utils.py13CODE
LOWutils/torch_utils.py13CODE
LOWutils/torch_utils.py13CODE
LOWutils/torch_utils.py13CODE
LOWutils/torch_utils.py13CODE
LOWutils/general.py4CODE
LOWutils/general.py32CODE
LOWutils/general.py33CODE
LOWutils/general.py33CODE
LOWutils/general.py41CODE
LOWutils/general.py42CODE
LOWutils/general.py42CODE
LOWutils/general.py42CODE
LOWutils/general.py45CODE
LOWutils/general.py45CODE
LOWutils/general.py45CODE
LOWutils/general.py55CODE
LOWutils/general.py55CODE
Deep Nesting23 hits · 22 pts
SeverityFileLineSnippetContext
LOWval.py192CODE
LOWval.py565CODE
LOWtrain.py105CODE
LOWtrain.py601CODE
LOWhubconf.py16CODE
LOWdetect.py68CODE
LOWutils/dataloaders.py864CODE
LOWutils/dataloaders.py229CODE
LOWutils/dataloaders.py438CODE
LOWutils/dataloaders.py764CODE
LOWutils/downloads.py82CODE
LOWutils/plots.py82CODE
LOWutils/torch_utils.py123CODE
LOWutils/torch_utils.py207CODE
LOWutils/general.py327CODE
LOWutils/general.py369CODE
LOWutils/general.py490CODE
LOWutils/general.py493CODE
LOWmodels/common.py435CODE
LOWmodels/common.py647CODE
LOWmodels/common.py812CODE
LOWmodels/common.py904CODE
LOWmodels/yolo.py298CODE
Redundant / Tautological Comments10 hits · 15 pts
SeverityFileLineSnippetContext
LOWval.py431 # Print resultsCOMMENT
LOWval.py437 # Print results per classCOMMENT
LOWdetect.py225 # Print resultsCOMMENT
LOWdetect.py277 # Print resultsCOMMENT
LOWbenchmarks.py108 # Print resultsCOMMENT
LOWbenchmarks.py163 # Print resultsCOMMENT
LOWutils/loggers/comet/__init__.py161 # Check if running the Experiment with the Comet OptimizerCOMMENT
LOWutils/loggers/comet/__init__.py456 # Check if running Experiment with Comet OptimizerCOMMENT
LOWutils/loggers/clearml/clearml_utils.py118 # Set data to data_dict because wandb will crash without this information and opt is the best wayCOMMENT
LOW.github/workflows/merge-main-into-prs.yml62 # Check if PR is behind the default branchCOMMENT
Over-Commented Block14 hits · 14 pts
SeverityFileLineSnippetContext
LOWrequirements.txt21# tensorboard>=2.4.1 # Visual logging (scalars, images)COMMENT
LOWrequirements.txt41COMMENT
LOWpyproject.toml1# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/licenseCOMMENT
LOWmodels/common.py441 fp16=False,COMMENT
LOWdata/coco128.yaml1# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/licenseCOMMENT
LOWdata/coco.yaml1# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/licenseCOMMENT
LOWdata/GlobalWheat2020.yaml1# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/licenseCOMMENT
LOWdata/VisDrone.yaml1# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/licenseCOMMENT
LOWdata/SKU-110K.yaml1# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/licenseCOMMENT
LOWdata/Objects365.yaml1# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/licenseCOMMENT
LOWdata/xView.yaml1# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/licenseCOMMENT
LOWdata/Argoverse.yaml1# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/licenseCOMMENT
LOWdata/VOC.yaml1# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/licenseCOMMENT
LOWdata/hyps/hyp.VOC.yaml1# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/licenseCOMMENT
Hallucination Indicators1 hit · 10 pts
SeverityFileLineSnippetContext
CRITICALexport.py634 pipeline.spec.description.metadata.userDefined.update(CODE
AI Structural Patterns9 hits · 8 pts
SeverityFileLineSnippetContext
LOWval.py192CODE
LOWexport.py657CODE
LOWdetect.py68CODE
LOWbenchmarks.py44CODE
LOWbenchmarks.py121CODE
LOWutils/dataloaders.py73CODE
LOWutils/dataloaders.py438CODE
LOWutils/general.py630CODE
LOWutils/augmentations.py137CODE
Hyper-Verbose Identifiers5 hits · 5 pts
SeverityFileLineSnippetContext
LOWutils/triton.py42 def create_input_placeholders() -> list[InferInput]:CODE
LOWutils/torch_utils.py76def torch_distributed_zero_first(local_rank: int):CODE
LOWutils/loggers/__init__.py154 def on_pretrain_routine_start(self):CODE
LOWutils/loggers/comet/__init__.py367 def download_dataset_artifact(self, artifact_path):CODE
LOWutils/loggers/comet/comet_utils.py22def download_model_checkpoint(opt, experiment):CODE
Magic Placeholder Names1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHutils/loggers/comet/README.md45 api_key=YOUR_API_KEYCODE
AI Slop Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMpyproject.toml14# For comprehensive documentation and usage instructions, visit: https://docs.ultralytics.com/models/yolov3COMMENT
Decorative Section Separators1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMutils/general.py868# ------------------------------------------------------------------------------------COMMENT
Modern Structural Boilerplate3 hits · 3 pts
SeverityFileLineSnippetContext
LOWutils/loggers/comet/__init__.py10logger = logging.getLogger(__name__)CODE
LOWutils/loggers/comet/comet_utils.py15logger = logging.getLogger(__name__)CODE
LOWutils/loggers/comet/hpo.py13logger = logging.getLogger(__name__)CODE
Example Usage Blocks2 hits · 2 pts
SeverityFileLineSnippetContext
LOWtrain.py123 # Example usageSTRING
LOWutils/autobatch.py32 # Usage:COMMENT