Blog Pýt(hr)ame sa s Pythonom (1)

Pýt(hr)ame sa s Pythonom (1)

  • Aký programovací jazyk pribaliť deťom do školy?
  • V akom jazyku robiť data science?
  • Ako rýchlo vyrobiť nástroj s AI?
  • Ako byť produktívny a nestratiť sa v kóde, zátvorkách, alokovaní typov?

Python je najdynamickejšie rastúci programovací jazyk.

Za jeho nárastom a obľubou sa ukrýva neuveriteľná ľahkosť použitia, ale aj robustnosť a ekosystém knižníc na kadečo. Je dynamický, to znamená, že nie ste napríklad viazaný deklaráciou typu premenných (premenné sú viazané len na objekt, resp. funkciu, nie na typ), je tzv. Strong typed, nemôžete vykonať operáciu, ktorá je pre daný objekt nevhodná, napríklad sčítať reťazec a číslo a generovať tak neskôr nepochopiteľné, či neviditeľné chyby.

Je multiplatformový. Obsahuje možnosť objektového aj funkcionálneho prístupu k programovaniu podobne ako Scala. Je skriptovací, nepotrebuje kompilovať, vytvárať konfiguračné make súbory, linkovať knižnice, XML deskriptory.

Napriek tomu je veľmi výkonný, veľa jeho funkcionality je vytvorenej v nízko úrovňových jazykoch ako C a skompilovaných pre danú platformu, ktorú si nainštalujete prostredníctvom pip, Pythonovského balíčkovacieho správcu.

Zdrojový kód Pythonu je veľmi ľahko čitateľný, žiadne zbytočné krútené zátvorky, len odsadenie riadkov ktoré vizuálne jasne naznačuje, čo je telom funkcie, či objektu a núti vývojára písať kód prehľadne. Šikovné editory to zdôrazňujú aj pekným formátovaním. Žiadne chýbajúce bodkočiarky na konci riadkov.

Pýt(hr)ame sa s Pythonom (1)

Teda všetko, čo potrebujeme na začiatok v príkazovom riadku, je len príkaz python a pip. Na ich inštaláciu stačí priamočiary download z www.python.org, (odporúčam verziu 3) alebo ak chceme/potrebujem komplexné prostredie pre data science tak www.anaconda.org, čo je mohutná ditribúcia Pythona spolu s R a knižnicami pre data science a strojové učenie. Plus nejaký ten šikovný editor, alebo integrované vývojové prostredie IDE.

Z IDE a editorov sa najviac používa PyCharm, Spyder, Visual Studio Code alebo iné. S Pythonom sa často pracuje prostredníctvom tkz. notebookov, akýchsi pracovných zošitov s bunkami, do ktorých sa vkladajú kusy kódu a tie sa priebežne spracúvajú. Umožňuje to postupné ladenie a výskum, čo je vhodné najmä v data science prístupe resp. REPL (Read Evaluate Print Loop) metodike. Ale o tom inokedy.

OK, dosť bolo Pýthania, ideme na hranie.

