[Perf] Bilder werden 2-3x pro Bild dekodiert in analyze_folder #22
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
analyzer.py:10-33undanalyzer.py:58-89:Pro Bild laufen unabhaengige Decodes:
is_blurry(path)->cv2.imread()_mean_brightness(path)->Image.open().convert("L")find_duplicates()->imagehash.phash(Image.open(path))Bei 500 Bildern: 1500+ Dekodierungen statt 500.
Fix
Pro Bild einmal dekodieren, dann alle Operationen auf demselben Array:
Fix umgesetzt in
analyzer.py:analyze_folder:Phase 1 lädt jedes Bild einmal mit
Image.open(path)und berechnet daraus alles:gray_arr(numpy L-Konvertierung)blurvia Laplacian-Variance aufgray_arrmean_balsgray_arr.mean()phashauf RGB-VariantepHash wird im
phash_cachegespeichertPhase 3 ruft
find_duplicates(paths, threshold, hash_cache=phash_cache)auf - kein zweiter Decodefind_duplicatesakzeptiert jetzt optionalenhash_cache-ParameterDie alten
is_blurry/is_overexposed/is_underexposed/_mean_brightnessbleiben fuer API-Kompatibilitaet, werden aber vonanalyze_foldernicht mehr genutztVorher: 3 Decodes pro Bild in Phase 1 + 1 in Phase 3 = 4 Decodes
Nachher: 1 Decode pro Bild fuer alle Metriken
Funktionstest mit 5 Bildern (overexposed/underexposed/grey + 1 exakte Kopie + 1 perceptual dup): alle Detektionen korrekt, Laufzeit 0,26 s.