Partalla, tummat lasit ja profiilissa: vaikeita tilanteita tietokonenäön kannalta

Partalla, tummat lasit ja profiilissa: vaikeita tilanteita tietokonenäön kannalta

Tulevaisuuden tietokonenäköjärjestelmämme teknologiat ja mallit luotiin ja kehitettiin asteittain ja yrityksemme eri projekteissa - Mailissa, pilvessä, haussa. Ne kypsyivät kuin hyvä juusto tai konjakki. Eräänä päivänä tajusimme, että hermoverkkomme osoittavat erinomaisia ​​tuloksia tunnustuksessa, ja päätimme yhdistää ne yhdeksi b2b-tuotteeksi - Visioniksi - jota käytämme nyt itse ja tarjoamme sinun käytettäväksi.

Nykyään tietokonenäköteknologiamme Mail.Ru Cloud Solutions -alustalla toimii menestyksekkäästi ja ratkaisee erittäin monimutkaisia ​​käytännön ongelmia. Se perustuu useisiin neuroverkkoihin, jotka on koulutettu tietojoukkoihimme ja jotka ovat erikoistuneet sovellettavien ongelmien ratkaisemiseen. Kaikki palvelut toimivat palvelintiloissamme. Voit integroida sovelluksiisi julkisen Vision API:n, jonka kautta kaikki palvelun ominaisuudet ovat käytettävissä. API on nopea – palvelimen GPU:iden ansiosta keskimääräinen vasteaika verkossamme on 100 ms.

Mene kissalle, siellä on yksityiskohtainen tarina ja monia esimerkkejä Visionin työstä.

Esimerkki palvelusta, jossa käytämme itse mainittuja kasvojentunnistustekniikoita on Tapahtumat . Yksi sen komponenteista on Vision-valokuvatelineet, joita asennamme erilaisiin konferensseihin. Jos lähestyt tällaista valokuvatelinettä, otat valokuvan sisäänrakennetulla kameralla ja kirjoitat sähköpostiosoitteesi, järjestelmä löytää heti valokuvajoukosta ne, joihin konferenssin henkilökuntavalokuvaajat ovat ottaneet sinut, ja halutessasi lähettää löydetyt valokuvat sinulle sähköpostitse. Emmekä puhu lavastetuista muotokuvista – Vision tunnistaa sinut jopa aivan taustalla vierailijajoukossa. Itse valokuvatelineet eivät tietenkään tunnisteta, nämä ovat vain tabletteja kauniilla telineillä, jotka yksinkertaisesti ottavat kuvia vieraista sisäänrakennetuilla kameroillaan ja välittävät tietoa palvelimille, joissa kaikki tunnistustaika tapahtuu. Ja olemme nähneet useammin kuin kerran, kuinka yllättävää tekniikan tehokkuus on jopa kuvantunnistusasiantuntijoiden keskuudessa. Alla puhumme joistakin esimerkeistä.

1. Kasvojentunnistusmallimme

1.1. Neuroverkko ja käsittelynopeus

Tunnistamiseen käytämme ResNet 101 -hermoverkkomallin modifikaatiota, jonka lopussa keskimääräinen poolaus korvataan täysin yhdistetyllä kerroksella, samalla tavalla kuin ArcFacessa. Vektoriesitysten koko on kuitenkin 128, ei 512. Koulutussarjamme sisältää noin 10 miljoonaa kuvaa 273 593 ihmisestä.

Malli toimii erittäin nopeasti huolellisesti valitun palvelinkonfiguraatioarkkitehtuurin ja GPU-laskennan ansiosta. Vastauksen saaminen API:lta kestää 100 ms sisäisissä verkoissamme – tähän sisältyy kasvojen havaitseminen (kasvojen havaitseminen valokuvassa), PersonID:n tunnistaminen ja palauttaminen API-vastauksessa. Kun saapuvat suuret tietomäärät - valokuvat ja videot - tiedon siirtäminen palveluun ja vastauksen saaminen vie paljon enemmän aikaa.

1.2. Arvioi mallin tehokkuutta

Mutta hermoverkkojen tehokkuuden määrittäminen on hyvin moniselitteinen tehtävä. Heidän työn laatunsa riippuu siitä, mihin tietosarjoihin mallit on koulutettu ja onko ne optimoitu työskentelemään tietyn tiedon kanssa.