Rozpoznávanie, alebo zamlžovanie (vhodné pre GDPR 🙂 tvárí v Pythone.

Vážení čitatelia, pohodlne sa usaďte k svojim počítačom, otvorte si plechovku vašeho obľúbeného nápoja a editor. (Ak ste si ho samozrejme predtým nainštalovali spolu Pythonom.)

Dobrí ľudia si dali tú prácu a v Pythone nám takúto úlohu (rozpoznávanie tváre) veľmi uľahčili. Napríklad tým, že obľúbenú C-čkovskú knižnicu na manipuláciu s videom, obrazom, priniesli aj sem. Volá sa OpenCV. A potom urobili ďalšiu skvelú knižnicu napechovanú modelmi a dátami na rozpoznávanie tváre, face_recognition. Takže žiadne neurónové konvolučné siete nateraz budovať nemusíme. (Ale časom si ukážeme ako na to.)

Teda na úvod hodíme do novo vytvoreného súboru BezTvare.py uvedené knižnice. ( Predtým ich ešte určite nainštalujeme pomocou pip install 🙂

# Import knižníc - toto je komentár
import face_recognition
import cv2

A pridáme uvodnú inicializáciu premenných, ako napríklad pole umiestnení všetkých tvárí, ktoré na obrázku nájdeme.

# Inicializácia úvodných premenných
face_locations = []
# Referencia na webkameru #0 (číslo 0 má vstavaná, 1 externá na USB)
video_capture = cv2.VideoCapture(0)

Potom do podmienky/slučky while, sledujúcej správnu činnosť kamery usadíme nasledovný kód (vysvetlený v komentároch)

while True:
    # zober jeden snímok z videa kamery, výsledok ret je typu boolean True/False
    ret, frame = video_capture.read()

     # Zobraz obrázok
    cv2.imshow('Video', frame)

    # Ak stlačíš 'q' na klávesnici, skonči to !
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# Uvoľni zdroje kamery
video_capture.release()
cv2.destroyAllWindows()

Ako sme si povedali, dôležité je odsadiť ten kód, ktorý je súčasťou tela slučky, funkcie, objektu. Výsledkom je zatiaľ oživenie kamery a prenos dát na obrazovky ako na nasledovnom obrázku.

Pýt(hr)ame sa s Pythonom (1)

My sa ale chceme dopracovať k súladu s GDPR a niečomu takému ako na ďalšom obrázku.

Pýt(hr)ame sa s Pythonom (1)

Tak tu musíme ešte popracovať. Aby to išlo rýchlejšie, trochu vstupné obrázky upravíme.

# Zmenši obrázok z videa na 1/4 aby sa to celé zrýchlilo
    small_frame = cv2.resize(frame, (0, 0), fx=0.25, fy=0.25)

Potom použijeme vstavanú konvolučnú neurónovú sieť, model „cnn“

# Nájdi všetky tváre na danom obrázku
    face_locations = face_recognition.face_locations(small_frame, model="cnn")

Výsledok hľadania prejdeme a nájdené tváre rozostríme.

# Prejdi výsledok hľadania
    for top, right, bottom, left in face_locations:
        # A popritom to naškáluj na pôvodnú veľkosť
        top *= 4
        right *= 4
        bottom *= 4
        left *= 4

        # Vyber oblasť s tvárou a orámuj ho
        face_image = frame[top:bottom, left:right]

        # Rámček s tvárou rozostri
        face_image = cv2.GaussianBlur(face_image, (99, 99), 30)

        # Vráť takto rozostrený obraz tváre naspäť do obrázka z videa
        frame[top:bottom, left:right] = face_image

A je to! GDPR compliant video na 20 riadkoch kódu. A to je na dnes všetko.

Čo sa budeme Pýthať s Pythonom na budúce? Nuž ako tvár nielen nájsť, ale aj identifikovať s danou osobou, či vyčítať z jej výrazu typ emócie, ktorú práve vyjadruje.

Dobrý článok? Chceš dostávať ďalšie?

Už viac ako 6 200 ITečkárov dostáva správy e-mailom. Nemusíš sa báť, nie každé ráno. Len občasne.

Súhlasím so spracovaním mojich osobných údajov. ( Viac informácií. )

Tvoj email neposkytneme 3tím stranám. Posielame naňho len informácie z robime.it. Kedykoľvek sa môžeš odhlásiť.

ASIC RTL Design Engineer / New Processor Chip

JOB Position: ASIC RTL Design Engineer Contract type: Internal employee Location: Bratislava ( Slovakia) Salary: from 2.800+ EUR/Brutto Benefit: Relocation PackageUS/Slovak Company building new...

Product Analyst / Business Analyst / E-Commerce – REMOTE

JOB Position: Product Analyst / Business Analyst Contract type: Contract Location: REMOTE - without travelling or very little Salary: from 4.000+ EUR/MonthlyBuilding relationships...

BI Manager / Security Solutions

Basic informationPosition: BI Manager Contract Type: Internal Employee Location: Bratislava Salary:  from 4.500 EUR/Brutto + BonusThe largest global IT security vendor. Which...

Citrix/MS Windows Server Špecialista pre automobilový priemysel

PRÁCA: Pozícia: Citrix/MS Windows Server Špeialista Pracovný pomer: TPP Miesto práce: Bratislava Plat: od 2000+ Eur/Brutto + mesačné bonusy až do výšky 1000 EUR/BruttoO...

C/C++ Linux Kernel Engineer

JOB Position:C/C++ Linux Kernel Engineer Contract Type: TPP Location: Bratislava, on-site Salary: Od 2500 EUR Company: US Benefits: Relocation packageResponsibilitiesDrive and deliver Linux on new...

NetSuite Consultant / 100% Homeoffice

Basic informationPosition: NetSuite Consultant Contract Type: Internal Employee, Contract Location: 100% Homeoffice with limited travel to Germany Language: EnglishGermany company which has...

Junior / Senior Java Backend Software Engineer

JOB Position: Java Backend Software Engineer Contract type: TPP, Contract Location: Bratislava Salary Junior: 1500 EUR/Brutto Salary Senior: 2200 EUR/Brutto Rate: 3000 -4000 EUR/monthlyPrimary Job...

IT meetupy a podujatia – Február 2020

Prehľad IT meetupov a podujatí od 1. – 8.2.2020.   4.2.  The Art of Buying and Selling Companies WebSupport, Karadžičova 12,...

WebSupport

WebSupport je líder slovenského hostingového trhu a zároveň najväčší registrátor .sk domén....

TOP 5 programovacích jazykov pre rok 2020

V tomto článku vám poviem aké sú podľa mňa najlepšie programovacie jazyky na naučenie sa a na...

Čítaj ďalej:

Dobrý článok? Chceš dostávať ďalšie?

Už viac ako 6 200 ITečkárov dostáva správy e-mailom. Nemusíš sa báť, nie každé ráno. Len občasne.

Súhlasím so spracovaním mojich osobných údajov. ( Viac informácií. )

Tvoj email neposkytneme 3tím stranám. Posielame naňho len informácie z robime.it. Kedykoľvek sa môžeš odhlásiť.