全文共3095字,預計學習時長9分鐘
全文共3095字,預計學習時長9分鐘
來源:Pexels
本文將解釋如何整合深度學習模型,構建服裝推薦系統。我們想要建立一個服裝推薦系統,可以使用四種深度學習模型來獲取用戶服裝使用的重要特征。 推薦系統可分為4類:
- 基于產品特性的推薦
- 基于其他用戶對產品的行為的推薦
- 基于用戶一般特征的推薦
- 基于上述多項標準的推薦
- detector =dlib.get_frontal_face_detector()# Carga de modelos# CNNage_net, gender_net =load_caffe_models()# Boddy Mass Indexmodel_bmi = get_trained_model()### Face Detectionimg_h, img_w, _ = np.shape(image)detected = detector(image, 1)faces=np.empty((1,config.RESNET50_DEFAULT_IMG_WIDTH, 3))config.RESNET50_DEFAULT_IMG_WIDTH,detection= {}if len(detected) > 0: for i,d in enumerate(detected): x1, y1, x2, y2, w, h = d.left(),d.top(), d.right() + 1, d.bottom() + 1, d.width(), d.height() xw1 = max(int(x1 - margin * w), 0) yw1 = max(int(y1 - margin * h), 0) xw2 = min(int(x2 + margin * w), img_w - 1) yw2 = min(int(y2 + margin * h), img_h - 1) cv2.rectangle(image, (xw1, yw1),(xw2, yw2), (255, 0, 0), 2) #Get Face face_img = frame[yw1:yw2,xw1:xw2].copy() # Estimación age, gender = get_age_and_gender(face_img,age_net, gender_net) # Boddy Mass Index faces[0,:,:,:]=cv2.resize(face_img,(config.RESNET50_DEFAULT_IMG_WIDTH,3 )) /255.00 bmi = round(float(model_bmi.predict(faces)[0][0]),2) detection[i]={'gender':gender, 'age':age, 'bmi':bmi}
- def eval_cloth(img_test,categoria_test, size_test): filename = './ClothEmbedding/X_reduced2.sav' X_reduced, hasher, pca, df =joblib.load(filename) img = cv2.imread(img_test) img_c = cv2.resize(img, (80, 80), interpolation=cv2.INTER_CUBIC) img_data_test = img_c.reshape(-1).astype(np.float32) img_transformed =hasher.transform(img_data_test.reshape(1, -1)) img_reduced =pca.transform(img_transformed) # Distancia entre la muestra y la basede datos dist = [np.linalg.norm(img_reduced-e) for e in X_reduced] df['distance'] =dist df_test = df.sort_values(['distance']) # Se conserva sólo la categiríarequerida df_test = df_test[df_test['categoria2'] == categoria_test] # Se conservan sólo las tallasrequeridas cat_ns = ['tacones', 'chanclas', 'botas', 'bolsa', 'ropa_interior'] ifnot(categoria_test in cat_ns): if(len(size_test) == 2): true_table = [(size_test[0] in sizes_r or size_test[1] in sizes_r) for sizes_r in df_test['tallas']] else: true_table = [size_test[0] in sizes_r for sizes_r in df_test['tallas']] df_test = df_test[true_table] returndf_test
- 最后一個功能會接收人和衣服的所有信息。將服裝特性與數據庫中的服裝進行比對。會推薦與用戶身著相似的服裝。 最后,考慮到用戶體驗,就做了一個前端。
來源:Pexels
在案例中,我們將根據用戶和產品特性提出建議。計入考慮的用戶特征是性別、年齡和體重指數(BMI)。計入考慮的產品特征是用戶所穿的衣服類型。因此,我們需要一張用戶的照片,對所有特征進行預測,推薦相應的服裝。 將從用戶的全身圖像中獲得服裝特征。 使用名為AlphaPose的人體姿態估計系統來確定用戶是否完整。AlphaPose檢測一個人的19個點。如果檢測到至少17個點,就認定是完整人形。
圖1: AlphaPose估計系統
我們重新訓練了網上最知名的其中一種分類器——YOLO v3。YOLO同時也是最精確的圖像分類器之一。用于訓練的數據集是一組巨大的 MMLAB 數據集,DeepFashion。 使用的另一個模型是 Dlib,get_frontal_face_detector()函數。
此模型由 5 個 HOG 篩選器構建。模型檢測前視圖面和側視圖面。之所以選擇該模型是因為它速度快且精確。在檢測年齡和性別時,我們根據數據科學的文章,使用 openCV 和卷積神經網絡對年齡和性別進行分類。 基于一篇名為《利用Keras和轉移學習從人臉圖像中估計身體質量指數》(Estimating Body Mass Index from face images using Keras andtransfer learning)的文章對IMC進行估計。
圖2:推薦系統的體系結構
模型集成
所有代碼都是使用一些計算機視覺庫(如 OpenCV)和一些深度學習框架(如Keras)在 Python3.5 中編寫的。
通過這些代碼,將模型加載到RAM中進行姿態估計(poseestimation)。
為了估測年齡、性別和BMI,我們還剪切了臉部所在的區域。然后,使用 YOLO 對衣服進行分類,顯示推薦的衣服類型。
圖3:為推薦系統構建Web試圖
感謝閱讀!記得踴躍發言喲~
留言點贊發個朋友圈
我們一起分享AI學習與發展的干貨編譯組:張淑霏、王小燕
如轉載,請后臺留言,遵守轉載規范
- 基于其他用戶對產品的行為的推薦
- 基于用戶一般特征的推薦
- 基于上述多項標準的推薦
來源:Pexels
在案例中,我們將根據用戶和產品特性提出建議。計入考慮的用戶特征是性別、年齡和體重指數(BMI)。計入考慮的產品特征是用戶所穿的衣服類型。因此,我們需要一張用戶的照片,對所有特征進行預測,推薦相應的服裝。 將從用戶的全身圖像中獲得服裝特征。 使用名為AlphaPose的人體姿態估計系統來確定用戶是否完整。AlphaPose檢測一個人的19個點。如果檢測到至少17個點,就認定是完整人形。
圖1: AlphaPose估計系統
我們重新訓練了網上最知名的其中一種分類器——YOLO v3。YOLO同時也是最精確的圖像分類器之一。用于訓練的數據集是一組巨大的 MMLAB 數據集,DeepFashion。 使用的另一個模型是 Dlib,get_frontal_face_detector()函數。
此模型由 5 個 HOG 篩選器構建。模型檢測前視圖面和側視圖面。之所以選擇該模型是因為它速度快且精確。在檢測年齡和性別時,我們根據數據科學的文章,使用 openCV 和卷積神經網絡對年齡和性別進行分類。 基于一篇名為《利用Keras和轉移學習從人臉圖像中估計身體質量指數》(Estimating Body Mass Index from face images using Keras andtransfer learning)的文章對IMC進行估計。
圖2:推薦系統的體系結構
模型集成
所有代碼都是使用一些計算機視覺庫(如 OpenCV)和一些深度學習框架(如Keras)在 Python3.5 中編寫的。
- detector =dlib.get_frontal_face_detector()# Carga de modelos# CNNage_net, gender_net =load_caffe_models()# Boddy Mass Indexmodel_bmi = get_trained_model()### Face Detectionimg_h, img_w, _ = np.shape(image)detected = detector(image, 1)faces=np.empty((1,config.RESNET50_DEFAULT_IMG_WIDTH, 3))config.RESNET50_DEFAULT_IMG_WIDTH,detection= {}if len(detected) > 0: for i,d in enumerate(detected): x1, y1, x2, y2, w, h = d.left(),d.top(), d.right() + 1, d.bottom() + 1, d.width(), d.height() xw1 = max(int(x1 - margin * w), 0) yw1 = max(int(y1 - margin * h), 0) xw2 = min(int(x2 + margin * w), img_w - 1) yw2 = min(int(y2 + margin * h), img_h - 1) cv2.rectangle(image, (xw1, yw1),(xw2, yw2), (255, 0, 0), 2) #Get Face face_img = frame[yw1:yw2,xw1:xw2].copy() # Estimación age, gender = get_age_and_gender(face_img,age_net, gender_net) # Boddy Mass Index faces[0,:,:,:]=cv2.resize(face_img,(config.RESNET50_DEFAULT_IMG_WIDTH,3 )) /255.00 bmi = round(float(model_bmi.predict(faces)[0][0]),2) detection[i]={'gender':gender, 'age':age, 'bmi':bmi}
通過這些代碼,將模型加載到RAM中進行姿態估計(poseestimation)。
為了估測年齡、性別和BMI,我們還剪切了臉部所在的區域。然后,使用 YOLO 對衣服進行分類,顯示推薦的衣服類型。
- def eval_cloth(img_test,categoria_test, size_test): filename = './ClothEmbedding/X_reduced2.sav' X_reduced, hasher, pca, df =joblib.load(filename) img = cv2.imread(img_test) img_c = cv2.resize(img, (80, 80), interpolation=cv2.INTER_CUBIC) img_data_test = img_c.reshape(-1).astype(np.float32) img_transformed =hasher.transform(img_data_test.reshape(1, -1)) img_reduced =pca.transform(img_transformed) # Distancia entre la muestra y la basede datos dist = [np.linalg.norm(img_reduced-e) for e in X_reduced] df['distance'] =dist df_test = df.sort_values(['distance']) # Se conserva sólo la categiríarequerida df_test = df_test[df_test['categoria2'] == categoria_test] # Se conservan sólo las tallasrequeridas cat_ns = ['tacones', 'chanclas', 'botas', 'bolsa', 'ropa_interior'] ifnot(categoria_test in cat_ns): if(len(size_test) == 2): true_table = [(size_test[0] in sizes_r or size_test[1] in sizes_r) for sizes_r in df_test['tallas']] else: true_table = [size_test[0] in sizes_r for sizes_r in df_test['tallas']] df_test = df_test[true_table] returndf_test
- 最后一個功能會接收人和衣服的所有信息。將服裝特性與數據庫中的服裝進行比對。會推薦與用戶身著相似的服裝。 最后,考慮到用戶體驗,就做了一個前端。
圖3:為推薦系統構建Web試圖
感謝閱讀!記得踴躍發言喲~
留言點贊發個朋友圈
我們一起分享AI學習與發展的干貨編譯組:張淑霏、王小燕
如轉載,請后臺留言,遵守轉載規范


