Машин сургалт болон Tinder ашиглан цагт 13 охиныг хэрхэн яаж авах вэ

*Мэдээжийн хэрэг, зөвхөн Machine Learning сурах зорилгоор. Хайртай эхнэрийнхээ үл ялиг сэтгэл хангалуун бус харц дор.

Нурууны рефлексийн түвшинд Tinder шиг энгийн програм байхгүй байх. Үүнийг ашиглахын тулд танд зөвхөн нэг хуруугаараа шударч, цөөн хэдэн мэдрэлийн эсүүд танд хамгийн их таалагддаг охид эсвэл эрэгтэйчүүдийг сонгоход хангалттай. Хос сонгоход харгис хүчний хамгийн тохиромжтой хувилбар.

Энэ нь шинэ график карт дээр машин сурах талаар бага зэрэг мэдрэх сайн арга байх болно гэж би шийдсэн. Надад шинэ тарган эмэгтэй хэрэггүй гэдгийг эхнэртээ тайлбарлах л үлдлээ, би зүгээр л мэдрэлийн сүлжээг сургаж байна.

Машин сургалт болон Tinder ашиглан цагт 13 охиныг хэрхэн яаж авах вэ

Болзох сүлжээнд ямар асуудал байна вэ?

Ийм нөөц байсан - Эшли Мэдисон. Тодруулбал, “Амьдрал богинохон. Үерхээрэй." Гол үзэгчид бол гэр бүлтэй эрчүүд юм. Мөнгө олох нь бас хөгжилтэй байдаг - "таалагдах, бичихийн тулд оноо зарцуулах" стандартаас гадна тэд хэрэглэгчийн бүртгэлийг ул мөргүй устгахын тулд 19 доллар хүссэн.

2015 онд уг сайт байгалийн жамаар алдагдсан бөгөөд 60 ГБ хувийн мэдээлэл олон нийтэд ил болсон. Олон сүйрсэн гэр бүлээс гадна энэ мэдээлэл нь шинжээчдэд маш олон сонирхолтой мэдээллийг өгсөн. Болзох сайтууд дээр илүү олон эрчүүд байдаг гэж би үргэлж сэжиглэдэг байсан ч энэ тохиолдолд энэ нь нэлээд сонирхолтой болсон. Сэтгүүлч Аннели Ньюиц алдагдсан өгөгдөлд дүн шинжилгээ хийх 5 сая хэрэглэгчээс ердөө 12 нь л жинхэнэ охидын данстай төстэй бөгөөд байнга ашигладаг болохыг олж мэдсэн. Үлдсэн хэсэг нь эрэгтэй зочидтой чатладаг роботууд байв.

Эрэгтэй дансанд ийм давамгайлах нь зөвхөн энэ нөөцөд төдийгүй бусад болзооны сайтуудад түгээмэл байдаг. Танилаа сайтар төлөвлөх хэрэгтэй, гэхдээ охин зүгээр л бүртгүүлэх хэрэгтэй болсон үед олон хүн ийм шударга бус нөхцөл байдалтай тулгарсан гэдэгт би итгэлтэй байна. Энэ олон шүтэн бишрэгчдийн чанарыг орхиё, гэхдээ эрэлт нийлүүлэлтийн тэнцвэр охидын талд илт шилжсэнийг үгүйсгэх аргагүй юм.

Tinder-ийн онцлог

Машин сургалт болон Tinder ашиглан цагт 13 охиныг хэрхэн яаж авах вэ
Жендэрийн харилцааны хамгийн тохиромжтой харгис хүч

Энэ платформын гол онцлог нь нэг танил бүрийн зардал бага юм. Хоёр удаа дарах нь хангалттай бөгөөд та сонирхолтой байж болзошгүй хүнтэй аль хэдийн харилцаж байна. Асуудал нь ижил хүйсийн тэнцвэргүй байдал нь ихэнх охидыг өдөрт хэдэн арван шүдэнзтэй болоход хүргэдэг. Энэ нь тэд бусад нэр дэвшигчдийн дунд танд анхаарал хандуулах цаг байхгүй болно гэсэн үг юм.

