Ինչպես ժամում վերցնել 13 աղջիկ՝ օգտագործելով մեքենայական ուսուցում և Tinder

*Իհարկե, զուտ մեքենայական ուսուցում սովորելու համար: Սիրած կնոջ փոքր-ինչ դժգոհ հայացքի ներքո.

Հավանաբար չկա ողնաշարի ռեֆլեքսների մակարդակի նման պարզ ծրագիր, ինչպես Tinder-ը: Այն օգտագործելու համար ձեզ հարկավոր է ընդամենը մեկ մատ՝ սահեցնելու համար և մի քանի նեյրոն՝ ընտրելու այն աղջիկներին կամ տղամարդկանց, որոնք ձեզ ավելի շատ են դուր գալիս: Կոպիտ ուժի իդեալական իրականացում զույգերի ընտրության մեջ:

Ես որոշեցի, որ սա լավ միջոց է նոր գրաֆիկական քարտի վրա մեքենայական ուսուցման մասին մի փոքր զգացողություն ստանալու համար: Մնում է կնոջս բացատրել, որ ինձ ավելի գեր կին պետք չէ, և ես պարզապես նեյրոնային ցանցեր եմ վարժեցնում:

Ինչպես ժամում վերցնել 13 աղջիկ՝ օգտագործելով մեքենայական ուսուցում և Tinder

Ո՞րն է ծանոթությունների ցանցերի խնդիրը:

Նման ռեսուրս կար՝ Էշլի Մեդիսոն: Կոնկրետ՝ «Կյանքը կարճ է. Սիրավեպ ունեցեք»։ Հիմնական լսարանը ամուսնացած տղամարդիկ են, ովքեր կողքից սիրավեպ են փնտրում: Դրամայնացումը նաև զվարճալի է. ի լրումն ստանդարտ «միավորներ ծախսել հավանելու և գրելու համար», նրանք 19 դոլար են խնդրել օգտատիրոջ հաշիվն առանց հետքի ջնջելու համար:

2015 թվականին կայքը բնականաբար արտահոսեց և 60 ԳԲ անձնական տվյալներ արտահոսեցին հանրային տիրույթ: Բազմաթիվ ավերված ընտանիքներից բացի, այս արտահոսքը շատ հետաքրքիր տեղեկություններ է հաղորդել վերլուծաբաններին: Ես միշտ կասկածում էի, որ ծանոթությունների կայքերում տղամարդիկ շատ ավելի շատ են, բայց այս դեպքում բավականին հետաքրքիր ստացվեց։ Լրագրող Անալի Նյուից արտահոսած տվյալների վերլուծություն պարզել է, որ 5 միլիոն օգտատերերից միայն 12-ն են նման իրական աղջիկների աքաունթներին և պարբերաբար օգտագործվում են: Մնացածը պարզապես բոտեր էին, որոնք զրուցում էին տղամարդ այցելուների հետ:

Տղամարդկանց հաշիվների նկատմամբ նման գերակայությունը բնորոշ է ոչ միայն այս ռեսուրսին, այլև ծանոթությունների այլ կայքերի մեծամասնությանը: Համոզված եմ, որ շատերն են բախվել այս անկասկած անարդար իրավիճակին, երբ պետք է ուշադիր պլանավորել ծանոթությունը, բայց աղջիկը պարզապես պետք է գրանցվի։ Մի կողմ թողնենք երկրպագուների այս բազմության որակը, բայց փաստն անհերքելի է, որ առաջարկի և պահանջարկի հավասարակշռությունը ակնհայտորեն փոխվում է հօգուտ աղջիկների։

Tinder հատկությունը

Ինչպես ժամում վերցնել 13 աղջիկ՝ օգտագործելով մեքենայական ուսուցում և Tinder
Իդեալական բիրտ ուժը գենդերային հարաբերություններում

Այս հարթակի հիմնական առանձնահատկությունը ծանոթի համար ցածր արժեքն է: Երկու սայթաքման համընկնումը բավական է, և դուք արդեն շփվում եք պոտենցիալ հետաքրքիր մարդու հետ: Խնդիրն այն է, որ նույն գենդերային անհավասարակշռությունը հանգեցնում է նրան, որ աղջիկների մեծամասնությունը օրական տասնյակ համընկնումներ է ունենալու: Սա նշանակում է, որ նրանք, ամենայն հավանականությամբ, ժամանակ չեն ունենա այլ թեկնածուների թվում ձեզ ուշադրություն դարձնելու համար:

Միանգամայն պարզ է, որ հարթակը քիչ հնարավորություն է ենթադրում գնահատելու մարդու խորը ներաշխարհը լողազգեստով լուսանկարին կամ մոդայիկ մգեցված մեքենա վարելուց մեկուկես վայրկյան հայացքից։ Հետևաբար, եթե ձեր լուսանկարներում պարզապես աստվածային տեսք չունեք, այլ ելք չունեք, քան մեծացնել ձեր հնարավորությունները՝ ընդունելով. r-ռազմավարություն որոշ տեսակների մեջ. Պարզ ասած՝ մենք կոպիտ ուժ կկիրառենք և ծավալ կընդունենք՝ բուծման հաջողության մեր հնարավորությունները մեծացնելու համար: Քանի որ ձեզ երբեմն անհրաժեշտ է շեղել սնունդն ու քնելը, իսկ սահումները սահմանափակ են, դուք հավանաբար կնախընտրեք, որ ավտոմատացումը ընտրի այն աղջիկներին կամ տղամարդկանց, որոնք լավագույնս համապատասխանում են ձեր ճաշակին: Կարմիր կարճահասակ կամ բարձրահասակ թխահերները՝ դա ձեզնից է կախված:

Տվյալների հավաքում

Նախևառաջ, նորմալ ճշգրտության համար անհրաժեշտ է շատ տվյալներ: Յուրաքանչյուր ոք, ով հանդիպել է մեքենայական ուսուցման, գիտի, թե որքան դժվար կարող է լինել ճիշտ հավաքագրված և պիտակավորված տվյալների բազա ստեղծելը: Տեսականորեն ցանկացած նմանատիպ ռեսուրս հարմար կլինի որպես տվյալների աղբյուր՝ լինի դա Instagram, թե այլ սոցիալական ցանցեր։ Բայց ավելի լավ է մարզվել այն նմուշների վրա, որոնց վրա ցանցը կաշխատի ապագայում:

Հիմք ընդունենք շտեմարանը Tinder ավտոմատացում. Tinder-ի լուսանկարները միշտ հասանելի են հանրությանը, սակայն «like» ֆունկցիան արդեն սահմանափակ է։ Ուստի անհրաժեշտ է շառավղով դուրս հանել բոլոր կենդանի էակներին և զգուշորեն նշել դրանք։ Նախ անհրաժեշտ է օգտագործել բավականին պարզ սցենար.

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'

Հետևաբար, requirements.txt-ում պետք է գրել Werkzeug==0.16.1: Հետո այն կթռչի:
Երկրորդ խնդիրը հենց այս նշանը ստանալն է: Պահեստից ստացված ստանդարտ մեթոդն ինձ մոտ չաշխատեց, բայց ինձ հաջողվեց այն ստանալ մշակողի վահանակից: Դա անելու համար գնացեք ՈՒղեցույց և հանեք POST հարցման պատասխանը www.facebook.com/v2.6/dialog/oauth/confirm?dpr=1. Ներսում մենք փնտրում ենք «access_token»: Ինչ-ինչ պատճառներով այն առաջին անգամ չաշխատեց, բայց հետո ես գտա այն և կոշտ կոդավորեցի այն սցենարի մեջ:

Տվյալների հավաքածուի պահանջներ

Մեքենայի ուսուցման տվյալների հավաքածուների համար կան մի քանի հիմնական պահանջներ.

  1. Համարժեքություն
  2. Միատեսակություն
  3. Բազմազանություն

Բավարարությունն այս դեպքում պահանջում է առնվազն 10000 լուսանկար՝ համապատասխան մոդել ստեղծելու համար: Այո, դա շատ է: Ահա թե ինչու են նման ծառայությունները Amazon Mechanical Turk- ը, որտեղ վճարովի դիմաց կարող եք պատվիրակել ձեր տվյալների բազայի նշումը այլ մարդկանց: Մյուս կողմից, իսկապե՞ս ցանկանում եք, որ ձեր բոտին դուր գան հիասքանչ լուսնային դեմքով ասիացի աղջիկներ կամ հնդկական արմատներով նույնքան գեղեցիկ աղջիկներ: Այնուամենայնիվ, մոդելը պետք է արտացոլի ձեր ճաշակը:

Բազմազանության հետ կապված առանձնահատուկ խնդիրներ չկան, բոլոր լուսանկարները ներկայացված են տարբեր անկյուններից և լուսավորությունից: Ակնոցներով, զգեստներով, լողազգեստներով և դահուկային կոստյումներով։ Խնդիր կարող է առաջանալ տվյալների հավաքածուի միատեսակության հետ: Իդեալում, երբ մենք պիտակավորում ենք մեր նմուշը, այն պետք է բաղկացած լինի մոտավորապես հավասար մասերից: Եթե ​​դուք հայտնվում եք «շեղված» տվյալների բազայով, դուք ստիպված կլինեք այն նոսրացնել այլ աղբյուրների լուսանկարներով: Դուք պետք է ավելացնեք ավելի գրավիչ, կամ հակառակը, դուք կորոշեք դրանք նշագրման արդյունքի հիման վրա: Ես ստացել եմ մոտ 60% գեղեցիկ բան: Կամ ես շատ բծախնդիր չեմ, կամ պարզապես բախտավոր եմ, և շրջապատում կան շատ գեղեցիկ աղջիկներ:

