Program Računalniški vid – Center za nadaljnje izobraževanje – Nacionalna raziskovalna univerza Visoka ekonomska šola. Kako računalniški vid spreminja trge računalniški vid Yandex

»Nič v biologiji nima smisla, razen v luči evolucije,« je v sedemdesetih letih prejšnjega stoletja zapisal znanstvenik Theodosius Dobzhansky. Danes lahko ponovimo njegov slavni aforizem: "Nič v sodobnem svetu nima smisla razen v luči umetne inteligence." Umetna inteligenca, strojno učenje, računalniški vid in druge tehnologije se zdaj uporabljajo v vsem, od samovozečih avtomobilov do pametnih telefonov.

Nova vizija

Vzpon umetne inteligence nam je v bistvu dal še en občutek: računalniški vid uporablja analizo milijonov slik, da ljudem in strojem pomaga bolje krmariti po svetu. Računalniški vid pomaga kirurgom pri operacijah, avtomobili se izogibajo oviram, otroci pa lovijo Pokemone.
Načelo delovanja računalniškega vida postane jasno, če razumete, kako ljudje sami vidijo, saj ustvarjamo stroje, kot smo sami. Najprej se s pogledom upremo v določen predmet, nato ga naši možgani analizirajo, prepoznavajo oblike, barve in podrobnosti. Računalniški algoritmi delujejo na podoben način: po vnaprejšnjem usposabljanju na številnih slikah začnejo »razumeti«, kaj točno je prišlo v objektiv kamere.

Svetovni trg računalniškega vida bo do leta 2023 presegel 25 milijard dolarjev.

Svetovni trg računalniškega vida bo do leta 2023 presegel 25 milijard dolarjev.
Tehnologija postaja vse bolj iskana, danes je postala del našega vsakdana. V prihodnosti bo računalniški vid še naprej ustvarjal nove priložnosti za ljudi in spreminjal celotne industrije.

Nov prevoz

Letos Tesla obljublja izdajo posodobitve programske opreme za svoje avtomobile, ki bo omogočala popolno avtonomijo. Teslin avtopilot je do zdaj le pomagal vozniku, kmalu pa ga bo lahko povsem nadomestil. To je samo en primer revolucionarnih sprememb v transportu, ki jih bo industriji prinesel računalniški vid. Proizvajalci avtomobilov in IT podjetja so že dolgo vpleteni v tekmo za vodilni položaj v prevozu brez voznika; očitno bodo avtomobili brez voznika v prihodnjih letih postali običajni na mestnih ulicah.

Računalniški vid v avtomobilih analizira informacije, prejete iz več senzorjev, kamer in radarjev. Algoritmi prepoznajo avtomobile in pešce, cestne oznake in znake. Nemško podjetje Continental uporablja računalniški vid in umetno inteligenco za napovedovanje namer pešcev. Da bi dosegli popolno avtonomijo na cesti, se morajo brezpilotna vozila naučiti razumeti dejanja vseh udeležencev v prometu in sprejemati prave odločitve v različnih situacijah. Continentalovi algoritmi lahko zaznajo bližajočega se pešca, analizirajo njegove kretnje in predvidijo njihova naslednja dejanja – tako kot izkušeni vozniki predvidijo razvoj prometne situacije.

Uvedba dronov bo včasih dobila nepričakovane oblike. Ford že preizkuša prototip avtonomnega dostavnega sistema. Njegov kombi brez voznika bo lahko prevzemal naročila iz trgovin in kavarn ter jih dostavljal strankam. Tako bo računalniški vid brez dela pustil ne le taksiste, ampak tudi kurirje.

Nova maloprodaja

Najprej je Amazon naredil priljubljene e-knjige, nato je prešel na glasovne pomočnike, zdaj pa je na vrsti računalniški vid za praktično uporabo. Novi pripomoček Echo Look je kot pomočnik Alexa, le da ima "oči". Echo Look svoji lastnici modno svetuje: kaj obleči, s čim kombinirati različne kose oblačil in kako urediti garderobo. Stilisti in osebni nakupovalci bodo imeli težko delo: 200 $ umetna inteligenca lahko obravnava priporočila bolje kot kateri koli človek.