Энэхүү платформ нь усны хувцастай гэрэл зураг эсвэл загварлаг өнгөт машин жолоодож буй хүний ​​дотоод ертөнцийг нэг хагас секундын харцнаас харах боломжийг олгодоггүй нь тодорхой юм. Тиймээс, хэрэв та гэрэл зурагтаа зүгээр л бурханлаг харагдахгүй бол танд үрчилж авах боломжоо нэмэгдүүлэхээс өөр сонголт байхгүй. r-стратеги зарим зүйлд. Энгийнээр хэлэхэд, бид үржүүлгийн амжилт гаргах боломжийг нэмэгдүүлэхийн тулд бүдүүлэг хүч хэрэглэж, эзлэхүүнийг авна. Та заримдаа хоол хүнс, унтахдаа сатаарах шаардлагатай байдаг бөгөөд шудар нь хязгаарлагдмал байдаг тул автоматжуулалт нь таны амтанд хамгийн сайн тохирох охид, эрэгтэйчүүдийг сонгохыг илүүд үзэх байх. Богино улаан үстэй эсвэл өндөр brunettes - энэ нь танд хамаарна.

Өгөгдөл цуглуулж байна

Юуны өмнө, хэвийн нарийвчлалтай байхын тулд танд маш их мэдээлэл хэрэгтэй. Машины сургалттай тулгарсан хэн бүхэн зөв цуглуулж, шошготой өгөгдлийн багц гаргах нь хичнээн хэцүү болохыг мэддэг. Онолын хувьд, Instagram эсвэл бусад нийгмийн сүлжээнээс үл хамааран ижил төстэй аливаа эх сурвалж мэдээллийн эх сурвалж болгон ашиглахад тохиромжтой. Гэхдээ ирээдүйд сүлжээ ажиллах болно дээж дээр сургах нь дээр.

Хадгалах газрыг үндэс болгон авч үзье Tinder автоматжуулалт. Tinder-ийн зургууд үргэлж олон нийтэд нээлттэй байдаг ч "дуртай" функц аль хэдийн хязгаарлагдмал байдаг. Тиймээс радиус доторх бүх амьд зүйлийг олборлож, сайтар тэмдэглэж авах шаардлагатай. Эхлээд та маш энгийн скрипт ашиглах хэрэгтэй:

from skimage.io import imread, imsave, imshow, show
import matplotlib.pyplot as plt
import pynder
from helpers import get_access_token, get_login_credentials
from io_helper import save_image

email, password, FBID = get_login_credentials()
FBTOKEN = get_access_token(email, password)
session = pynder.Session(facebook_token=FBTOKEN)

while True:
    users = session.nearby_users()
    for user in users:
        photos = user.get_photos()
        print("Fetched user photos..")
        for photo in photos:
            print(photo)
            image = imread(photo)
            imshow(image)
            show()

            input_string = "Write 1 to like. Write 2 to dislike."
            ans = str(input(input_string)).lower()

            if ans == "1":
                save_image(image, photo, True)
            else:
                save_image(image, photo, False)

Энэ нь танд хоёр товчлуурын тусламжтайгаар өгөгдлийн багцыг аль болох хурдан тэмдэглэх боломжийг олгоно. Хамгийн гол бэрхшээл нь werkzeug номын сан нь хоцрогдсон нийцтэй байдлыг эвдсэн тул түүнийг албадан буулгах шаардлагатай болсон явдал юм. Үгүй бол энэ алдаа гаргадаг.

Traceback (most recent call last):
  File "img_scrape.py", line 4, in <module>
    from helpers import get_access_token, get_login_credentials
  File "/home/someone/tmp/TinderAutomation/helpers.py", line 1, in <module>
    import robobrowser
  File "/home/someone/tmp/TinderAutomation/venv/lib/python3.6/site-packages/robobrowser/__init__.py", line 3, in <module>
    from .browser import RoboBrowser
  File "/home/someone/tmp/TinderAutomation/venv/lib/python3.6/site-packages/robobrowser/browser.py", line 8, in <module>
    from werkzeug import cached_property
ImportError: cannot import name 'cached_property'