Aloimme arvioida mallimme tarkkuutta suositulla LFW-varmistustestillä, mutta se on liian pieni ja yksinkertainen. Kun se on saavutettu 99,8 %:n tarkkuudella, se ei ole enää hyödyllinen. Tunnistusmallien arvioinnissa on hyvä kilpailu - Megaface, jossa saavutimme vähitellen 82 %:n ykkössijalle. Megaface-testi koostuu miljoonasta valokuvasta - distractors - ja mallin pitäisi pystyä erottamaan hyvin useita tuhansia julkkisten valokuvia Facescrubista. tietojoukko häiriötekijöistä. Tyhjennettyämme Megaface-testin virheistä huomasimme kuitenkin, että tyhjennetyllä versiolla saavutamme 1 %:n tarkkuuden 98. sijalla (julkkisten kuvat ovat yleensä melko tarkkoja). Siksi he loivat erillisen tunnistustestin, joka oli samanlainen kuin Megaface, mutta jossa oli valokuvia "tavallisista" ihmisistä. Sitten paransimme tietojoukkojen tunnistustarkkuutta ja menimme pitkälle eteenpäin. Lisäksi käytämme useista tuhansista kuvista koostuvaa klusterointilaatutestiä; se simuloi kasvojen merkitsemistä käyttäjän pilvessä. Tässä tapauksessa klusterit ovat samankaltaisten yksilöiden ryhmiä, yksi ryhmä jokaista tunnistettavaa henkilöä kohden. Tarkistimme työn laadun todellisissa ryhmissä (tosi).

Tietenkin tunnistusvirheitä tapahtuu kaikissa malleissa. Mutta tällaiset tilanteet ratkaistaan ​​usein hienosäätämällä kynnysarvoja tiettyjä ehtoja varten (kaikissa konferensseissa käytämme samoja kynnysarvoja, mutta esimerkiksi kulunvalvontajärjestelmissä meidän on nostettava kynnysarvoja huomattavasti, jotta vääriä positiivisia tulee vähemmän). Suurin osa konferenssivieraista tunnisti oikein Vision-valokuvakopistamme. Joskus joku katsoi rajattua esikatselua ja sanoi: "Järjestelmäsi teki virheen, en ollut minä." Sitten avasimme kuvan kokonaisuudessaan, ja kävi ilmi, että kuvassa todella oli tämä vierailija, mutta emme kuvanneet häntä, vaan joku muu, henkilö sattui olemaan taustalla sumennusvyöhykkeellä. Lisäksi hermoverkko tunnistaa usein oikein, vaikka osa kasvoista ei olisi näkyvissä tai henkilö seisoo profiilissa tai jopa puoliksi kääntynyt. Järjestelmä tunnistaa henkilön vaikka kasvot olisivat optisen vääristymän alueella, esimerkiksi laajakulmaobjektiivilla kuvattaessa.

1.3. Esimerkkejä testaamisesta vaikeissa tilanteissa

Alla on esimerkkejä siitä, kuinka hermoverkkomme toimii. Valokuvat lähetetään syötteeseen, jotka hänen tulee merkitä henkilötunnuksella - henkilön yksilöivällä tunnisteella. Jos kahdella tai useammalla kuvalla on sama henkilöllisyystodistus, niin näissä kuvissa on mallien mukaan sama henkilö.

Huomaa heti, että testattaessa meillä on pääsy erilaisiin parametreihin ja mallikynnyksiin, jotka voimme konfiguroida saavuttamaan tietyn tuloksen. Julkinen API on optimoitu maksimaaliseen tarkkuuteen yleisissä tapauksissa.

Aloitetaan yksinkertaisimmasta, edessä olevasta kasvojentunnistuksesta.

Partalla, tummat lasit ja profiilissa: vaikeita tilanteita tietokonenäön kannalta

No, se oli liian helppoa. Monimutkaistaan ​​tehtävää, lisätään parta ja kourallinen vuosia.

Partalla, tummat lasit ja profiilissa: vaikeita tilanteita tietokonenäön kannalta

Jotkut sanovat, että tämä ei myöskään ollut liian vaikeaa, koska molemmissa tapauksissa koko kasvot näkyvät ja algoritmin käytettävissä on paljon tietoa kasvoista. Okei, muutetaan Tom Hardy profiiliksi. Tämä ongelma on paljon monimutkaisempi, ja olemme käyttäneet paljon vaivaa ratkaistaksemme sen onnistuneesti säilyttäen samalla alhaisen virheprosentin: valitsimme harjoitusjoukon, mietimme hermoverkon arkkitehtuuria, hioimme häviöfunktioita ja paransimme esikäsittelyä. valokuvista.

