{"id":1023,"date":"2023-08-10T03:48:45","date_gmt":"2023-08-10T03:48:45","guid":{"rendered":"https:\/\/www.gptmain.news\/?p=1023"},"modified":"2023-08-10T03:48:45","modified_gmt":"2023-08-10T03:48:45","slug":"%d1%8f-%d1%81%d0%be%d0%b7%d0%b4%d0%b0%d0%bb-ai-%d1%81%d1%82%d0%b8%d0%bb%d0%b8%d1%81%d1%82%d0%b0-%d0%b2%d0%b4%d0%be%d1%85%d0%bd%d0%be%d0%b2%d0%bb%d0%b5%d0%bd%d0%bd%d1%8b%d0%b9-%d1%81%d0%be%d1%86%d0%b8","status":"publish","type":"post","link":"https:\/\/gptmain.news\/?p=1023","title":{"rendered":"\u042f \u0441\u043e\u0437\u0434\u0430\u043b AI-\u0441\u0442\u0438\u043b\u0438\u0441\u0442\u0430, \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0441\u043e\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0441\u0435\u0442\u044f\u043c\u0438\n | GPTMain News"},"content":{"rendered":"<div>\n<p>\u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u043c \u0433\u043e\u0434\u0443, \u0432\u043e \u0432\u0441\u0435\u043b\u0435\u043d\u043d\u043e\u0439, \u0433\u0434\u0435 \u0438\u043c\u0435\u0442\u044c \u0448\u0442\u0430\u043d\u044b \u0432\u0441\u0435 \u0435\u0449\u0435 \u0438\u043c\u0435\u043b\u043e \u0441\u043c\u044b\u0441\u043b, \u044f \u0440\u0435\u0448\u0438\u043b \u043d\u0430\u043d\u044f\u0442\u044c \u043b\u0438\u0447\u043d\u043e\u0433\u043e \u0441\u0442\u0438\u043b\u0438\u0441\u0442\u0430.<\/p>\n<p>\u0412\u043e \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0448\u0435\u0439 \u043f\u0435\u0440\u0432\u043e\u0439 \u0432\u0441\u0442\u0440\u0435\u0447\u0438 \u0441\u0442\u0438\u043b\u0438\u0441\u0442 \u043f\u0440\u0438\u0448\u0435\u043b \u043a\u043e \u043c\u043d\u0435 \u0432 \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u0443 \u0438 \u0441\u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0440\u043e\u0432\u0430\u043b \u043a\u0430\u0436\u0434\u0443\u044e \u0432\u0435\u0449\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443 \u043c\u0435\u043d\u044f \u0431\u044b\u043b\u0430.<\/p>\n<p>\u0412\u043e \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0448\u0435\u0439 \u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u0441\u0442\u0440\u0435\u0447\u0438 \u043e\u043d\u0430 \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u043b\u0430 \u043c\u0435\u043d\u044f \u0432 Nordstrom&#8217;s, \u0433\u0434\u0435 \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u043b\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0438\u0442\u044c \u043f\u043e\u0432\u0441\u0435\u0434\u043d\u0435\u0432\u043d\u043e\u0435 \u043f\u043b\u0430\u0442\u044c\u0435 \u0437\u0430 \u200b\u200b400 \u0434\u043e\u043b\u043b\u0430\u0440\u043e\u0432, \u0431\u043b\u0435\u0439\u0437\u0435\u0440 \u0437\u0430 700 \u0434\u043e\u043b\u043b\u0430\u0440\u043e\u0432 \u0438 \u043a\u0440\u043e\u0441\u0441\u043e\u0432\u043a\u0438 \u0437\u0430 300 \u0434\u043e\u043b\u043b\u0430\u0440\u043e\u0432.  (\u042f \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0434\u0443\u043c\u0430\u043b \u0441\u043f\u0440\u043e\u0441\u0438\u0442\u044c, \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 \u043b\u0438 \u043e\u043d\u0430 \u043d\u0430 \u043a\u043e\u043c\u0438\u0441\u0441\u0438\u043e\u043d\u043d\u044b\u0445.)<\/p>\n<p>\u041d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u043d\u0430\u0448\u0435\u0439 \u0442\u0440\u0435\u0442\u044c\u0435\u0439 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u0441\u0442\u0440\u0435\u0447\u0438, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d\u0430, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u043f\u0440\u0438\u0441\u043b\u0430\u043b\u0430 \u043c\u043d\u0435 \u043f\u0430\u043f\u043a\u0443, \u043f\u043e\u043b\u043d\u0443\u044e \u043a\u0443\u0440\u0430\u0442\u043e\u0440\u0441\u043a\u0438\u0445 \u00ab\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u00bb, \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u043c\u043e\u0438\u0445 \u043d\u043e\u0432\u044b\u0445 \u0438 \u0441\u0442\u0430\u0440\u044b\u0445 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u0432 \u043e\u0434\u0435\u0436\u0434\u044b, \u043d\u0430\u043a\u043e\u043d\u0435\u0446-\u0442\u043e \u0449\u0435\u043b\u043a\u043d\u0443\u043b\u043e: \u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u0432\u0437\u043e\u0440\u0432\u0430\u043b\u0441\u044f. <em>\u043c\u043d\u043e\u0433\u043e<\/em> \u0434\u0435\u043d\u0435\u0433.<\/p>\n<p>\u0423 \u043c\u0435\u043d\u044f \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u043e \u043f\u043e\u0434\u043e\u0437\u0440\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u043c\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u043c\u0441\u044f \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445, \u043a\u043e\u0433\u0434\u0430, \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 \u0441\u0435\u043a\u0446\u0438\u044e \u043e\u0431\u0443\u0432\u0438 \u0432 Nordstrom, \u0441\u0442\u0438\u043b\u0438\u0441\u0442 \u0441\u043a\u0430\u0437\u0430\u043b: \u00ab\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441 \u0432\u0430\u043c\u0438, \u043b\u044e\u0434\u044c\u043c\u0438, \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0449\u0438\u043c\u0438\u0441\u044f \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f\u043c\u0438, \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u0438\u0449\u0435\u0442\u0435 \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u0442\u0435\u043e\u0440\u0438\u044e, \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044e \u0438\u043b\u0438 \u0444\u043e\u0440\u043c\u0443\u043b\u0443 \u0434\u043b\u044f \u043c\u043e\u0434\u0430<em>.<\/em> \u041d\u043e \u0444\u043e\u0440\u043c\u0443\u043b\u044b \u043d\u0435\u0442 \u2013 \u0440\u0435\u0447\u044c \u0438\u0434\u0435\u0442 \u043e <em>\u0432\u043a\u0443\u0441<\/em>.<em>\u201d<\/em><\/p>\n<p>\u041f\u0444\u0444\u0444\u0444.  \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u043e <em>\u0447\u0442\u043e<\/em>!<\/p>\n<p>\u042f \u0432\u0435\u0440\u043d\u0443\u043b \u0434\u043e\u0440\u043e\u0433\u0443\u044e \u043e\u0434\u0435\u0436\u0434\u0443 \u0438 \u0440\u0435\u0448\u0438\u043b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e (\u0431\u043e\u043b\u0435\u0435 \u0434\u0435\u0448\u0435\u0432\u043e\u0433\u043e!) \u0441\u0442\u0438\u043b\u0438\u0441\u0442\u0430 \u0441 \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u043e\u043c.  \u0412 \u044d\u0442\u043e\u043c \u043f\u043e\u0441\u0442\u0435 \u044f \u043f\u043e\u043a\u0430\u0436\u0443 \u0432\u0430\u043c, \u043a\u0430\u043a \u0432\u044b \u0442\u043e\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435.<\/p>\n<p><em>\u0425\u043e\u0442\u0438\u0442\u0435 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0432\u0438\u0434\u0435\u043e\u0432\u0435\u0440\u0441\u0438\u044e \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0441\u0442\u0430?  \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c:<\/em><\/p>\n<div class=\"youtube-embed\" data-video_id=\"o6nGn1euRjk\"><iframe loading=\"lazy\" title=\"Making a smart closet with ML\" width=\"696\" height=\"392\" src=\"https:\/\/www.youtube.com\/embed\/o6nGn1euRjk?feature=oembed&#038;enablejsapi=1\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen><\/iframe><\/div>\n<p>\u041c\u043e\u0439 \u0418\u0418-\u0441\u0442\u0438\u043b\u0438\u0441\u0442 \u0431\u044b\u043b \u043d\u0430\u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 \u043e\u0441\u043d\u043e\u0432\u0430\u043d \u043d\u0430 \u044d\u0442\u043e\u043c \u0443\u043c\u043d\u043e\u043c \u0448\u043a\u0430\u0444\u0443 \u0438\u0437 \u0444\u0438\u043b\u044c\u043c\u0430. <em>\u043d\u0435\u0432\u0435\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439<\/em>:<\/p>\n<p><iframe loading=\"lazy\" src=\"https:\/\/giphy.com\/embed\/l0IulEDITBSPyt1BK\" width=\"480\" height=\"270\" frameborder=\"0\" class=\"giphy-embed\" allowfullscreen=\"\"><\/iframe><\/p>\n<p>\u0438 \u043d\u0430\u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 \u043d\u0430 \u0438\u0434\u0435\u0435, \u0447\u0442\u043e \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u043c\u043e\u0434\u043d\u043e \u043e\u0434\u0435\u0432\u0430\u0442\u044c\u0441\u044f &#8211; \u044d\u0442\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u043e\u0434\u043d\u044b\u0445 \u043b\u044e\u0434\u0435\u0439.  \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u043c\u043e\u0434\u043d\u044b\u0435 \u043b\u044e\u0434\u0438 \u0432 Instagram.<\/p>\n<p>\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u0442 \u0438\u0437 Instagram \u043b\u0435\u043d\u0442\u044b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043c\u043e\u0434\u043d\u044b\u0445 \u00ab\u0430\u0432\u0442\u043e\u0440\u0438\u0442\u0435\u0442\u043e\u0432\u00bb \u0432 Instagram \u0438 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0435\u0442 \u0438\u0445 \u0441 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u044f\u043c\u0438 \u043e\u0434\u0435\u0436\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443 \u0432\u0430\u0441 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u0442\u044c \u0432\u0430\u043c \u043d\u0430\u0440\u044f\u0434\u044b.  \u0412\u043e\u0442 \u043a\u0430\u043a \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/daleonai.com\/images\/mismatch_ui.png\" alt=\"\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0418\u0418-\u0441\u0442\u0438\u043b\u0438\u0441\u0442\u0430\" title=\"\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0418\u0418-\u0441\u0442\u0438\u043b\u0438\u0441\u0442\u0430\"\/><\/p>\n<p>(\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0436\u0438\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0437\u0434\u0435\u0441\u044c.)<\/p>\n<p>\u041d\u0430 \u043b\u0435\u0432\u043e\u0439 \u043f\u0430\u043d\u0435\u043b\u0438 \u2014 \u044d\u043a\u0440\u0430\u043d\u0435 \u0448\u043a\u0430\u0444\u0430 \u2014 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0432\u0441\u0435 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u044b \u043e\u0434\u0435\u0436\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443 \u043c\u0435\u043d\u044f \u0443\u0436\u0435 \u0435\u0441\u0442\u044c.  \u041d\u0430 \u043f\u0440\u0430\u0432\u043e\u0439 \u043f\u0430\u043d\u0435\u043b\u0438 \u0432\u044b \u0443\u0432\u0438\u0434\u0438\u0442\u0435 \u0441\u043f\u0438\u0441\u043e\u043a \u0443\u0447\u0435\u0442\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 Instagram, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d \u0434\u043b\u044f \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u0435\u043d\u0438\u044f.  \u0412 \u0441\u0440\u0435\u0434\u043d\u0435\u0439 \u043f\u0430\u043d\u0435\u043b\u0438 (\u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d) \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438 \u043f\u043e \u044d\u043a\u0438\u043f\u0438\u0440\u043e\u0432\u043a\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0418\u0418 \u0441\u0434\u0435\u043b\u0430\u043b \u0434\u043b\u044f \u043c\u0435\u043d\u044f.  \u0424\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u044f \u0434\u043b\u044f \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u0435\u043d\u0438\u044f \u0432 Instagram \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u0432\u0435\u0440\u0445\u0443, \u0430 \u0432\u0435\u0449\u0438 \u0434\u043b\u044f \u043c\u043e\u0435\u0433\u043e \u0433\u0430\u0440\u0434\u0435\u0440\u043e\u0431\u0430 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u044b \u043d\u0438\u0436\u0435:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/daleonai.com\/images\/mismatch.gif\" alt=\"\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0439 \u043f\u043e \u043e\u0434\u0435\u0436\u0434\u0435 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438\" title=\"\u041d\u0430\u0440\u044f\u0434\u044b, \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043d\u043d\u044b\u0435 AI-\u0441\u0442\u0438\u043b\u0438\u0441\u0442\u043e\u043c\"\/><\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u043c\u043e\u044f \u043c\u0443\u0437\u0430 \u0441\u0442\u0438\u043b\u044f \u2014 \u041b\u0430\u0443\u0440\u0430 \u041c\u0435\u0434\u0430\u043b\u0438\u0430, \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0441 @codergirl_ \u0432 Instagram (\u043d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043d\u0435\u0435, \u0447\u0442\u043e\u0431\u044b \u0443\u0437\u043d\u0430\u0432\u0430\u0442\u044c \u043e \u043c\u043e\u0434\u0435 \u0438 \u0441\u043e\u0432\u0435\u0442\u0430\u0445 \u043f\u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0432 \u0441\u0444\u0435\u0440\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439!).<\/p>\n<p>\u041d\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0443 \u043c\u0435\u043d\u044f \u0443\u0448\u043b\u043e \u043e\u043a\u043e\u043b\u043e \u043c\u0435\u0441\u044f\u0446\u0430, \u0438 \u043e\u043d\u043e \u043e\u0431\u043e\u0448\u043b\u043e\u0441\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0432 7 \u0434\u043e\u043b\u043b\u0430\u0440\u043e\u0432 \u0432 \u043a\u0440\u0435\u0434\u0438\u0442\u0430\u0445 Google Cloud (\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e \u0446\u0435\u043d\u0430\u0445 \u043f\u043e\u0437\u0436\u0435).  \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0433\u0440\u0443\u0437\u0438\u043c\u0441\u044f.<\/p>\n<h2 id=\"the-architecture\">\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430<\/h2>\n<p>\u042f \u0441\u043e\u0437\u0434\u0430\u043b \u044d\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044e Google Cloud Storage, Firebase \u0438 Cloud Functions \u0434\u043b\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438, React \u0434\u043b\u044f \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0438 API Google Cloud Vision \u0434\u043b\u044f \u0431\u0438\u0442\u043e\u0432 ML.  \u042f \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u043b \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u043d\u0430 \u0434\u0432\u0430 \u0431\u0438\u0442\u0430.<\/p>\n<p>\u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0435\u0441\u0442\u044c <em>\u043f\u0430\u043a\u0435\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441<\/em>\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0439 \u0447\u0430\u0441 (\u0438\u043b\u0438 \u043a\u0430\u043a \u0443\u0433\u043e\u0434\u043d\u043e \u0447\u0430\u0441\u0442\u043e) \u0432 \u043e\u0431\u043b\u0430\u043a\u0435:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/daleonai.com\/images\/pxl_20201014_203905793.jpg\" alt=\"\u0421\u0445\u0435\u043c\u0430 \u043f\u0430\u043a\u0435\u0442\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0434\u043b\u044f \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0439 \u043f\u043e \u0432\u044b\u0431\u043e\u0440\u0443 \u043e\u0434\u0435\u0436\u0434\u044b\" title=\"\\\\\\\\\\\\\\\\\\\\\\\\&quot;\u043f\u0430\u043a\u0435\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\\\\\\\\\\\\\\\\\\\\\\\\&quot; \u0434\u0430\u0435\u0442 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438 \u043f\u043e \u043e\u0434\u0435\u0436\u0434\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0418\u0418\"\/><\/p>\n<p>\u00ab\u041f\u0430\u043a\u0435\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u00bb \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0438\u0447\u0443\u0434\u043b\u0438\u0432\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0441\u043a\u0440\u0438\u043f\u0442 Python, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0441 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u043e\u043c (\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e\u0431 \u044d\u0442\u043e\u043c \u043f\u043e\u0437\u0436\u0435).  \u041f\u0440\u043e\u0446\u0435\u0441\u0441:<\/p>\n<ol>\n<li>\u0412\u044b\u0442\u044f\u0433\u0438\u0432\u0430\u0435\u0442 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u0438\u0437 \u0441\u043e\u0446\u0441\u0435\u0442\u0435\u0439<\/li>\n<li>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432 Vision API, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0439\u0442\u0438 \u043f\u043e\u0445\u043e\u0436\u0438\u0435 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u044b \u0432 \u043c\u043e\u0435\u043c \u0448\u043a\u0430\u0444\u0443.<\/li>\n<li>\u041f\u043e\u0434\u0441\u0447\u0435\u0442 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0439 (\u0442. \u0435. \u0438\u0437 \u0432\u0441\u0435\u0445 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0439 \u0432 \u0441\u043e\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0435\u0442\u044f\u0445, \u043a\u0430\u043a\u0443\u044e \u043e\u0434\u0435\u0436\u0434\u0443 \u044f \u043c\u043e\u0433\u0443 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0442\u043e\u0447\u043d\u043e \u0432\u043e\u0441\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432 \u043c\u043e\u0435\u043c \u0448\u043a\u0430\u0444\u0443?)<\/li>\n<li>\u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u044f \u0432 Firestore<\/li>\n<\/ol>\n<p>\u042d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u043e\u0449\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0433\u0434\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432\u0441\u044f \u043c\u0430\u0433\u0438\u044f \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f.  \u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0434\u0430\u0435\u0442 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438 \u043f\u043e \u0432\u044b\u0431\u043e\u0440\u0443 \u043e\u0434\u0435\u0436\u0434\u044b \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0438\u0445 \u0432 Firestore \u2014 \u043c\u043e\u044e \u043b\u044e\u0431\u0438\u043c\u0443\u044e \u043b\u0435\u0433\u043a\u043e\u0432\u0435\u0441\u043d\u0443\u044e \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 (\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0435\u0435 \u043f\u043e\u0447\u0442\u0438 \u0432\u043e \u0432\u0441\u0435\u0445 \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445).<\/p>\n<p>\u041d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 <em>\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/em> (\u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u0437\u044b\u0432\u0447\u0438\u0432\u043e\u0435 \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435) \u043f\u0440\u043e\u0441\u0442\u043e: \u043e\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0447\u0438\u0442\u0430\u0435\u0442 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438 \u043f\u043e \u043e\u0434\u0435\u0436\u0434\u0435 \u0438\u0437 Firestore \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0438\u0445 \u0432 \u043a\u0440\u0430\u0441\u0438\u0432\u043e\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/daleonai.com\/images\/pxl_20201014_204154884.jpg\" alt=\"\u0421\u0445\u0435\u043c\u0430 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0447\u0442\u0435\u043d\u0438\u044f \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438\u0437 Firestore\" title=\"\u0412\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 Firestore\"\/><\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u0437\u0433\u043b\u044f\u043d\u0435\u043c!<\/p>\n<p>\u0412 \u0438\u0434\u0435\u0430\u043b\u0435 \u044f \u0445\u043e\u0442\u0435\u043b, \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u043b\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u0437 Instagram \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u043d\u0430 \u043a\u0430\u043a\u0438\u0435 \u0443\u0447\u0435\u0442\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u044f \u0443\u043a\u0430\u0437\u0430\u043b \u0435\u043c\u0443 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u0442\u044c\u0441\u044f.  \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0443 Instagram \u043d\u0435\u0442 API (\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u0440\u0441\u0435\u0440\u0430 \u043d\u0430\u0440\u0443\u0448\u0438\u0442 \u0438\u0445 TOS).  \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u043b \u0443 \u041b\u0430\u0443\u0440\u044b \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0435\u0435 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0439.  \u042f \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043b \u0438\u0445 \u043d\u0430 \u0441\u0432\u043e\u0439 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440, \u0430 \u0437\u0430\u0442\u0435\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043b \u0432 \u043a\u043e\u0440\u0437\u0438\u043d\u0443 Google Cloud Storage:<\/p>\n<div class=\"language-shell highlighter-rouge\">\n<div class=\"highlight\">\n<pre class=\"highlight\"><code><span class=\"c\"># Create a cloud storage bucket<\/span>\ngsutil mb gs:\/\/inspo-pics-bucket\n\n<span class=\"c\"># Upload inspiration pics <\/span>\ngsutil <span class=\"nb\">cp <\/span>path\/to\/inspo\/pics\/<span class=\"k\">*<\/span>.jpg gs:\/\/inspo-pics-bucket\n<\/code><\/pre>\n<\/div>\n<\/div>\n<h2 id=\"filtering-for-fashion-pics\">\u0424\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044f \u043c\u043e\u0434\u043d\u044b\u0445 \u0444\u043e\u0442\u043e<\/h2>\n<p>\u041c\u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u041b\u0430\u0443\u0440\u044b \u0437\u0430 \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u0435\u043d\u0438\u0435, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d\u0430 \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u0442 \u0441\u0432\u043e\u0438 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u0432 \u043e\u0434\u0435\u0436\u0434\u0435 \u0441 \u043d\u043e\u0433 \u0434\u043e \u0433\u043e\u043b\u043e\u0432\u044b (\u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0442\u0443\u0444\u043b\u0438).  \u041d\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0444\u043e\u0442\u043e \u0432 \u0435\u0435 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u043e\u0445\u043e\u0436\u0438 \u043d\u0430 \u044d\u0442\u043e:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/daleonai.com\/images\/doggy.jpg\" alt=\"\u0421\u043e\u0431\u0430\u043a\u0430 \u043f\u0435\u0440\u0435\u0434 \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u043e\u043c\" title=\"\u043c\u0438\u043b\u0430\u044f \u0441\u043e\u0431\u0430\u0447\u043a\u0430 \u041b\u0430\u0443\u0440\u044b\"\/><\/p>\n<p>\u0412\u043e\u0441\u0445\u0438\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u0434\u0430, \u043d\u043e \u043b\u0438\u0447\u043d\u043e \u044f \u043d\u0435 \u043c\u043e\u0433\u0443 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043e\u0434\u0435\u0442\u044b\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0432\u043e\u0440\u043e\u0442\u043d\u0438\u043a.  \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u043d\u0435 \u043d\u0443\u0436\u0435\u043d \u0431\u044b\u043b \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0441\u043f\u043e\u0441\u043e\u0431 \u0443\u0437\u043d\u0430\u0442\u044c, \u043d\u0430 \u043a\u0430\u043a\u0438\u0445 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u044f\u0445 \u0435\u0441\u0442\u044c \u043d\u0430\u0440\u044f\u0434\u044b (\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u043e\u0441\u044f\u0442 \u043b\u044e\u0434\u0438), \u0430 \u043d\u0430 \u043a\u0430\u043a\u0438\u0445 \u043d\u0435\u0442.<\/p>\n<p>\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u044f \u043e\u0431\u0440\u0430\u0442\u0438\u043b\u0441\u044f \u043a \u0441\u0432\u043e\u0435\u043c\u0443 \u0432\u0435\u0440\u043d\u043e\u043c\u0443 \u043f\u043e\u043c\u043e\u0449\u043d\u0438\u043a\u0443 \u2014 Google Cloud Vision API (\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0432 \u044d\u0442\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443).  \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0435\u0433\u043e <strong>\u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f<\/strong> \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u0442 \u043c\u0435\u0442\u043a\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044e.  \u0412\u043e\u0442 \u044f\u0440\u043b\u044b\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043d \u0434\u0430\u0435\u0442 \u043c\u043d\u0435 \u0434\u043b\u044f \u043c\u043e\u0435\u0439 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438, \u043f\u044b\u0442\u0430\u044e\u0449\u0435\u0439\u0441\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u0438\u0437 \u0441\u0435\u0431\u044f \u0438\u043d\u0444\u043b\u044e\u0435\u043d\u0441\u0435\u0440\u0430:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/daleonai.com\/images\/screen-shot-2020-10-15-at-11.43.18-am.png\" alt=\"\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 Vision API, \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u044e\u0449\u0435\u0433\u043e \u043d\u0430\u0440\u044f\u0434\" title=\"Vision API \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043c\u0435\u0442\u043e\u043a \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438.\"\/><\/p>\n<p>\u042f\u0440\u043b\u044b\u043a\u0438 \u0440\u0430\u043d\u0436\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043f\u043e \u0442\u043e\u043c\u0443, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u043e\u0434\u0435\u043b\u044c \u0443\u0432\u0435\u0440\u0435\u043d\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043e\u043d\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044e.  \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u043e\u0434\u0438\u043d \u043b\u0435\u0439\u0431\u043b \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c \u00ab\u041c\u043e\u0434\u0430\u00bb (\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u043d\u043e\u0441\u0442\u044c 90%).  \u0427\u0442\u043e\u0431\u044b \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u041b\u0430\u0443\u0440\u044b, \u044f \u043f\u043e\u043c\u0435\u0442\u0438\u043b \u0438\u0445 \u0432\u0441\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Vision API \u0438 \u0443\u0434\u0430\u043b\u0438\u043b \u0432\u0441\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043d\u0435 \u043e\u0442\u043c\u0435\u0447\u0435\u043d\u043d\u044b\u0435 \u044f\u0440\u043b\u044b\u043a\u043e\u043c \u00ab\u041c\u043e\u0434\u0430\u00bb.  \u0412\u043e\u0442 \u043a\u043e\u0434:<\/p>\n<div class=\"language-python highlighter-rouge\">\n<div class=\"highlight\">\n<pre class=\"highlight\"><code><span class=\"kn\">from<\/span> <span class=\"nn\">google.cloud<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">vision<\/span>\n<span class=\"kn\">from<\/span> <span class=\"nn\">google.cloud.vision<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">types<\/span>\n\n<span class=\"c1\"># Path to all my inspo pics in the cloud\n<\/span><span class=\"n\">uris<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span>\n  <span class=\"s\">\"gs:\/\/inspo-pics-bucket\/pic1.jpg\"<\/span><span class=\"p\">,<\/span> \n  <span class=\"s\">\"gs:\/\/inspo-pics-bucket\/pic2.jpg\"<\/span><span class=\"p\">,<\/span>\n  <span class=\"p\">...<\/span>\n <span class=\"p\">]<\/span>\n\n<span class=\"c1\"># Create a Vision API Client\n<\/span><span class=\"n\">client<\/span> <span class=\"o\">=<\/span> <span class=\"n\">vision<\/span><span class=\"p\">.<\/span><span class=\"n\">ImageAnnotatorClient<\/span><span class=\"p\">()<\/span>\n\n<span class=\"c1\"># Keep track of all the fashion pics\n<\/span><span class=\"n\">fashionPics<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[]<\/span>\n\n<span class=\"k\">for<\/span> <span class=\"n\">uri<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">uris<\/span><span class=\"p\">:<\/span>\n  <span class=\"n\">image_source<\/span> <span class=\"o\">=<\/span> <span class=\"n\">vision<\/span><span class=\"p\">.<\/span><span class=\"n\">types<\/span><span class=\"p\">.<\/span><span class=\"n\">ImageSource<\/span><span class=\"p\">(<\/span><span class=\"n\">image_uri<\/span><span class=\"o\">=<\/span><span class=\"s\">\"gcs\/path\/to\/file\"<\/span><span class=\"p\">)<\/span>\n  <span class=\"n\">labels<\/span> <span class=\"o\">=<\/span> <span class=\"n\">client<\/span><span class=\"p\">.<\/span><span class=\"n\">label_detection<\/span><span class=\"p\">(<\/span><span class=\"n\">image<\/span><span class=\"o\">=<\/span><span class=\"n\">image<\/span><span class=\"p\">).<\/span><span class=\"n\">label_annotations<\/span>\n  <span class=\"c1\"># Only save images that have the label \"Fashion\"\n<\/span>  <span class=\"k\">if<\/span> <span class=\"nb\">any<\/span><span class=\"p\">([<\/span><span class=\"n\">x<\/span><span class=\"p\">.<\/span><span class=\"n\">description<\/span> <span class=\"o\">==<\/span> <span class=\"s\">\"Fashion\"<\/span> <span class=\"k\">for<\/span> <span class=\"n\">x<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">labels<\/span><span class=\"p\">]):<\/span>\n    <span class=\"n\">fashionPics<\/span><span class=\"p\">.<\/span><span class=\"n\">append<\/span><span class=\"p\">(<\/span><span class=\"n\">uri<\/span><span class=\"p\">)<\/span>\n<\/code><\/pre>\n<\/div>\n<\/div>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u043f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u0434, \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0435\u0433\u043e \u0437\u0434\u0435\u0441\u044c.<\/p>\n<h2 id=\"digitizing-my-closet\">\u041e\u0446\u0438\u0444\u0440\u043e\u0432\u043a\u0430 \u043c\u043e\u0435\u0433\u043e \u0448\u043a\u0430\u0444\u0430<\/h2>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0446\u0435\u043b\u044c \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b\u043e \u043c\u043e\u0434\u043d\u044b\u0435 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u041b\u0430\u0443\u0440\u044b \u0438 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043b\u043e \u043c\u043d\u0435 \u0432\u0435\u0449\u0438 \u0432 \u043c\u043e\u0435\u043c \u0448\u043a\u0430\u0444\u0443, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u043c\u043e\u0433\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0438\u0445 \u0432\u043e\u0441\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f.  \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0441\u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u043c\u0435\u0442 \u043e\u0434\u0435\u0436\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443 \u043c\u0435\u043d\u044f \u0431\u044b\u043b, \u0447\u0442\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439, \u0435\u0441\u043b\u0438 \u0431\u044b \u0443 \u043c\u0435\u043d\u044f \u043d\u0435 \u0431\u044b\u043b\u043e \u043e\u0447\u0435\u043d\u044c \u0442\u0435\u0441\u043d\u043e\u0433\u043e \u0448\u043a\u0430\u0444\u0430.<\/p>\n<p>\u042f \u043f\u043e\u0432\u0435\u0441\u0438\u043b \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0440\u0435\u0434\u043c\u0435\u0442 \u043d\u0430 \u0441\u0432\u043e\u0439 \u043c\u0430\u043d\u0435\u043a\u0435\u043d \u0438 \u0441\u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0440\u043e\u0432\u0430\u043b.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/daleonai.com\/images\/photos_of_closet.gif\" alt=\"gif \u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043a\u0435 \u0440\u0430\u0437\u043d\u044b\u0445 \u043d\u0430\u0440\u044f\u0434\u043e\u0432 \u043d\u0430 \u043c\u0430\u043d\u0435\u043a\u0435\u043d\u0435 \u0438 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438\" title=\"\u0424\u043e\u0442\u043e\u0441\u044a\u0435\u043c\u043a\u0430 \u043e\u0434\u0435\u0436\u0434\u044b \u0434\u043b\u044f \u043c\u043e\u0435\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445\"\/><\/p>\n<h2 id=\"using-the-vision-product-search-api\">\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 API \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432 Vision<\/h2>\n<p>\u041a\u043e\u0433\u0434\u0430 \u0443 \u043c\u0435\u043d\u044f \u0431\u044b\u043b\u0438 \u0432\u0441\u0435 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438, \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u043b\u044f\u044e\u0449\u0438\u0435 \u043c\u0435\u043d\u044f \u0432 \u043c\u043e\u0434\u0435, \u0438 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u0432 \u0448\u043a\u0430\u0444\u0443, \u044f \u0431\u044b\u043b \u0433\u043e\u0442\u043e\u0432 \u043d\u0430\u0447\u0430\u0442\u044c \u0434\u0430\u0432\u0430\u0442\u044c \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438 \u043f\u043e \u0432\u044b\u0431\u043e\u0440\u0443 \u043e\u0434\u0435\u0436\u0434\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Google Vision Product Search API.<\/p>\n<p>\u042d\u0442\u043e\u0442 API \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0434\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0442\u0430\u043a\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043a\u0430\u043a \u00ab\u043f\u043e\u0438\u0441\u043a \u043f\u043e\u0445\u043e\u0436\u0438\u0445 \u0442\u043e\u0432\u0430\u0440\u043e\u0432\u00bb.  \u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f Pinterest:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/daleonai.com\/images\/pinterest.png\" alt=\"\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u043e\u0445\u043e\u0436\u0438\u0445 \u0442\u043e\u0432\u0430\u0440\u043e\u0432 \u0432 Pinterest\" title=\"\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u043e\u0445\u043e\u0436\u0438\u0445 \u0442\u043e\u0432\u0430\u0440\u043e\u0432 \u0432 Pinterest\"\/><\/p>\n<p>IKEA \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u043b\u0430 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u0443\u044e \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043a\u0443\u043f\u0430\u0442\u0435\u043b\u044f\u043c \u0438\u0441\u043a\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0442\u043e\u0432\u0430\u0440\u044b \u043f\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0442\u0430\u043a\u043e\u0439 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/daleonai.com\/images\/ikea_gif.gif\" alt=\"\u0412\u0438\u0434\u0435\u043e \u043e \u043f\u043e\u0438\u0441\u043a\u0435 \u043f\u043e\u043a\u0443\u043f\u0430\u0442\u0435\u043b\u0435\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u0442\u043e\u0432\u0430\u0440\u043e\u0432 \u0418\u041a\u0415\u0410 \u043f\u043e \u0444\u043e\u0442\u043e\" title=\"\u0418\u0441\u0445\u043e\u0434\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043e\u0442 TechCrunch\"\/><\/p>\n<p>\u042f \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Product Search API \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043d\u043e \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0442\u043e\u0432\u0430\u0440\u043e\u0432, \u044f \u0431\u0443\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0433\u0430\u0440\u0434\u0435\u0440\u043e\u0431 \u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0445\u043e\u0436\u0438\u0435 \u0438\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u044b\u0435 <em>\u043f\u0440\u0435\u0434\u043c\u0435\u0442\u044b<\/em>\u044f \u0431\u0443\u0434\u0443 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u0442\u044c \u0446\u0435\u043b\u044b\u0435 \u043d\u0430\u0440\u044f\u0434\u044b.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 API, \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e:<\/p>\n<ol>\n<li>\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0439 \u0438\u0437 \u0448\u043a\u0430\u0444\u0430 \u0432 \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435<\/li>\n<li>\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043d\u043e\u0432\u0443\u044e \u0433\u0440\u0443\u043f\u043f\u0443 \u0442\u043e\u0432\u0430\u0440\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e API \u043f\u043e\u0438\u0441\u043a\u0430 \u0442\u043e\u0432\u0430\u0440\u043e\u0432.<\/li>\n<li>\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u0430 \u0432 \u0432\u0430\u0448\u0435\u043c \u0448\u043a\u0430\u0444\u0443<\/li>\n<li>\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c (\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e) \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u044d\u0442\u0438\u0445 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432<\/li>\n<\/ol>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u044f \u043f\u043e\u043f\u044b\u0442\u0430\u043b\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 Google Python, \u043d\u043e \u043e\u043d\u0430 \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043d\u0435\u0443\u043a\u043b\u044e\u0436\u0435\u0439, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u0438\u0442\u043e\u0433\u0435 \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0441\u0432\u043e\u044e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0438 Python Product Search, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u0437\u0434\u0435\u0441\u044c (\u043d\u0430 PyPi).  \u0412\u043e\u0442 \u043a\u0430\u043a \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432 \u043a\u043e\u0434\u0435:<\/p>\n<div class=\"language-python highlighter-rouge\">\n<div class=\"highlight\">\n<pre class=\"highlight\"><code><span class=\"kn\">from<\/span> <span class=\"nn\">visionproductsearch.ProductSearch<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">ProductSearch<\/span><span class=\"p\">,<\/span> <span class=\"n\">ProductCategories<\/span>\n\n<span class=\"c1\"># Initialize ProductSearch with your credentials\n# Pass a path to the storage bucket where you'd like to save image files\n<\/span><span class=\"n\">ps<\/span> <span class=\"o\">=<\/span> <span class=\"n\">ProductSearch<\/span><span class=\"p\">(<\/span><span class=\"sb\">`my_gcp_project_id`<\/span><span class=\"p\">,<\/span> <span class=\"s\">'us-west1'<\/span><span class=\"p\">,<\/span> <span class=\"s\">'path\/to\/creds.json'<\/span><span class=\"p\">,<\/span> <span class=\"s\">'my_gcp_bucket_name'<\/span> <span class=\"p\">)<\/span>\n\n<span class=\"c1\"># Create a new product set\n<\/span><span class=\"n\">productSet<\/span> <span class=\"o\">=<\/span> <span class=\"n\">ps<\/span><span class=\"p\">.<\/span><span class=\"n\">createProductSet<\/span><span class=\"p\">(<\/span><span class=\"s\">'my_test_set'<\/span><span class=\"p\">)<\/span>\n\n<span class=\"c1\"># Create a new product\n<\/span><span class=\"n\">product<\/span> <span class=\"o\">=<\/span> <span class=\"n\">ps<\/span><span class=\"p\">.<\/span><span class=\"n\">createProduct<\/span><span class=\"p\">(<\/span><span class=\"s\">'my_fancy_shirt'<\/span><span class=\"p\">,<\/span> <span class=\"n\">ProductCategories<\/span><span class=\"p\">.<\/span><span class=\"n\">APPAREL<\/span><span class=\"p\">)<\/span>\n\n<span class=\"c1\"># Add a reference image to a product\n<\/span><span class=\"n\">product<\/span><span class=\"p\">.<\/span><span class=\"n\">addReferenceImage<\/span><span class=\"p\">(<\/span><span class=\"s\">'.\/skirt_pic.jpg'<\/span><span class=\"p\">)<\/span>\n\n<span class=\"c1\"># List all reference images for a product\n<\/span><span class=\"k\">for<\/span> <span class=\"n\">img<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">product<\/span><span class=\"p\">.<\/span><span class=\"n\">listReferenceImages<\/span><span class=\"p\">():<\/span>\n    <span class=\"k\">print<\/span><span class=\"p\">(<\/span><span class=\"n\">img<\/span><span class=\"p\">)<\/span>\n\n<span class=\"c1\"># Add a product to a product set\n<\/span><span class=\"n\">product<\/span><span class=\"p\">.<\/span><span class=\"n\">addProduct<\/span><span class=\"p\">(<\/span><span class=\"n\">product<\/span><span class=\"p\">)<\/span>\n\n<span class=\"c1\"># List all products in a product set\n<\/span><span class=\"k\">for<\/span> <span class=\"n\">p<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">productSet<\/span><span class=\"p\">.<\/span><span class=\"n\">listProducts<\/span><span class=\"p\">():<\/span>\n    <span class=\"k\">print<\/span><span class=\"p\">(<\/span><span class=\"n\">p<\/span><span class=\"p\">)<\/span>\n\n<span class=\"c1\"># Search for similar products by image\n<\/span><span class=\"n\">productSet<\/span><span class=\"p\">.<\/span><span class=\"n\">search<\/span><span class=\"p\">(<\/span><span class=\"n\">ProductCategories<\/span><span class=\"p\">.<\/span><span class=\"n\">APPAREL<\/span><span class=\"p\">,<\/span> <span class=\"n\">file_path<\/span><span class=\"o\">=<\/span><span class=\"s\">'img\/to\/search.jpg'<\/span><span class=\"p\">)<\/span>\n<\/code><\/pre>\n<\/div>\n<\/div>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u044d\u0442\u0443 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443-\u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0443 <strong>\u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0439 \u0432 \u043a\u043e\u0440\u0437\u0438\u043d\u0443 \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0433\u043e \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430<\/strong>\u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u0435\u0434\u043c\u0435\u0442 \u043e\u0434\u0435\u0436\u0434\u044b \u0432 \u0441\u0432\u043e\u0439 \u043d\u0430\u0431\u043e\u0440 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432 \u0438\u0437 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f:<\/p>\n<div class=\"language-python highlighter-rouge\">\n<div class=\"highlight\">\n<pre class=\"highlight\"><code><span class=\"c1\"># Create a new product\n<\/span><span class=\"n\">product<\/span> <span class=\"o\">=<\/span> <span class=\"n\">ps<\/span><span class=\"p\">.<\/span><span class=\"n\">createProduct<\/span><span class=\"p\">(<\/span><span class=\"s\">'my_fancy_shirt'<\/span><span class=\"p\">,<\/span> <span class=\"n\">ProductCategories<\/span><span class=\"p\">.<\/span><span class=\"n\">APPAREL<\/span><span class=\"p\">)<\/span>\n\n<span class=\"c1\"># Add a reference image to a product\n<\/span><span class=\"n\">product<\/span><span class=\"p\">.<\/span><span class=\"n\">addReferenceImage<\/span><span class=\"p\">(<\/span><span class=\"s\">'.\/skirt_pic.jpg'<\/span><span class=\"p\">)<\/span>\n<\/code><\/pre>\n<\/div>\n<\/div>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b, \u0434\u043e\u0440\u043e\u0433\u043e\u0439 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c, \u0445\u043e\u0442\u0438\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432 \u0438\u0437 \u0432\u0430\u0448\u0438\u0445 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0439 \u0432 \u0448\u043a\u0430\u0444\u0443, \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0441\u043a\u0440\u0438\u043f\u0442 Python, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0432\u0430\u043c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u0430\u0431\u043e\u0440 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432 \u0438\u0437 \u043f\u0430\u043f\u043a\u0438 \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0440\u0430\u0431\u043e\u0447\u0435\u043c \u0441\u0442\u043e\u043b\u0435.  \u0422\u043e\u043b\u044c\u043a\u043e:<\/p>\n<ol>\n<li>\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u043a\u043e\u0434 \u0441 GitHub \u0438 \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 \u043f\u0430\u043f\u043a\u0443 instafashion\/scripts:<\/li>\n<\/ol>\n<div class=\"language-shell highlighter-rouge\">\n<div class=\"highlight\">\n<pre class=\"highlight\"><code><span class=\"c\"># Download the code <\/span>\ngit clone git@github.com:google\/making_with_ml.git\n\n<span class=\"c\"># CD into the right folder<\/span>\n<span class=\"nb\">cd <\/span>making_with_ml\/instafashion\/scripts\n<\/code><\/pre>\n<\/div>\n<\/div>\n<ol>\n<li>\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043d\u043e\u0432\u0443\u044e \u043f\u0430\u043f\u043a\u0443 \u043d\u0430 \u0441\u0432\u043e\u0435\u043c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0439 \u0432\u0430\u0448\u0435\u0439 \u043e\u0434\u0435\u0436\u0434\u044b (\u043c\u043e\u044f \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <code class=\"language-plaintext highlighter-rouge\">my_closet<\/code>):<\/li>\n<\/ol>\n<div class=\"language-shell highlighter-rouge\">\n<div class=\"highlight\">\n<pre class=\"highlight\"><code><span class=\"nb\">mkdir <\/span>my_closet\n<span class=\"nb\">cd <\/span>my_closet\n<\/code><\/pre>\n<\/div>\n<\/div>\n<ol>\n<li>\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043d\u043e\u0432\u0443\u044e \u043f\u0430\u043f\u043a\u0443 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u0430 \u043e\u0434\u0435\u0436\u0434\u044b \u0438 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u0435 \u0432\u0441\u0435 \u0441\u0432\u043e\u0438 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u0430 \u0432 \u043f\u0430\u043f\u043a\u0443:<\/li>\n<\/ol>\n<p><img decoding=\"async\" src=\"https:\/\/daleonai.com\/images\/local_closet.gif\" alt=\"\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043f\u0430\u043f\u043a\u0443 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u0430 \u043e\u0434\u0435\u0436\u0434\u044b\" title=\"\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043f\u0430\u043f\u043a\u0443 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u0430 \u043e\u0434\u0435\u0436\u0434\u044b\"\/><\/p>\n<p>\u0418\u0442\u0430\u043a, \u043d\u0430 \u0433\u0438\u0444\u043a\u0435 \u0432\u044b\u0448\u0435 \u0432\u0441\u0435 \u043c\u043e\u0438 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u0441 \u0447\u0435\u0440\u043d\u044b\u043c \u0431\u043e\u043c\u0431\u0430\u0440\u0434\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u043e\u043c \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0435 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c <code class=\"language-plaintext highlighter-rouge\">black_bomber_jacket<\/code>.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u043e\u0439 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439, \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0437\u0432\u0430\u0442\u044c \u043f\u0430\u043f\u043a\u0438 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0441\u043e\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435: <code class=\"language-plaintext highlighter-rouge\">name_of_your_item_shoe<\/code> \u0433\u0434\u0435 <code class=\"language-plaintext highlighter-rouge\">shoe<\/code> \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0438\u0437 <code class=\"language-plaintext highlighter-rouge\">[skirt, dress, jacket, top, shoe, shorts, scarf, pants]<\/code>.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/daleonai.com\/images\/screen-shot-2020-10-28-at-4.49.16-pm.png\" alt=\"\"\/><\/p>\n<ol>\n<li>\u041f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u0441 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u044f\u043c\u0438 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e, \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0432 \u0444\u0430\u0439\u043b `.env_template`:<\/li>\n<\/ol>\n<div class=\"language-powershell highlighter-rouge\">\n<div class=\"highlight\">\n<pre class=\"highlight\"><code><span class=\"n\">cp<\/span><span class=\"w\"> <\/span><span class=\"o\">.<\/span><span class=\"nf\">env_template<\/span><span class=\"w\"> <\/span><span class=\"o\">.<\/span><span class=\"nf\">env<\/span><span class=\"w\">\n\n<\/span><span class=\"c\"># In the .env file, fill out these fields:<\/span><span class=\"w\">\n<\/span><span class=\"n\">export<\/span><span class=\"w\"> <\/span><span class=\"nx\">PROJECTID<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"YOUR_GCP_PROJECT_ID\"<\/span><span class=\"w\">\n<\/span><span class=\"n\">export<\/span><span class=\"w\"> <\/span><span class=\"nx\">BUCKET<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"YOUR_CLOSET_STORAGE_BUCKET\"<\/span><span class=\"w\">\n<\/span><span class=\"n\">export<\/span><span class=\"w\"> <\/span><span class=\"nx\">CREDS<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"path\/to\/key.json\"<\/span><span class=\"w\">\n<\/span><span class=\"n\">export<\/span><span class=\"w\"> <\/span><span class=\"nx\">CLOSET_DIR<\/span><span class=\"o\">=<\/span><span class=\"s2\">\".\/my_closet\"<\/span><span class=\"w\">\n<\/span><span class=\"n\">export<\/span><span class=\"w\"> <\/span><span class=\"nx\">PRODUCT_SET<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"PRODUCT_SET_NAME\"<\/span><span class=\"w\">\n<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<p>(\u041e, \u043a\u0441\u0442\u0430\u0442\u0438: \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u0430 \u0443\u0447\u0435\u0442\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c Google Cloud, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 API! \u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u044b \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0435\u0442\u0435, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0444\u0430\u0439\u043b \u0443\u0447\u0435\u0442\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.)<\/p>\n<ol>\n<li>\u0417\u0430\u0442\u0435\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 Python \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0441\u043a\u0440\u0438\u043f\u0442. <code class=\"language-plaintext highlighter-rouge\">product_set_from_dir.py<\/code>:<\/li>\n<\/ol>\n<div class=\"language-powershell highlighter-rouge\">\n<div class=\"highlight\">\n<pre class=\"highlight\"><code><span class=\"err\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">pip<\/span><span class=\"w\"> <\/span><span class=\"nx\">install<\/span><span class=\"w\"> <\/span><span class=\"nt\">-r<\/span><span class=\"w\"> <\/span><span class=\"nx\">requirements.txt<\/span><span class=\"w\">\n<\/span><span class=\"err\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">python<\/span><span class=\"w\"> <\/span><span class=\"nx\">product_set_from_dir.py<\/span><span class=\"w\">\n<\/span><span class=\"s2\">\"Added 200 products to set\"<\/span><span class=\"w\">\n<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<p>\u0423\u0444, \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0448\u0430\u0433\u043e\u0432, \u0447\u0435\u043c \u044f \u0434\u0443\u043c\u0430\u043b!<\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0435 \u044d\u0442\u043e\u0442 \u0441\u043a\u0440\u0438\u043f\u0442 Python, <code class=\"language-plaintext highlighter-rouge\">product_set_from_dir.py<\/code>, \u0432\u0430\u0448\u0438 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u043e\u0434\u0435\u0436\u0434\u044b \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044e\u0442\u0441\u044f \u0432 \u043e\u0431\u043b\u0430\u043a\u043e, \u0430 \u0437\u0430\u0442\u0435\u043c \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0438\u043b\u0438 \u00ab\u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u0443\u044e\u0442\u0441\u044f\u00bb \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e API \u043f\u043e\u0438\u0441\u043a\u0430 \u0442\u043e\u0432\u0430\u0440\u043e\u0432.  \u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u0438 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043d\u044f\u0442\u044c \u0434\u043e 30 \u043c\u0438\u043d\u0443\u0442, \u0442\u0430\u043a \u0447\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0439\u0442\u0435 \u0432\u043e\u0437\u0434\u0443\u0448\u043d\u043e\u0433\u043e \u0437\u043c\u0435\u044f \u0438\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u0432 \u044d\u0442\u043e\u043c \u0440\u043e\u0434\u0435.<\/p>\n<h2 id=\"searching-for-similar-items\">\u041f\u043e\u0438\u0441\u043a \u043f\u043e\u0445\u043e\u0436\u0438\u0445 \u0442\u043e\u0432\u0430\u0440\u043e\u0432<\/h2>\n<p>\u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u0448 \u043d\u0430\u0431\u043e\u0440 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0447\u0430\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u043e\u0445\u043e\u0436\u0438\u0445 \u0442\u043e\u0432\u0430\u0440\u043e\u0432.  \u0423\u0443\u0443\u0443\u0443!  \ud83c\udf8a<\/p>\n<p>\u0412 \u043a\u043e\u0434\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435:<\/p>\n<div class=\"language-python highlighter-rouge\">\n<div class=\"highlight\">\n<pre class=\"highlight\"><code><span class=\"c1\"># Create a Product Search client\n<\/span><span class=\"n\">ps<\/span> <span class=\"o\">=<\/span> <span class=\"n\">ProductSearch<\/span><span class=\"p\">(<\/span><span class=\"s\">\"YOUR_GCP_PROJECTID\"<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"path\/to\/creds.json\"<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"YOUR_CLOSET_BUCKET\"<\/span><span class=\"p\">)<\/span>\n<span class=\"c1\"># Grab the product set you just created\n<\/span><span class=\"n\">productSet<\/span> <span class=\"o\">=<\/span> <span class=\"n\">ps<\/span><span class=\"p\">.<\/span><span class=\"n\">getProductSet<\/span><span class=\"p\">(<\/span><span class=\"s\">\"YOUR_PRODUCT_SET_NAME\"<\/span><span class=\"p\">)<\/span>\n\n<span class=\"c1\"># Call \"search\" with a path to an inspiration picture\n<\/span><span class=\"n\">results<\/span> <span class=\"o\">=<\/span> <span class=\"n\">ProductSet<\/span><span class=\"p\">.<\/span><span class=\"n\">search<\/span><span class=\"p\">(<\/span><span class=\"n\">ProductCategories<\/span><span class=\"p\">.<\/span><span class=\"n\">APPAREL<\/span><span class=\"p\">,<\/span> <span class=\"n\">image_uri<\/span><span class=\"o\">=<\/span><span class=\"s\">\"gs:\/\/path\/to\/inspo.jpg\"<\/span><span class=\"p\">)<\/span>\n\n<span class=\"s\">''' Returns:\n{'score': 0.7648860812187195,\n  'label': 'Shoe',\n  'matches': [{'product': &lt;pyvisionproductsearch.ProductSearch.ProductSearch.Product at 0x14992d2e0&gt;,\n    'score': 0.35719582438468933,\n    'image': 'projects\/yourprojectid\/locations\/us-west1\/products\/high_rise_white_jeans_pants\/referenceImages\/6550f579-6b26-433a-8fa6-56e5bbca95c1'},\n   {'product': &lt;pyvisionproductsearch.ProductSearch.ProductSearch.Product at 0x14992d5b0&gt;,\n    'score': 0.32596680521965027,\n    'image': 'projects\/yourprojectid\/locations\/us-west1\/products\/white_boot_shoe\/referenceImages\/56248bb2-9d5e-4004-b397-6c3b2fb0edc3'},\n   {'product': &lt;pyvisionproductsearch.ProductSearch.ProductSearch.Product at 0x14a423850&gt;,\n    'score': 0.26240724325180054,\n    'image': 'projects\/yourprojectid\/locations\/us-west1\/products\/tan_strap_sandal_shoe\/referenceImages\/f970af65-c51e-42e8-873c-d18080f00430'}],\n  'boundingBox': [x: 0.6475263833999634\n  y: 0.8726409077644348\n  , x: 0.7815263271331787\n  y: 0.8726409077644348\n  , x: 0.7815263271331787\n  y: 0.9934644103050232\n  , x: 0.6475263833999634\n  y: 0.9934644103050232\n  ]},\n {'score': 0.8066604733467102,\n  'label': 'Shorts',\n  'matches': [{'product': &lt;pyvisionproductsearch.ProductSearch.ProductSearch.Product at 0x106a4fa60&gt;,\n    'score': 0.27552375197410583,\n    'image': 'projects\/yourprojectid\/locations\/us-west1\/products\/white_sneaker_shoe_*\/referenceImages\/a109b530-56ff-42bc-ac73-d60578b7f363'},\n   {'product': &lt;pyvisionproductsearch.ProductSearch.ProductSearch.Product at 0x106a4f400&gt;,\n    'score': 0.2667400538921356,\n    'image': 'projects\/yourprojectid\/locations\/us-west1\/products\/grey_vneck_tee_top_*\/referenceImages\/cc6f873c-328e-481a-86fb-a2116614ce80'},\n   {'product': &lt;pyvisionproductsearch.ProductSearch.ProductSearch.Product at 0x106a4f8e0&gt;,\n    'score': 0.2606571912765503,\n    'image': 'projects\/yourprojectid\/locations\/us-west1\/products\/high_rise_white_jeans_pants_*\/referenceImages\/360b26d8-a844-4a83-bf97-ef80f2243fdb'},\n   {'product': &lt;pyvisionproductsearch.ProductSearch.ProductSearch.Product at 0x106a4fb80&gt;],\n  'boundingBox': [x: 0.4181176424026489\n  y: 0.40305882692337036\n  , x: 0.6837647557258606\n  y: 0.40305882692337036\n  , x: 0.6837647557258606\n  y: 0.64000004529953\n  , x: 0.4181176424026489\n  y: 0.64000004529953\n  ]}]\n  '''<\/span>\n<\/code><\/pre>\n<\/div>\n<\/div>\n<p>\u041e\u0442\u0432\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0434\u0430\u043d\u043d\u044b\u0445, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435, \u043a\u0430\u043a\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0431\u044b\u043b\u0438 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u043d\u044b \u043d\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0439 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u00ab\u044e\u0431\u043a\u0430\u00bb, \u00ab\u0432\u0435\u0440\u0445\u00bb) \u0438 \u043a\u0430\u043a\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432 \u0432\u0430\u0448\u0435\u043c \u043d\u0430\u0431\u043e\u0440\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0438\u043c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0438.  API \u0442\u0430\u043a\u0436\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u043e\u043b\u0435 \u00ab\u041e\u0446\u0435\u043d\u043a\u0430\u00bb \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u0432\u0430\u043c, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0432\u0435\u0440\u0435\u043d API \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432 \u0432\u0430\u0448\u0435\u043c \u043d\u0430\u0431\u043e\u0440\u0435 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044e.<\/p>\n<h2 id=\"from-matching-items-to-matching-outfits\">\u041e\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0445 \u0432\u0435\u0449\u0435\u0439 \u043a \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u043c \u043d\u0430\u0440\u044f\u0434\u0430\u043c<\/h2>\n<p>API \u043f\u043e\u0438\u0441\u043a\u0430 \u0442\u043e\u0432\u0430\u0440\u043e\u0432 \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442 \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u043b\u044f\u044e\u0449\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 (\u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0444\u043e\u0442\u043e \u041b\u0430\u0443\u0440\u044b) \u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0445\u043e\u0436\u0438\u0435 \u0432\u0435\u0449\u0438 \u0432 \u043c\u043e\u0435\u043c \u0433\u0430\u0440\u0434\u0435\u0440\u043e\u0431\u0435.  \u041d\u043e \u0442\u043e, \u0447\u0442\u043e \u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u043e\u0447\u0443 \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u044d\u0442\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0432\u043e\u0435\u0434\u0438\u043d\u043e <em>\u043d\u0430\u0440\u044f\u0434\u044b<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u0442 \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u0442\u043e\u043f\u0430, \u043e\u0434\u043d\u043e\u0439 \u043f\u0430\u0440\u044b \u0431\u0440\u044e\u043a, \u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u0430 \u043e\u0431\u0443\u0432\u0438 \u0438\u00a0\u0442.\u00a0\u0434. \u0418\u043d\u043e\u0433\u0434\u0430 Product Search API \u043d\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 \u043d\u0430\u0440\u044f\u0434.  \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u041b\u043e\u0440\u0430 \u043e\u0434\u0435\u0442\u0430 \u0432 \u0434\u043b\u0438\u043d\u043d\u0443\u044e \u0440\u0443\u0431\u0430\u0448\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a, <em>\u043f\u043e\u0447\u0442\u0438<\/em> \u0431\u044b\u0442\u044c \u043f\u043b\u0430\u0442\u044c\u0435\u043c, API \u043c\u043e\u0436\u0435\u0442 \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0432 \u043c\u043e\u0439 \u0433\u0430\u0440\u0434\u0435\u0440\u043e\u0431 \u043f\u043e\u0445\u043e\u0436\u0443\u044e \u0440\u0443\u0431\u0430\u0448\u043a\u0443 \u0438 \u043f\u043b\u0430\u0442\u044c\u0435.  \u0427\u0442\u043e\u0431\u044b \u043e\u0431\u043e\u0439\u0442\u0438 \u044d\u0442\u043e, \u043c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043b\u043e\u0433\u0438\u043a\u0438 \u043d\u0430\u0440\u044f\u0434\u0430 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u0430\u0440\u044f\u0434\u0430 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 API \u043f\u043e\u0438\u0441\u043a\u0430:<\/p>\n<div class=\"language-python highlighter-rouge\">\n<div class=\"highlight\">\n<pre class=\"highlight\"><code><span class=\"c1\"># This code snippet lets you avoid pairing items that don't\n# make sense together in an outfit (i.e. a top AND a dress \n<\/span><span class=\"k\">def<\/span> <span class=\"nf\">canAddItem<\/span><span class=\"p\">(<\/span><span class=\"n\">existingArray<\/span><span class=\"p\">,<\/span> <span class=\"n\">newType<\/span><span class=\"p\">):<\/span>\n    <span class=\"n\">bottoms<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span><span class=\"s\">\"pants\"<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"skirt\"<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"shorts\"<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"dress\"<\/span><span class=\"p\">}<\/span>\n    <span class=\"n\">newType<\/span> <span class=\"o\">=<\/span> <span class=\"n\">newType<\/span><span class=\"p\">.<\/span><span class=\"n\">lower<\/span><span class=\"p\">()<\/span>\n    <span class=\"k\">if<\/span> <span class=\"n\">newType<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">existingArray<\/span><span class=\"p\">:<\/span>\n        <span class=\"k\">return<\/span> <span class=\"bp\">False<\/span>\n    <span class=\"k\">if<\/span> <span class=\"n\">newType<\/span> <span class=\"o\">==<\/span> <span class=\"s\">\"shoe\"<\/span><span class=\"p\">:<\/span>\n        <span class=\"k\">return<\/span> <span class=\"bp\">True<\/span>\n    <span class=\"k\">if<\/span> <span class=\"n\">newType<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">bottoms<\/span> <span class=\"ow\">and<\/span> <span class=\"nb\">len<\/span><span class=\"p\">(<\/span><span class=\"n\">bottoms<\/span><span class=\"p\">.<\/span><span class=\"n\">intersection<\/span><span class=\"p\">(<\/span><span class=\"n\">existingArray<\/span><span class=\"p\">)):<\/span>\n        <span class=\"k\">return<\/span> <span class=\"bp\">False<\/span>\n    <span class=\"k\">if<\/span> <span class=\"n\">newType<\/span> <span class=\"o\">==<\/span> <span class=\"s\">\"top\"<\/span> <span class=\"ow\">and<\/span> <span class=\"s\">\"dress\"<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">existingArray<\/span><span class=\"p\">:<\/span>\n        <span class=\"k\">return<\/span> <span class=\"bp\">False<\/span>\n    <span class=\"k\">return<\/span> <span class=\"bp\">True<\/span>\n<\/code><\/pre>\n<\/div>\n<\/div>\n<h2 id=\"scoring-outfits\">\u041f\u043e\u0434\u0441\u0447\u0435\u0442 \u043e\u0447\u043a\u043e\u0432<\/h2>\n<p>\u0415\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u044f \u043d\u0435 \u043c\u043e\u0433 \u0432\u043e\u0441\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432\u0441\u0435 \u043d\u0430\u0440\u044f\u0434\u044b \u041b\u0430\u0443\u0440\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0449\u0438 \u0438\u0437 \u0441\u0432\u043e\u0435\u0433\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0433\u0430\u0440\u0434\u0435\u0440\u043e\u0431\u0430.  \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0440\u0435\u0448\u0438\u043b, \u0447\u0442\u043e \u043c\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u043d\u0430\u0440\u044f\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u043c\u043e\u0433\u0443 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0442\u043e\u0447\u043d\u043e \u0432\u043e\u0441\u0441\u043e\u0437\u0434\u0430\u0442\u044c (\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043e\u0446\u0435\u043d\u043a\u0438 \u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u043d\u043e\u0441\u0442\u0438, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0435 API \u043f\u043e\u0438\u0441\u043a\u0430 \u0442\u043e\u0432\u0430\u0440\u043e\u0432), \u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u00ab\u043e\u0446\u0435\u043d\u043a\u0443\u00bb \u0434\u043b\u044f \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u044b\u0445 \u043d\u0430\u0440\u044f\u0434\u043e\u0432.<\/p>\n<p>\u0412\u044b\u044f\u0441\u043d\u0435\u043d\u0438\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u00ab\u0437\u0430\u0431\u0438\u0442\u044c\u00bb \u043d\u0430\u0440\u044f\u0434, \u2014 \u044d\u0442\u043e \u0442\u0432\u043e\u0440\u0447\u0435\u0441\u043a\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0435\u0442 \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e\u0433\u043e \u043e\u0442\u0432\u0435\u0442\u0430!  \u0412\u043e\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043e\u0446\u0435\u043d\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b.  \u041e\u043d\u0438 \u0434\u0430\u044e\u0442 \u043d\u0430\u0440\u044f\u0434\u044b, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0435 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u044c\u044e \u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u043d\u043e\u0441\u0442\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0431\u043e\u043b\u044c\u0448\u0435\u043c\u0443 \u0432\u0435\u0441\u0443, \u0438 \u0434\u0430\u044e\u0442 \u0431\u043e\u043d\u0443\u0441 \u043a \u043d\u0430\u0440\u044f\u0434\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0431\u043e\u043b\u044c\u0448\u0435\u043c\u0443 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u0432 \u0432 \u043c\u043e\u0435\u043c \u0448\u043a\u0430\u0444\u0443:<\/p>\n<div class=\"language-python highlighter-rouge\">\n<div class=\"highlight\">\n<pre class=\"highlight\"><code><span class=\"c1\"># Option 1: sum up the confidence scores for each closet item matched to the inspo photo\n<\/span><span class=\"k\">def<\/span> <span class=\"nf\">scoreOutfit1<\/span><span class=\"p\">(<\/span><span class=\"n\">matches<\/span><span class=\"p\">):<\/span>\n    <span class=\"k\">if<\/span> <span class=\"ow\">not<\/span> <span class=\"n\">matches<\/span><span class=\"p\">:<\/span>\n        <span class=\"k\">return<\/span> <span class=\"mi\">0<\/span>\n    <span class=\"k\">return<\/span> <span class=\"nb\">sum<\/span><span class=\"p\">([<\/span><span class=\"n\">match<\/span><span class=\"p\">[<\/span><span class=\"s\">'score'<\/span><span class=\"p\">]<\/span> <span class=\"k\">for<\/span> <span class=\"n\">match<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">matches<\/span><span class=\"p\">])<\/span> <span class=\"o\">\/<\/span> <span class=\"nb\">len<\/span><span class=\"p\">(<\/span><span class=\"n\">matches<\/span><span class=\"p\">)<\/span>\n\n<span class=\"c1\"># Option 2: Sum up the confidence scores only of items that matched with the inspo photo \n# with confidence &gt; 0.3. Also, because shoes will match most images _twice_ \n# (because people have two feet), only count the shoe confidence score once\n<\/span><span class=\"k\">def<\/span> <span class=\"nf\">scoreOutfit2<\/span><span class=\"p\">(<\/span><span class=\"n\">matches<\/span><span class=\"p\">):<\/span>\n    <span class=\"k\">if<\/span> <span class=\"ow\">not<\/span> <span class=\"nb\">len<\/span><span class=\"p\">(<\/span><span class=\"n\">matches<\/span><span class=\"p\">):<\/span>\n        <span class=\"k\">return<\/span> <span class=\"mi\">0<\/span>\n    \n    <span class=\"n\">noShoeSum<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">sum<\/span><span class=\"p\">([<\/span><span class=\"n\">x<\/span><span class=\"p\">[<\/span><span class=\"s\">'score'<\/span><span class=\"p\">]<\/span> <span class=\"k\">for<\/span> <span class=\"n\">x<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">matches<\/span> <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"n\">x<\/span><span class=\"p\">[<\/span><span class=\"s\">'score'<\/span><span class=\"p\">]<\/span> <span class=\"o\">&gt;<\/span> <span class=\"mf\">0.3<\/span> <span class=\"ow\">and<\/span> <span class=\"ow\">not<\/span> <span class=\"n\">isTypeMatch<\/span><span class=\"p\">(<\/span><span class=\"s\">\"shoe\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">x<\/span><span class=\"p\">[<\/span><span class=\"s\">\"label\"<\/span><span class=\"p\">]))])<\/span>\n    <span class=\"n\">shoeScore<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">0<\/span>\n    <span class=\"k\">try<\/span><span class=\"p\">:<\/span>\n        <span class=\"n\">shoeScore<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">max<\/span><span class=\"p\">([<\/span><span class=\"n\">x<\/span><span class=\"p\">[<\/span><span class=\"s\">'score'<\/span><span class=\"p\">]<\/span> <span class=\"k\">for<\/span> <span class=\"n\">x<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">matches<\/span> <span class=\"k\">if<\/span> <span class=\"n\">isTypeMatch<\/span><span class=\"p\">(<\/span><span class=\"s\">\"shoe\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">x<\/span><span class=\"p\">[<\/span><span class=\"s\">\"label\"<\/span><span class=\"p\">])])<\/span>\n    <span class=\"k\">except<\/span><span class=\"p\">:<\/span>\n        <span class=\"k\">pass<\/span>\n    <span class=\"k\">return<\/span> <span class=\"n\">noShoeSum<\/span> <span class=\"o\">+<\/span> <span class=\"n\">shoeScore<\/span> <span class=\"o\">*<\/span> <span class=\"mf\">0.5<\/span> <span class=\"c1\"># half the weight for shoes\n<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u043a\u0430\u043a \u0432\u0435\u0441\u044c \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432\u043c\u0435\u0441\u0442\u0435, \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 \u044d\u0442\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u043d\u043e\u0439 \u043a\u043d\u0438\u0436\u043a\u043e\u0439 Jupyter.<\/p>\n<h2 id=\"putting-it-all-together\">\u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0432\u0441\u0435 \u0432\u043c\u0435\u0441\u0442\u0435<\/h2>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0432\u0441\u044e \u043b\u043e\u0433\u0438\u043a\u0443 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u0430\u0440\u044f\u0434\u043e\u0432 \u0432 \u0441\u043a\u0440\u0438\u043f\u0442\u0435 Python, \u044f \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b \u0441\u043a\u0440\u0438\u043f\u0442 \u0438 \u0437\u0430\u043f\u0438\u0441\u0430\u043b \u0432\u0441\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0432 Firestore.  Firestore \u2014 \u044d\u0442\u043e \u0431\u0435\u0441\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u0430\u044f \u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u0430\u044f \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445, \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u044f \u0437\u0430\u043f\u0438\u0441\u0430\u043b \u0442\u0443\u0434\u0430 \u0432\u0441\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u044f \u0441 \u043c\u043e\u0438\u043c\u0438 \u043d\u0430\u0440\u044f\u0434\u0430\u043c\u0438, \u043c\u043d\u0435 \u0431\u044b\u043b\u043e \u043b\u0435\u0433\u043a\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0432\u043e\u043a\u0440\u0443\u0433 \u043d\u0435\u0435, \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0432\u0441\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b\u043e \u043a\u0440\u0430\u0441\u0438\u0432\u043e.  \u042f \u0440\u0435\u0448\u0438\u043b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 React, \u043d\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u044d\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 Flutter, iOS \u0438\u043b\u0438 Android!<\/p>\n<p>\u0418 \u044d\u0442\u043e \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435!  \u0412\u043e\u0437\u044c\u043c\u0438 \u044d\u0442\u043e, \u0434\u043e\u0440\u043e\u0433\u043e\u0439 \u0441\u0442\u0438\u043b\u0438\u0441\u0442.<\/p>\n<\/p><\/div>\n<p><script async defer src=\"https:\/\/platform.instagram.com\/en_US\/embeds.js\"><\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u043c \u0433\u043e\u0434\u0443, \u0432\u043e \u0432\u0441\u0435\u043b\u0435\u043d\u043d\u043e\u0439, \u0433\u0434\u0435 \u0438\u043c\u0435\u0442\u044c \u0448\u0442\u0430\u043d\u044b \u0432\u0441\u0435 \u0435\u0449\u0435 \u0438\u043c\u0435\u043b\u043e \u0441\u043c\u044b\u0441\u043b, \u044f \u0440\u0435\u0448\u0438\u043b \u043d\u0430\u043d\u044f\u0442\u044c \u043b\u0438\u0447\u043d\u043e\u0433\u043e \u0441\u0442\u0438\u043b\u0438\u0441\u0442\u0430. \u0412\u043e \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0448\u0435\u0439 \u043f\u0435\u0440\u0432\u043e\u0439 \u0432\u0441\u0442\u0440\u0435\u0447\u0438 \u0441\u0442\u0438\u043b\u0438\u0441\u0442 \u043f\u0440\u0438\u0448\u0435\u043b \u043a\u043e \u043c\u043d\u0435 \u0432 \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u0443 \u0438 \u0441\u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0440\u043e\u0432\u0430\u043b \u043a\u0430\u0436\u0434\u0443\u044e \u0432\u0435\u0449\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443 \u043c\u0435\u043d\u044f \u0431\u044b\u043b\u0430. \u0412\u043e \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0448\u0435\u0439 \u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u0441\u0442\u0440\u0435\u0447\u0438 \u043e\u043d\u0430 \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u043b\u0430 \u043c\u0435\u043d\u044f \u0432 Nordstrom&#8217;s, \u0433\u0434\u0435 \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u043b\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0438\u0442\u044c \u043f\u043e\u0432\u0441\u0435\u0434\u043d\u0435\u0432\u043d\u043e\u0435 \u043f\u043b\u0430\u0442\u044c\u0435 \u0437\u0430 \u200b\u200b400 \u0434\u043e\u043b\u043b\u0430\u0440\u043e\u0432, \u0431\u043b\u0435\u0439\u0437\u0435\u0440 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1024,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[],"class_list":{"0":"post-1023","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-computer-vision"},"_links":{"self":[{"href":"https:\/\/gptmain.news\/index.php?rest_route=\/wp\/v2\/posts\/1023","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gptmain.news\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gptmain.news\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gptmain.news\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gptmain.news\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1023"}],"version-history":[{"count":0,"href":"https:\/\/gptmain.news\/index.php?rest_route=\/wp\/v2\/posts\/1023\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/gptmain.news\/index.php?rest_route=\/wp\/v2\/media\/1024"}],"wp:attachment":[{"href":"https:\/\/gptmain.news\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1023"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gptmain.news\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1023"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gptmain.news\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1023"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}