Иймд шаардлага.txt дээр Werkzeug==0.16.1 гэж бичих хэрэгтэй. Дараа нь хөөрөх болно.
Хоёрдахь асуудал бол энэ тэмдгийг авах явдал юм. Репозитороос авсан стандарт арга надад тохирохгүй байсан ч би үүнийг хөгжүүлэгчийн консолоос авч чадсан. Үүнийг хийхийн тулд хаягаар очно уу холбоос болон POST хүсэлтийн хариуг дотор нь задлах www.facebook.com/v2.6/dialog/oauth/confirm?dpr=1. Дотор нь бид 'access_token'-г хайдаг. Зарим шалтгааны улмаас энэ нь анх удаа ажиллахгүй байсан ч дараа нь би үүнийг олж скриптэд хатуу кодчилсон.

Өгөгдлийн багцын шаардлага

Машин сургалтын өгөгдлийн багцад тавигдах хэд хэдэн үндсэн шаардлага байдаг:

  1. Хангалттай байдал
  2. Нэгдмэл байдал
  3. Янз бүрийн

Энэ тохиолдолд хангалттай загвар гаргахын тулд дор хаяж 10000 гэрэл зураг шаардлагатай. Тийм ээ, энэ их юм. Энэ нь үнэндээ яагаад үйлчилгээнд дуртай байдаг Амазон Механик Турк, та төлбөртэй өөрийн датасетийн тэмдэглэгээг бусад хүмүүст шилжүүлэх боломжтой. Нөгөөтэйгүүр, та өөрийн ботыг саран царайтай ази охид эсвэл Энэтхэг үндэстэй адилхан үзэсгэлэнтэй охидод таалагдахыг үнэхээр хүсч байна уу? Гэсэн хэдий ч загвар нь таны амтыг тусгах ёстой.

Төрөл бүрийн хувьд онцгой асуудал байхгүй, бүх гэрэл зургийг янз бүрийн өнцгөөс, гэрэлтүүлгээс харуулдаг. Нүдний шил, даашинз, усны хувцас, цанын костюмтай. Өгөгдлийн багцын нэгдмэл байдалд асуудал үүсч болзошгүй. Бид дээжээ шошголохдоо ойролцоогоор тэнцүү хэсгүүдээс бүрдэх ёстой. Хэрэв та "халуу" өгөгдлийн багцтай болвол бусад эх сурвалжаас авсан гэрэл зургаар шингэлэх хэрэгтэй болно. Та илүү сэтгэл татам зүйлсийг нэмэх хэрэгтэй болно, эсвэл эсрэгээр та тэмдэглэгээний үр дүнд үндэслэн тэдгээрийг тодорхойлох болно. Би 60% орчим хөөрхөн юм авсан. Нэг бол би хэтэрхий сонгомол биш юм уу, эсвэл зүгээр л азтай хүн, эргэн тойронд олон хөөрхөн охид байдаг.

Би бас тэдний дунд олон робот байдаг гэсэн таамаглалыг үгүйсгэхгүй. Бид бусад роботуудад таалагдах роботыг сургадаг. Үүнд инээдэмтэй зүйл бий.

Өгөгдөл боловсруулах

Бидэнд шошготой олон тооны зураг байгаа ч тэдгээр нь маш холилдсон байдаг. Өдөр, шөнө, араас болон бусад. Дээж нь маш жигд бус байх тул урвуу өнцгөөс гэрэл зургаас заах нь тийм ч үр дүнтэй биш гэдгийг би харамсаж байна. Тиймээс нүүр царайг "өхөөрдөм" шинж тэмдэг болгон ашиглах нь хамгийн сайн сонголт байх болно. Гэсэн хэдий ч бидний хувьд бусад приматуудын хувьд энэ нь гол үзүүлэлт юм.

Тиймээс ашиглацгаая Хаар цуваа. Энэ бол хуурамч эерэг алдаа багатай зургуудаас царайг олох боломжийг олгодог маш сайн алгоритм юм.

Машин сургалт болон Tinder ашиглан цагт 13 охиныг хэрхэн яаж авах вэ
Үүнийг гарын авлагад илүү дэлгэрэнгүй тайлбарласан болно OpenCV програм

Дараагийн шатанд зөвхөн нүүр царай нь дээжинд орсны дараа өнгийг арилгах нь зүйтэй юм. Үнэн хэрэгтээ та Pandora-ийн үзэсгэлэнтэй цэнхэр далайн эр эсвэл ногоон арьстай гоо үзэсгэлэнгийн аль нэгийг сонгох шаардлагагүй болно.

Машин сургалт болон Tinder ашиглан цагт 13 охиныг хэрхэн яаж авах вэ
Эх сурвалж

