1. 程式人生 > >卷積神經網路簡單的應用(一):目的與資料

卷積神經網路簡單的應用(一):目的與資料

  1. 目的
    構建一個卷積神經網路對性別以及美麗程度(beautiful or handsome)進行識別。
  2. 資料準備
    模型中採用的資料來自百度搜索資料,為了效率可採用爬蟲(大家可以在以下相關程式碼上進行更改):http://blog.sina.com.cn/s/blog_13927ddb50102w2m1.html,下圖為採集的相關圖片。
  3. 資料預處理
    為了資料在輸入模型時具有統一的大小,對資料進行了大小的轉換,統一變成了200*150大小的圖片。這裡利用opencv進行實現。相關程式碼如下,根據長寬的不同變化有所不同:
    import os
    import cv2
    import math
    def rotate(img,angle):        
        height = img.shape[0]  
        width = img.shape[1]  
          
        if angle%180 == 0:  
            scale = 1  
        elif angle%90 == 0:  
            scale = float(max(height, width))/min(height, width)  
        else:  
            scale = math.sqrt(pow(height,2)+pow(width,2))/min(height, width)  
          
              
        rotateMat = cv2.getRotationMatrix2D((width/2, height/2), angle, scale)  
        rotateImg = cv2.warpAffine(img, rotateMat, (width, height))  
          
        return rotateImg
    	
    def convert2samll(path):
        path_f_b = path
        file_f_b = os.listdir(path_f_b)
        print(path_f_b)
        for file_name in file_f_b:
            img = cv2.imread(path_f_b+'/'+file_name)
            if type(img) == type(None):
                print(path_f_b+'/'+file_name)
                continue
            sp = img.shape
            if sp[0] > sp[1] or sp[0] == sp[1]:
                r_img = cv2.resize(img,(150,200))
                cv2.imwrite(path_f_b+'/data/'+file_name,r_img)
            else:
                r_img = cv2.resize(img,(200,150))
                r_img = rotate(r_img,90)
                r_img = cv2.resize(r_img,(150,200))
                cv2.imwrite(path_f_b+'/data/'+file_name,r_img)
    網盤上有處理好的資料:連結:https://pan.baidu.com/s/1GYuiT6VRlO9BNJe_wZtlkw 密碼:9ekp