Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Автоматизация интернет-знакомств
Search
Moscow Python Meetup
PRO
May 23, 2016
Programming
1
1.1k
Автоматизация интернет-знакомств
Азамат Галимжанов @ Moscow Python 35
Moscow Python Meetup
PRO
May 23, 2016
Tweet
Share
More Decks by Moscow Python Meetup
See All by Moscow Python Meetup
Михаил Васильев (Cтарший специалист по машинному обучению) Поиск аномалий в данных. Алгоритмы iForest и PCA
moscowdjango
PRO
0
53
Мария Рубаненко (Fintech AI, Team lead DS) Повышаем производительность программ: мой путь к succ[ess | inct]
moscowdjango
PRO
0
76
Moscow Python Meetup №100. Зачем рекламе Python, а Python — реклама
moscowdjango
PRO
0
62
Moscow Python Meetup №100. 10 лет в MoscowPython: добрые истории
moscowdjango
PRO
0
39
Moscow Python Meetup №100. Митапы, пицца и карьера: как стикеры помогли стать тимлидом и стартапером
moscowdjango
PRO
0
48
Moscow Python Meetup №99. Михаил Васильев (Cтарший специалист по машинному обучению). Поиск аномалий в данных, алгоритмы HBOS и ECOD
moscowdjango
PRO
0
140
Moscow Python Meetup №99. Артем Геташвили (Senior Python Developer). Как работает спутниковая связь и при чём тут Python?
moscowdjango
PRO
0
83
Moscow Python Meetup №98 Михаил Васильев (Маквес, Старший специалист по машинному обучению). NLP нейросети в защите данных: опыт Makves DCAP
moscowdjango
PRO
0
160
Moscow Python Meetup №98 Алексей Лавриненко (Фаст Софт, Team Lead Python). Недописанная Кафкой Сага
moscowdjango
PRO
0
82
Other Decks in Programming
See All in Programming
関数型まつりレポート for JuliaTokai #22
antimon2
0
160
プロダクト志向なエンジニアがもう一歩先の価値を目指すために意識したこと
nealle
0
110
システム成長を止めない!本番無停止テーブル移行の全貌
sakawe_ee
1
130
XP, Testing and ninja testing
m_seki
3
200
What Spring Developers Should Know About Jakarta EE
ivargrimstad
0
260
AIプログラマーDevinは PHPerの夢を見るか?
shinyasaita
1
160
たった 1 枚の PHP ファイルで実装する MCP サーバ / MCP Server with Vanilla PHP
okashoi
1
200
アンドパッドの Go 勉強会「 gopher 会」とその内容の紹介
andpad
0
270
Node-RED を(HTTP で)つなげる MCP サーバーを作ってみた
highu
0
100
すべてのコンテキストを、 ユーザー価値に変える
applism118
2
850
VS Code Update for GitHub Copilot
74th
1
410
なぜ適用するか、移行して理解するClean Architecture 〜構造を超えて設計を継承する〜 / Why Apply, Migrate and Understand Clean Architecture - Inherit Design Beyond Structure
seike460
PRO
1
690
Featured
See All Featured
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
48
5.4k
Balancing Empowerment & Direction
lara
1
370
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Facilitating Awesome Meetings
lara
54
6.4k
Being A Developer After 40
akosma
90
590k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
Writing Fast Ruby
sferik
628
61k
Side Projects
sachag
455
42k
Automating Front-end Workflow
addyosmani
1370
200k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.9k
Transcript
Автоматизация знакомств в Интернете
• Азамат, 26 лет, бородат Знакомство Старая фотка
Знакомство • Азамат, 26 лет, бородат • 5 лет python
Знакомство • Азамат, 26 лет, бородат • 5 лет python
• Стартап «ГдеМатериал»
Знакомство • Азамат, 26 лет, бородат • 5 лет python
• Стартап «ГдеМатериал» • В Москве недавно
Знакомство с тиндером • Приложение для знакомств
Знакомство с тиндером • Приложение для знакомств • Нравится \
не нравится
Знакомство с тиндером • Приложение для знакомств • Нравится \
не нравится
Знакомство с тиндером • Приложение для знакомств • Нравится \
не нравится • Занимает много времени
Знакомство с существующими решениями • Тривиальные
Знакомство с существующими решениями • Тривиальные • Нетривиальные
Знакомство с существующими решениями • Тривиальные • Нетривиальные • tinderbox
Знакомство с красотой • Google
Знакомство с красотой • Google
Знакомство с красотой • Симметрия
Знакомство с красотой • Симметрия
Знакомство с Machine Learning
Знакомство с Machine Learning • Сложно?
Знакомство с Machine Learning • Данные • Обучение • Предсказание
Знакомство с dlib • Библиотека ML, написана на С++ •
Есть встроенные методы для нахождения лица • shape_predictor_68_face_landmarks.dat
None
Знакомство с dlib detector = dlib.get_frontal_face_detector() predictor = dlib.shape_predictor('shape_predictor_68_face_landmarks.dat') [np.array([p.x,
p.y]) for p in predictor(img, rects[0]).parts()]
None
ratios = [] points = get_landmarks(img) combinations = itertools.combinations(points, 4)
for cmb in combinations: d1 = np.linalg.norm(cmb[0] - cmb[1]) d2 = np.linalg.norm(cmb[2] - cmb[3]) ratio = d1 / d2 ratios.append(ratio)
combinations = list(itertools.combinations(landmarks, 4)) cmbs = np.asarray(combinations) # Each combination
is 4 points column_1 = cmbs[:,0] column_2 = cmbs[:,1] column_3 = cmbs[:,2] column_4 = cmbs[:,3] # Get distances between each pair of points diff1 = column_1 - column_2 diff2 = column_3 - column_4 d1 = np.sqrt((diff1 * diff1).sum(axis=1)) d2 = np.sqrt((diff2 * diff2).sum(axis=1)) # Get ratio of these distances features = d1 / d2
Знакомство с scikit-learn • Популярная python ML библиотека • Интеграция
с numpy, scipy
pictures = Picture.objects.exclude(rating=0) for pic in pictures: img = Image.open(pic.img.path)
faces, landmarks = get_landmarks(img) pic.features = get_features(landmarks) pic.save()
pictures = Picture.objects.exclude(rating=0).exclude(features=None) features = np.array(pictures.values_list('features', flat=True)) ratings = np.array(pictures.values_list('rating',
flat=True))
print len(features[0])
print len(features[0]) 31465
None
pca = decomposition.PCA(n_components=200) pca.fit(features) features = pca.transform(features)
None
regr = linear_model.LinearRegression() regr.fit(features, ratings)
features = get_features(landmarks) features = pca.transform(features.reshape(1, -1)) regr.predict(features) [ 8.02760153]
Correlation: 0.793359439459 time: 1min 4s
Знакомство с tinder api • Нет оффициального
Знакомство с tinder api • Нет оффициального • Reverse-engineered REST
API
None
Pynder: session = pynder.Session(facebook_id, token) for user in session.nearby_users(): users_queue.enqueue(process_tinder_user,
user)
Примеры [ 6.71781831] [ 7.55022878 ] [ 7.0911563 ] [
9.27091805]
Ссылки, сноски • http://crockpotveggies.com/2015/02/09/automating-tinder-with- eigenfaces.html • http://www.learnopencv.com/facial-landmark-detection/ • http://www.learnopencv.com/computer-vision-for-predicting-facial- attractiveness/
Вопросы? •
[email protected]
• https://github.com/khazidhea/