昨天一句話刷爆了朋友圈
請給我一個圣誕帽@微信官方
我一眼看破天機,像我這種從小到大從來沒轉(zhuǎn)過 “今天是馬化騰生日清蚀,只要復(fù)制轉(zhuǎn)發(fā)此條消息發(fā)送到5個群匕荸,就可以獲得1個月qq會員”的好孩子,邊刷朋友圈邊說:“老實人枷邪,都是老實人榛搔。”
直到看到他們的頭像都變成了這樣
沒錯东揣,他們都有一頂可愛的紅帽子践惑!
我漸漸意識到,我才是老實人嘶卧!
微信老鐵尔觉,沒毛病,我向馬化騰爸爸道歉芥吟!
“別低頭侦铜,小紅帽會掉!”
打開手機钟鸵,虔誠的打下下面的文字
微信大大钉稍,我要一頂可愛的小紅帽! 愛你棺耍,QAQ@微信官方
每隔5分鐘看一眼頭像贡未,
沒有。蒙袍。俊卤。
每隔2分鐘看一眼,
沒有害幅。消恍。。
眉頭一緊以现,漸漸發(fā)現(xiàn)事情并不簡單哺哼,然道是活動太火爆,微信官方人手不夠叼风,忙不過來?
可是已經(jīng)過了這么久了啊....
我開始了我IT工作者的思考>>>
然道是我的微信語言是英語棍苹,必須發(fā)英文无宿? 改改改
Please put on a Christmas hat for me!@WeChat Team
我的圣誕帽呢?怎么還沒出現(xiàn)枢里?
欸孽鸡?
又然道是我的老婆是新垣結(jié)衣蹂午,得發(fā)日文? 該改改
サンタ帽をください@WeChat オフィシャル
欸彬碱?欸豆胸?
又或者
。巷疼。晚胡。。嚼沿。估盘。。骡尽。
遣妥。。攀细。箫踩。。谭贪。
境钟。。故河。
我編不下去了TAT
可是吱韭,作為一個技術(shù)宅,我才不會@微信官方呢(/傲嬌臉)鱼的。
自己動手理盆,豐衣足食。
網(wǎng)上大部分教程都是基于ps圖像拼接的凑阶,那我們今天就要通過深度學(xué)習(xí)中的生成對抗網(wǎng)絡(luò)(具體為CycleGan)自動生成對應(yīng)頭像加上圣誕帽后的頭像猿规。以下是正文干貨。
一. 為什么選擇CycleGan宙橱?
pix2pix也可以做圖像變換姨俩,它和CycleGAN的區(qū)別在于,pix2pix模型必須要求 成對數(shù)據(jù) (paired data)师郑,而CycleGAN利用 非成對數(shù)據(jù) 也能進行訓(xùn)練(unpaired data)环葵。
我們希望訓(xùn)練一個將普通頭像轉(zhuǎn)換為帶圣誕帽頭像的模型。如果使用pix2pix模型宝冕, 那么我們必須在搜集大量普通頭像以及其對應(yīng)有圣誕帽頭像的兩張對應(yīng)圖片张遭,而使用CycleGAN只需同時搜集普通頭像和帶圣誕帽頭像的圖片,不必滿足對應(yīng)關(guān)系地梨。 因此CycleGAN的用途要比pix2pix更廣泛菊卷,利用CycleGAN就可以做出更多有趣的應(yīng)用缔恳。
(廢話真多。洁闰。我就是不想標(biāo)數(shù)據(jù)歉甚。。)
二. CycleGan基本原理
CycleGAN的原理可以概述為: 將一類圖片轉(zhuǎn)換成另一類圖片 扑眉。也就是說纸泄,現(xiàn)在有兩個樣本空間,X和Y襟雷,我們希望把X空間中的樣本轉(zhuǎn)換成Y空間中的樣本刃滓。(獲取一個數(shù)據(jù)集的特征,并轉(zhuǎn)化成另一個數(shù)據(jù)集的特征)
(蛤耸弄,沒了咧虎?。计呈。是的砰诵,沒時間解釋了,快上車捌显!茁彭,后面有空再詳細寫。)
三. 爬取數(shù)據(jù)
在百度圖片上利用python爬蟲程序爬取了3000張普通頭像扶歪,和3000張戴圣誕帽的頭像理肺。
(具體爬蟲代碼,會放在同性交友網(wǎng)github上善镰。)
四. 訓(xùn)練
- 下載項目代碼
git clone https://github.com/vanhuyz/CycleGAN-TensorFlow.git
- 將頭像數(shù)據(jù)轉(zhuǎn)換為tfrecord格式
爬取的數(shù)據(jù)大小不一妹萨,在轉(zhuǎn)換前先要將所有圖片resize到統(tǒng)一的尺寸(我的是256)
項目中提供了一個build_data腳本,用于將圖片轉(zhuǎn)換成tfrecords形式炫欺。我們的圖片存放在 /data/minglin/code/CycleGan/hatdata/hat/和 /data/minglin/code/CycleGan/hatdata/nohat/目錄下乎完,對應(yīng)的命令就是:
python build_data.py
--X_input_dir /data/minglin/code/CycleGan/hatdata/hat/
--Y_input_dir /data/minglin/code/CycleGan/hatdata/nohat/
--X_output_file /data/minglin/code/CycleGan/hatdata/hat.tfrecords
--Y_output_file /data/minglin/code/CycleGan/hatdata/nohat.tfrecords\
數(shù)據(jù)不大,轉(zhuǎn)換速度還是很快的品洛。
- 訓(xùn)練
直接執(zhí)行train.py文件即可树姨。
python train.py
--X /data/minglin/code/CycleGan/hatdata/hat.tfrecords
--Y/data/minglin/code/CycleGan/hatdata/nohat.tfrecords
--image_size 256
其他參數(shù)(batchsize,lr等)可以通過train.py --help查看桥状。
訓(xùn)練過程非常漫長帽揪。。辅斟√ù裕可以打開tensorboard查看訓(xùn)練進展
tensorboard --logdir /data/minglin/code/CycleGan/checkpoints/20171223-1633/ --port portid
目前訓(xùn)練還沒完成,給一些訓(xùn)練過程中的結(jié)果
1000個step:頭部開始變紅。挽霉。。
5000個step:頭部變得很紅变汪。侠坎。
10000個step:小紅帽開始有一點點雛形了。裙盾。实胸。
五. 總結(jié)
雖然訓(xùn)練還沒有完成,但是目前看來番官,效果不是特別好庐完,我總結(jié)了一些原因
- 數(shù)據(jù)是我自己從百度上爬的,里面有很多噪聲數(shù)據(jù)徘熔,我沒時間去除门躯。
- 兩個域的圖片質(zhì)量差異很大。
- 圖片數(shù)量也相對很少酷师。
- 高質(zhì)量的數(shù)據(jù)會極大提高訓(xùn)練效果讶凉。
不知不覺已經(jīng)深夜兩點多。山孔。愿大家都會有個美妙的平安夜
圣誕快到了懂讯,提前祝大家圣誕節(jié)快樂!