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
Moscow Python Meetup №102 Михаил Васильев (старший специалист по машинному обучению). Поиск аномалий в данных, алгоритмы KNN и LOF
moscowdjango
PRO
0
20
Пётр Андреев (МФТИ, лектор по курсу Advanced Python). Дебри Python или как работает повседневный Python: что происходит на самом деле
moscowdjango
PRO
0
7
Moscow Python Meetup №102. Дарья Шпак (RW TECH, Руководитель группы разработчиков). Как Python каждый день выпускает кота
moscowdjango
PRO
0
11
Михаил Васильев (Cтарший специалист по машинному обучению) Поиск аномалий в данных. Алгоритмы iForest и PCA
moscowdjango
PRO
0
58
Мария Рубаненко (Fintech AI, Team lead DS) Повышаем производительность программ: мой путь к succ[ess | inct]
moscowdjango
PRO
0
80
Moscow Python Meetup №100. Зачем рекламе Python, а Python — реклама
moscowdjango
PRO
0
65
Moscow Python Meetup №100. 10 лет в MoscowPython: добрые истории
moscowdjango
PRO
0
43
Moscow Python Meetup №100. Митапы, пицца и карьера: как стикеры помогли стать тимлидом и стартапером
moscowdjango
PRO
0
51
Moscow Python Meetup №99. Михаил Васильев (Cтарший специалист по машинному обучению). Поиск аномалий в данных, алгоритмы HBOS и ECOD
moscowdjango
PRO
0
140
Other Decks in Programming
See All in Programming
PostgreSQLのRow Level SecurityをPHPのORMで扱う Eloquent vs Doctrine #phpcon #track2
77web
2
530
RailsGirls IZUMO スポンサーLT
16bitidol
0
180
WebViewの現在地 - SwiftUI時代のWebKit - / The Current State Of WebView
marcy731
0
120
Goで作る、開発・CI環境
sin392
0
230
Result型で“失敗”を型にするPHPコードの書き方
kajitack
5
650
おやつのお供はお決まりですか?@WWDC25 Recap -Japan-\(region).swift
shingangan
0
140
技術同人誌をMCP Serverにしてみた
74th
1
640
What Spring Developers Should Know About Jakarta EE
ivargrimstad
0
470
ISUCON研修おかわり会 講義スライド
arfes0e2b3c
1
440
AIプログラマーDevinは PHPerの夢を見るか?
shinyasaita
1
220
Azure AI Foundryではじめてのマルチエージェントワークフロー
seosoft
0
170
猫と暮らす Google Nest Cam生活🐈 / WebRTC with Google Nest Cam
yutailang0119
0
120
Featured
See All Featured
The Art of Programming - Codeland 2020
erikaheidi
54
13k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
A better future with KSS
kneath
238
17k
Being A Developer After 40
akosma
90
590k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
35
2.4k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
281
13k
How to train your dragon (web standard)
notwaldorf
95
6.1k
The Cost Of JavaScript in 2023
addyosmani
51
8.5k
Navigating Team Friction
lara
187
15k
Adopting Sorbet at Scale
ufuk
77
9.5k
Designing Experiences People Love
moore
142
24k
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/