back to index
GAN Lecture 8 (2018): Photo Editing
link
|
00:00.500
做修圖的例子
link
|
00:02.500
我們先來看一個DEMO
link
|
00:04.500
這個DEMO像這個右邊有很多的BAR
link
|
00:06.500
你把這個BAR調整一下以後
link
|
00:09.000
這些相片裡面的臉就會換
link
|
00:12.000
這個NVIDIA做的DEMO
link
|
00:14.000
這個是變禿頭
link
|
00:17.000
然後再反過來就是頭髮會變多
link
|
00:21.000
然後變黑頭髮
link
|
00:24.000
變金頭髮
link
|
00:31.000
然後戴眼鏡
link
|
00:35.000
然後變男的
link
|
00:39.000
反過來就是變女的
link
|
00:44.000
這個是出現鬍子
link
|
00:47.000
大家笑了
link
|
00:54.000
反過來就生氣了
link
|
00:57.000
藍皮膚是嗎?
link
|
00:59.000
變年輕
link
|
01:01.000
有一個Attractive
link
|
01:03.000
變白
link
|
01:07.000
變小鼻子
link
|
01:09.000
自己調一下
link
|
01:12.000
你說我變藍皮膚嗎?
link
|
01:14.000
我沒有發現
link
|
01:16.000
我之後再仔細看看
link
|
01:18.000
哪邊有變藍皮膚
link
|
01:20.000
那現在就講一下
link
|
01:22.000
這個東西是怎麼做的呢?
link
|
01:24.000
這個東西是怎麼做的?
link
|
01:26.000
這就是以後可以拿來自動修圖
link
|
01:28.000
就是了
link
|
01:30.000
我們知道說
link
|
01:32.000
今天假設你Train一個Generator
link
|
01:34.000
Train一個人臉的Generator
link
|
01:36.000
那其實INPUT的
link
|
01:38.000
你會INPUT一個RANDOM VECTOR
link
|
01:40.000
然後就OUTPUT一個人臉
link
|
01:42.000
這作業大概要3-1的時候已經有做了
link
|
01:44.000
因為我們在一開始講GAME的時候
link
|
01:46.000
跟大家說過說
link
|
01:48.000
其實INPUT VECTOR的每一個Dimension
link
|
01:50.000
其實可能對應了
link
|
01:52.000
某一種類的特徵
link
|
01:54.000
只是問題是
link
|
01:56.000
我們並不知道每一個Dimension
link
|
01:58.000
對應的特徵是什麼
link
|
02:00.000
那我們現在要講的是說
link
|
02:02.000
怎麼去反推出
link
|
02:04.000
現在INPUT的這個Vector
link
|
02:06.000
每一個Dimension
link
|
02:08.000
它對應的特徵是什麼
link
|
02:10.000
那現在的問題
link
|
02:12.000
是這個樣子
link
|
02:14.000
你其實可以收集到大量的Image
link
|
02:16.000
你可以收集到
link
|
02:18.000
這些Image的Label
link
|
02:20.000
Label說這張Image裡面的人
link
|
02:22.000
是金頭髮的、是男的、是年輕的
link
|
02:24.000
等等
link
|
02:26.000
你可以得到Image
link
|
02:28.000
你也可以得到Image的特徵
link
|
02:30.000
你也可以得到Image的Label
link
|
02:32.000
但你現在的問題是說
link
|
02:34.000
你會搞不清楚這張Image
link
|
02:36.000
它到底應該是由什麼Vector
link
|
02:38.000
假設你可以知道說
link
|
02:40.000
生成這張Image的Vector
link
|
02:42.000
長什麼樣子
link
|
02:44.000
假設你可以知道說
link
|
02:46.000
生成這張Image的Vector長什麼樣子
link
|
02:48.000
你就可以知道Vector跟Attribute
link
|
02:50.000
Vector跟Label之間的關係
link
|
02:52.000
因為你現在有Image
link
|
02:54.000
然後你有Image的Label
link
|
02:56.000
你有Image跟它的特徵的Label
link
|
02:58.000
你有Image跟它的特徵的Label
link
|
03:00.000
假設你可以知道說
link
|
03:02.000
某一張Image
link
|
03:04.000
它可以用什麼樣的Vector
link
|
03:06.000
丟到Generator就可以產生這張Image
link
|
03:08.000
那你就可以把這個Vector
link
|
03:10.000
跟Label的特徵
link
|
03:12.000
把它Link起來
link
|
03:14.000
那現在的問題就是
link
|
03:16.000
給你一張Image
link
|
03:18.000
你其實並不知道
link
|
03:20.000
什麼樣的Random Vector
link
|
03:22.000
可以產生這張Image
link
|
03:24.000
所以這邊要做的第一件事情是
link
|
03:26.000
給一張Image
link
|
03:28.000
假設你已經Train好一個Generator
link
|
03:30.000
這個Generator給一個Vector
link
|
03:32.000
它可以產生一個Image
link
|
03:34.000
它可以產生一個Image
link
|
03:36.000
我們這邊要做的事情是去
link
|
03:38.000
做一個逆向的工程
link
|
03:40.000
去反推說如果給你一張
link
|
03:42.000
現成的Image
link
|
03:44.000
什麼樣的Z可以生成這張
link
|
03:46.000
現成的Image
link
|
03:48.000
做一個逆向的工程
link
|
03:50.000
怎麼做呢
link
|
03:52.000
這邊的做法就是再Link另外一個
link
|
03:54.000
Encoder
link
|
03:56.000
再Link另外一個Encoder
link
|
03:58.000
這個Encoder跟這個Generator
link
|
04:00.000
合起來就是一個
link
|
04:02.000
Auto Encoder
link
|
04:04.000
在Train這個Auto Encoder的時候
link
|
04:06.000
你Input一張ImageX
link
|
04:08.000
把這個X壓成一個VectorZ
link
|
04:10.000
希望把Z丟到
link
|
04:12.000
Generator以後
link
|
04:14.000
它Output的是原來那張Image
link
|
04:16.000
在Train的過程中
link
|
04:18.000
Generator的參數是固定不動的
link
|
04:20.000
就是你Generator是事先已經Train訓練好的
link
|
04:22.000
就放在那邊
link
|
04:24.000
但我們要做一個逆向工程
link
|
04:26.000
猜出說今天假設Generator產生
link
|
04:28.000
某一張ImageX的時候
link
|
04:30.000
我們應該Input什麼樣的Z
link
|
04:32.000
我們要做一個反向的工程
link
|
04:34.000
這個怎麼做
link
|
04:36.000
就是Link一個Encoder
link
|
04:38.000
然後在Train的時候
link
|
04:40.000
給Encoder一張Image
link
|
04:42.000
把這個Image變成一個CodeZ
link
|
04:44.000
再把Z丟到Generator
link
|
04:46.000
希望Input跟Output的Image
link
|
04:48.000
越接近越好
link
|
04:50.000
在Train的時候要記得
link
|
04:52.000
這個Generator是不動的
link
|
04:54.000
因為我們是要對這個Generator
link
|
04:56.000
做逆向的工程
link
|
04:58.000
用什麼樣的Z
link
|
05:00.000
可以產生什麼樣的X
link
|
05:02.000
所以這個Generator是不動的
link
|
05:04.000
我們只Train這個Encoder
link
|
05:06.000
然後在實作上
link
|
05:08.000
這個Encoder跟Discriminator很像
link
|
05:10.000
所以你可以拿Discriminator的參數
link
|
05:12.000
來初始化這個Encoder的參數
link
|
05:14.000
總之就是一個實驗的細節
link
|
05:16.000
就是了
link
|
05:18.000
接下來假設做了剛才那件事以後
link
|
05:20.000
你就得到一個Encoder
link
|
05:22.000
那個Encoder做的事情就是給一張Image
link
|
05:24.000
他會告訴你說
link
|
05:26.000
你可以用什麼樣的Vector
link
|
05:28.000
來生成
link
|
05:30.000
接下來你就把你Database裡面的Image
link
|
05:32.000
都倒出來
link
|
05:34.000
然後反推出他們的Vector
link
|
05:36.000
就是
link
|
05:38.000
這個Vector可以生成這張圖
link
|
05:40.000
這個Vector生這張圖
link
|
05:42.000
這個Vector生這張圖
link
|
05:44.000
然後我們知道說
link
|
05:46.000
這些Image
link
|
05:48.000
他們的特徵我們是知道的
link
|
05:50.000
這些是短髮的人臉
link
|
05:52.000
這些是長髮的人臉
link
|
05:54.000
你把短髮的人臉
link
|
05:56.000
他的Code推出來
link
|
05:58.000
再平均
link
|
06:00.000
你就得到一個短髮的人臉的代表
link
|
06:02.000
你把這個長髮的人臉的Code都平均
link
|
06:04.000
你就得到一個長髮的人臉的代表
link
|
06:06.000
再把它們相減
link
|
06:08.000
你就知道說
link
|
06:10.000
今天在這個Code的Space上面
link
|
06:12.000
做什麼樣的變化
link
|
06:14.000
就可以把短髮的臉變成長髮的臉
link
|
06:16.000
你把這個短髮的臉
link
|
06:18.000
加上這個向量Zlong
link
|
06:20.000
他就會變成長髮
link
|
06:22.000
這個就只是講一下Zlong怎麼來
link
|
06:24.000
你就把這個
link
|
06:26.000
長髮的ImageX
link
|
06:28.000
他的Code都找出來
link
|
06:30.000
把X丟到Encoder裡面把Code都找出來
link
|
06:32.000
然後變平均
link
|
06:34.000
那把這個不是長髮的
link
|
06:36.000
短髮的Code都找出來
link
|
06:38.000
平均到這個點
link
|
06:40.000
把這樣的點相減
link
|
06:42.000
你就得到Zlong這個向量
link
|
06:44.000
接下來你在生成Image的時候
link
|
06:46.000
給你一張短髮
link
|
06:48.000
你要怎麼把它變成長髮呢
link
|
06:50.000
你把X這張Image丟到Encoder裡面
link
|
06:52.000
得到他的Code
link
|
06:54.000
再加上Zlong得到新的Vector Z'
link
|
06:56.000
再把Z'丟到Generator裡面
link
|
06:58.000
你就可以產生一張長髮的圖了
link
|
07:00.000
就這樣子
link
|
07:02.000
所以剛才那個NVIDIA的Demo裡面
link
|
07:04.000
他做的事情就是
link
|
07:06.000
他不是做各種的調整
link
|
07:08.000
他可以說變黑頭髮
link
|
07:10.000
變男的變年輕的
link
|
07:12.000
他就只是找出黑頭髮的Vector長什麼樣子
link
|
07:14.000
年輕的Vector長什麼樣子
link
|
07:16.000
是男的Vector長什麼樣子
link
|
07:18.000
你給他任何一張Image
link
|
07:20.000
他就是把那張Image變成Code
link
|
07:22.000
再把那個Code加上你要的特徵的Vector
link
|
07:24.000
然後變成新的Vector
link
|
07:26.000
再丟到Generator
link
|
07:28.000
就可以產生新的圖了
link
|
07:30.000
所以剛才那個Demo就是這樣做
link
|
07:32.000
那
link
|
07:34.000
那這邊還有另外一個Demo
link
|
07:36.000
這個Demo是一個智能的Photoshop
link
|
07:38.000
智能的Photoshop
link
|
07:44.000
我突然發現說
link
|
07:46.000
沒有聲音
link
|
07:48.000
不過沒有聲音你應該還是看得懂的
link
|
08:18.000
OK
link
|
08:20.000
OK
link
|
08:22.000
OK
link
|
08:24.000
OK
link
|
08:26.000
OK
link
|
08:28.000
OK
link
|
08:30.000
OK
link
|
08:32.000
OK
link
|
08:34.000
OK
link
|
08:36.000
OK
link
|
08:38.000
OK
link
|
08:40.000
OK
link
|
08:42.000
OK
link
|
08:44.000
OK
link
|
08:46.000
OK
link
|
08:48.000
OK
link
|
08:50.000
OK
link
|
08:52.000
OK
link
|
08:54.000
OK
link
|
08:56.000
OK
link
|
08:58.000
OK
link
|
09:00.000
OK
link
|
09:02.000
OK
link
|
09:04.000
OK
link
|
09:06.000
OK
link
|
09:10.000
OK
link
|
09:12.000
OK
link
|
09:14.000
OK
link
|
09:16.000
OK
link
|
09:20.000
OK
link
|
09:22.000
OK
link
|
09:24.000
OK
link
|
09:26.000
OK
link
|
09:28.000
OK
link
|
09:30.000
OK
link
|
09:32.000
OK
link
|
09:34.000
OK
link
|
09:36.000
OK
link
|
09:38.000
OK
link
|
09:40.000
OK
link
|
09:42.000
OK
link
|
09:44.000
OK
link
|
09:46.000
OK
link
|
09:48.000
OK
link
|
09:50.000
OK
link
|
09:52.000
OK
link
|
09:54.000
OK
link
|
09:56.000
OK
link
|
09:58.000
OK
link
|
10:00.000
OK
link
|
10:02.000
OK
link
|
10:06.000
OK
link
|
10:08.000
OK
link
|
10:10.000
OK
link
|
10:12.000
OK
link
|
10:16.000
OK
link
|
10:18.000
OK
link
|
10:20.000
OK
link
|
10:22.000
OK
link
|
10:24.000
OK
link
|
10:26.000
OK
link
|
10:28.000
OK
link
|
10:30.000
OK
link
|
10:32.000
OK
link
|
10:34.000
OK
link
|
10:36.000
OK
link
|
10:38.000
OK
link
|
10:40.000
OK
link
|
10:44.000
OK
link
|
10:46.000
OK
link
|
10:48.000
OK
link
|
10:50.000
OK
link
|
10:52.000
OK
link
|
10:54.000
OK
link
|
10:56.000
OK
link
|
10:58.000
OK
link
|
11:00.000
OK
link
|
11:02.000
OK
link
|
11:04.000
OK
link
|
11:06.000
OK
link
|
11:08.000
OK
link
|
11:12.000
OK
link
|
11:14.000
OK
link
|
11:16.000
OK
link
|
11:18.000
OK
link
|
11:20.000
OK
link
|
11:22.000
OK
link
|
11:24.000
OK
link
|
11:26.000
OK
link
|
11:28.000
OK
link
|
11:30.000
OK
link
|
11:32.000
OK
link
|
11:34.000
OK
link
|
11:36.000
OK
link
|
11:38.000
OK
link
|
11:40.000
OK
link
|
11:42.000
OK
link
|
11:44.000
OK
link
|
11:46.000
OK
link
|
11:48.000
OK
link
|
11:50.000
OK
link
|
11:52.000
OK
link
|
11:54.000
OK
link
|
11:58.000
OK
link
|
12:00.000
OK
link
|
12:02.000
OK
link
|
12:06.000
OK
link
|
12:08.000
OK
link
|
12:10.000
OK
link
|
12:12.000
OK
link
|
12:14.000
OK
link
|
12:16.000
OK
link
|
12:18.000
OK
link
|
12:20.000
OK
link
|
12:22.000
OK
link
|
12:24.000
OK
link
|
12:26.000
OK
link
|
12:28.000
OK
link
|
12:30.000
OK
link
|
12:32.000
OK
link
|
12:34.000
OK
link
|
12:36.000
OK
link
|
12:38.000
OK
link
|
12:40.000
OK
link
|
12:42.000
OK
link
|
12:44.000
OK
link
|
12:46.000
OK
link
|
12:48.000
OK
link
|
12:50.000
OK
link
|
12:54.000
OK
link
|
12:56.000
OK
link
|
12:58.000
OK
link
|
13:00.000
OK
link
|
13:02.000
OK
link
|
13:04.000
OK
link
|
13:06.000
OK
link
|
13:08.000
OK
link
|
13:10.000
OK
link
|
13:12.000
OK
link
|
13:14.000
OK
link
|
13:16.000
OK
link
|
13:18.000
OK
link
|
13:20.000
OK
link
|
13:24.000
OK
link
|
13:26.000
OK
link
|
13:30.000
OK
link
|
13:32.000
OK
link
|
13:34.000
OK
link
|
13:36.000
OK
link
|
13:38.000
OK
link
|
13:40.000
OK
link
|
13:42.000
OK
link
|
13:44.000
OK
link
|
13:46.000
OK
link
|
13:48.000
OK
link
|
13:50.000
OK
link
|
13:52.000
OK
link
|
13:54.000
OK
link
|
13:56.000
OK
link
|
14:00.000
OK
link
|
14:02.000
OK
link
|
14:04.000
OK
link
|
14:06.000
OK
link
|
14:08.000
OK
link
|
14:10.000
OK
link
|
14:12.000
OK
link
|
14:14.000
OK
link
|
14:16.000
OK
link
|
14:18.000
OK
link
|
14:20.000
OK
link
|
14:22.000
OK
link
|
14:26.000
OK
link
|
14:28.000
OK
link
|
14:30.000
OK
link
|
14:32.000
OK
link
|
14:34.000
OK
link
|
14:36.000
OK
link
|
14:38.000
OK
link
|
14:40.000
OK
link
|
14:42.000
OK
link
|
14:44.000
OK
link
|
14:46.000
OK
link
|
14:48.000
OK
link
|
14:50.000
OK
link
|
14:52.000
OK
link
|
14:54.000
OK
link
|
14:56.000
OK
link
|
14:58.000
OK
link
|
15:00.000
OK
link
|
15:02.000
OK
link
|
15:04.000
OK
link
|
15:06.000
OK
link
|
15:08.000
OK
link
|
15:12.000
OK
link
|
15:14.000
OK
link
|
15:16.000
OK
link
|
15:18.000
OK
link
|
15:20.000
OK
link
|
15:24.000
OK
link
|
15:26.000
OK
link
|
15:28.000
OK
link
|
15:30.000
OK
link
|
15:32.000
OK
link
|
15:34.000
OK
link
|
15:36.000
OK
link
|
15:38.000
OK
link
|
15:40.000
OK
link
|
15:42.000
OK
link
|
15:44.000
OK
link
|
15:46.000
OK
link
|
15:50.000
OK
link
|
15:52.000
OK
link
|
15:54.000
OK
link
|
15:56.000
OK
link
|
15:58.000
OK
link
|
16:00.000
OK
link
|
16:02.000
OK
link
|
16:04.000
OK
link
|
16:06.000
OK
link
|
16:08.000
OK
link
|
16:10.000
OK
link
|
16:12.000
OK
link
|
16:14.000
OK
link
|
16:18.000
OK
link
|
16:20.000
OK
link
|
16:22.000
OK
link
|
16:24.000
OK
link
|
16:26.000
OK
link
|
16:28.000
OK
link
|
16:30.000
OK
link
|
16:32.000
OK
link
|
16:34.000
OK
link
|
16:36.000
OK
link
|
16:38.000
OK
link
|
16:40.000
OK
link
|
16:42.000
OK
link
|
16:46.000
OK
link
|
16:48.000
OK
link
|
16:50.000
OK
link
|
16:52.000
OK
link
|
16:54.000
OK
link
|
16:56.000
OK
link
|
16:58.000
OK
link
|
17:00.000
OK
link
|
17:02.000
OK
link
|
17:04.000
OK
link
|
17:06.000
OK
link
|
17:08.000
OK
link
|
17:10.000
OK
link
|
17:14.000
OK
link
|
17:16.000
OK
link
|
17:18.000
OK
link
|
17:20.000
OK
link
|
17:22.000
OK
link
|
17:24.000
OK
link
|
17:26.000
OK
link
|
17:28.000
OK
link
|
17:30.000
OK
link
|
17:32.000
OK
link
|
17:34.000
OK
link
|
17:36.000
OK
link
|
17:38.000
OK
link
|
17:42.000
OK
link
|
17:44.000
OK
link
|
17:46.000
OK
link
|
17:48.000
OK
link
|
17:50.000
OK
link
|
17:52.000
OK
link
|
17:54.000
OK
link
|
17:56.000
OK
link
|
17:58.000
OK
link
|
18:00.000
OK
link
|
18:02.000
OK
link
|
18:04.000
OK
link
|
18:06.000
OK
link
|
18:10.000
OK
link
|
18:12.000
OK
link
|
18:14.000
OK
link
|
18:16.000
OK
link
|
18:18.000
OK
link
|
18:20.000
OK
link
|
18:22.000
OK
link
|
18:24.000
OK
link
|
18:26.000
OK
link
|
18:28.000
OK
link
|
18:30.000
OK
link
|
18:32.000
OK
link
|
18:34.000
OK
link
|
18:38.000
OK
link
|
18:40.000
OK
link
|
18:42.000
OK
link
|
18:44.000
OK
link
|
18:46.000
OK
link
|
18:48.000
OK
link
|
18:50.000
OK
link
|
18:52.000
OK
link
|
18:54.000
OK
link
|
18:56.000
OK
link
|
18:58.000
OK
link
|
19:00.000
OK
link
|
19:02.000
OK
link
|
19:06.000
OK
link
|
19:08.000
OK
link
|
19:10.000
OK
link
|
19:12.000
OK
link
|
19:14.000
OK
link
|
19:16.000
OK
link
|
19:18.000
OK
link
|
19:20.000
OK
link
|
19:22.000
OK
link
|
19:24.000
OK
link
|
19:26.000
OK
link
|
19:28.000
OK
link
|
19:30.000
OK
link
|
19:34.000
OK
link
|
19:36.000
OK
link
|
19:38.000
OK
link
|
19:40.000
OK
link
|
19:42.000
OK
link
|
19:44.000
OK
link
|
19:46.000
OK
link
|
19:48.000
OK
link
|
19:50.000
OK
link
|
19:52.000
OK
link
|
19:54.000
OK
link
|
19:56.000
OK
link
|
19:58.000
OK
link
|
20:02.000
OK
link
|
20:04.000
OK
link
|
20:06.000
OK
link
|
20:08.000
OK
link
|
20:10.000
OK
link
|
20:12.000
OK
link
|
20:14.000
OK
link
|
20:16.000
OK
link
|
20:18.000
OK
link
|
20:20.000
OK
link
|
20:22.000
OK
link
|
20:24.000
OK
link
|
20:26.000
OK
link
|
20:30.000
OK
link
|
20:32.000
OK
link
|
20:34.000
OK
link
|
20:36.000
OK
link
|
20:38.000
OK
link
|
20:40.000
OK
link
|
20:42.000
OK
link
|
20:44.000
OK
link
|
20:46.000
OK
link
|
20:48.000
OK
link
|
20:50.000
OK
link
|
20:52.000
OK
link
|
20:54.000
OK
link
|
20:58.000
OK
link
|
21:00.000
OK
link
|
21:02.000
OK
link
|
21:04.000
OK
link
|
21:06.000
OK
link
|
21:08.000
OK
link
|
21:10.000
OK
link
|
21:12.000
OK
link
|
21:14.000
OK
link
|
21:16.000
OK
link
|
21:18.000
OK
link
|
21:20.000
OK
link
|
21:22.000
OK
link
|
21:24.000
OK
link
|
21:26.000
OK
link
|
21:28.000
OK
link
|
21:30.000
OK
link
|
21:32.000
OK
link
|
21:34.000
OK
link
|
21:36.000
OK
link
|
21:38.000
OK
link
|
21:40.000
OK
link
|
21:42.000
OK
link
|
21:46.000
OK
link
|
21:48.000
OK
link
|
21:50.000
OK
link
|
21:52.000
OK
link
|
21:54.000
OK
link
|
21:56.000
OK
link
|
21:58.000
OK
link
|
22:00.000
OK
link
|
22:02.000
OK
link
|
22:04.000
OK
link
|
22:06.000
OK
link
|
22:08.000
OK
link
|
22:10.000
OK
link
|
22:14.000
OK
link
|
22:16.000
OK
link
|
22:18.000
OK
link
|
22:20.000
OK
link
|
22:24.000
OK
link
|
22:26.000
OK
link
|
22:28.000
OK
link
|
22:30.000
OK
link
|
22:32.000
OK
link
|
22:34.000
OK
link
|
22:36.000
OK
link
|
22:38.000
OK
link
|
22:40.000
OK
link
|
22:42.000
OK
link
|
22:44.000
OK