Չեմ զեղչում նաև այն վարկածը, որ դրանց մեջ շատ բոտեր կան։ Մենք մարզում ենք բոտ, որը դուր կգա մյուս բոտերին: Սրա մեջ որոշակի հեգնանք կա.

Տվյալների մշակում

Մենք ունենք պիտակավորված լուսանկարների փունջ, բայց դրանք շատ խառն են: Ցերեկը, գիշերը, հետևից և այլն: Ափսոսանքով հասկանում եմ, որ հակադարձ անկյան տակ լուսանկարներից դասավանդելը առանձնապես արդյունավետ չի լինի, քանի որ նմուշը կլինի շատ անհավասար: Հետևաբար, լավագույն տարբերակը կլինի դեմքերը օգտագործել որպես «սիրունության» նշան։ Այնուամենայնիվ, մեզ համար, ինչպես մյուս պրիմատների համար, սա հիմնական պարամետր է:

Հետեւաբար, եկեք օգտագործենք Հաարի կասկադներ. Սա հիանալի ալգորիթմ է, որը թույլ է տալիս պատկերներում գտնել դեմքեր՝ կեղծ դրական սխալների ցածր տոկոսով:

Ինչպես ժամում վերցնել 13 աղջիկ՝ օգտագործելով մեքենայական ուսուցում և Tinder
Սա ավելի մանրամասն նկարագրված է ձեռնարկում Opencv

Հաջորդ փուլում, երբ նմուշում միայն դեմքերն են, իմաստ ունի հեռացնել գույնը: Իրականում, դուք դժվար թե ստիպված լինեք ընտրություն կատարել Պանդորայի գեղեցիկ կապույտ դենիզի կամ կանաչ մաշկ ունեցող գեղեցկուհու միջև:

Ինչպես ժամում վերցնել 13 աղջիկ՝ օգտագործելով մեքենայական ուսուցում և Tinder
Աղբյուր

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'])

Եթե ​​կա լավ նմուշ, ապա դա կարող է բավարար լինել գործունակ մոդել ձեռք բերելու համար:

Եկեք գործարկենք բոտը

Ինչպես ժամում վերցնել 13 աղջիկ՝ օգտագործելով մեքենայական ուսուցում և Tinder

Շնորհակալություն պահեստի հեղինակին գաղափարի արագ փորձարկման պատրաստ տարբերակի համար։ Իրականում, այն բավականին լավ է աշխատում հիմնական տարբերակում և, սկզբունքորեն, կարող է գործարկվել մեր վրա պատրաստի վարձակալված սերվեր. Դեռևս հնարավոր չի լինի մարզվել, այս պահին մենք վիրտուալ մեքենաներ չենք տրամադրում CUDA աջակցությամբ հաշվարկների համար, բայց դուք կարող եք ինչ-որ բան գործարկել 24/7 առանց որևէ խնդիրների: Բոտը բավականին թեթև է, ուստի ավելի շահավետ կլինի օգտագործել սակագին, որը վճարում է օգտագործված ռեսուրսների համար:

Արդյունքները

Ինչպես ժամում վերցնել 13 աղջիկ՝ օգտագործելով մեքենայական ուսուցում և Tinder
Կարծում եմ, որ ես շատ սրամիտ եմ: Իսկ ես հարուստ ներաշխարհ ունեմ։ Մեկ ժամվա ընթացքում 13 լուցկի ստացա: Ընդ որում, մի քանի անգամ աղջիկներն առաջինը գրել են.
Արդյունքում, մենք ավարտեցինք շատ գեղեցիկ երկխոսություններ, որտեղ ես ասացի, որ ես եկել եմ բացառապես մեքենայական ուսուցման և տվյալների պիտակավորման հետ խաղալու համար: Աղջիկներից մեկը չափազանց հետաքրքրված էր, քանի որ ինքը ծրագրավորող է։ Ուժեղ զգացում կա, որ նա ի վերջո կկարդա այս գրառումը Habré-ում: Ես իսկապես հուսով եմ, որ Օքսանան կպահպանի իմ անանունությունը: 🙂
*թաթը թափահարում է և ասում՝ բարև

Մի փոքր հարցի էթիկական կողմի մասին

Անկեղծ ասած, ինձ դուր չի գալիս տղամարդկանց և աղջիկների միջև հարաբերությունները ռոբոտացնելու ամբողջ գաղափարը: Շատ ճիշտ բան կա, երբ բաճկոնդ մենակ կանգնած սառը անծանոթի ուսերին գցես: Կամ մոտեցեք մի գեղեցիկ աղջկա ամառային սրճարանում և միասին սուրճ խմեք: Դուրս եկեք արդեն մոնիտորների հետևից։

Ամառը շուրջբոլորն է: Ժամանակն է ծանոթանալու։

Ինչպես ժամում վերցնել 13 աղջիկ՝ օգտագործելով մեքենայական ուսուցում և Tinder

Ինչպես ժամում վերցնել 13 աղջիկ՝ օգտագործելով մեքենայական ուսուցում և Tinder

Source: www.habr.com

Добавить комментарий