Ugibanje točne velikosti otroških čevljev je včasih lahko težavno, a aplikacija SpeedSmith reši to težavo. Dovolj je, da fotografirate otrokovo stopalo in program bo hitro določil velikost. Tako računalniški vid staršem olajša življenje z odpravo napak pri nakupovanju.
Računalniški vid ne bo pomagal le ljudem, ampak tudi podjetjem. X5 Retail Group preizkuša program v več trgovinah Perekrestok in Pyaterochka, ki uporablja tehnologijo za analizo zasedenosti polic. Sistem prepozna približno 1500 artiklov in vam sporoči, kdaj je čas, da dodate izdelek, ki ga ni na zalogi, na polico. Poleg tega umetna inteligenca spremlja čakalne vrste: če algoritem razume, da je v čakalni vrsti več kot pet ljudi, vodja trgovine prejme obvestilo.

Vsevidno oko

Danes mejne službe uporabljajo računalniški vid za nadzor kršiteljev. Pred kratkim so raziskovalci predstavili nov izdelek, ki analizira slike iz kamere, nameščene na dronu, in v realnem času prepoznava pretepe in streljanje na ulicah. MIT je šel še dlje z usposabljanjem algoritma za prepoznavanje gibanja ljudi za zidom.
Nekaterim se bo takšna prihodnost zdela utopija, kjer namesto ljudi delajo roboti. Nekateri bodo to videli kot distopijo, kjer je vsaka oseba pod stalnim nadzorom. Nekaj ​​je jasno: računalniški vid korenito spreminja svet.

  • Strojno učenje
  • Zadnjih osem let se aktivno ukvarjam s problemi, povezanimi s prepoznavanjem vzorcev, računalniškim vidom in strojnim učenjem. Izkazalo se je, da se je nabralo precej izkušenj in projektov (nekaj lastnih, nekaj kot redni programer, nekaj po naročilu). Poleg tega, odkar sem napisal nekaj člankov na Habréju, me bralci pogosto kontaktirajo in me prosijo, naj pomagam pri njihovi nalogi, naj jim kaj svetujem. Zato nemalokrat naletim na povsem nepredvidljive aplikacije CV algoritmov.
    Ampak prekleto, 90% časa vidim isto sistemsko napako. Vsake toliko časa. V zadnjih 5 letih sem to že razložil na desetine ljudi. Zakaj, sam to počnem občasno ...

    V 99% težav z računalniškim vidom ideja o problemu, ki ste jo oblikovali v svoji glavi, še bolj pa pot rešitve, ki ste jo začrtali, nima nič skupnega z resničnostjo. Vedno se bodo pojavljale situacije, na katere ne bi mogli niti pomisliti. Edini način za oblikovanje problema je zbiranje podatkovne baze primerov in delo z njo, pri čemer upoštevamo idealne in najslabše situacije. Širša kot je osnova, bolj natančno je postavljena naloga. Brez baze je nemogoče govoriti o nalogi.

    Trivialna misel. Ampak vsi se motijo. Vse. V tem članku bom navedel več primerov takih situacij. Ko je naloga zastavljena slabo, ko je dobra. In kakšne pasti vas čakajo pri oblikovanju tehničnih specifikacij za sisteme računalniškega vida.

    Sama naloga je po mojem mnenju precej rešljiva. Če vzamemo oznake kot referenčne točke in primerjamo z istimi metodami, kot se uporabljajo za primerjavo. Ampak, spet, dokler baze podatkov ne preizkusite z vsaj nekaj sto primeri, ne boste nikoli vedeli, ali je delo mogoče uspešno dokončati. Toda iz neznanega razloga avtorju članka ta predlog ni bil všeč ... Škoda!
    To sta po mojem mnenju najbolj pomenljiva in reprezentativna primera. Iz njih lahko razumete, zakaj se morate abstrahirati od ideje in gledati resnične posnetke.
    Še nekaj primerov, ki sem jih srečal, a na kratko. V vseh teh primerih ljudje niso imeli niti ene fotografije, ko so začeli spraševati o izvedljivosti naloge:
    1) Prepoznavanje številk na majicah maratoncev s pomočjo video toka (slika iz Yandyxa)


    zdravo. Ko sem pripravljal članek sem naletel na to. Zelo dober primer, ki prikazuje vse morebitne težave. To so različne pisave, to je nestabilno ozadje s sencami, to je zamegljenost in zmečkani vogali. In najpomembnejše. Stranka ponudi idealizirano osnovo. Posneto z dobro kamero na sončen dan. Poskusite pogledati številke športnikov na njihovih dresih z iskalnikom Yandyx.
    Hy.Hy Nekaj ​​ur pred objavo me je avtor naročila nenadoma kontaktiral s ponudbo, da prevzamem delo, kar sem zavrnil :) Kljub temu je to karma, dodajte to v članek.

    2) Prepoznavanje besedila na fotografijah zaslonov telefona


    3) In moj najljubši primer. Pismo po pošti:
    " Potrebujemo program za komercialni sektor za prepoznavanje slik.
    Algoritem dela je naslednji. programski operater določi slike predmeta(-ov) iz več zornih kotov itd.
    potem, ko se pojavi ta ali najbolj podobna slika predmeta, program izvede zahtevano/določeno dejanje.
    Seveda vam podrobnosti še ne morem povedati.
    "(črkovanje, ločila ohranjena)

    Dobro
    Vendar ni vse tako slabo! Pogosto se pojavi situacija, ko je naloga postavljena idealno. Moja najljubša: »Potrebujemo programsko opremo za samodejno štetje losov na fotografijah.
    Poslal vam bom primer fotografije z losi."



    Obe fotografiji je mogoče klikniti.
    Še vedno mi je žal, da ta naloga ni uspela. Najprej sem zagovarjala doktorsko disertacijo in bila zaposlena, potem pa je naročnik nekako izgubil navdušenje (oz. našel druge izvajalce).
    V produkciji ni niti najmanjše interpretacije odločitve. Samo dve stvari: “kaj je treba narediti”, “vhodni podatki”. Veliko vnosa. Vse.

    Misel – zaključek

    Edini način za zastavitev naloge je zbiranje baze in določitev metodologije dela na tej bazi. Kaj želite prejeti? Kakšne so meje uporabnosti algoritma? Brez tega ne samo, da ne boste mogli pristopiti k nalogi, ne boste je mogli opraviti. Brez baze podatkov bo stranka vedno lahko rekla: »Ta primer vam ne ustreza. Ampak to je kritična situacija! Brez tega ne bom sprejel službe.”

    Kako ustvariti bazo podatkov

    Verjetno je bilo vse to predzgodba članka. Ta članek se začne tukaj. Ideja, da vsaka naloga CV in ML potrebuje osnovo za testiranje, je očitna. Toda kako zbrati takšno bazo? V mojem spominu je trikrat ali štirikrat prva klicana baza šla na stranišče. Včasih drugega. Ker je bilo nereprezentativno. V čem je težava?
    Morate razumeti, da je "zbiranje baze" = "postavitev težave." Zbrana zbirka podatkov mora:
    1. Odražajo težave naloge;
    2. Odražajo pogoje, pod katerimi bo problem rešen;
    3. Oblikujte nalogo kot tako;
    4. Pripeljite naročnika in izvajalca k soglasju o tem, kaj je bilo narejeno.
    Sezona
    Pred nekaj leti sva se s prijateljem odločila, da narediva sistem, ki bo deloval na mobilnih telefonih in bo prepoznaval registrske tablice, takrat smo bili zelo izpopolnjeni s sistemi CV. Vedeli so, da morajo zbrati tako bazo, da bo to slabo. Pogledati jo in takoj razumeti vse težave. Zbrali smo naslednjo bazo podatkov:


    Naredili smo algoritem, ki je celo dobro deloval. Zagotovljeno 80-85% prepoznavanje izbranih številk.
    No, ja ... Samo poleti, ko so vsi prostori postali čisti in dobri, je natančnost sistema padla za 5 odstotkov ...
    Biometrija
    V življenju smo se precej ukvarjali z biometrijo (,). In zdi se, da so pri zbiranju biometričnih baz pohodili vse mogoče napake.
    Osnovo je treba zbrati v različnih prostorih. Ko je naprava za zbiranje baze podatkov na voljo samo razvijalcem, bo prej ali slej postalo jasno, da je povezana s sosednjo svetilko.
    V biometričnih zbirkah podatkov morate imeti 5-10 slik za vsako osebo. In teh 5-10 slik je treba posneti na različne dni, ob različnih urah dneva. Z večkratnim zaporednim pristopom k biometričnemu skenerju se oseba skenira na enak način. Različni pristopi ob različnih dnevih. Nekatere biometrične lastnosti se lahko čez dan nekoliko spremenijo.
    Baza podatkov, zbrana od razvijalcev, je nereprezentativna. Podzavestno se berejo, da vse deluje ...
    Ali imate nov model optičnega bralnika? Ali ste prepričani, da deluje s staro bazo?
    Tukaj so oči, zbrane iz različnih skenerjev. Različna področja dela, različni poudarki, različne sence, različne prostorske ločljivosti itd.





    Osnova za nevronske mreže in učne algoritme
    Če vaša koda uporablja nekakšen učni algoritem, vso srečo. Ob upoštevanju tega morate oblikovati osnovo za usposabljanje. Recimo, da imate v nalogi prepoznavanja dve zelo različni pisavi. Prvi se pojavi v 90 % primerov, drugi pa v 10 %. Če ti dve pisavi odrežete v določenem razmerju in na njiju trenirate en sam klasifikator, potem bodo z veliko verjetnostjo prepoznane črke prve pisave, črke druge pa ne. Ker bo nevronska mreža/SVM našla lokalni minimum ne tam, kjer je prepoznanih 97 % prve pisave in 97 % druge, ampak tam, kjer je prepoznanih 99 % prve pisave in 0 % druge. Vaša podatkovna baza mora vsebovati dovolj primerov vsake pisave, da usposabljanje ne bi šlo na še en minimum.

    Kako oblikovati bazo pri delu s pravim kupcem

    Eden od nepomembnih problemov pri zbiranju baze podatkov je, kdo naj to stori. Naročnik ali izvajalec. Najprej bom navedel nekaj žalostnih primerov iz življenja.
    Zaposlim vas, da rešite moj problem!
    Točno to je stavek, ki sem ga enkrat slišal. In prekleto, ne moreš se prepirati. A bazo bi morali sestaviti v tovarni, kamor nas nihče ne bi pustil. In še več, ni nam dovolil namestiti opreme. Podatki, ki jih je posredoval kupec, so bili neuporabni: predmet v velikosti več slikovnih pik, zelo hrupna kamera z impulznim šumom, ki občasno trza, največ dvajset testnih slik. Na predloge o vgradnji boljše kamere, izbiri boljšega zornega kota za snemanje, ustvarjanju baze vsaj nekaj sto primerov, je stranka odgovorila s frazo iz naslova.
    Nimamo časa za to!
    Nekega dne se je direktor zelo velikega podjetja (100 zaposlenih + pisarne v številnih državah po svetu) ponudil za pogovor. V produktu, ki ga je izdelalo to podjetje, je bil del funkcionalnosti implementiran z zelo starimi in zelo preprostimi algoritmi. Direktor nam je povedal, da je dolgo sanjal, da bi to funkcionalnost spremenil v sodobne algoritme. Najel sem celo dve različni razvojni ekipi. Vendar se ni izšlo. Ena ekipa je po njegovem preveč teoretizirala, druga pa ni poznala nobene teorije in je počela trivialne stvari. Odločili smo se poskusiti.
    Naslednji dan smo dobili dostop do ogromne količine neobdelanih informacij. Veliko več, kot bi lahko gledal v enem letu. Ko smo nekaj dni analizirali informacije, smo postali previdni in vprašali: "Kaj točno potrebujete od novih algoritmov?" Dobili smo ducat ali dva situacij, v katerih trenutni algoritmi ne delujejo. Toda v nekaj dneh sem videl samo eno ali dve nakazani situaciji. Ko sem pregledal drug kup podatkov, sem lahko našel še enega. Na vprašanje: »Katere situacije sploh skrbijo vaše stranke?« niti direktor niti njegovi glavni inženirji niso znali odgovoriti. Te statistike niso imeli.
    Raziskali smo težavo in predlagali algoritem rešitve, ki bi lahko samodejno zbral vse možne situacije. Potrebovali pa smo pomoč pri dveh stvareh. Najprej razporedite obdelavo informacij na lastne strežnike podjetja (nismo imeli zadostne računalniške moči ali zadostnega kanala do mesta, kjer so bili shranjeni neobdelani podatki). To bi skrbniku podjetja vzelo teden dni dela. In drugič, predstavnik podjetja je moral zbrane informacije razvrstiti po pomembnosti in načinu obdelave (to je še tri dni). Do te točke smo že porabili dva do tri tedne našega časa za analizo podatkov, preučevanje člankov na to temo in pisanje programov za zbiranje informacij (na tej točki ni bil podpisan noben sporazum, vse je bilo narejeno prostovoljno).
    Na kar so nam odgovorili: »Nikogar ne moremo odvrniti od te naloge. Ugotovite sami." S tem smo se poslovili in odšli.
    Stranka zagotovi osnovo
    Bil je še en primer. Tokrat je kupec manjši. In sistem, ki ga upravlja stranka, je razpršen po vsej državi. Vendar stranka razume, da baze podatkov ne bomo sestavili. In po svojih najboljših močeh se trudi zbrati bazo. Zbira. Zelo veliko in raznoliko. In celo zagotavlja, da je baza reprezentativna. Začnimo z delom. Skoraj zaključujemo algoritem. Pred dostavo se izkaže, da algoritem deluje na zbrani bazi podatkov. In izpolnjujemo pogoje pogodbe. Toda osnova je bila nereprezentativna. V njem ni 2/3 situacij. In tiste situacije, ki obstajajo, so zastopane nesorazmerno. In na resničnih podatkih sistem deluje veliko slabše.
    Tako to deluje. Trudili smo se po najboljših močeh. Naredili so vse, kar so obljubili, čeprav se je izkazalo, da je naloga veliko težja od načrtovane. Stranka je poskusila. Veliko časa sem porabil za zbiranje baze podatkov.
    Toda končni rezultat je zanič. Nekaj ​​sem se moral sproti domisliti, nekako zamašiti luknje ...
    Kdo naj torej tvori osnovo?
    Težava je v tem, da se težave z računalniškim vidom pogosto pojavljajo v kompleksnih sistemih. Sistemi, ki so jih desetletja izdelovali številni ljudje. In razumevanje takega sistema pogosto traja veliko dlje kot reševanje samega problema. In stranka želi, da se razvoj začne jutri. In seveda ponudba, da plačate za pripravo tehničnih specifikacij in baze podatkov znesek, ki je 2-krat višji od stroškov naloge, da povečate časovni okvir za 3-krat, da omogočite dostop do svojih sistemov in algoritmov, da dodelite zaposlenega ki bo pokazal in povedal vse, povzroča zmedo.
    Po mojem mnenju reševanje katerega koli problema računalniškega vida zahteva stalen dialog med naročnikom in izvajalcem ter željo naročnika po formuliranju problema. Izvajalec ne vidi vseh nians strankinega poslovanja in ne pozna sistema od znotraj. Nikoli nisem videl, da bi pristop: "tukaj je denar, jutri se odloči namesto mene" deloval. Obstajala je rešitev. Toda ali je delovalo, kot bi moralo?
    Sama se skušam takih pogodb izogibati kot ognja. Ali delam sam ali v kakšnem podjetju, ki je sprejelo naročilo za razvoj.
    Na splošno lahko situacijo predstavimo takole: recimo, da želite organizirati svojo poroko. Ti lahko:
    Premislite in organizirajte vse sami od začetka do konca. V bistvu je ta možnost "sami rešite težavo."
    Premislite vse od začetka do konca. Napišite vse skripte. In najeti izvajalce za vsako vlogo. Zdravica, da gostom ni dolgčas, restavracija, da je vse pripravljeno in izpeljano. Napišite glavni oris za toastmasterja, meni za restavracijo. Ta možnost je dialog. Izvajalcu posredujte podatke, zapišite vse, kar zahteva.
    Lahko razmišljate v velikih blokih, ne da bi se spuščali v podrobnosti. Najemite toastmasterja, naj dela, kar dela. Ne strinjajte se glede jedilnika restavracije. Naročite oblikovalcu, da izbere obleko, pričesko, sliko. Glavoboli so minimalni, a ko se začnejo tekmovanja v slačenju, lahko razumete, da je bilo nekaj narejeno narobe. Še zdaleč ni dejstvo, da bosta izvajalec in stranka, ko sta oblikovala nalogo v slogu "prepoznaj simbol zame", razumela isto.
    Lahko pa vse naročite pri poročni agenciji. Drago, sploh ni treba razmišljati. Nihče pa ne ve, kaj se bo zgodilo. Možnost je »naredi mi dobro«. Najverjetneje bo kakovost odvisna od stroškov. Ni pa nujno

    Ali obstajajo naloge, pri katerih osnova ni potrebna?

    Jejte. Prvič, pri nalogah, kjer je osnova pretežka. Na primer razvoj robota, ki analizira video in se na podlagi tega odloča. Potrebujemo nekakšno testno mizo. Izdelate lahko podlage za nekatere posamezne funkcije. Toda pogosto je nemogoče ustvariti osnovo za celoten cikel dejanj. Drugič, ko poteka raziskovalno delo. Na primer, razvijamo ne le algoritme, ampak tudi napravo, ki bo uporabljena za zbiranje baze podatkov. Vsak dan nova naprava, novi parametri. Ko se algoritem spremeni trikrat na dan. V takih razmerah je osnova neuporabna. Ustvarite lahko nekaj lokalnih baz podatkov, ki se spreminjajo vsak dan. Toda nekaj globalnega je nesmiselno.
    Tretjič, to so naloge, pri katerih lahko narediš model. Modelarstvo je na splošno zelo obsežna in kompleksna tema. Če je mogoče poceni narediti dober model, potem to seveda morate narediti. Če želite prepoznati besedilo, kjer je samo ena pisava, je najlažji način, da ustvarite algoritem za modeliranje (
  • Obdelava slik
  • Obseg računalniškega vida je zelo širok: od čitalcev črtne kode v supermarketih do obogatene resničnosti. Iz predavanja boste izvedeli, kje se uporablja računalniški vid in kako deluje, kako izgledajo slike v številkah, kateri problemi na tem področju so relativno enostavno rešljivi, kateri težki in zakaj.

    Predavanje je namenjeno srednješolcem – dijakom Male ŠAD, vendar se bodo na njem lahko veliko koristnega naučili tudi odrasli.

    Sposobnost videnja in prepoznavanja predmetov je človeku naravna in običajna sposobnost. Vendar je to še vedno izjemno težka naloga za računalnik. Zdaj se poskuša računalnik naučiti vsaj delčka tega, kar človek uporablja vsak dan, ne da bi tega sploh opazil.

    Verjetno najpogostejši kraj, s katerim se navaden človek sreča z računalniškim vidom, je blagajna v supermarketu. Seveda govorimo o branju črtnih kod. Posebej so bili oblikovani tako, da računalniku kar najbolj olajšajo proces branja. Obstajajo pa tudi bolj zapletene naloge: branje avtomobilskih tablic, analiza medicinskih slik, odkrivanje napak v proizvodnji, prepoznavanje obraza itd. Uporaba računalniškega vida za ustvarjanje sistemov razširjene resničnosti se aktivno razvija.

    Razlika med človeškim in računalniškim vidom
    Otrok se postopoma nauči prepoznavati predmete. Začne se zavedati, kako se oblika predmeta spreminja glede na njegov položaj in osvetlitev. V prihodnosti pri prepoznavanju predmetov človeka vodijo prejšnje izkušnje. V svojem življenju se človek nabere ogromno informacij; proces treniranja nevronske mreže se ne ustavi niti za sekundo. Človeku ni posebno težko obnoviti perspektive iz ploske slike in si predstavljati, kako bi vse skupaj izgledalo v treh dimenzijah.

    Vse to je za računalnik veliko težje. In predvsem zaradi problema pridobivanja izkušenj. Zbrati je treba ogromno število primerov, kar pa zaenkrat še ne uspeva.

    Poleg tega človek pri prepoznavanju predmeta vedno upošteva okolje. Če predmet vzamete iz znanega okolja, ga postane opazno težje prepoznati. Tudi tu igrajo vlogo skozi življenje nabrane izkušnje, ki jih računalnik nima.

    Fant ali dekle?
    Predstavljajmo si, da se moramo naučiti določiti spol osebe (oblečene!) na prvi pogled po fotografiji. Najprej morate identificirati dejavnike, ki lahko kažejo na pripadnost določenemu predmetu. Poleg tega morate zbrati komplet za usposabljanje. Zaželeno je, da je reprezentativen. V našem primeru bomo kot učni vzorec vzeli vse prisotne v občinstvu. In na njihovi podlagi poskusimo poiskati razlikovalne dejavnike: na primer dolžino las, prisotnost brade, ličila in oblačila (krilo ali hlače). Če vemo, kolikšen odstotek predstavnikov istega spola je imel določene dejavnike, lahko ustvarimo dokaj jasna pravila: prisotnost tem ali drugih kombinacij dejavnikov nam bo z nekaj verjetnosti omogočila, da rečemo, katerega spola je oseba na fotografiji.
    Strojno učenje
    Seveda je to zelo preprost in pogojen primer z majhnim številom dejavnikov najvišje ravni. Pri nalogah v resničnem življenju, ki jih postavljajo sistemi računalniškega vida, je dejavnikov veliko več. Njihovo ročno definiranje in izračunavanje odvisnosti je za ljudi nemogoča naloga. Zato v takih primerih brez strojnega učenja ne gre. Na primer, lahko določite več deset začetnih dejavnikov, pa tudi nastavite pozitivne in negativne primere. In odvisnosti med temi dejavniki so samodejno izbrane in sestavljena je formula, ki omogoča sprejemanje odločitev. Pogosto se sami dejavniki prepoznajo samodejno.
    Slika v številkah
    Najpogosteje uporabljen barvni prostor za shranjevanje digitalnih slik je RGB. V njem je vsaki od treh osi (kanalov) dodeljena drugačna barva: rdeča, zelena in modra. Vsakemu kanalu je dodeljenih 8 bitov informacij, intenzivnost barve na vsaki osi lahko zavzame vrednosti v območju od 0 do 255. Vse barve v digitalnem prostoru RGB so pridobljene z mešanjem treh osnovnih barv.

    Na žalost RGB ni vedno primeren za analizo informacij. Eksperimenti kažejo, da je geometrijska bližina barv precej daleč od tega, kako človek zaznava bližino določenih barv med seboj.

    Toda obstajajo tudi drugi barvni prostori. Prostor HSV (Hue, Saturation, Value) je v našem kontekstu zelo zanimiv. Ima os vrednosti, ki označuje količino svetlobe. Za razliko od RGB, kjer je treba to vrednost izračunati vsakič, mu je dodeljen ločen kanal. Pravzaprav je to črno-bela različica slike, s katero že lahko delate. Odtenek je predstavljen kot kot in je odgovoren za osnovni ton. Nasičenost barv je odvisna od vrednosti nasičenosti (razdalja od sredine do roba).

    HSV je veliko bližje temu, kako si predstavljamo barve. Če človeku v temi pokažete rdeč in zelen predmet, ne bo mogel ločiti barv. Enako se zgodi pri HSV. Dlje kot gremo navzdol po osi V, manjša je razlika med odtenki, ko se obseg vrednosti nasičenosti zmanjšuje. Na diagramu je videti kot stožec z izjemno črno piko na vrhu.

    Barva in svetloba
    Zakaj je tako pomembno imeti podatke o količini svetlobe? V večini primerov barva v računalniškem vidu nima pomena, ker ne prenaša nobenih pomembnih informacij. Poglejmo dve sliki: barvno in črno-belo. V črno-beli različici ni veliko težje prepoznati vseh predmetov kot v barvni različici. Barva nam v tem primeru ne predstavlja dodatnega bremena, povzroča pa ogromno računskih težav. Ko delamo z barvno različico slike, se obseg podatkov, grobo rečeno, poveča na potenco kocke.

    Barva se uporablja le v redkih primerih, ko, nasprotno, poenostavlja izračune. Na primer, ko morate zaznati obraz: lažje je najprej najti njegovo možno lokacijo na sliki, pri čemer se osredotočite na obseg tonov kože. To odpravlja potrebo po analizi celotne slike.

    Lokalne in globalne značilnosti
    Značilnosti, s katerimi analiziramo sliko, so lahko lokalne ali globalne. Ob pogledu na to sliko bo večina rekla, da prikazuje rdeč avto:

    Ta odgovor pomeni, da je oseba identificirala predmet na sliki in je zato opisala lokalni barvni atribut. Na splošno so na sliki gozd, cesta in avto. Površinsko zavzema avtomobil manjši del. Vendar razumemo, da je avto na tej sliki najpomembnejši predmet. Če osebo prosimo, naj poišče slike, podobne tej, bo najprej izbral slike, ki vsebujejo rdeč avto.

    Odkrivanje in segmentacija
    V računalniškem vidu se ta proces imenuje detekcija in segmentacija. Segmentacija je delitev slike na več delov, ki so med seboj vizualno ali pomensko povezani. In zaznavanje je zaznavanje predmetov na sliki. Odkrivanje je treba jasno razlikovati od prepoznavanja. Recimo, da lahko na isti sliki z avtomobilom zaznate prometni znak. Nemogoče pa ga je prepoznati, saj je obrnjen nazaj proti nam. Prav tako lahko detektor pri prepoznavanju obrazov določi lokacijo obraza, “prepoznavalec” pa bo že povedal, čigav obraz je.

    Deskriptorji in vizualne besede
    Obstaja veliko različnih pristopov k prepoznavanju.

    Na primer to: na sliki morate najprej poudariti zanimive točke ali zanimiva mesta. Nekaj ​​drugačnega od ozadja: svetle lise, prehodi itd. Obstaja več algoritmov, ki vam to omogočajo.

    Ena najpogostejših metod se imenuje Difference of Gaussians (DoG). Z zameglitvijo slike z različnimi radiji in primerjavo rezultatov lahko najdete najbolj kontrastne fragmente. Območja okoli teh fragmentov so najbolj zanimiva.

    Spodnja slika prikazuje, kako približno izgleda. Prejeti podatki se zapišejo v deskriptorje.

    Da bi zagotovili, da so enaki deskriptorji prepoznani kot taki ne glede na rotacije v ravnini, so zasukani tako, da so največji vektorji zasukani v isto smer. To se ne naredi vedno. Če pa morate zaznati dva enaka predmeta, ki se nahajata v različnih ravninah.

    Deskriptorje lahko zapišemo v numerični obliki. Deskriptor je lahko predstavljen kot točka v večdimenzionalnem nizu. Na naši ilustraciji imamo dvodimenzionalni niz. Vanj so bili vključeni naši deskriptorji. In lahko jih združimo v skupine – razdelimo v skupine.

    Nato za vsako gručo opišemo regijo v prostoru. Ko deskriptor sodi v to področje, nam ni pomembno, kakšen je bil, ampak v katero področje je spadal. In potem lahko primerjamo slike tako, da določimo, koliko deskriptorjev ene slike je končalo v istih skupinah kot deskriptorji druge slike. Takšne skupine lahko imenujemo vizualne besede.

    Če želite najti ne samo enake slike, ampak slike podobnih predmetov, morate posneti veliko slik tega predmeta in veliko slik, na katerih ga ni. Nato med njimi izberite deskriptorje in jih združite v gruče. Nato moramo ugotoviti, kateri grozdi so vsebovali deskriptorje iz slik, na katerih je bil predmet, ki smo ga potrebovali. Zdaj vemo, da če deskriptorji iz nove slike spadajo v iste skupine, potem je želeni objekt prisoten v njej.

    Sovpadanje deskriptorjev še ne zagotavlja identitete objektov, ki jih vsebujejo. Ena od metod dodatnega preverjanja je geometrijska validacija. V tem primeru se primerja lokacija deskriptorjev relativno drug proti drugemu.

    Prepoznavanje in razvrščanje
    Za poenostavitev si predstavljajmo, da lahko vse slike razdelimo v tri razrede: arhitektura, narava in portret. Naravo pa lahko razdelimo na rastline, živali in ptice. In ko že ugotovimo, da je ptica, lahko rečemo, katera je: sova, galeb ali vrana.

    Razlika med prepoznavanjem in razvrščanjem je precej poljubna. Če smo na sliki našli sovo, potem je to bolj verjetno priznanje. Če je samo ptica, potem je to nekakšna vmesna možnost. In če samo narava - to je vsekakor klasifikacija. Tisti. razlika med prepoznavanjem in razvrščanjem je v tem, kako daleč po drevesu se spustimo. Bolj kot napreduje računalniški vid, nižje se bo zdrsnila meja med klasifikacijo in prepoznavanjem.

    Torej je računalniški vid niz tehnik, ki vam omogočajo, da usposobite stroj za pridobivanje informacij iz slike ali videa. Da bi računalnik našel določene predmete na slikah, se mora usposobiti. Da bi to naredili, je sestavljen ogromen vzorec za usposabljanje, na primer iz fotografij, od katerih nekatere vsebujejo želeni predmet, medtem ko drugi del, nasprotno, ne. Nato pride v poštev strojno učenje. Računalnik analizira slike iz vzorca, ugotovi, katere lastnosti in njihove kombinacije kažejo na prisotnost želenih objektov, ter izračuna njihov pomen.

    Po opravljenem usposabljanju se lahko računalniški vid uporablja v praksi. Za računalnik je slika zbirka slikovnih pik, od katerih ima vsaka svojo svetlost ali barvno vrednost. Da bi stroj dobil predstavo o vsebini slike, se obdela s posebnimi algoritmi. Najprej se identificirajo potencialno pomembne lokacije. To lahko naredimo na več načinov. Izvirna slika je na primer večkrat izpostavljena Gaussovi zameglitvi z uporabo različnih polmerov zameglitve. Rezultate nato primerjamo med seboj. To vam omogoča, da prepoznate najbolj kontrastne fragmente - svetle lise in zlomljene črte.


    Ko so najdena pomembna mesta, jih računalnik opiše s številkami. Zapis fragmenta slike v numerični obliki se imenuje deskriptor. Z uporabo deskriptorjev lahko dokaj natančno primerjate fragmente slike, ne da bi uporabili same fragmente. Za pospešitev izračunov računalnik združuje ali razdeli deskriptorje v skupine. Podobni deskriptorji iz različnih slik spadajo v isto gručo. Po gručenju postane pomembna le številka gruče z deskriptorji, ki so najbolj podobni danemu. Prehod z deskriptorja na število gruče imenujemo kvantizacija, samo število gruče pa kvantiziran deskriptor. Kvantizacija znatno zmanjša količino podatkov, ki jih mora računalnik obdelati.


    Računalnik lahko na podlagi kvantiziranih deskriptorjev primerja slike in na njih prepozna predmete. Primerja nize kvantiziranih deskriptorjev iz različnih slik in sklepa, kako podobni so si ti ali posamezni fragmenti. To primerjavo uporabljajo tudi iskalniki za iskanje naložene slike.