{"id":18588,"date":"2021-11-08T08:40:55","date_gmt":"2021-11-08T16:40:55","guid":{"rendered":"http:\/\/jnack.com\/blog\/?p=18588"},"modified":"2021-11-08T08:41:07","modified_gmt":"2021-11-08T16:41:07","slug":"facestudio-enables-feature-by-feature-editing-via-gans","status":"publish","type":"post","link":"https:\/\/jnack.com\/blog\/2021\/11\/08\/facestudio-enables-feature-by-feature-editing-via-gans\/","title":{"rendered":"FaceStudio enables feature-by-feature editing via GANs"},"content":{"rendered":"\n<p>In traditional graphics work, vectorizing a bitmap image produces a bunch of points &amp; lines that the computer then renders as pixels, producing something that approximates the original. Generally there&#8217;s a trade-off between editability (relatively few points, requiring a lot of visual simplification, but easy to see &amp; manipulate) and fidelity (tons of points, high fidelity, but heavy &amp; hard to edit).<\/p>\n\n\n\n<p>Importing images into a generative adversarial network (GAN) works in a similar way: pixels are converted into vectors which are then re-rendered as pixels\u2014and guess what, it&#8217;s a generally lossy process where fidelity &amp; editability often conflict. When the importer tries to come up with a reasonable set of vectors that fit the entire face, it&#8217;s easy to end up with weird-looking results. Additionally, changing one attribute (e.g. eyebrows) may cause changes to others (e.g. hairline). I saw a case once where making someone look another direction caused them to grow a goatee (!).<\/p>\n\n\n\n<p>My teammates&#8217; FaceStudio effort proposes to address this problem by sidestepping the challenge of fitting the entire face, instead letting you broadly select a region and edit just that. Check it out:<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"FaceStudio\" width=\"604\" height=\"340\" src=\"https:\/\/www.youtube.com\/embed\/uTBxISwzfTc?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>In traditional graphics work, vectorizing a bitmap image produces a bunch of points &amp; lines that the computer then renders as pixels, producing something that approximates the original. Generally there&#8217;s a trade-off between editability (relatively few points, requiring a lot of visual simplification, but easy to see &amp; manipulate) and fidelity (tons of points, high [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[66,3],"tags":[],"_links":{"self":[{"href":"https:\/\/jnack.com\/blog\/wp-json\/wp\/v2\/posts\/18588"}],"collection":[{"href":"https:\/\/jnack.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jnack.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jnack.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jnack.com\/blog\/wp-json\/wp\/v2\/comments?post=18588"}],"version-history":[{"count":2,"href":"https:\/\/jnack.com\/blog\/wp-json\/wp\/v2\/posts\/18588\/revisions"}],"predecessor-version":[{"id":18718,"href":"https:\/\/jnack.com\/blog\/wp-json\/wp\/v2\/posts\/18588\/revisions\/18718"}],"wp:attachment":[{"href":"https:\/\/jnack.com\/blog\/wp-json\/wp\/v2\/media?parent=18588"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jnack.com\/blog\/wp-json\/wp\/v2\/categories?post=18588"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jnack.com\/blog\/wp-json\/wp\/v2\/tags?post=18588"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}