Practica intenționată ne ajută să ne îmbunătățim, indiferent de jocul de baschet, pictura sau vorbirea în public. Această strategie se aplică și ingineriei software.

Dacă am explora în mod regulat noi API-uri, seturi de instrumente și le-am repara cu ele, am deveni mai buni în a transforma ideile în produse în mod eficient.

Experimentele sunt esențiale și distractive...

„TwinCam” este unul dintre aceste experimente pe care le-am desfășurat recent. iOS AV Foundation s-a deschis și a permis dezvoltatorilor să folosească mai multe camere simultan (detecție față, spate, unghi larg și adâncime).

Am devenit curios. 🤔 Ce se întâmplă dacă combin imagini de la două camere simultan? Cameră frontală pentru înregistrarea feței și camera din spate pentru reperul pe care încerc să-l captez? Aș fi capabil să le contopesc, în timp real?

Există o singură modalitate de a afla... Doar fă-o.

Experiența în timp real rezultată este destul de interesantă.

TwinCam nu este prea greu de realizat folosind seturile de instrumente de învățare automată de astăzi. În acest experiment, am folosit „Kitul ML — Segmentare selfie” de la Google (ca să pot încerca aceeași idee și pe Android.) iOS are un „cadru de viziune” nativ care o poate face la fel de eficient.

Experimentele sunt distractive, deoarece puteți schimba direcția după cum credeți de cuviință. Pentru TwinCam, dimensiunea imaginii de sine contează foarte mult; așa că am adăugat un glisor pentru a-mi permite să ajustez lucrurile din mers.

Iată primele 4 puncte importante când construiți acest lucru:

  1. Puteți face o mulțime de sarcini grele (de exemplu, detectarea obiectelor, transformările imaginii) pe fiecare cadru de previzualizare în timp real, fără întârzieri, chiar și atunci când aveți mai multe fluxuri de date ale camerei active la în același timp, pe dispozitive mai vechi precum iPhone X. Telefoanele moderne sunt foarte puternice.
  2. Nu trebuie să învățați concepte ML, cum ar fi reglarea hiper-parametrilor, pentru a crea experiențe interesante. Multe dintre aceste ARKit sau MLKits sunt ușor de utilizat și necesită experiență ML zero. Un exemplu de aplicație este tot ce aveți nevoie pentru a începe.
  3. Codul care este executat cu o frecvență foarte mare necesită tehnici diferite de depanare. Versiunile timpurii ale TwinCam s-au prăbușit în mod misterios în producție (SIGSEGV) și s-au întâmplat numai pe anumite dispozitive. Mi-au luat multe nopți să reproduc accidentele și să identific cauza principală. Nu mă pot baza pe declarații vechi de tipărite bune, deoarece ar genera prea mult zgomot și efecte secundare. (Notă secundară: eroarea logică a fost în secțiunea de inițializare a camerei, nici măcar în secțiunea criticăa logicii de procesare pe cadru, de înaltă frecvență.)
  4. Fermele de dispozitive fizice precum „BrowserStack” funcționează foarte bine. Are un nivel gratuit bun care mi-a permis să explorez. Are pluginuri pentru lucruri precum fastlane pentru a vă automatiza fluxul de lucru de construire/implementare/test.

Sper că veți găsi acest blog util. Puteți descărca gratuit TwinCam „aici”.

Alte câteva experimente dacă ești curios. Învățăturile tehnice sunt de obicei surprinse în blogul meu (https://billylo.medium.com) .

  • „Sidekick”: transformă iPhone-ul într-o cameră de bord cu hărți și navigare, alerte pentru radar, calcule ale costului combustibilului și optimizare a drumurilor cu taxă.
  • „Plane Above Me”: Ce este acel avion care zboară deasupra mea? Un 737 care zboară spre Frankfurt?
  • „Cât de adâncime”: arată adâncimea apei și altitudinile oriunde.
  • „Travel Shopping Buddy”: îndreptați camera dvs. către o etichetă de preț și vă arată suma cu taxe incluse în moneda dvs. de origine pentru o evaluare ușoară
  • BuzzWatch: Pentru a ajuta persoanele cu deficiențe de auz, această aplicație Apple Watch ascultă sunete importante (de exemplu, claxonele mașinii) și îi alertează prompt folosind vibrațiile de la încheietura mâinii. („deschisă”)
  • SmartAlert: o aplicație Android care funcționează ca un serviciu de monitorizare a alarmelor, cu excepția faptului că este gratuită.
  • SuperRoute: generează traseul folosind Google, Apple Maps, MapQuest, HERE, OpenStreetMap, Mapbox, Azure cu un singur clic, astfel încât să îl puteți alege pe cel care vă place cel mai mult.
  • MyCommunityWatch.org: vă anunță prin e-mail dacă a fost raportată o infracțiune majoră în zona dvs. (date provenite de la serviciile de poliție)
  • „Încercați ceva nou”: de fiecare dată când se deschide un nou restaurant în cartierul dvs., acest site web vă va trimite prin e-mail detaliile sale pentru a vedea dacă merită încercat! (produs de Google Maps și Yelp)