神通情人夢的願望(第一步自創美女頭像)

神通情人夢的願望(第一步自創美女頭像)

小時候一直很喜歡這部電影 "神通情人夢 (Electric Dreams)" , 不曉得你有沒有跟我一樣 , 看完了這部電影 , 一直幻想著有一天創造出一個自己的 "AI情人" !?

隨著AI技術的進步 , 因為工作關係 , 比較沒有深入領域的去研究 , 但空閒時間還是會朝著興趣方面去爬爬文 , 底下來筆記一下最近看到一個對岸大神寫的文章 "用DCGAN生成女朋友"

用DCGAN生成女朋友

首先 , 先了解什麼是GAN (生成對抗網路) , GAN 是2014年蒙特婁大學博士生 Ian Goodfellow 提出來的 (參考此篇 29 歲就做出近 20 年最重要 AI 突破,讓人類 CONNECT with AI 的男人 Ian Goodfellow )


圖. GAN Architecture,圖片來源:generative-adversarial-networks

1. 第一步他先用爬蟲抓取所需要的樣本  百度圖片爬蟲,基於python3

2. 使用Opencv中自带的adaboost的目標檢測算法得到單純頭像

Sample code (修正了部分報錯問題 , 使用 python3.5.1 ):
======================================================
 # Sample code ( python3.5.1 with cv2 module)
import cv2
import sys
import os.path
from glob import glob

def detect(filename, cascade_file="/usr/share/opencv/haarcascades/haarcascade_frontalface_alt.xml"):
    if not os.path.isfile(cascade_file):
        raise RuntimeError("%s: not found" % cascade_file)

    cascade = cv2.CascadeClassifier(cascade_file)
    image = cv2.imread(filename)
    if image is None: # read failure and skip this image
      return
    if image.shape[2]==1: # drop gray images
      return
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    gray = cv2.equalizeHist(gray)
    faces = cascade.detectMultiScale(gray,
                                     # detector options
                                     scaleFactor=1.1,
                                     minNeighbors=3,
                                     minSize=(96, 96))

    for i, (x, y, w, h) in enumerate(faces):
        face = image[y: y + h, x:x + w, :]
        face = cv2.resize(face, (96, 96))
        save_filename = '%s-%d.jpg' % (os.path.basename(filename).split('.')[0], i)
        cv2.imwrite("face/" + save_filename, face)

if __name__ == '__main__':
    if os.path.exists('face') is False:
        os.makedirs('face')
    file_list = glob('./test/*.jp*')
    for filename in file_list:
        print(filename)
        detect(filename)
==============================================================

3. DCGAN訓練和生成圖像  DCGAN in Tensorflow

經過一番苦戰  終於可以成功運行Github上的程式DCGAN-tensorflow)
但使的VM實在太慢 , 25個epoch 跑超久 XD ...只是先測試可否運行


這是他的訓練成果 DCGAN訓練和生成圖像
不過看來這方式訓練出來的成果離真實感還有點差距 ,
也許訓練的樣本不夠 !? 找時間自己來實做玩看看 ...

網路已經很多利用AI創建的頭像 , 有些根本真假難辨不知怎麼做到的 ?
Can You Tell the Difference Between a Human Face and an AI-Created Fake? 


後記 :  另外GAN的應用還可以來做內容審核 (參考此篇 一个22万张NSFW图片的鉴黄数据集?我有个大胆的想法 ) , 讓央喜想到以前做scale out影音倉儲系統時 ,  其實可以加入此應用 , 在影片上傳時自動分類並加入人名.事件等檢索 , 可惜已沒法加以實現 , 只好改天有時間先從家裡NAS的"愛情動作片"開始實驗了 ... ( 央喜只是要技術實驗 XD )

回味一下吧  神通情人夢(劇情配樂)


留言

這個網誌中的熱門文章

舊公寓對講機變身為手機遙控門鎖研究筆記

舊大門換裝小米電子鎖筆記

解決愛奇藝APP在SONY電視上花屏問題筆記