Partalla, tummat lasit ja profiilissa: vaikeita tilanteita tietokonenäön kannalta

Laitetaan hänelle päähine:

Partalla, tummat lasit ja profiilissa: vaikeita tilanteita tietokonenäön kannalta

Muuten, tämä on esimerkki erityisen vaikeasta tilanteesta, koska kasvot ovat voimakkaasti peitetyt, ja alakuvassa on myös syvä varjo, joka piilottaa silmät. Tosielämässä ihmiset muuttavat usein ulkonäköään tummien lasien avulla. Tehdään sama Tomin kanssa.

Partalla, tummat lasit ja profiilissa: vaikeita tilanteita tietokonenäön kannalta

Okei, yritetään heittää kuvia eri ikäisistä, ja tällä kertaa kokeillaan eri näyttelijöiden kanssa. Otetaanpa paljon monimutkaisempi esimerkki, jossa ikään liittyvät muutokset ovat erityisen voimakkaita. Tilanne ei ole kaukaa haettu, se tapahtuu melko usein, kun joudut vertaamaan passissa olevaa kuvaa sen haltijan kasvoihin. Loppujen lopuksi ensimmäinen valokuva lisätään passiin, kun omistaja on 20-vuotias, ja 45-vuotiaana ihminen voi muuttua suuresti:

Partalla, tummat lasit ja profiilissa: vaikeita tilanteita tietokonenäön kannalta

Luuletko, että mahdottomien tehtävien pääasiantuntija ei ole muuttunut paljon iän myötä? Luulen, että muutamatkin yhdistäisivät ylä- ja alakuvat, poika on muuttunut niin paljon vuosien varrella.

Partalla, tummat lasit ja profiilissa: vaikeita tilanteita tietokonenäön kannalta

Neuroverkot kohtaavat ulkonäön muutoksia paljon useammin. Esimerkiksi joskus naiset voivat muuttaa imagoaan suuresti kosmetiikan avulla:

Partalla, tummat lasit ja profiilissa: vaikeita tilanteita tietokonenäön kannalta

Tehdään nyt tehtävästä vieläkin monimutkaisempi: oletetaan, että kasvojen eri osat on peitetty eri valokuvissa. Tällaisissa tapauksissa algoritmi ei voi verrata kokonaisia ​​näytteitä. Vision hoitaa kuitenkin tällaiset tilanteet hyvin.

Partalla, tummat lasit ja profiilissa: vaikeita tilanteita tietokonenäön kannalta

Muuten, valokuvassa voi olla paljon kasvoja, esimerkiksi yleiskuvaan salista mahtuu yli 100 ihmistä. Tämä on vaikea tilanne hermoverkoille, koska monet kasvot voivat valaistua eri tavalla, jotkut epätarkkoja. Jos kuva on kuitenkin otettu riittävällä resoluutiolla ja laadulla (vähintään 75 pikseliä kasvoja peittävällä neliöllä), Vision pystyy havaitsemaan ja tunnistamaan sen.

Partalla, tummat lasit ja profiilissa: vaikeita tilanteita tietokonenäön kannalta

Reportaasivalokuvien ja valvontakameroiden kuvien erikoisuus on, että ihmiset ovat usein sumeita, koska he olivat epätarkkoja tai liikkuivat sillä hetkellä:

Partalla, tummat lasit ja profiilissa: vaikeita tilanteita tietokonenäön kannalta

Myös valaistuksen voimakkuus voi vaihdella suuresti kuvasta toiseen. Tästäkin tulee usein kompastuskivi; monilla algoritmeilla on suuria vaikeuksia käsitellä oikein liian tummia ja liian vaaleita kuvia, puhumattakaan niiden täsmällisyydestä. Haluan muistuttaa, että tämän tuloksen saavuttamiseksi sinun on määritettävä kynnykset tietyllä tavalla; tämä ominaisuus ei ole vielä julkisesti saatavilla. Käytämme kaikille asiakkaille samaa hermoverkkoa, jossa on useimpiin käytännön tehtäviin sopivat kynnykset.

