Blog / Inżynieria

Czy te kolory są prawdziwe? Koloryzacja AI tylko w chrominancji

· zaktualizowano 24 sierpnia o badanie detektora na 115 zdjęciach · dane: implementacja, zapis decyzji, stanowisko laboratoryjne

Najczęstsza obawa wobec koloryzacji AI brzmi: model przemalowuje fotografię, więc twarz babci jest teraz częściowo wymyślona. W tym potoku jest to wykluczone z konstrukcji, nie na obietnicę: koloryzatorowi[1] wolno wnieść wyłącznie kolor, nigdy detale. Ta notatka wyjaśnia mechanizm; potem (nowość w tej rewizji) ocenia 40 linijek arytmetyki, które decydują, kiedy koloryzacja się uruchamia, na 115 oznaczonych fotografiach: prawdziwych czarno-białych skanach, prawdziwej odbitce albuminowej z 1867 roku, trzech rodzinach odbitek tonowanych chemicznie, prawdziwym kolorze i syntetycznie wyblakłym kolorze. Detektor jest bezbłędny na każdej rodzinie monochromatycznej, ma 88% na prawdziwym kolorze, a na wyblakłym kolorze załamuje się do 8%, z powodu, którego żaden próg nie naprawi: dostatecznie wyblakły kolor jest monochromatyczny, matematycznie.

115oznaczonych zdjęć ocenionychprawdziwe skany + 3 syntetyczne rodziny tonowań
100%na każdej rodzinie monochromatycznejcz.-b., sepia, selen, cyjanotypia: 66/66
88%na prawdziwym kolorze3 pomyłki to sceny o jednym odcieniu
8%na wyblakłym kolorzea matematyka mówi dlaczego

Każda liczba w tej notatce została zmierzona na kodzie produkcyjnego potoku: te same modele, ta sama matematyka. Surowe rekordy dla każdego obrazu: e4_mono.json.

1 · Mechanizm: luminancja jest nietykalna

Każdy obraz rozdziela się na luminancję (czarno-białą strukturę: krawędzie, fakturę, twarze, światło) i chrominancję (kolor nałożony na nią). Koloryzujemy w przestrzeni CIELAB, która czyni to rozdzielenie jawnym: fotografia zachowuje własny kanał L, bit w bit, a model wnosi tylko dwa kanały koloru (a i b). Złóż je z powrotem, a dostaniesz oryginalne zdjęcie ubrane w oszacowany kolor. Jeśli model koloru ma zły dzień, awarią jest zły odcień, nigdy zmieniona twarz, przesunięta krawędź czy wymyślona faktura.

Skanzdjęcie cz.-b.
Kanał Lstruktura: przechodzi
Kanały a·bkolor: z modelu
Wynikte same detale, nowy kolor
Rys. 1. Podział kanałów. Model nigdy nie widzi ścieżki, którą mógłby zmienić strukturę: luminancja przepływa niezmodyfikowana.
Czarno-biały skan płyty szklanej z 1862 roku: trzech mężczyzn przy wojskowym namiociePrzedTa sama fotografia odnowiona i pokolorowana: mundury na niebiesko, trawa i płótno w naturalnych tonachPo
Rys. 2. Koloryzacja jako część pełnej renowacji: skan płyty szklanej z 1862 roku i wynik z narzędzia na tej stronie. Kolor jest oszacowany; detale są własne fotografii. Sierpień 2026.

2 · Kiedy się uruchamia? Matematyka pytania „czy to sepia?”

Koloryzacja uruchamia się automatycznie tylko wtedy, gdy pomiar wskaże, że zdjęcie jest monochromatyczne, a to sepia sprawia, że nie jest to oczywiste. Naiwny test (r ≈ g ≈ b wszędzie) łapie neutralną czerń i biel i nic więcej. Ale odbitka w sepii jest zdecydowanie chromatyczna: każdy piksel niesie kolor. Monochromatyczną czyni ją to, że cały jej kolor wskazuje ten sam kierunek: chemia tonuje odbitkę jednym związkiem, więc odcień jest stały, a chrominancja skaluje się z gęstością. Kierunek, nie wielkość, jest odciskiem palca.

Detektor próbkuje więc do 20 000 pikseli w przestrzeni Lab i zachowuje trzy statystyki: udział chromatyczny (odsetek pikseli o chrominancji powyżej progu szumu 2 jednostek), średnią chrominancję C̄ i tę najciekawszą, koncentrację odcienia, czyli średnią długość wypadkowej jednostkowych wektorów odcienia, wprost ze statystyki kierunkowej[2]:

R̄ = ‖ Σi ui ‖ / n, ui = (ai, bi) / Ci(1)

R̄ mieści się w [0, 1]: dokładnie 1 oznacza, że każdy chromatyczny piksel zgadza się co do odcienia (idealne tonowanie); blisko 0 oznacza, że odcienie znoszą się wokół koła (skóra kłóci się z niebem: fotografia kolorowa). Reguła produkcyjna ma dwie klauzule:

monochromatyczne ⇔ chromaticFraction < 0.05 ∨ ( R̄ > 0.92 ∧ C̄ < 22 )(2)

3 · Ocena na 115 zdjęciach

Sześć wersji tego samego zdjęcia papugi: oryginalny kolor, neutralna czerń i biel, sepia, cyjanotypia, wyblakłe w połowie i mocno wyblakłe
Rys. 3. Jedna scena Kodak przez generatory korpusu. Zmierzona koncentracja odcienia R̄, od lewej do prawej: 0,65 (oryginalny kolor), 0,00 (neutralna cz.-b.), 1,00 (sepia), 1,00 (cyjanotypia), 0,86 (wyblakłe 50%), 0,96 (wyblakłe 82%). Zwróć uwagę na ostatnią liczbę: blaknięcie podnosi R̄, i to jest cały problem Sekcji 4.
Grupanpoprawnieodsetek
Real B&W scans55100%
Real albumen print (1867)11100%
Synthetic neutral grayscale66100%
Sepia tints (×3 strengths)1818100%
Selenium tints1818100%
Cyanotype tints1818100%
Real color photos252288%
Faded color (synthetic)2428%

Każda rodzina monochromatyczna klasyfikuje się bezbłędnie, w tym jedyna prawdziwa XIX-wieczna odbitka, która ląduje przy R̄ = 0,946, C̄ = 8,0, wygodnie wewnątrz obszaru. Wykres rozrzutu pokazuje cały korpus naraz, z zacieniowanym obszarem decyzji:

monochromatyczne (prawda)prawdziwy kolorwyblakły kolor
0102230405000.250.50.750.921koncentracja odcienia R̄średnia chrominancja C̄sklasyfikowane jako monochromatyczne
Rys. 4. Płaszczyzna decyzji: koncentracja odcienia R̄ wobec średniej chrominancji C̄, jeden punkt na zdjęcie (neutralna cz.-b. kumuluje się w początku układu; rodziny tonowań tworzą gęstą kolumnę przy R̄ ≈ 1). Zacieniowany prostokąt to klauzula druga Równ. 2. Wdzierają się trzy prawdziwe kolorowe zdjęcia (niebieskie): leśny strumień, odrzutowiec na płycie lotniska, zacumowana łódź, sceny, które naprawdę mają jeden odcień. A zbiór wyblakły (złoty) równo maszeruje do prostokąta, w miarę jak blaknięcie pcha R̄ ku 1.

Trzy fałszywe wykrycia na prawdziwym kolorze warto nazwać, bo to nie szum; to fotografie monochromatycznych scen: leśny strumień Kodak (R̄ 0,93), zaparkowany odrzutowiec (R̄ 0,96), łódź o zmierzchu. Statystyka robi swoje; te sceny naprawdę koncentrują swój odcień. Awaria jest semantyczna, nie matematyczna, i właśnie dlatego zabieg Koloruj to widoczny, odznaczalny przełącznik, a nie cicha decyzja.

4 · Obszar, w którym żaden próg nie wygra

Teraz złote punkty. Gdy kolorowe zdjęcie blaknie, dzieją się dwie rzeczy naraz: C̄ maleje (barwniki umierają), a R̄ rośnie: to, co przetrwa blaknięcie, nie jest uczciwą próbką pierwotnych odcieni, lecz resztką plus dominantą odbitki, a dominanta jest z definicji kierunkowa. Przy wyblaknięciu 50% nasz korpus ma średnio R̄ ≈ 0,95; przy 82% R̄ ≈ 0,98 przy C̄ ≈ 9. Porównaj z Równ. 2: to jest sygnatura tonowania. Mocno wyblakłe kolorowe zdjęcie nie zbliżyło się do klasy sepii; ono do niej dołączyło.

