卷積神經網路簡單的應用(一):目的與資料
阿新 • • 發佈:2019-01-02
- 目的
構建一個卷積神經網路對性別以及美麗程度(beautiful or handsome)進行識別。 - 資料準備
模型中採用的資料來自百度搜索資料,為了效率可採用爬蟲(大家可以在以下相關程式碼上進行更改):http://blog.sina.com.cn/s/blog_13927ddb50102w2m1.html,下圖為採集的相關圖片。 - 資料預處理
為了資料在輸入模型時具有統一的大小,對資料進行了大小的轉換,統一變成了200*150大小的圖片。這裡利用opencv進行實現。相關程式碼如下,根據長寬的不同變化有所不同:
網盤上有處理好的資料:連結:https://pan.baidu.com/s/1GYuiT6VRlO9BNJe_wZtlkw 密碼:9ekpimport 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)