LynnHo / AttGAN-Tensorflow

AttGAN: Facial Attribute Editing by Only Changing What You Want (IEEE TIP 2019)
MIT License
603 stars 133 forks source link

desired attributes b #22

Closed zhou-frank closed 5 years ago

zhou-frank commented 5 years ago

Hello, @LynnHo .Recently,I use your AttGAN model to train one attribute editing model e.g. remove/wear eyeglasses,with/not beard. In train.py, I found that you set b = tf.random_shuffle(a),why you didn't use b = 1 - a to invert all the original attributes.I think it will make the model more directly in situation above. Tks for your reply.

LynnHo commented 5 years ago

@zhou-frank Because b = tf.random_shuffle(a) is still reasonable attributes, however, b = 1 - a might produce unreasonable ones. Taking the hair color for example, if one is with blond hair, so a = [blond hair, black hair, brown hair] = [1, 0, 0], then b = 1 - a = [0, 1, 1], however, we cannot have a person with both black and brown hair.

By the way, if you use AttGAN for a single attribute, you should still train it with multiple-attribute classifier, because some attributes are entangled (e.g., gender and beard). If you use single-attribute classifier, you might get entangled results, e.g., adding a beard makes the female look like a male.

zhou-frank commented 5 years ago

I understand the first paragraph you said. But for a single attribute the aim of model is to invert specific attributes without considering other attributes.For example,a deglasses model should be able to remove the eyeglasses of a face image with eyeglasses and not change other attributes.So I think it’s better to use single-attribute cls in this situation. I am very grateful that you can give me some advice.Tks for your reply.