想構建服裝推薦系統?用深度學習模型

2022年10月07日10:34:03 熱門 1302

全文共3095字,預計學習時長9分鐘

想構建服裝推薦系統?用深度學習模型 - 天天要聞

來源:Pexels


本文將解釋如何整合深度學習模型,構建服裝推薦系統。

我們想要建立一個服裝推薦系統,可以使用四種深度學習模型來獲取用戶服裝使用的重要特徵。


推薦系統可分為4類:


  • 基於產品特性的推薦
  • 基於其他用戶對產品的行為的推薦
  • 基於用戶一般特徵的推薦
  • 基於上述多項標準的推薦


想構建服裝推薦系統?用深度學習模型 - 天天要聞

來源: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 中編寫的。


  1. detector =dlib.get_frontal_face_detector()# Carga de modelos
  2. # CNN
  3. age_net, gender_net =load_caffe_models()
  4. # Boddy Mass Index
  5. model_bmi = get_trained_model()
  6. ### Face Detection
  7. img_h, img_w, _ = np.shape(image)
  8. detected = detector(image, 1)
  9. faces
  10. =
  11. np.empty((1,
  12. config.RESNET50_DEFAULT_IMG_WIDTH, 3))
  13. config.RESNET50_DEFAULT_IMG_WIDTH,detection= {}
  14. if len(detected) > 0:
  15. for i,d in enumerate(detected):
  16. x1, y1, x2, y2, w, h = d.left(),d.top(), d.right() + 1, d.bottom() + 1, d.width(),
  17. d.height()
  18. xw1 = max(int(x1 - margin * w), 0)
  19. yw1 = max(int(y1 - margin * h), 0)
  20. xw2 = min(int(x2 + margin * w), img_w - 1)
  21. yw2 = min(int(y2 + margin * h), img_h - 1)
  22. cv2.rectangle(image, (xw1, yw1),(xw2, yw2), (255, 0, 0), 2)
  23. #Get Face
  24. face_img = frame[yw1:yw2,xw1:xw2].copy()
  25. # Estimación
  26. age, gender = get_age_and_gender(face_img,age_net, gender_net)
  27. # Boddy Mass Index
  28. faces[0,:,:,:]=cv2.resize(face_img,
  29. (config.RESNET50_DEFAULT_IMG_WIDTH,3 )) /255.00
  30. bmi = round(float(model_bmi.predict(faces)[0][0]),2)
  31. detection[i]={'gender':gender, 'age':age, 'bmi':bmi}


通過這些代碼,將模型加載到RAM中進行姿態估計(poseestimation)。為了估測年齡、性別和BMI,我們還剪切了臉部所在的區域。然後,使用 YOLO 對衣服進行分類,顯示推薦的衣服類型。


  1. def eval_cloth(img_test,categoria_test, size_test):
  2. filename = './ClothEmbedding/X_reduced2.sav'
  3. X_reduced, hasher, pca, df =joblib.load(filename)
  4. img = cv2.imread(img_test)
  5. img_c = cv2.resize(img, (80, 80), interpolation=cv2.INTER_CUBIC)
  6. img_data_test = img_c.reshape(-1).astype(np.float32)
  7. img_transformed =hasher.transform(img_data_test.reshape(1, -1))
  8. img_reduced =pca.transform(img_transformed)
  9. # Distancia entre la muestra y la basede datos
  10. dist = [np.linalg.norm(img_reduced-e) for e in X_reduced]
  11. df['distance'] =dist
  12. df_test = df.sort_values(['distance'])
  13. # Se conserva sólo la categiríarequerida
  14. df_test = df_test[df_test['categoria2'] == categoria_test]
  15. # Se conservan sólo las tallasrequeridas
  16. cat_ns = ['tacones', 'chanclas', 'botas', 'bolsa', 'ropa_interior']
  17. ifnot(categoria_test in cat_ns):
  18. if(len(size_test) == 2):
  19. true_table = [(size_test[0] in sizes_r or size_test[1] in sizes_r) for sizes_r in df_test['tallas']]
  20. else:
  21. true_table = [size_test[0] in sizes_r for sizes_r in df_test['tallas']]
  22. df_test = df_test[true_table]
  23. returndf_test

最後一個功能會接收人和衣服的所有信息。將服裝特性與數據庫中的服裝進行比對。會推薦與用戶身着相似的服裝。


最後,考慮到用戶體驗,就做了一個前端。

想構建服裝推薦系統?用深度學習模型 - 天天要聞

圖3:為推薦系統構建Web試圖


感謝閱讀!記得踴躍發言喲~

想構建服裝推薦系統?用深度學習模型 - 天天要聞

留言點贊關注

我們一起分享AI學習與發展的乾貨

如轉載,請後台留言,遵守轉載規範

熱門分類資訊推薦

曾小賢的上司Lisa榕,現實中不僅才貌雙全,還嫁給了CEO - 天天要聞

曾小賢的上司Lisa榕,現實中不僅才貌雙全,還嫁給了CEO

曾小賢的上司Lisa榕,現實中不僅才貌雙全,還嫁給了CEO雖然說《愛情公寓》這部劇在劇情上充滿了爭議,但是一定程度上,這部劇也是很多人的回憶,是伴隨了一代人的青春回憶,而且劇中的很多角色都成為了經典,他們的口頭禪也一直被拿來玩兒梗。
Lisa榕做主持多年沒紅,被陳赫拉進愛情公寓爆紅,如今怎樣了 - 天天要聞

Lisa榕做主持多年沒紅,被陳赫拉進愛情公寓爆紅,如今怎樣了

談到《愛情公寓》這部火爆一時的歡樂喜劇,大家肯定都不陌生。不知道大家是否還記得《愛情公寓》中那個把曾小賢治得服服帖帖的女上司Lisa榕,現實中的她名叫榕榕,和劇中的形象也判若兩人。1981年出生在遼寧瀋陽的榕榕,畢業於上海戲劇學院,後來成為了上海東方傳媒集團有限公司的一名主持人。