VinAIResearch / CPM

💄 Lipstick ain't enough: Beyond Color-Matching for In-the-Wild Makeup Transfer (CVPR 2021)

Home Page:https://thaoshibe.github.io/CPM

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

higher resolution

Yijunmaverick opened this issue · comments

Thanks for sharing.

Is it possible to run this method on higher-resolution input? or 256 only?

Appreciate your question!
Resolution is not a fundamental constraint of CPM. We can use a higher resolution for sharper images.
For example, by using 512x512 UV maps, we can get higher resolution images, as shown in the following figure.

higher_resolution
(From left to right: 256x256 UV map (as shown in the paper), 512x512 UV map, and reference image)

Thanks for the quick reply. Is 512 UV map obtained by another PRNet model or some upsampling technique? I may want to try ever larger size :)

For the 512x512 UV map, I used the same PRNet model (no need to retrain).
There's will be another face_ind_512.txt, uv_kpt_ind_512.txt files. (As your request, I'll upload it later).


But it worth noting about this method:

  • [01] Basic (As shown in the paper):
    Input -> UV (256) -> Color (256) | Pattern (256) -> Output Image (256)
  • [02] Higher resolution UV (As shown in previous figure):
    Input -> UV (512) -> Color (256) | Pattern (256)-> Output Image (512)
    (Upsampling used in Pattern Mask & Color transferred TsmC)
  • [3] "Wholesome" Solution:
    Input -> UV (512) -> Color (512) | Pattern (512) -> Output Image (512)

I'm using [2] because that requires no re-train step (PRNet, Color, Pattern).
To be specific, I do use upsampling for intermediate output (Color Transferred (bicubic resize), Pattern Mask (nearest neighbor resize)). (See attached image)
image
(Getting higher resolution, based on [2])


You might wonder why didn't I use [3]? Isn't it the best solution?
To do [3], we'll need to re-train Color Branch & Pattern Branch.
It's feasible, but I haven't done the job due to: time-efficiency (it'll be super slow), dataset (most of the makeup datasets are 256x256 only), etc. ugh!

Hope this helps!

Got it, thanks for explanation. The upsampling makes sense.