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
990
Автоматизация интернет-знакомств
Азамат Галимжанов @ 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 №89 Алексей Жиряков (онлайн-кинотеатр KION, TechLead Backend команды витрины). Доверяй, но проверяй: как KION обрабатывает свыше 400М продуктовых событий в сутки.
moscowdjango
PRO
0
22
Moscow Python Meetup №88. Евгений Блинов (VK, Руководитель команды). Токены отмены как паттерн и как библиотека cantok
moscowdjango
PRO
0
58
Moscow Python Meetup №89 Павел Мамаев (Сбер, Ведущий инженер по разработке). Классификация запросов клиентов. Дёшево и сердито
moscowdjango
PRO
0
26
Moscow Python Meetup №88. Александр Винокуров (Группа компаний "Самолет", руководитель группы разработки). Практическая сторона тестов
moscowdjango
PRO
0
55
Moscow Python Meetup №88. Иван Елфимов (Ostrovok.ru, тимлид). Переход от Statsd к Prometheus в большом Django-проекте
moscowdjango
PRO
0
51
Moscow Python Meetup №88. Александр Гончаров (Reef Technologies, старший разработчик). Рекрутинг на максималках: что бывает, если наймом занимаются сами программисты
moscowdjango
PRO
0
43
Moscow Python Meetup №87 Евгений Блинов (VK, руководитель команды). INSTLD: зависимости на автомате.
moscowdjango
PRO
0
77
Moscow Python Meetup №87. Сурен Хоренян (MTS AI). Hatch для сборки и распространения Python пакетов.
moscowdjango
PRO
0
80
Николай Хитров (Точка, Техлид). Мама, мы все тяжело больны!
moscowdjango
PRO
0
120
Other Decks in Programming
See All in Programming
ServerAction で Progressive Enhancement はどこまで頑張れるか? / progressive-enhancement-with-server-action
takefumiyoshii
6
440
デフォルトにして至高、RubyMineの大好きな所
ruzia
0
910
PHPはいつから死んでいるかの調査
chiroruxx
2
420
WebGLで始める コンピュータグラフィックス入門
heller77
0
320
Polars入門
daikikatsuragawa
1
180
Going beyond Apache Parquet's default settings
xhochy
0
130
Scalable Customer Journey Orchestration (CJO)
lewuathe
0
420
Sheets API使ってみた
toshi0383
2
170
新宿ダンジョンを可視化してみた
satoshi7190
3
400
SIMD Parallel Programming with the Vector API
josepaumard
0
230
Snowflakeで眠ったデータを起こそう!
estie
0
150
The Cutting Edge Of Versioning (LambdaConf 2024)
chriskrycho
0
110
Featured
See All Featured
Reflections from 52 weeks, 52 projects
jeffersonlam
345
19k
Build your cross-platform service in a week with App Engine
jlugia
226
17k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
14
1.5k
Fireside Chat
paigeccino
22
2.6k
4 Signs Your Business is Dying
shpigford
176
21k
For a Future-Friendly Web
brad_frost
172
9k
We Have a Design System, Now What?
morganepeng
43
6.8k
VelocityConf: Rendering Performance Case Studies
addyosmani
321
23k
How To Stay Up To Date on Web Technology
chriscoyier
782
250k
Adopting Sorbet at Scale
ufuk
69
8.6k
KATA
mclloyd
16
12k
Designing Experiences People Love
moore
136
23k
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/