An open source implementation of CLIP.
This report presents the forensic synthetic code analysis of mlfoundations/open_clip, a Python project with 13,982 GitHub stars. SynthScan v2.0 examined 44,560 lines of code across 341 source files, recording 891 pattern matches distributed across 15 syntactic categories. The overall adjusted score of 27.0 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).
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.
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.
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.
The scanner identified 891 distinct pattern matches across 15 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.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_audio_zero_shot.py | 87 | def test_hf_audio_dataset_wrapper_and_classnames(): | CODE |
| LOW | tests/test_audio_zero_shot.py | 101 | def test_hf_audio_dataset_wrapper_accepts_decoder_like_audio(): | CODE |
| LOW | tests/test_audio_zero_shot.py | 116 | def test_build_hf_audio_zero_shot_dataset_defaults_to_no_workers(monkeypatch): | CODE |
| LOW | tests/test_audio_zero_shot.py | 152 | def test_build_hf_audio_zero_shot_dataset_sets_worker_context(monkeypatch): | CODE |
| LOW | tests/test_audio_zero_shot.py | 189 | def test_run_audio_zero_shot_classifier(): | CODE |
| LOW | tests/test_audio_zero_shot.py | 219 | def test_audio_zero_shot_template_validation(): | CODE |
| LOW | tests/test_audio_zero_shot.py | 229 | def test_run_audio_zero_shot_classifier_uses_bare_model_dummy_audio(monkeypatch): | CODE |
| LOW | tests/test_hf_model.py | 21 | def test_max_pooler_ignores_padding(): | CODE |
| LOW | tests/test_hf_model.py | 29 | def test_modernbert_hf_text_encoder_supported(): | CODE |
| LOW | tests/test_hf_model.py | 55 | def test_modernbert_does_not_request_hf_pooling_layer(): | CODE |
| LOW | tests/test_hf_model.py | 63 | def test_hf_text_encoder_ignores_config_pinned_dtype(): | CODE |
| LOW | tests/test_hf_model.py | 90 | def test_pretrained_text_encoder(model_id): | CODE |
| LOW | tests/test_naflex_timm_conversion.py | 46 | def _tiny_native_vit_clip_config(): | CODE |
| LOW | tests/test_naflex_timm_conversion.py | 67 | def _tiny_native_vit_quickgelu_clip_config(): | CODE |
| LOW | tests/test_naflex_timm_conversion.py | 100 | def _write_tiny_big_vision_npz(path): | CODE |
| LOW | tests/test_naflex_timm_conversion.py | 167 | def test_force_naflex_vision_passes_use_naflex_to_timm(monkeypatch): | CODE |
| LOW | tests/test_naflex_timm_conversion.py | 186 | def test_force_naflex_vision_accepts_timm_models_by_module_membership(): | CODE |
| LOW | tests/test_naflex_timm_conversion.py | 193 | def test_force_naflex_vision_configures_pe_core_timm_tower(): | CODE |
| LOW | tests/test_naflex_timm_conversion.py | 206 | def test_force_naflex_vision_converts_native_vit_config(): | CODE |
| LOW⚡ | tests/test_naflex_timm_conversion.py | 222 | def test_force_naflex_vision_rejects_non_vit_model(): | CODE |
| LOW⚡ | tests/test_naflex_timm_conversion.py | 231 | def test_parse_use_naflex_enables_timm_naflex_aug_cfg(): | CODE |
| LOW⚡ | tests/test_naflex_timm_conversion.py | 239 | def test_parse_force_naflex_vision_does_not_enable_naflex_data_pipeline(): | CODE |
| LOW⚡ | tests/test_naflex_timm_conversion.py | 248 | def test_naflex_data_config_defaults_to_model_patch_size(): | CODE |
| LOW | tests/test_naflex_timm_conversion.py | 317 | def test_convert_naflex_timm_state_dict_maps_patch_embed_weight(): | CODE |
| LOW | tests/test_naflex_timm_conversion.py | 346 | def test_convert_naflex_native_vit_state_dict_folds_class_pos_embed(): | CODE |
| LOW | tests/test_naflex_timm_conversion.py | 386 | def test_force_naflex_native_vit_dense_output_matches_native(monkeypatch, config_fn): | CODE |
| LOW⚡ | tests/test_task_specific_unit.py | 84 | def test_clip_task_loss_aggregation(): | CODE |
| LOW⚡ | tests/test_task_specific_unit.py | 94 | def test_clip_task_logit_scale_in_report(): | CODE |
| LOW⚡ | tests/test_task_specific_unit.py | 108 | def test_coca_build_loss_inputs_autoregressive_shift(): | CODE |
| LOW | tests/test_task_specific_unit.py | 132 | def test_coca_training_forward_produces_loss(): | CODE |
| LOW | tests/test_task_specific_unit.py | 142 | def test_coca_compute_accum_loss_concatenates_batches(): | CODE |
| LOW⚡ | tests/test_task_specific_unit.py | 175 | def test_distill_teacher_frozen(): | CODE |
| LOW⚡ | tests/test_task_specific_unit.py | 184 | def test_distill_teacher_stays_eval(): | CODE |
| LOW⚡ | tests/test_task_specific_unit.py | 193 | def test_distill_training_forward_prefixes_teacher_outputs(): | CODE |
| LOW | tests/test_task_specific_unit.py | 215 | def test_distill_teacher_no_grad(): | CODE |
| LOW | tests/test_audio_model_configs.py | 10 | def test_clap_htsat_tiny_config_instantiates_with_audio_deps(): | CODE |
| LOW | tests/test_context_masking.py | 26 | def test_mammut_decoder_context_padding_invariant(model_name): | CODE |
| LOW | tests/test_context_masking.py | 47 | def test_coca_decoder_context_padding_invariant(model_name): | CODE |
| LOW | tests/test_context_masking.py | 67 | def test_context_masking_all_invalid_row_no_nan(): | CODE |
| LOW | tests/test_context_masking.py | 80 | def test_context_attn_mask_from_valid(): | CODE |
| LOW⚡ | tests/test_clap_task.py | 78 | def test_clap_task_training_forward_returns_loss(): | CODE |
| LOW⚡ | tests/test_clap_task.py | 87 | def test_clap_task_eval_forward_keeps_audio_features_key(): | CODE |
| LOW⚡ | tests/test_clap_task.py | 95 | def test_clap_task_eval_forward_accepts_text_kwargs(): | CODE |
| LOW⚡ | tests/test_clap_task.py | 103 | def test_clap_task_dummy_batch_and_batch_size(): | CODE |
| LOW | tests/test_clap_task.py | 114 | def test_clap_task_accum_loss_maps_audio_features_to_clip_loss(): | CODE |
| LOW | tests/test_clap_task.py | 125 | def test_create_task_dispatches_clap(monkeypatch): | CODE |
| LOW | tests/test_clap_task.py | 151 | def test_factory_dispatches_audio_config_to_clap(tmp_path, monkeypatch): | CODE |
| LOW | tests/test_clap_task.py | 191 | def test_evaluate_uses_task_primary_key_for_audio(): | CODE |
| LOW | tests/test_clap_task.py | 221 | def test_audio_checkpoint_retries_only_weights_only_payload_errors(monkeypatch): | CODE |
| LOW | tests/test_clap_task.py | 237 | def test_audio_checkpoint_does_not_retry_unrelated_unpickle_errors(monkeypatch): | CODE |
| LOW | tests/test_naflex_audio.py | 45 | def test_mel_to_patches_pads_time_remainder_not_truncated(): | CODE |
| LOW | tests/test_naflex_audio.py | 57 | def test_mel_to_patches_subpatch_clip_yields_one_valid_patch(): | CODE |
| LOW | tests/test_naflex_audio.py | 67 | def test_mel_to_patches_pad_modes(): | CODE |
| LOW | tests/test_naflex_audio.py | 85 | def test_mel_patch_embed_forward(): | CODE |
| LOW | tests/test_naflex_audio.py | 94 | def test_audio_patch_dicts_collate_via_existing_naflex_collator(): | CODE |
| LOW | tests/test_naflex_audio.py | 106 | def test_audio_coords_feed_existing_position_builders(): | CODE |
| LOW | tests/test_naflex_audio.py | 132 | def test_audio_patchify_transform_variable_duration(): | CODE |
| LOW | tests/test_zero_shot_eval.py | 29 | def test_zero_shot_eval_handles_already_unwrapped_model(monkeypatch): | CODE |
| LOW | tests/test_zero_shot_eval.py | 77 | def test_zero_shot_eval_unwraps_wrapped_model_once(monkeypatch): | CODE |
| LOW | tests/test_zero_shot_eval.py | 125 | def test_zero_shot_eval_skips_generative_model_without_text_tower(): | CODE |
| 456 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_task_specific_unit.py | 14 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_task_specific_unit.py | 16 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_task_specific_unit.py | 79 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_task_specific_unit.py | 81 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_task_specific_unit.py | 103 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_task_specific_unit.py | 105 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_task_specific_unit.py | 170 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_task_specific_unit.py | 172 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_naflex_genlip.py | 35 | # --------------------------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_naflex_genlip.py | 37 | # --------------------------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_naflex_genlip.py | 90 | # --------------------------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_naflex_genlip.py | 92 | # --------------------------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_naflex_genlip.py | 124 | # --------------------------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_naflex_genlip.py | 126 | # --------------------------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_naflex_genlip.py | 169 | # --------------------------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_naflex_genlip.py | 171 | # --------------------------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_naflex_genlip.py | 180 | # --------------------------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_naflex_genlip.py | 182 | # --------------------------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_eval_task.py | 46 | # ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_eval_task.py | 48 | # ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_eval_task.py | 105 | # ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_eval_task.py | 107 | # ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_data_csv.py | 29 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_data_csv.py | 31 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_data_csv.py | 79 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_data_csv.py | 81 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_task_fsdp_unit.py | 18 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_task_fsdp_unit.py | 20 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_task_fsdp_unit.py | 51 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_task_fsdp_unit.py | 53 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_task_fsdp_unit.py | 78 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_task_fsdp_unit.py | 80 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_task_fsdp_unit.py | 110 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_task_fsdp_unit.py | 112 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_task_fsdp_unit.py | 183 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_task_fsdp_unit.py | 185 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_task_fsdp_unit.py | 207 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_task_fsdp_unit.py | 209 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_modern_text.py | 107 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_modern_text.py | 109 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_modern_text.py | 430 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_modern_text.py | 432 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_modern_text.py | 481 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_modern_text.py | 483 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_modern_text.py | 679 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_modern_text.py | 681 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_task_checkpoint.py | 226 | # ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_task_checkpoint.py | 228 | # ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_task_base_unit.py | 61 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_task_base_unit.py | 63 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_task_base_unit.py | 107 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_task_base_unit.py | 109 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_task_base_unit.py | 150 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_task_base_unit.py | 152 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_task_base_unit.py | 215 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_task_base_unit.py | 217 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_task_base_unit.py | 225 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_task_base_unit.py | 227 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_task_base_unit.py | 249 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_task_base_unit.py | 251 | # --------------------------------------------------------------------------- | COMMENT |
| 28 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_legacy_data.py | 6 | CODE | |
| LOW | tests/test_legacy_data.py | 8 | CODE | |
| LOW | tests/test_grad_accum.py | 13 | CODE | |
| LOW | tests/test_factory_task.py | 8 | CODE | |
| LOW | tests/test_factory_task.py | 12 | CODE | |
| LOW | tests/test_audio_wds.py | 20 | CODE | |
| LOW | tests/test_optim_layer_decay.py | 8 | CODE | |
| LOW | tests/test_optim_layer_decay.py | 8 | CODE | |
| LOW | tests/test_task_checkpoint.py | 14 | CODE | |
| LOW | tests/test_task_checkpoint.py | 22 | CODE | |
| LOW | tests/test_naflex_mammut.py | 12 | CODE | |
| LOW | tests/test_naflex_mammut.py | 14 | CODE | |
| LOW | tests/test_training_simple.py | 5 | CODE | |
| LOW | scripts/genlip_zeroshot.py | 29 | CODE | |
| LOW | src/open_clip/zero_shot_classifier.py | 3 | CODE | |
| LOW | src/open_clip/pretrained.py | 7 | CODE | |
| LOW | src/open_clip/pretrained.py | 13 | CODE | |
| LOW | src/open_clip/hf_model.py | 14 | CODE | |
| LOW | src/open_clip/__init__.py | 1 | CODE | |
| LOW | src/open_clip/__init__.py | 3 | CODE | |
| LOW | src/open_clip/__init__.py | 4 | CODE | |
| LOW | src/open_clip/__init__.py | 5 | CODE | |
| LOW | src/open_clip/__init__.py | 6 | CODE | |
| LOW | src/open_clip/__init__.py | 7 | CODE | |
| LOW | src/open_clip/__init__.py | 7 | CODE | |
| LOW | src/open_clip/__init__.py | 8 | CODE | |
| LOW | src/open_clip/__init__.py | 8 | CODE | |
| LOW | src/open_clip/__init__.py | 8 | CODE | |
| LOW | src/open_clip/__init__.py | 8 | CODE | |
| LOW | src/open_clip/__init__.py | 8 | CODE | |
| LOW | src/open_clip/__init__.py | 8 | CODE | |
| LOW | src/open_clip/__init__.py | 16 | CODE | |
| LOW | src/open_clip/__init__.py | 16 | CODE | |
| LOW | src/open_clip/__init__.py | 16 | CODE | |
| LOW | src/open_clip/__init__.py | 16 | CODE | |
| LOW | src/open_clip/__init__.py | 17 | CODE | |
| LOW | src/open_clip/__init__.py | 17 | CODE | |
| LOW | src/open_clip/__init__.py | 17 | CODE | |
| LOW | src/open_clip/__init__.py | 17 | CODE | |
| LOW | src/open_clip/__init__.py | 18 | CODE | |
| LOW | src/open_clip/__init__.py | 18 | CODE | |
| LOW | src/open_clip/__init__.py | 18 | CODE | |
| LOW | src/open_clip/__init__.py | 18 | CODE | |
| LOW | src/open_clip/__init__.py | 18 | CODE | |
| LOW | src/open_clip/__init__.py | 18 | CODE | |
| LOW | src/open_clip/__init__.py | 18 | CODE | |
| LOW | src/open_clip/__init__.py | 18 | CODE | |
| LOW | src/open_clip/__init__.py | 18 | CODE | |
| LOW | src/open_clip/__init__.py | 29 | CODE | |
| LOW | src/open_clip/__init__.py | 30 | CODE | |
| LOW | src/open_clip/__init__.py | 30 | CODE | |
| LOW | src/open_clip/__init__.py | 30 | CODE | |
| LOW | src/open_clip/__init__.py | 30 | CODE | |
| LOW | src/open_clip/__init__.py | 30 | CODE | |
| LOW | src/open_clip/__init__.py | 30 | CODE | |
| LOW | src/open_clip/__init__.py | 30 | CODE | |
| LOW | src/open_clip/__init__.py | 30 | CODE | |
| LOW | src/open_clip/__init__.py | 30 | CODE | |
| LOW | src/open_clip/__init__.py | 30 | CODE | |
| LOW | src/open_clip/__init__.py | 30 | CODE | |
| 76 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/genlip_caption_stats.py | 51 | CODE | |
| LOW | scripts/genlip_caption_stats.py | 90 | CODE | |
| LOW | src/open_clip/zero_shot_classifier.py | 76 | CODE | |
| LOW | src/open_clip/pretrained.py | 818 | CODE | |
| LOW | src/open_clip/hf_model.py | 109 | CODE | |
| LOW | src/open_clip/hf_model.py | 263 | CODE | |
| LOW | src/open_clip/convert.py | 13 | CODE | |
| LOW | src/open_clip/convert.py | 21 | CODE | |
| LOW | src/open_clip/push_to_hf_hub.py | 209 | CODE | |
| LOW | src/open_clip/factory.py | 93 | CODE | |
| LOW | src/open_clip/factory.py | 322 | CODE | |
| LOW | src/open_clip/factory.py | 833 | CODE | |
| LOW | src/open_clip/factory.py | 1027 | CODE | |
| LOW | src/open_clip/factory.py | 1092 | CODE | |
| LOW | src/open_clip/model.py | 457 | CODE | |
| LOW | src/open_clip/tokenizer.py | 100 | CODE | |
| LOW | src/open_clip/tokenizer.py | 436 | CODE | |
| LOW | src/open_clip/tokenizer.py | 528 | CODE | |
| LOW | src/open_clip/tokenizer.py | 807 | CODE | |
| LOW | src/open_clip/loss.py | 434 | CODE | |
| LOW | src/open_clip/utils.py | 67 | CODE | |
| LOW | src/open_clip/transformer.py | 959 | CODE | |
| LOW | src/open_clip/transformer.py | 158 | CODE | |
| LOW | src/open_clip/transform.py | 367 | CODE | |
| LOW | src/open_clip/naflex_genlip_model.py | 595 | CODE | |
| LOW | src/open_clip/naflex_genlip_model.py | 597 | CODE | |
| LOW | src/open_clip/audio/convert.py | 76 | CODE | |
| LOW | src/open_clip/audio/whisper.py | 379 | CODE | |
| LOW | src/open_clip/audio/htsat.py | 1158 | CODE | |
| LOW | src/open_clip/audio/htsat.py | 104 | CODE | |
| LOW | src/open_clip/audio/htsat.py | 741 | CODE | |
| LOW | src/open_clip/audio/htsat.py | 1032 | CODE | |
| LOW | src/open_clip/audio/transform.py | 94 | CODE | |
| LOW | src/open_clip/task/base_task.py | 400 | CODE | |
| LOW | src/open_clip_train/legacy_train.py | 80 | CODE | |
| LOW | src/open_clip_train/legacy_train.py | 268 | CODE | |
| LOW | src/open_clip_train/legacy_main.py | 71 | CODE | |
| LOW | src/open_clip_train/distributed.py | 23 | CODE | |
| LOW | src/open_clip_train/naflex_data.py | 917 | CODE | |
| LOW | src/open_clip_train/audio_zero_shot.py | 299 | CODE | |
| LOW | src/open_clip_train/train.py | 222 | CODE | |
| LOW | src/open_clip_train/train.py | 343 | CODE | |
| LOW | src/open_clip_train/train.py | 542 | CODE | |
| LOW | src/open_clip_train/zero_shot.py | 54 | CODE | |
| LOW | src/open_clip_train/main.py | 97 | CODE | |
| LOW | src/open_clip_train/profiler.py | 131 | CODE | |
| LOW | src/open_clip_train/optim.py | 78 | CODE | |
| LOW | src/open_clip_train/data.py | 746 | CODE | |
| LOW | src/open_clip_train/data.py | 1192 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/util_test.py | 141 | CODE | |
| LOW | src/open_clip/coca_model.py | 167 | CODE | |
| LOW | src/open_clip/coca_model.py | 310 | CODE | |
| LOW | src/open_clip/generation.py | 380 | CODE | |
| LOW | src/open_clip/push_to_hf_hub.py | 156 | CODE | |
| LOW | src/open_clip/modified_resnet.py | 56 | CODE | |
| LOW | src/open_clip/mammut_model.py | 256 | CODE | |
| LOW | src/open_clip/factory.py | 322 | CODE | |
| LOW | src/open_clip/factory.py | 1205 | CODE | |
| LOW | src/open_clip/factory.py | 1341 | CODE | |
| LOW | src/open_clip/model.py | 457 | CODE | |
| LOW | src/open_clip/model.py | 657 | CODE | |
| LOW | src/open_clip/transformer.py | 63 | CODE | |
| LOW | src/open_clip/transformer.py | 272 | CODE | |
| LOW | src/open_clip/transformer.py | 338 | CODE | |
| LOW | src/open_clip/transformer.py | 481 | CODE | |
| LOW | src/open_clip/transformer.py | 598 | CODE | |
| LOW | src/open_clip/transformer.py | 1155 | CODE | |
| LOW | src/open_clip/transformer.py | 1236 | CODE | |
| LOW | src/open_clip/transformer.py | 1817 | CODE | |
| LOW | src/open_clip/transformer.py | 2336 | CODE | |
| LOW | src/open_clip/naflex_config.py | 29 | CODE | |
| LOW | src/open_clip/timm_model.py | 29 | CODE | |
| LOW | src/open_clip/audio/htsat.py | 38 | CODE | |
| LOW | src/open_clip/audio/htsat.py | 87 | CODE | |
| LOW | src/open_clip/audio/htsat.py | 104 | CODE | |
| LOW | src/open_clip/audio/htsat.py | 449 | CODE | |
| LOW | src/open_clip/audio/htsat.py | 641 | CODE | |
| LOW | src/open_clip/audio/htsat.py | 741 | CODE | |
| LOW | src/open_clip/task/coca_task.py | 20 | CODE | |
| LOW | src/open_clip/task/clip_task.py | 12 | CODE | |
| LOW | src/open_clip/task/clap_task.py | 17 | CODE | |
| LOW | src/open_clip/task/distill_task.py | 12 | CODE | |
| LOW | src/open_clip_train/naflex_data.py | 464 | CODE | |
| LOW | src/open_clip_train/naflex_data.py | 828 | CODE | |
| LOW | src/open_clip_train/naflex_data.py | 964 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_optim_layer_decay.py | 451 | def _build_clap_htsat(): | CODE |
| LOW | tests/test_optim_layer_decay.py | 146 | except Exception as e: # offline / hub unavailable | CODE |
| LOW | tests/test_optim_layer_decay.py | 454 | except Exception as e: # optional deps / config issues | CODE |
| LOW | tests/test_optim_layer_decay.py | 518 | except Exception as e: # nadamuon may be absent in older timm | CODE |
| LOW | src/open_clip/pretrained.py | 906 | except Exception: | CODE |
| LOW | src/open_clip/pretrained.py | 918 | except Exception as e: | CODE |
| LOW | src/open_clip/push_to_hf_hub.py | 118 | except Exception as e: | CODE |
| LOW | src/open_clip/factory.py | 433 | except Exception as e: | CODE |
| LOW | src/open_clip/factory.py | 457 | except Exception as e_weights: | CODE |
| LOW | src/open_clip/factory.py | 460 | except Exception as e_config: | CODE |
| LOW | src/open_clip/factory.py | 488 | except Exception as e: | CODE |
| LOW | src/open_clip/factory.py | 668 | except Exception as e: | CODE |
| LOW | src/open_clip/factory.py | 696 | except Exception as e: | CODE |
| LOW | src/open_clip/factory.py | 718 | except Exception as e: | CODE |
| LOW | src/open_clip/factory.py | 872 | except Exception as e: | CODE |
| LOW | src/open_clip/factory.py | 888 | except Exception as e: | CODE |
| LOW | src/open_clip/tokenizer.py | 202 | except Exception: | CODE |
| LOW | src/open_clip/timm_model.py | 181 | except Exception as e: | CODE |
| LOW | src/open_clip/audio/whisper.py | 430 | except Exception as e: | CODE |
| LOW | src/open_clip/audio/htsat.py | 1205 | except Exception as exc: | STRING |
| MEDIUM | src/open_clip/audio/htsat.py | 1158 | def create_htsat_model(audio_cfg, enable_fusion=False, fusion_type="None"): | CODE |
| LOW | src/open_clip_train/naflex_data.py | 303 | except Exception: | CODE |
| LOW | src/open_clip_train/naflex_data.py | 763 | except Exception as ex: | CODE |
| LOW | src/open_clip_train/file_utils.py | 40 | except Exception as e: | CODE |
| LOW | src/open_clip_train/profiler.py | 229 | except Exception as e: | CODE |
| MEDIUM | src/open_clip_train/profiler.py | 230 | print(f'Error profiling {m}: {e}') | CODE |
| LOW⚡ | src/open_clip_train/optim.py | 117 | except Exception: # a submodule's hook may assume context we don't have; skip it rather than fail | CODE |
| LOW⚡ | src/open_clip_train/optim.py | 124 | except Exception: | CODE |
| LOW⚡ | src/open_clip_train/optim.py | 131 | except Exception: | CODE |
| LOW | src/open_clip_train/data.py | 81 | except Exception as exn: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | README.md | 71 | | Model | Training data | Resolution | # of samples seen | ImageNet zero-shot acc. | | CODE |
| MEDIUM | README.md | 532 | ### Evaluating hosted pretrained checkpoint on ImageNet zero-shot prediction: | COMMENT |
| MEDIUM | README.md | 541 | ### Evaluating CLAP audio models on zero-shot audio classification: | COMMENT |
| MEDIUM⚡ | tests/test_eval_task.py | 37 | zeroshot_frequency=0, # disable zero-shot to keep test fast | CODE |
| MEDIUM | src/open_clip/audio/config.py | 31 | # Eval-time audio-token CAP for NaFlexClap zero-shot (mirror of vision_cfg.image_seq_len). Audio is | COMMENT |
| MEDIUM | src/open_clip/task/checkpoint.py | 186 | # Build empty DTensor scaffolding, then let DCP fill it | COMMENT |
| MEDIUM | src/open_clip_train/zero_shot.py | 136 | # tower (generative VLMs such as GenLIP): the text-classifier zero-shot path requires encode_text. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/open_clip/factory.py | 151 | Parses a model name string to identify a schema and the remaining identifier. Args: model_name: The mo | STRING |
| HIGH | src/open_clip/factory.py | 1361 | Creates a contrastive vision-language model from pretrained weights with optional preprocessing transform. Thi | STRING |
| HIGH | src/open_clip_train/optim.py | 257 | Build optimizer param groups with layer-wise LR decay applied to the text / image / audio tower(s). Each decayed to | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/open_clip/modified_resnet.py | 0 | forward features that returns intermediates. args: x: input image tensor indices: take last n blocks if int, all if none | STRING |
| HIGH | src/open_clip/transformer.py | 0 | forward features that returns intermediates. args: x: input image tensor indices: take last n blocks if int, all if none | STRING |
| HIGH | src/open_clip/timm_model.py | 0 | forward features that returns intermediates. args: x: input image tensor indices: take last n blocks if int, all if none | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | tests/test_optim_layer_decay.py | 374 | # ---- robust weight-decay exclusion filter ---- | COMMENT |
| MEDIUM | src/open_clip/factory.py | 739 | # Absolutely no weights were loaded from any source | COMMENT |
| MEDIUM | src/open_clip/tokenizer.py | 536 | # adding lower (for case-sensitive tokenizers) will make it more robust but less sensitive to nuance | COMMENT |
| MEDIUM | src/open_clip/tokenizer.py | 720 | # adding lower (for case-sensitive tokenizers) will make it more robust but less sensitive to nuance | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/open_clip/push_to_hf_hub.py | 111 | # Check if repo already exists and determine what needs updating | COMMENT |
| LOW | src/open_clip/factory.py | 235 | # Check if safetensors or not and load weights accordingly | COMMENT |
| LOW | src/open_clip/factory.py | 418 | # Check if the required 'model_cfg' key is present | COMMENT |
| LOW | src/open_clip/factory.py | 480 | # Check if `pretrained` is a known tag | COMMENT |
| LOW | src/open_clip/factory.py | 657 | # Check if model has the 'visual' attribute | COMMENT |
| LOW | src/open_clip/factory.py | 902 | # Check if config determination failed completely (should only be possible if initial schema parsing failed badly) | COMMENT |
| LOW | src/open_clip/timm_model.py | 246 | # Check if the underlying timm model has set_input_size method | COMMENT |
| LOW | src/open_clip_train/distributed.py | 134 | # Check if init_process_group supports device_id (added in PyTorch ~2.4). | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/open_clip/pos_embed.py | 1 | # Copyright (c) Meta Platforms, Inc. and affiliates. | COMMENT |
| LOW | src/open_clip/tokenizer.py | 461 | cache_dir: Optional[str] = None, | COMMENT |
| LOW | src/open_clip/tokenizer.py | 481 | # if tokenizer_name.startswith('hf-hub:'): | COMMENT |
| LOW | src/open_clip/transformer.py | 781 | # nn.init.normal_(self.positional_embedding, std=self.scale) | COMMENT |
| LOW | src/open_clip/transformer.py | 1581 | # cannot initially key onto, growing only as needed. | COMMENT |
| LOW | src/open_clip/audio/htsat.py | 1121 | # output_dict = self.forward_features(x) | COMMENT |
| LOW | src/open_clip/audio/htsat.py | 1141 | # framewise_output += d["framewise_output"] | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | scripts/genlip_zeroshot.py | 212 | scores = scores - uncond # PMI: log P(cap|img) - log P(cap|null) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | src/open_clip_train/data.py | 183 | # Create the shared counter in the SAME multiprocessing context as the DataLoader workers. A fork-context | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/open_clip/audio/__init__.py | 30 | __all__ = [ | CODE |
| LOW | src/open_clip_train/naflex_data.py | 31 | __all__ = [ | CODE |