Hue хүмүүсийн арьсны өнгө нь дур булаам байдлын үнэлгээнд чухал хувь нэмэр оруулдаггүй.
Тиймээс мэдрэлийн сүлжээний ажлыг хялбарчилж, зөвхөн саарал өнгө үлдээх нь зүйтэй.

Загварын барилга

Сайн видео карт, CUDA байхгүй бол та хангалттай хугацаанд бэлтгэгдсэн загвар авахгүй байх магадлалтай гэдгийг би шууд хэлмээр байна. Тиймээс нэн даруй мэргэшсэн үүлэн дээр эсвэл python-CUDA ашиглан тооцоолол хийхийг зорь.

Би агуулахын зохиогчоос үндсэн гурван давхаргын жишээг авсан бөгөөд гайхалтай нь 72% орчим нарийвчлалтай байсан нь маш сайн үр дүн юм.

model = Sequential()
model.add(Convolution2D(32, 3, 3, activation='relu', input_shape=(img_size, img_size, 3)))
model.add(MaxPooling2D(pool_size=(2,2)))

model.add(Convolution2D(32, 3, 3, activation='relu'))
model.add(MaxPooling2D(pool_size=(2,2)))

model.add(Convolution2D(64, 3, 3, activation='relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
          
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(2, activation='softmax'))

adam = optimizers.SGD(lr=1e-4, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='categorical_crossentropy',
              optimizer= adam,
              metrics=['accuracy'])

Хэрэв сайн дээж байгаа бол энэ нь ажиллах боломжтой загварыг авахад хангалттай байх болно.

Ботыг ажиллуулцгаая

Машин сургалт болон Tinder ашиглан цагт 13 охиныг хэрхэн яаж авах вэ

Санааг хурдан туршихын тулд бэлэн сонголтыг өгсөн агуулахын зохиогчид баярлалаа. Үнэн хэрэгтээ энэ нь үндсэн хувилбарт маш сайн ажилладаг бөгөөд зарчмын хувьд бидний хувилбар дээр ажиллах боломжтой бэлэн түрээсийн сервер. Одоогоор бэлтгэл хийх боломжгүй, одоогоор бид CUDA дэмжлэг бүхий виртуал машинуудыг тооцоололд оруулахгүй байгаа ч та ямар нэгэн асуудалгүйгээр 24/7 ажиллуулж болно. Бот нь нэлээд хөнгөн тул ашигласан нөөцийг төлдөг тарифыг авах нь илүү ашигтай байх болно.

Результаты

Машин сургалт болон Tinder ашиглан цагт 13 охиныг хэрхэн яаж авах вэ
Би их хөөрхөн юм шиг байна. Мөн миний дотоод ертөнц баялаг. Би нэг цагийн дотор 13 шүдэнз авсан. Түүгээр ч барахгүй охид хэд хэдэн удаа эхлээд бичсэн.
Үүний үр дүнд бид маш сайхан харилцан яриа өрнүүлсэн бөгөөд би энд зөвхөн машин сурах, мэдээллийн шошготой тоглох гэж ирсэн гэж хэлсэн. Охидын нэг нь өөрөө хөгжүүлэгч учраас маш их сонирхож байв. Тэр эцэст нь Хабре дээрх энэ бичлэгийг унших болно гэсэн хүчтэй мэдрэмж төрж байна. Оксана миний нэрээ нууцлах болно гэдэгт би үнэхээр найдаж байна. 🙂
*савуугаараа даллаж, сайн уу гэж хэлнэ

Асуудлын ёс зүйн талын талаар бага зэрэг

Үнэнийг хэлэхэд, эрэгтэй, охидын харилцааг роботжуулах санаа надад таалагддаггүй. Ганцаараа зогсож байгаа хүйтэн танихгүй хүний ​​мөрөн дээр хүрэмээ шидэх нь маш зөв зүйл юм. Эсвэл зуны кафед хөөрхөн охинтой ойртож, хамтдаа кофе уу. Хяналтын цаанаас аль хэдийн гар.

Зун эргэн тойронд байна. Танилцах цаг боллоо.

Машин сургалт болон Tinder ашиглан цагт 13 охиныг хэрхэн яаж авах вэ

Машин сургалт болон Tinder ашиглан цагт 13 охиныг хэрхэн яаж авах вэ

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх