From 20b5b2d1b925c174fb0a422a141b25170b700e83 Mon Sep 17 00:00:00 2001 From: jh Date: Wed, 24 Mar 2021 13:57:56 -0700 Subject: [PATCH] docs: update changelog --- CHANGELOG.md | 14 +++-- doc/features/gan-options/README.md | 50 ++++++++++++++++++ ...generative-adversarial-networks-54-638.jpg | Bin 0 -> 63917 bytes doc/features/ms-ssim/README.md | 5 +- 4 files changed, 64 insertions(+), 5 deletions(-) create mode 100644 doc/features/gan-options/README.md create mode 100644 doc/features/gan-options/tutorial-on-theory-and-application-of-generative-adversarial-networks-54-638.jpg diff --git a/CHANGELOG.md b/CHANGELOG.md index 889cce3..59dba12 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,9 +6,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ### In Progress -- [MS-SSIM loss training option](https://github.com/faceshiftlabs/DeepFaceLab/tree/feature/ms-ssim-loss-2) - [Freezeable layers (encoder/decoder/etc.)](https://github.com/faceshiftlabs/DeepFaceLab/tree/feature/freezable-weights) -- [GAN stability improvements](https://github.com/faceshiftlabs/DeepFaceLab/tree/feature/gan-updates) + +## [1.4.0] - 2020-03-24 +### Added +- [MS-SSIM loss training option](doc/features/ms-ssim) +- GAN version option (v2 - late 2020 or v3 - current GAN) +- [GAN label smoothing and label noise options](doc/features/gan-options) +### Fixed +- Background Power now uses the entire image, not just the area outside of the mask for comparison. +This should help with rough areas directly next to the mask ## [1.3.0] - 2020-03-20 ### Added @@ -53,7 +60,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Reset stale master branch to [seranus/DeepFaceLab](https://github.com/seranus/DeepFaceLab), 21 commits ahead of [iperov/DeepFaceLab](https://github.com/iperov/DeepFaceLab) ([compare](https://github.com/iperov/DeepFaceLab/compare/4818183...seranus:3f5ae05)) -[Unreleased]: https://github.com/olivierlacan/keep-a-changelog/compare/v1.3.0...HEAD +[Unreleased]: https://github.com/olivierlacan/keep-a-changelog/compare/v1.4.0...HEAD +[1.4.0]: https://github.com/faceshiftlabs/DeepFaceLab/compare/v1.3.0...v1.4.0 [1.3.0]: https://github.com/faceshiftlabs/DeepFaceLab/compare/v1.2.1...v1.3.0 [1.2.1]: https://github.com/faceshiftlabs/DeepFaceLab/compare/v1.2.0...v1.2.1 [1.2.0]: https://github.com/faceshiftlabs/DeepFaceLab/compare/v1.1.5...v1.2.0 diff --git a/doc/features/gan-options/README.md b/doc/features/gan-options/README.md new file mode 100644 index 0000000..80e77a6 --- /dev/null +++ b/doc/features/gan-options/README.md @@ -0,0 +1,50 @@ +# GAN Options + +Allows you to use one-sided label smoothing and noisy labels when training the discriminator. + +- [ONE-SIDED LABEL SMOOTHING](#one-sided-label-smoothing) +- [USAGE](#usage) + +## ONE-SIDED LABEL SMOOTHING + +![](tutorial-on-theory-and-application-of-generative-adversarial-networks-54-638.jpg) + +> Deep networks may suffer from overconfidence. For example, it uses very few features to classify an object. To +> mitigate the problem, deep learning uses regulation and dropout to avoid overconfidence. +> +> In GAN, if the discriminator depends on a small set of features to detect real images, the generator may just produce +> these features only to exploit the discriminator. The optimization may turn too greedy and produces no long term +> benefit. In GAN, overconfidence hurts badly. To avoid the problem, we penalize the discriminator when the prediction +> for any real images go beyond 0.9 (D(real image)>0.9). This is done by setting our target label value to be 0.9 +> instead of 1.0. + - [GAN — Ways to improve GAN performance](https://towardsdatascience.com/gan-ways-to-improve-gan-performance-acf37f9f59b) + +By setting the label smoothing value to any value > 0, the target label value used with the discriminator will be: +``` +target label value = 1 - (label smoothing value) +``` +### USAGE + +``` +[0.1] GAN label smoothing ( 0 - 0.5 ?:help ) : 0.1 +``` + +## Noisy labels + +> make the labels the noisy for the discriminator: occasionally flip the labels when training the discriminator + - [How to Train a GAN? Tips and tricks to make GANs work](https://github.com/soumith/ganhacks/blob/master/README.md#6-use-soft-and-noisy-labels) + +By setting the noisy labels value to any value > 0, then the target labels used with the discriminator will be flipped +("fake" => "real" / "real" => "fake") with probability p (where p is the noisy label value). + +E.g., if the value is 0.05, then ~5% of the labels will be flipped when training the discriminator + +### USAGE +``` +[0.05] GAN noisy labels ( 0 - 0.5 ?:help ) : 0.05 +``` + + + + + diff --git a/doc/features/gan-options/tutorial-on-theory-and-application-of-generative-adversarial-networks-54-638.jpg b/doc/features/gan-options/tutorial-on-theory-and-application-of-generative-adversarial-networks-54-638.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e3698e95ad58e19f11612fbaa58b9d3405799b5b GIT binary patch literal 63917 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

jPO*{qUT8v?APD4&()jd8H`#C* zl0HR`2X-TZNdmFq^ab1UfReoO@sd}_23_`Jr+h2l-bn1@oBJIjRbMF*Wa6XSLB)|f z-_a=6jT=ltcFk2X(jKGdO_blQ6=T-Ga$E(|IAS)mJGH?B69KW7$lj7s9rJAFtWxs) zX1x27K)i()?R)}mRHvH7peF;z-C)Y_lIrO@9ZP)dq1f9gwh}3<*Ga%@Vc(Zy0s52& zkvYiZ9`0d0yABx?v03{{tcQ|!Id!JjG_W!ok%Vy7IT}dV5iHG}){85(w1brk^kj)i zF3g!ooF>b7M+aMZabu3u<*$}h0fdp4BeP6!a~6fm51H=^-)n>532>o+ z5D~%vYkOMSLnSlKlx(;F$?%LlOPwIf=~Dq`jXaSOd^`10Av9YFVZt8%W0*66zy$4B znCkw-7$%$3osG~QoxxS63Hpb?AK4?Z>WI9Xd@j@S(p4j((O)lU(k0v;lUVt$7FNtj zW|X^&*#rm0h;@`;uf@WMfk$fjXC_{7FYB;;$HxQhe07ReXX4!aK(77ddFw;=xvv)a zp|mhId$D+N^D`m|tuDn6YuG_f^$bj(Je_5Zh%(icI=_%Jxu@FogRWs;{4z4QB?+1j z2f~qdK#uGlU&^_T1SsHvaz?-y=kCb<`5yD|Rdh3PG5kH_>u?VL*}1&e$Ale_3+W%X6xVD#&vIk;;Mi3ssfE? zew}&If8z?rCbe_#v|%brple{O0HI4VvOe;XRYvhlu5-Ute5UhRBRe(e7W&Ism#GK6 zUZ5$Wgbtzn-hdIukHj(CPb^x#{So7rir7L9K;$gZ%V~lFAl(?yuNBLHR;O)7(2FxJzyQQ(uq3^p-~ufbImjMvQL@2FTmlVWmgREj-G z{Z-i`OK55qcA@XT5pyLKB+9gVPcQEA95WU@|IJ}qlSpp^6mL7HPzEbZp5M8#xbpb9 zi~Mx@uj9Bu);X-To)zax-={F8)g&msD$Ld&mwQMpwP}IIO=xTr!^Y@|*B9=yQ?#uK z$KgINBiMlQiteE&@Gv|~s^Ymk#)P+`%A$-@3y8ydMQIJjwd>#eek2|Xmn-))h(bqg+^3;h%bB@kJLgqtBwLBf#Vtb%y~ z{gg=~OBh||mOlLkszz5>OEjqBGgI=PBl<%Fm-HJ1`?|*GJ8xR^3Bu!GqP1!hVFq_^ zsxtb*Vp0kK`kl-Qc(FL1H;s+li`Wvz??%}LiXDO>TRO@qE%yj4ao2g0P;b)lC*2}_ z1=F^sQE)F^#~)P^CC77}anD)jQlQ5=vfp=~%;{6lj3w95>ux}f@OL*#N^jmllv_PoVK$DO2n3|4S0M0Z@@ZQ)drh;&Mo zzJ6$0P`gqFuc7ot_pYN;y|Rp){etzX#qQ%@hq9X}4|u_0<<}c}k4PfFW5O2JL|!4d z5{~!IFNYj$;dnJr)EGK|M-N0>Z~5fBRx!;o;DJ@mo))*a{|kH{R1h}w!uMAbx4wcFV2zW0!uxT5Xa5&v&ydal literal 0 HcmV?d00001 diff --git a/doc/features/ms-ssim/README.md b/doc/features/ms-ssim/README.md index c7a0476..41039d3 100644 --- a/doc/features/ms-ssim/README.md +++ b/doc/features/ms-ssim/README.md @@ -3,11 +3,12 @@ Allows you to train using the MS-SSIM (multiscale structural similarity index measure) as the main loss metric, a perceptually more accurate measure of image quality than MSE (mean squared error). +As an added benefit, you may see a decrease in ms/iteration (when using the same batch size) with Multiscale loss +enabled. You may also be able to train with a larger batch size with it enabled. + - [DESCRIPTION](#description) - [USAGE](#usage) -![](example.png) - ## DESCRIPTION [SSIM](https://en.wikipedia.org/wiki/Structural_similarity) is metric for comparing the perceptial quality of an image: