Pulse,Pulse
轉發鏈接:
前言
萬惡的馬賽克,是阻礙人類進步的絆腳石。
馬賽克“腦補”算法 PULSE,助你圖片模糊變高清。
這是杜克大學近期的一項研究,將模糊人臉秒變高清。
PULSE 算法目前只支持人臉的馬賽克“去除”,因為訓練數據都是人臉。
也就是說,“腦補”其它物體馬賽克下的內容也是可以的,只要你有數據!
我知道,你一定又有了一些大膽的想法!
「 Just do it 」 !
今天,繼續手把手教學。
pulse 生詞本 去背誦 英 [p?ls]美 [p?ls]n.脈搏; [無線電](電磁波等)脈動; 活力; 有節奏的跳動(或拍打)vi.(心臟)跳動; 脈動; 搏動; 震動 vt.使跳動; 有節奏地驅動(機器等); [。
算法原理、環境搭建、效果測試,一條龍服務,盡在下文!
2 算法原理
PULSE 算法可以在幾秒內,將 16x16 像素的低分辨率(Low Resolution,以下簡稱 LR)小圖,放大 64 倍,變成 1024 x 1024 像素的高分辨率(High Resolution,以下簡稱 HR)圖像。
PULSE 算法會「腦補」出 LR 圖像一些不存在的特征,補充細節,例如紋理、毛孔、毛發等:
左圖為原始 LR 圖片,右圖為 PULSE 算法生成的 HR 圖片。
官網,PULSE 算法的思路是,拿到一張 LR 圖片,使用 stylegan 生成 HR 圖片,再將 HR 圖片 downscale 得到的 LR 圖片與原始 LR 圖片對比,一直迭代收斂,找到最接近的那張。如下圖所示:
原始 LR 圖片和 PULSE 修復后再 donwscale 的 LR 圖片對,使兩者最接近的 HR 圖片,就是修復得到的 HR 圖片。
該算法在著名的高分辨率人臉數據集 CelebA HQ 上進行了效果評估,用 64×,32× 和 8× 的比例因子,采用不同的算法,進行了對比實驗。
實驗表明,PULSE 算法的效果最佳,得分幾乎與真實的高質量照片一樣高。
通過上圖,可以清晰地看到,PULSE 算法在人臉不同位置的紋理細節。
Pulse,不過 PULSE 算法也有一定的局限性,它無法將失焦、不能識別的人臉照片,變成照片真人的清晰圖像,它僅會生成不存在但看上去很真實的新面孔。
說白了,PULSE 生成的高清圖片,是「腦補」出來的,與真實的人臉照片可能存在差別。
3 環境搭建
PULSE 算法采用 Pytorch 實現,使用了 dlib 人臉庫的一些 API。
項目地址:
環境搭建不復雜,工程里的 pulse.yml 文件,已經寫明了依賴環境。
name: pulsechannels:- pytorch- defaultsdependencies:- blas=1.0=mkl- ca-certificates=2020.1.1=0- certifi=2020.4.5.1=py38_0- cffi=1.14.0=py38hc512035_1- chardet=3.0.4=py38_1003- cryptography=2.9.2=py38ha12b0ac_0- cycler=0.10.0=py38_0- freetype=2.9.1=hb4e5f40_0- idna=2.9=py_1- intel-openmp=2019.4=233- jpeg=9b=he5867d9_2- kiwisolver=1.2.0=py38h04f5b5a_0- libcxx=10.0.0=1- libedit=3.1.20181209=hb402a30_0- libffi=3.3=h0a44026_1- libgfortran=3.0.1=h93005f0_2- libpng=1.6.37=ha441bb4_0- libtiff=4.1.0=hcb84e12_0- matplotlib=3.1.3=py38_0- matplotlib-base=3.1.3=py38h9aa3819_0- mkl=2019.4=233- mkl-service=2.3.0=py38hfbe908c_0- mkl_fft=1.0.15=py38h5e564d8_0- mkl_random=1.1.0=py38h6440ff4_0- ncurses=6.2=h0a44026_1- ninja=1.9.0=py38h04f5b5a_0- numpy=1.18.1=py38h7241aed_0- numpy-base=1.18.1=py38h6575580_1- olefile=0.46=py_0- openssl=1.1.1g=h1de35cc_0- pandas=1.0.3=py38h6c726b0_0- pillow=7.1.2=py38h4655f20_0- pip=20.0.2=py38_3- pycparser=2.20=py_0- pyopenssl=19.1.0=py38_0- pyparsing=2.4.7=py_0- pysocks=1.7.1=py38_0- python=3.8.2=hf48f09d_13- python-dateutil=2.8.1=py_0- pytorch=1.5.0=py3.8_0- pytz=2020.1=py_0- readline=8.0=h1de35cc_0- requests=2.23.0=py38_0- scipy=1.4.1=py38h44e99c9_0- setuptools=46.2.0=py38_0- six=1.14.0=py38_0- sqlite=3.31.1=h5c1f38d_1- tk=8.6.8=ha441bb4_0- torchvision=0.6.0=py38_cpu- tornado=6.0.4=py38h1de35cc_1- urllib3=1.25.8=py38_0- wheel=0.34.2=py38_0- xz=5.2.5=h1de35cc_0- zlib=1.2.11=h1de35cc_3- zstd=1.3.7=h5bba6e5_0- pip:- dlib==19.19.0prefix: /path/to/your/anaconda3/envs/pulse
直接使用 pulse.yml 文件,用 Anaconda 進行環境配置。
修改 pulse.yml 文件中 prefix 的路徑為你的 Anaconda 路徑,然后使用指令創建環境:
conda create -f pulse.yml
這是官方推薦的方法。親測,依然遇到了一些依賴問題。
conda install ca-certificates requests
libcxx、libedit 等這類的 lib 庫不用安裝,Anaconda 在創建 Python 環境的時候已經安裝好了。
這里面稍微難安裝的就是 dlib,dlib 需要使用 cmake 進行編譯,所以需要先安裝好 cmake,這里使用 pip 安裝即可:
python -m pip install cmake dlib
都搞定了,環境就算搭建完成了。
4 效果測試
PULSE 項目地址:
下載項目到本地:
git clone
所以我將模型下載好,上傳到了我的百度網盤。
下載地址(提取碼:3gpq):
在工程目錄,創建 cache、realpics 兩個文件夾,將下載好的三個文件放到 cache 文件夾內。
然后將下圖放到 realpics 文件夾內,我們以此圖為例,進行測試。
圖片下載地址:
首先,我們使用 align_face.py 對圖片 downscale。
python align_face.py
生成的圖片會放到 input 文件夾內,如果將圖片放大到 1024x1024,就是相當于一張布滿馬賽克的圖片。
有了這張 LR 圖片,也就是低分辨率圖片,使用 PULSE 算法,看下「腦補」效果吧!
python run.py -steps=2000
運行 run.py ,迭代 2000 steps,在 runs 文件夾下就會生成“去除”馬賽克后的「腦補」圖。
「腦補」圖跟原圖還是有些神似的!
5 爭議
我們都知道,今年 5 月 25 日美國的「跪殺黑人」事件。
由此引發了美國有史以來,最大規模的游行抗議。
6 月份,吃“美國瓜”的人應該不在少數,比如我就在 YouTube 上吃了一個月的瓜。
每個國家都有自己的敏感話題。
而美國,現在的敏感話題就是「種族歧視」。
PULSE 算法惹了大麻煩。
PULSE 采用 CelebA-HQ 訓練的模型,數據集都是白人,因此算法「腦補」出的也都是白人臉。
這在如今高喊「黑命貴」的美國,無疑是一股扎眼的“逆流”。
有網友就拿奧巴馬的低分辨率照片進行測試,結果生成的都是白人男性,更加坐實了 PULSE 算法的「種族歧視」罪名。
PULSE 算法,以及相關的研究人員,因此被打上了「種族偏見」的標簽。
甚至深度學習領軍人物 LeCun 因為替 PULSE 說話,也不幸躺槍。
我倒是在想,以后美國科研的數據集是不是也得像美國電影一樣,一部劇必須得有黑人演員才行,否則就算「政治不正確」。
扛著「政治正確」大旗的人們“口誅筆伐”異己,欲加之罪,何患無辭。
技術,有罪嗎?
6 最后
PULSE 算法對于非數據集的數據,「腦補」效果一般。
想用 PULSE 算法,“去除”人臉以外的馬賽克圖,需要建立數據集,重新訓練模型。
推薦JavaScript學習相關文章
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
1、pulse 釋義:n. 脈搏;脈沖;[植]豆類;v. 搏動;跳動。2、I could feel blood pulsing through my veins.我感到渾身血液在沸騰。3、單詞變形:過去式: pulsed;過去分詞: pulsed;現在分詞: pulsing;第三人稱單數。
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
pulse [p?ls]n. 脈搏; 有節奏的跳動; 脈的一次跳動;意向, 心態#豆類植物; 豆 v. 搏動; 拍打; 跳動;振動
《》
《》
《》
《》
《》
《》
pulse英 [p?ls] 美 [p?ls]n.脈搏; [無線電] (電磁波等) 脈動; 活力; 有節奏的跳動(或拍打)vi.脈動; (心臟) 跳動; 搏動; 震動;vt.使跳動; 有節奏地驅動(機器等) [電子學] 施以脈沖; [無線。
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
pulse 釋義:n. 脈搏;脈沖;[植]豆類 v. 搏動;跳動 讀音:英 [p?ls] 美 [p?ls]單詞變形:1、過去式: pulsed 2、過去分詞: pulsed 3、現在分詞: pulsing 4、第三人稱單數: pulses 雙語例句。
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
pulse 釋義:n. 脈搏;脈沖;[植]豆類 v. 搏動;跳動 讀音:英 [p?ls] 美 [p?ls]單詞變形:1、過去式: pulsed 2、過去分詞: pulsed 3、現在分詞: pulsing 4、第三人稱單數: pulses 雙語例句。
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
轉發鏈接:
版權聲明:本站文章均來源于網絡,如有侵權請聯系刪除!