Przejdź do głównej treści
LibraTool logoLibraTool

Powiększanie obrazu za darmo

Powiększ zdjęcie 4× modelem AI działającym na Twoim urządzeniu — ostrzejsze krawędzie i czytelny tekst, a nie tylko większe piksele. Nic nie jest wysyłane, bez konta i bez znaku wodnego.

Przeciągnij pliki tutaj lub kliknij, aby przeglądać

PNG, JPG, WebP, AVIF, GIF, BMP, HEIC, HEIF · przetwarzane na Twoim urządzeniu

lub naciśnij Ctrl+V, aby wkleić ze schowka

Możesz przeciągnąć wiele plików naraz

Przeglądaj pliki
Real-ESRGAN dorysowuje szczegóły w 4×, zamiast rozciągać piksele. Model o rozmiarze 4,6 MB pobiera się raz, a potem działa w całości na tym urządzeniu — Twoje zdjęcie nigdy nie jest przesyłane.

Jak to działa

Powiększanie korzysta z Real-ESRGAN general-x4v3 — konwolucyjnej sieci super-rozdzielczości o rozmiarze 4,6 MB — przez onnxruntime-web w Web Workerze na Twoim komputerze. Model jest pobierany jednorazowo z naszego serwera, zapisywany w pamięci podręcznej, a potem używany offline; Twoje zdjęcie jest dekodowane na płótno lokalnie i nigdy nie jest przesyłane. Współczynnik skali jest stały i wynosi 4×, bo jest na sztywno wpisany w graf w dwóch miejscach.

  1. 1
    Obraz jest dzielony na nakładające się kafelki
    Wynik 4× ma szesnaście razy więcej pikseli, więc zdjęcie 4000×3000 miałoby 192 megapiksele — wystarczająco, by od razu zamknąć kartę przeglądarki, a nie tylko ją spowolnić. Zamiast tego obraz jest dzielony na rdzenie, które dokładnie go pokrywają, a każdy rdzeń jest odczytywany z dodatkowym marginesem kontekstu z każdej strony, aby stos konwolucji (o polu recepcyjnym 34 pikseli) miał do dyspozycji prawdziwe sąsiednie piksele. Krawędzie są powielane, a nigdy dopełniane zerami, co inaczej sprawiłoby, że model wyostrzyłby czarną ramkę wokół kadru.
  2. 2
    Każdy kafelek jest pakowany jako płaski tensor RGB
    Kafelek staje się tensorem float32 o kształcie [1, 3, H, W], z kanałami czerwonym, zielonym i niebieskim zapisanymi jako osobne płaszczyzny i wartościami po prostu podzielonymi przez 255 — bez żadnej normalizacji średniej ani odchylenia standardowego. Każdy kafelek jest dopełniany do dokładnie tego samego kwadratowego rozmiaru, bo backend WebGPU kompiluje shadery od nowa dla każdego nowego kształtu danych, a plan z trzema różnymi rozmiarami kafelków płaciłby ten koszt trzy razy.
  3. 3
    Wnioskowanie działa na WebGPU, gdy jest dostępne, a w przeciwnym razie na CPU
    Sesja jest tworzona najpierw z WebGPU i przy każdym błędzie przechodzi na jednowątkowy WebAssembly — sterowniki graficzne regularnie deklarują obsługę, a potem zawodzą w trakcie budowania grafu, a wolniej jest lepiej niż wcale. Ponieważ przejście na rozwiązanie zapasowe znacznie zmienia realny limit rozmiaru i czas działania, narzędzie ponownie sprawdza zadanie względem faktycznie uzyskanego dostawcy przed pierwszym kafelkiem, a potem informuje, którego użyło.
  4. 4
    Kafelki są łączone z przenikaniem i przycinane
    Łączenie kafelków na styk pozostawia widoczną siatkę, więc udział każdego kafelka jest ważony liniową rampą w obrębie wspólnego pasa. Obie rampy wzajemnie się dokładnie uzupełniają, więc wagi sumują się do dokładnie 1 w każdym pikselu wyniku i wzdłuż łączenia nie pojawia się jasna ani ciemna linia. Surowy wynik modelu nie jest przycinany wewnątrz grafu — zmierzone wartości mieszczą się w zakresie od około −0,18 do +1,19 — więc każda próbka jest ograniczana do zakresu 0–255 przed rzutowaniem na 8 bitów, co zapobiega plamkom na kontrastowych krawędziach. Kanał alfa jest przepróbkowywany osobno i dwuliniowo, bo sama sieć nie ma ścieżki dla alfy.
  5. 5
    Wynik jest kodowany w workerze
    Złożone piksele są rysowane na OffscreenCanvas i od razu kodowane do PNG, więc naciśnięcie Pobierz nie jest poprzedzone żadną asynchroniczną przerwą. Przełączenie na JPG koduje ponownie z płótna, które worker wciąż trzyma, zamiast ponownie uruchamiać model. Mały wycinek ze środka jest też renderowany w skali 100% obok tego samego obszaru przepróbkowanego przez przeglądarkę — to jedyne porównanie, przy którym różnica 4× jest faktycznie widoczna.

Wagi modelu są pobierane jednorazowo z naszego serwera i zapisywane w pamięci podręcznej; Twój obraz jest dekodowany, dzielony na kafelki, powiększany i kodowany w całości w przeglądarce, a żadna jego część nie jest nigdy nigdzie wysyłana.

Powiązane narzędzia

Często zadawane pytania