Single-Image Super-Resolution for anime/fan-art using Deep Convolutional Neural Networks

waifu2x

« Older   Newer »
 
  Share  
.
  1.     +1   +1   -1
     
    .
    Avatar

    The Untethered

    Group
    Honorary Cursed
    Posts
    8,555
    Location
    Treviso

    Status
    Anonymous
    Rispondiamo alla domanda che probabilmente vi state ponendo: che cazzo ti sei fumato stavolta? Roba molto buona :soso: .
    Spieghiamo rapidamente, tutto iniziò con gli antichi Greci per colpa di un mio compagno di corso, in pratica stava provando a fare il porting di un pack di stickers da Line a Telegram: per chi non lo sapesse, Line usa per gli sticker immagini in 256x256px (massimo), Telegram invece 512x512, perciò se semplicemente si amplia la superficie dell'immagine aggiungendo trasparenza avrete anche bisogno di una lente di ingrandimento per vedere lo sticker; la soluzione quindi, ovviamente, era fare un upscale, ma come tutti (o quasi) ben saprete, un upscale così estremo (2x) vi ritorna un qualcosa che è vagamente pixel art, perciò l'unica soluzione che permettesse di avere una qualità accettabile era quella di ridisegnare il tutto (e sapete che immensa rotta di cazzi sia farlo per un immagine, figuratevi per 60).
    Mentre il nostro baldo eroe si godeva la sua fenomenale pixel art quindi, io mi sono dilettato con la google art, per capire se magari nel 2015 qualcuno aveva trovato una soluzione migliore: ecco quindi che mi imbatto in questo waifu2x, provo a darci un occhio, e in teoria è una figata (di fatto è molto simile a nnedi, solo che non ho trovato una singola implementazione di nnedi per fare upscaling di un immagine e basta), perciò lo provo, ed i risultati sono davvero buoni (questo è l'esempio ufficiale).
    Ok, ma come si usa? Avete 2 possibilità:

    1) Utilizzare il sito demo e adattarvi alle sue limitazioni.
    2) Installarlo sul vostro PC, dopo vari esperimenti, in windows ho visto che conviene usare la build in caffe (qui come cristo si usa quella maledetta GUI), in linux (ed anche in windows) invece il porting in C++ ha un bug per cui non riesce a upscalare un immagine con il canale alpha (o a dir meglio, lo fa ma si perde la trasparenza nel processo), ho aperto un'issue su github nella speranza che venga risolta direttamente (dato che nella versione lua originale è già risolto, basterebbe applicare il commit che fixa il tutto in soldoni), nel frattempo o si usa una build diversa che non presenta questo bug, oppure come escamotage ho fatto uno script bash che richiede anche imagemagick, in pratica splitto i canali RGB dall'alpha, li upscalo separatamente e poi li unisco, è più lento, ma funziona; se volete usare questo trucco in windows, arrangiatevi a fare il porting in DOS.

    Qualche esempio?
    Ho preso come base il mio attuale avatar di blogfree (click), ed ho provato ad upscalarlo di 2x (la prima è solo upscalata, la seconda ha anche del denoise, e la terza il filtro di denoise molto più forte), giudicate voi il risultato; il tempo impiegato è stato questo:
    CODICE
    $ waifu2x-converter-cpp -i luvLxj6.png -o archer.png -m scale --scale_ratio 2.0 --disable-gpu
    CPU: Intel(R) Core(TM) i7-4700MQ CPU @ 2.40GHz
    ...
    process successfully done! (all:1.44697[sec], 98.5779[GFLOPS], filter:0.550139[sec], 259.278[GFLOPS])

    $ waifu2x-converter-cpp -i luvLxj6.png -o archer_denoised.png -m noise_scale --scale_ratio 2.0 --noise_level 1 --disable-gpu
    CPU: Intel(R) Core(TM) i7-4700MQ CPU @ 2.40GHz
    ...
    process successfully done! (all:1.58362[sec], 113.351[GFLOPS], filter:0.699849[sec], 256.491[GFLOPS])

    $ waifu2x-converter-cpp -i luvLxj6.png -o archer_really_denoised.png -m noise_scale --scale_ratio 2.0 --noise_level 2 --disable-gpu
    CPU: Intel(R) Core(TM) i7-4700MQ CPU @ 2.40GHz
    ...
    process successfully done! (all:1.58347[sec], 113.361[GFLOPS], filter:0.711946[sec], 252.133[GFLOPS])

    (Il disable-gpu l'ho messo per essere sicuro che venisse fatto tutto dal processore)

    Insomma, diciamo che il tutto non è leggerissimo, però dati i risultati non è male; per curiosità, ho provato ad upscalare un immagine in 4K (per essere pignoli era in 3780x1572), il risultato è stato questo
    CODICE
    $ waifu2x-converter-cpp -i Wisp_update_splash.png -o wisp_denoised.png -m noise_scale --scale_ratio 2.0 --noise_level 1 --disable-gpu
    CPU: Intel(R) Core(TM) i7-4700MQ CPU @ 2.40GHz
    ...
    process successfully done! (all:104.259[sec], 175.647[GFLOPS], filter:101.315[sec], 180.75[GFLOPS])


    Se avete una scheda grafica Nvidia, è possibile usare CUDA per velocizzare il tutto, in windows avrete bisogno di scaricare qualche file dal sito di Nvidia (non so bene quali), in linux o avete una quadro oppure preparatevi a porconare abbastanza con sperimentazioni varie, io sono riuscito a farlo andare sul mio portatile con alcune build meno recenti (sia di waifu2x sia di CUDA), se non va probabilmente quindi è un po' colpa dei giapponesi e un po di Nvidia che dice "vuoi fare il figo in CUDA/OpenCL? Prenditi una quadro!" e quindi il supporto driver delle schede consumer lascia parecchio a desiderare sotto questo punto di vista; nel caso di AMD dovrebbe essere possibile guadagnare prestazioni in OpenCV, ma non avendo schede AMD non posso provare nulla; nel caso delle integrate Intel infine, ho visto che non ne vale proprio la pena, anzi, si perdono performance a fare le operazioni di copia CPU-GPU se avete una CPU relativamente nuova.

    Buona sperimentazione :soso:.
     
    Top
    .
  2.     +1   -1
     
    .
    Avatar

    The Untethered

    Group
    Honorary Cursed
    Posts
    8,555
    Location
    Treviso

    Status
    Anonymous
    Non interesserà a nessuno, ma Tanakamura la settimana scorsa ha risolto il problema della trasparenza nella build C++, provato con le sue build windows e funziona, devo ancora provare a ricompilare in linux per provare, ma al 99% anche li è risolto.
     
    Top
    .
  3.     +1   -1
     
    .
    Avatar


    Group
    Fan
    Posts
    19,492

    Status
    Anonymous
    :mumble:
     
    Top
    .
  4.     +1   -1
     
    .
    Avatar

    The Untethered

    Group
    Honorary Cursed
    Posts
    8,555
    Location
    Treviso

    Status
    Anonymous
    So che il tuo dubbio fen è rivolto alla mia mancanza di aggiornamenti, rejoice, ho provato a compilare la nuova versione in linux, funziona alla grande l'upscale del canale alpha :rotol:.
     
    Top
    .
  5. Dermambra
        +1   -1
     
    .

    User deleted


    Photoshop mi fa la stessa cosa...
     
    Top
    .
  6.     +1   -1
     
    .
    Avatar

    The Untethered

    Group
    Honorary Cursed
    Posts
    8,555
    Location
    Treviso

    Status
    Anonymous
    CITAZIONE (Dermambra @ 19/1/2016, 11:25) 
    Photoshop mi fa la stessa cosa...

    Sì, e ci impieghi quante ore per raggiungere un risultato soddisfacente?
     
    Top
    .
5 replies since 12/11/2015, 17:32   130 views
  Share  
.
Top