Partalla, tummat lasit ja profiilissa: vaikeita tilanteita tietokonenäön kannalta

Julkaisimme äskettäin mallin uuden version, joka tunnistaa aasialaiset kasvot suurella tarkkuudella. Tämä oli ennen suuri ongelma, jota kutsuttiin jopa "koneoppimisen" (tai "hermoverkkojen") rasismiksi. Eurooppalaiset ja amerikkalaiset neuroverkot tunnistivat valkoihoiset kasvot hyvin, mutta Mongoloid- ja Negroid-kasvoilla tilanne oli paljon huonompi. Todennäköisesti Kiinassa tilanne oli juuri päinvastainen. Kyse on koulutustietosarjoista, jotka kuvastavat tietyn maan hallitsevia ihmistyyppejä. Tilanne on kuitenkin muuttumassa, nykyään tämä ongelma ei ole niin akuutti. Näkökyvyllä ei ole ongelmia eri rotujen ihmisten kanssa.

Partalla, tummat lasit ja profiilissa: vaikeita tilanteita tietokonenäön kannalta

Kasvojentunnistus on vain yksi monista teknologiamme sovelluksista; Vision voidaan kouluttaa tunnistamaan mitä tahansa. Esimerkiksi rekisterikilvet, myös algoritmien kannalta vaikeissa olosuhteissa: terävissä kulmissa, likaiset ja vaikeasti luettavat rekisterikilvet.

Partalla, tummat lasit ja profiilissa: vaikeita tilanteita tietokonenäön kannalta

2. Käytännön käyttötapauksia

2.1. Fyysinen kulunvalvonta: kun kaksi henkilöä käyttää samaa passia

Visionin avulla voit toteuttaa järjestelmiä työntekijöiden saapumisen ja lähtemisen kirjaamiseen. Perinteisessä sähköisiin passeihin perustuvassa järjestelmässä on ilmeisiä haittoja, esimerkiksi kaksi henkilöä voi kulkea yhdellä tunnuksella. Jos kulunvalvontajärjestelmää (ACS) täydennetään Visionilla, se tallentaa rehellisesti kuka tuli/lähti ja milloin.

2.2. Ajan seuranta

Tämä Visionin käyttötapaus liittyy läheisesti edelliseen. Jos täydennät pääsyjärjestelmää kasvojentunnistuspalvelullamme, se pystyy paitsi havaitsemaan kulunvalvontarikkomuksia myös rekisteröimään työntekijöiden todellisen läsnäolon rakennuksessa tai tilassa. Toisin sanoen Vision auttaa sinua ottamaan rehellisesti huomioon, kuka tuli töihin ja mihin aikaan lähti ja kuka jätti työt kokonaan väliin, vaikka hänen työtoverinsa olisivat suojanneet häntä esimiesten edessä.

2.3. Videoanalyysi: ihmisten seuranta ja turvallisuus

Seuraamalla ihmisiä Visionin avulla voit arvioida tarkasti ostosalueiden, juna-asemien, käytävien, katujen ja monien muiden julkisten paikkojen todellista liikennettä. Seurannastamme voi olla suuri apu myös esimerkiksi varastoon tai muihin tärkeisiin toimistotiloihin pääsyn hallinnassa. Ja tietysti ihmisten ja kasvojen jäljittäminen auttaa ratkaisemaan turvallisuusongelmia. Oletko saanut kiinni jonkun varastavan kaupastasi? Lisää hänen Visionin palauttama PersonID-tunnuksensa videoanalytiikkaohjelmistosi mustalle listalle, ja seuraavan kerran järjestelmä hälyttää suojaukselle välittömästi, jos tämä tyyppi ilmestyy uudelleen.

2.4. Kaupassa

Vähittäiskauppa ja erilaiset palveluyritykset ovat kiinnostuneita jonotunnistuksesta. Visionin avulla voit tunnistaa, että kyseessä ei ole satunnainen joukko ihmisiä, vaan jono, ja määrittää sen pituuden. Ja sitten järjestelmä ilmoittaa vastuuhenkilöille jonosta, jotta he selvittävät tilanteen: joko vieraita tulee ja lisätyöntekijöitä on kutsuttava tai joku löystyy työtehtävissään.