0.60.70.80.90.80.840.880.920.960.98próg R̄dokładność na korpusieprodukcja
Rys. 5. Dokładność na korpusie przy przemiataniu progu R̄ (cięcie chrominancji ustalone na 22). Dokładność rośnie aż do 0,98, ale od 0,96 w górę zysk jest kupowany wyrzuceniem jedynej prawdziwej odbitki albuminowej (R̄ = 0,946) z klasy monochromatycznej: jedynego fałszywie ujemnego w całym przemiataniu. Syntetyczne tonowania mają R̄ ≥ 0,998; prawdziwa XIX-wieczna chemia błądzi. Strojenie do 0,98 byłoby przeuczeniem na własnym generatorze.

Próg jest więc wyborem wartości przebranym za liczbę. Podnieś R̄ do 0,98, a wynik na korpusie rośnie o dziesięć punktów, podczas gdy klasyfikator po cichu zaczyna zawodzić na dokładnie tych artefaktach, dla których ta funkcja istnieje: prawdziwych tonowanych odbitkach, których stuletnia chemia błądzi w odcieniu dużo bardziej niż jakiekolwiek syntetyczne tonowanie. Produkcja pozostaje przy 0,92, by zachować margines dla prawdziwej chemii, przyjmuje obszar wyblakły jako naprawdę niejednoznaczny i pyta Ciebie, bo zdjęcie, które straciło 82% koloru, to takie, które jego właściciel może chcieć pokolorować na nowo. Powyższa tabela nazywa te 22 zdjęcia „błędnymi”; ich właściciele o połowie z nich powiedzieliby „proszę bardzo”.

5 · Czym koloryzacja uczciwie jest

Oszacowaniem. Model widział dość fotografii, by wiedzieć, że trawa jest zielona, a wełniane płaszcze z lat 1860. zwykle ciemnoniebieskie, ale nie może wiedzieć, że sukienka Twojej babci była czerwona, nie zielona. Tam, gdzie kolor jest historycznie do ustalenia, oszacowanie bywa przekonujące; tam, gdzie nie jest, model wybiera coś wiarygodnego. Dlatego uczciwe ujęcie to „naturalny kolor, dodany”, a nie „pierwotne kolory, odzyskane”, i dlatego istnieje opcja pozostawienia zdjęcia czarno-białym. Struktura (twarze, światło, chwila) jest zawsze własnością fotografii, na mocy mechanizmu z Sekcji 1. Ta sama sztuczka w przestrzeni Lab działa w odwrotną stronę w naszym renderowaniu twarzy, gdzie model twarzy wnosi tylko luminancję, a fotografia zachowuje swoją chrominancję.

6 · Ograniczenia

  • Jedna prawdziwa tonowana odbitka. Albuminowy Herschel kotwiczy argument o realizmie, ale jest pojedynczą próbką; datowany korpus ferrotypii, albuminów i cyjanotypii to oczywisty następny krok.
  • Syntetyczne blaknięcie jest łaskawe dla detektora. Prawdziwe blaknięcie chromogeniczne jest selektywne względem barwników (cyjan umiera pierwszy; dlatego odbitki z lat 70. czerwienieją), co pcha R̄ w górę jeszcze szybciej niż nasz jednorodny model.
  • Błąd próbkowania, celowy: drobne kolorowe detale (samotna czerwona broszka na portrecie w sepii) mogą schować się pod radarem udziału chromatycznego. Odchylenie jest celowo w stronę zachowania tonowań.

Źródła

  1. Antic, J. (2019). DeOldify: A Deep Learning based project for colorizing and restoring old images. Open-source software. github.com
  2. Mardia, K. V., & Jupp, P. E. (2000). Directional Statistics. Wiley. (The mean resultant length R̄ behind our hue-concentration statistic.) onlinelibrary.wiley.com
  3. Kodak Lossless True Color Image Suite: 24 uncompressed 768×512 PhotoCD reference images, the classic image-quality test set. r0k.us
  4. Cameron, J. M. (1867). Portrait of Sir John Herschel, a real albumen print with genuine chemical toning. Public domain, via Wikimedia Commons. commons.wikimedia.org
  5. Lange, D. (1936). “Migrant Mother” (Destitute pea pickers in California), Farm Security Administration. Public domain, via Wikimedia Commons. commons.wikimedia.org
  6. ONNX Runtime: the inference engine both our server (CPU) and in-browser (WebGPU/WASM) engines run on. onnxruntime.ai