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ť.

Senior SAP Basis Consultant

Základné informáciePozícia: SAP Basis Consultant Pracovný pomer:  TPP, Živnosť Miesto práce: Pezinok, Home-Office Plat: od 3000+ EUR/Brutto/mesačnePopis práceposkytovanie služby inštalácie, konfigurácie,...

DBA Admin

Základné informáciePozícia: DBA Admin Pracovný pomer:  TPP, Živnosť Miesto práce: Pezinok, Home-Office Plat: od 2400 - 4000+ EUR/Brutto/mesačnePopis práce praca s databázovými...

Junior Technical Writer

Basic informationPosition: Junior Technical Writer Contract type: Full-Time employee Location: Bratislava, on-site Salary: from 1000 - 1400 EUR/ BruttoResponsibilities:Interviewing technical personnel...

QA/Testing Specialist – Automated Testing

Základné informáciePozícia: QA/Testing Specialist - Automated Testing Pracovný pomer:  TPP Miesto práce: Bratislava, on-site Plat: 1500 - 1900 EUR/Brutto/mesačnePopis prácenaplánovať a...

DevOps/SysAdmin Tech Lead

JOB Position: DevOps/SysAdmin Tech Lead Contract type: Full-time Location: Bratislava, on-site Salary: 3000 - 4000+ EUR/BruttoResponsibilities:team/tech leadership, prioritisation, 2 team members independent...

Junior/Senior Full Stack Developer / WEB Development for 150 countries

Basic informationPosition: Full Stack Developer Contract type: Full-Time employee or Contractor Location: Vienna (2-3 Days/Week On-Site) / 1 hour drive from...

Agile Project Manager / Scrum Master

JOB Position: Agile Project Manager / Scrum Master Contract type: TPP, Contract Location: Bratislava, Prague, Vienna Salary Junior: 1500 EUR/Brutto Salary Senior: 2200 EUR/Brutto Rate:...

Vieme kto je IT BLOGGER 2019

Súťaž IT Blogger 2019 sme v piatok 6.12.2019 oficiálne ukončili a prinášame vám vyhodnotenie a rozdáme ceny....

Milada Kováčová: Práca v IT nie je len o programovaní

Tentokrát sme sa rozhodli vyspovedať ďalšiu ženu v IT. Milada Kováčová pracuje v slovenskej softvérovej spoločnosti SOFTEC,...

Projekty prvej výzvy fondu SK-NIC sú schválené!

Po uzavretí výzvy Fondu SK-NIC na podporu malých projektov nás hodnotiaca komisia...

Čítaj viac:

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ť.