Toinen mielenkiintoinen tehtävä on erottaa hallissa olevat yrityksen työntekijät vierailijoista. Tyypillisesti järjestelmä on koulutettu erottamaan esineet, joissa on tiettyjä vaatteita (pukukoodi) tai jollakin erityisellä ominaisuudella (merkkihuivi, rinnassa oleva merkki jne.). Tämä auttaa arvioimaan tarkemmin läsnäoloa (jotta työntekijät eivät "paisuta" salissa olevien ihmisten tilastoja pelkällä läsnäolollaan).

Kasvojentunnistuksen avulla voit myös arvioida yleisöäsi: mikä on vierailijoiden uskollisuus eli kuinka monta ihmistä palaa yritykseesi ja millä tiheydellä. Laske kuinka monta yksittäistä kävijää tulee luoksesi kuukaudessa. Vetovoiman ja säilyttämisen kustannusten optimoimiseksi voit myös selvittää liikenteen muutoksen viikonpäivästä ja jopa kellonajasta riippuen.

Franchising-antajat ja ketjuyritykset voivat tilata valokuviin perustuvan arvion eri vähittäismyyntipisteiden brändäyksen laadusta: logojen, kylttien, julisteiden, bannerien ja niin edelleen.

2.5. Kuljetuksella

Toinen esimerkki turvallisuuden varmistamisesta videoanalytiikan avulla on hylättyjen esineiden tunnistaminen lentokenttien tai juna-asemien hallissa. Näkökykyä voidaan harjoitella tunnistamaan satojen luokkien esineitä: huonekaluja, laukkuja, matkalaukkuja, sateenvarjoja, erilaisia ​​vaatteita, pulloja ja niin edelleen. Jos videoanalytiikkajärjestelmäsi havaitsee omistajattoman kohteen ja tunnistaa sen Visionin avulla, se lähettää signaalin turvapalvelulle. Samanlainen tehtävä liittyy epätavallisten tilanteiden automaattiseen havaitsemiseen julkisilla paikoilla: joku tuntee olonsa sairaaksi, joku tupakoi väärässä paikassa tai henkilö putoaa kiskoille ja niin edelleen - kaikki nämä kuviot voidaan tunnistaa videoanalytiikkajärjestelmillä Vision API:n kautta.

2.6. Asiakirjan kulku

Toinen mielenkiintoinen tulevaisuuden Vision-sovellus, jota parhaillaan kehitämme, on asiakirjojen tunnistus ja niiden automaattinen jäsentäminen tietokantoihin. Sen sijaan, että syöttäisit käsin (tai pahempaa, syöttäisit) loputtomia sarjoja, numeroita, myöntämispäiviä, tilinumeroita, pankkitietoja, syntymäpäiviä ja -paikkoja ja monia muita virallisia tietoja, voit skannata asiakirjoja ja lähettää ne automaattisesti suojatun kanavan kautta API pilveen, jossa järjestelmä tunnistaa nämä asiakirjat lennossa, jäsentää ne ja palauttaa vastauksen tiedoineen vaaditussa muodossa automaattista pääsyä tietokantaan. Tänään Vision osaa jo luokitella asiakirjat (mukaan lukien PDF) - erottaa passit, SNILS, TIN, syntymätodistukset, vihkitodistukset ja muut.

Tietenkään hermoverkko ei pysty käsittelemään kaikkia näitä tilanteita suoraan. Kussakin tapauksessa rakennetaan uusi malli tietylle asiakkaalle, otetaan huomioon monet tekijät, vivahteet ja vaatimukset, valitaan tietojoukot ja suoritetaan koulutuksen, testauksen ja konfiguroinnin iteraatioita.

3. API-toimintamalli

Visionin "sisäänkäyntiportti" käyttäjille on REST API. Se voi vastaanottaa kuvia, videotiedostoja ja lähetyksiä verkkokameroista (RTSP-virrat) tulona.

Tarvitset Visionia käyttääksesi rekisteri Mail.ru Cloud Solutions -palvelussa ja vastaanottaa pääsytunnukset (client_id + client_secret). Käyttäjän todennus suoritetaan OAuth-protokollan avulla. POST-pyyntöjen rungoissa olevat lähdetiedot lähetetään API:lle. Ja vastauksena asiakas saa API:lta tunnistustuloksen JSON-muodossa, ja vastaus on jäsennelty: se sisältää tietoa löydetyistä objekteista ja niiden koordinaateista.

Partalla, tummat lasit ja profiilissa: vaikeita tilanteita tietokonenäön kannalta

Esimerkkivastaus

{
   "status":200,
   "body":{
      "objects":[
         {
            "status":0,
            "name":"file_0"
         },
         {
            "status":0,
            "name":"file_2",
            "persons":[
               {
                  "tag":"person9"
                  "coord":[149,60,234,181],
                  "confidence":0.9999,
                  "awesomeness":0.45
               },
               {
                  "tag":"person10"
                  "coord":[159,70,224,171],
                  "confidence":0.9998,
                  "awesomeness":0.32
               }
            ]
         }

         {
            "status":0,
            "name":"file_3",
            "persons":[
               {
               "tag":"person11",
               "coord":[157,60,232,111],
               "aliases":["person12", "person13"]
               "confidence":0.9998,
               "awesomeness":0.32
               }
            ]
         },
         {
            "status":0,
            "name":"file_4",
            "persons":[
               {
               "tag":"undefined"
               "coord":[147,50,222,121],
               "confidence":0.9997,
               "awesomeness":0.26
               }
            ]
         }
      ],
      "aliases_changed":false
   },
   "htmlencoded":false,
   "last_modified":0
}

Vastaus sisältää mielenkiintoisen mahtavan parametrin - tämä on kasvojen ehdollinen "viileys" valokuvassa, jonka avulla valitsemme sarjasta parhaan kuvan kasvoista. Koulutimme hermoverkkoa ennustamaan todennäköisyyttä, että valokuvasta tykätään sosiaalisessa mediassa. Mitä parempi valokuvan laatu ja mitä hymyilevämmät kasvot ovat, sitä suurempi on mahtavuus.

API Vision käyttää käsitettä nimeltä space. Tämä on työkalu erilaisten kasvojen luomiseen. Esimerkkejä tiloista ovat mustat ja valkoiset listat, luettelot vierailijoista, työntekijöistä, asiakkaista jne. Jokaiselle Visionin tunnukselle voit luoda enintään 10 tilaa, jokaisessa tilassa voi olla jopa 50 tuhatta henkilötunnusta, eli jopa 500 tuhatta. per merkki. Lisäksi tokenien määrää tiliä kohti ei ole rajoitettu.

Nykyään API tukee seuraavia tunnistus- ja tunnistusmenetelmiä:

  • Tunnista/Aseta - kasvojen tunnistus ja tunnistus. Määrittää automaattisesti henkilötunnuksen jokaiselle yksilölliselle henkilölle, palauttaa löydettyjen henkilöiden henkilötunnuksen ja koordinaatit.
  • Poista - tietyn henkilötunnuksen poistaminen henkilötietokannasta.
  • Katkaise - tyhjentää koko tilan PersonID:stä, hyödyllinen, jos sitä käytettiin testitilana ja sinun on palautettava tietokanta tuotantoa varten.
  • Detect - havaitsee esineet, kohtaukset, rekisterikilvet, maamerkit, jonot jne. Palauttaa löydettyjen esineiden luokan ja niiden koordinaatit
  • Tunnista asiakirjoille - havaitsee tietyntyyppiset Venäjän federaation asiakirjat (erottelee passin, SNILSin, verotunnisteen jne.).

Pian saamme myös päätökseen OCR-menetelmien, sukupuolen, iän ja tunteiden määrittämisen sekä merchandising-ongelmien ratkaisemisen eli automaattisen tavaroiden esillepanon hallinnan myymälöissä. Löydät täydellisen API-dokumentaation täältä: https://mcs.mail.ru/help/vision-api

4. Päätelmä

Nyt voit käyttää julkisen API:n kautta kasvojentunnistusta valokuvissa ja videoissa; erilaisten esineiden, rekisterikilpien, maamerkkien, asiakirjojen ja kokonaisten kohtausten tunnistamista tuetaan. Sovellusskenaariot - meri. Tule testaamaan palveluamme, aseta se vaikeimmat tehtävät. Ensimmäiset 5000 tapahtumaa ovat ilmaisia. Ehkä se on "puuttuva ainesosa" projekteillesi.

Voit käyttää API:a välittömästi rekisteröinnin ja yhteyden muodostamisen jälkeen. Visio. Kaikki Habran käyttäjät saavat tarjouskoodin lisätapahtumia varten. Kirjoita minulle sähköpostiosoite, jota käytit tilisi rekisteröinnissä!

Lähde: will.com

Lisää kommentti