Computer Vision – hledáme podobné obrázky pomocí AI

17. 5. 2020 Azure, Programming

Chcete si vytvořit aplikaci, která bude popisovat a kategorizovat obrázky pomocí umělé inteligence a potom najde další k němu podobné? Tak dnes si takový jednoduchý příklad ukážeme.

Chcete si to jen vyzkoušet?

Tento projekt je také dostupný ve webové verzi na adrese related-pics.now.sh a tak není potřeba k vyzkoušení umělé inteligence žádné programování. Ale pokud máte chvíli na seberozvoj, můžeme se na to pustit.

O projektu

Tento projekt je určen k demonstraci služby Computer Vision v Azure za využití služby PixaBay. Do námi vytvořeného programu budeme schopni vložit adresu na obrázek a poté dostat obrázky, o kterých si myslí náš program, že jsou mu podobné.

Co budeme potřebovat?

Instalace Pythonu

V této podkapitole si ukážeme, jak na instalaci Pythonu 3.8.2

Výběr verze Pythonu
Vybereme stránku Python 3.8.2
Stránka s instalacemi Pythonu 3.8.2
Klikneme na instalační médium pro Windows
Instalační soubor pro Python 3.8.
Zaškrtneme políčko „Add Python 3.8. to PATH“, aby byl přísupný pod příkazem python

Poté na nás vyskočí Windows okno, na kterém zvolíme volbu ANO

Instalace proběhla úspěšně

klikneme na tlačítko „Close“ a můžeme dále pokračovat

Instalace Visual Studio Code

Na stránce code.visualstudio.com klikneme na tlačítko „Download for Windows“

Obrázek stránek https://code.visualstudio.com/

Ihned poté by mělo stahování začít – po stažení soubor otevřeme a přijmeme licenční podmínky – a klineme „Next“.

Vybereme instalační destinaci, klikneme next, necháme další stránku se zástupci jak je, a klikneme Next ještě jednou.

Okno s instalační cestou VS Code
Vytvoření zástupce VS Code

Nakonec už jen zatrhneme políčko pro přidání VS Code do naší systémové cesty (PATH), klikneme Install a máme hotovo.

Extra možnosti v instalaci VS Code
Dokončení instalace VS Code

Jdeme na to!

V této sekci článku si krok po kroku ukážeme, jak si vytvořit vlastní Computer Vision program.

Poté pár vteřin počkáme a je hotovo.

Získávání API klíčů

Tato kapitola se věnuje získávání klíčů API (aplikační programovací rozhraní), neboli klíč, který nám umožní se na našich službách (Azure a PixaBay autentifikovat).

Azure

Nejprve budete potřebovat aktivní předplatné Azure for Students, anebo jiné. Návod na aktivaci najdete zde:

Poté se můžeme přesunout na Microsoft Azure Portal.

Microsoft Azure Portal Dashboard

Zde vyhledáme pojem „Computer Vision.“

Vyhledávací pole na Azure Portalu

Poté ze sekce „Marketplace“ klikneme na „Computer Vision,“ vyplníme formulář a vybereme „Create new.“

Zakládaci formulár na Computer Vision
Pro lokaci vybereme ten nejblíže k nám a pro „Resource group“ vytvoříme nový prostředek.

Poté v postranním menu vybereme „All resources“ u projektu, který jsme právě vytvořili a přejdeme na „Quick start,“ kde najdeme naše údaje, které budeme nadále potřebovat.

Obrázek Quickstart stránky v Azure

PixaBay

Stránka API dokumentace služby PixaBay
Zkopírujeme text se zeleným pozadím.

Nastavování systémových proměnných

Otevřeme si ve Windows Command Prompt [v české verzi příkazový řádek].

Zapínání příkazového řádku ve Windows

Nastavíme „COMPUTER_VISION_SUBSCRIPTION_KEY,“ „COMPUTER_VISION_ENDPOINT“ a „PIXABAY_API_KEY“ proměnné příkazem setx (za každým příkazem pro exekuci stiskneme Enter).
Příkazy si můžete jednoduše jeden po druhém zkopírovat a vložit do CMD.

setx COMPUTER_VISION_SUBSCRIPTION_KEY "your-key"
setx COMPUTER_VISION_ENDPOINT "your-key" 
setx PIXABAY_API_KEY  "your-key" 

Před kódem

Vytvoříme na disku našeho počítače složku computer-vision-demo.

Vytváření nové složky

V našem textovém editoru otevřeme složku, kterou jsme vytvořili.

Obrázek otevírání složky ve Visual studio Code

Vytvoříme soubor app.py.

Vytváření souboru ve VS code

Kód

Poznámka: Kód vždy otevřeme tak, že otevřeme náš soubor app.py. Pro jednodušší zobrazení je k dispozici také doplněk pro VS Code s názvem Python od Microsoftu (ke stažení zde).

Nainstalujeme a importujeme azure.cognitiveservices.vision.computervision.

 pip install azure-cognitiveservices-vision-computervision
from azure.cognitiveservices.vision.computervision import ComputerVisionClient
from azure.cognitiveservices.vision.computervision.models import TextOperationStatusCodes
from azure.cognitiveservices.vision.computervision.models import TextRecognitionMode
from azure.cognitiveservices.vision.computervision.models import VisualFeatureTypes
from msrest.authentication import CognitiveServicesCredentials

Dále naimportujeme systémové balíčky a balíček requests.

pip install requests
from array import array
import os
import sys
import time
import json
import requests

V našem kódu nastavíme proměnné z env.

subscription_key = os.environ['COMPUTER_VISION_SUBSCRIPTION_KEY']
endpoint = os.environ['COMPUTER_VISION_ENDPOINT']

Nastavíme URL adresu našeho obrázku, který bude program analyzovat.

remote_image_url = "https://studuj.digital/wp-content/uploads/2020/02/87803873.4jVCEG08._H8C0068copy.jpg"
2 čápi na střeše
Obrázek, který budeme analyzovat | Zdroj: pbase.com

Dále řekneme programu, jak má použít Azure s obrázkem. V našem případě ho budeme kategorizovat pomocí štítků.

tags_result_remote = computervision_client.tag_image(remote_image_url)

Poté se podíváme, jestli Azure vůbec nějaký štítek poznal a pokud ne, zobrazíme chybovou hlášku.

if (len(tags_result_remote.tags) == 0):
    print("No tags detected.")

Pokud nějaké ale najde, vytvoříme proměnnou se jménem pixabayUrl a nastavíme ji na URL adresu s naším API klíčem.

pixabayUrl = "https://pixabay.com/api/?key="+ pixabay +"&q=" 

Hned na to přidáme k URL adrese všechny tagy, které Azure detekoval.

   for i,tag in enumerate(tags_result_remote.tags):
        if i < int(percisionLvl):    
            print("#{} [{:.2f}]%".format(tag.name, tag.confidence * 100))   
            if i > 0: pixabayUrl += "+" + tag.name
            else: pixabayUrl += tag.name
   pixabayUrl += "&image_type=photo&pretty=true"

Teď už nám zbývá jen zavolat PixaBay API a zobrazit obrázky, které to našlo.

responce = requests.get(pixabayUrl)
jsonedResponce = json.loads(responce.text) # převedeme odpověď na jednodušše formátovatelný JSON

for i,hit in enumerate(jsonedResponce["hits"]): #Prolistujeme obrázky a vepíšeme je do konzole
   print(jsonedResponce["hits"][i]["largeImageURL"])
Výstup programu - odkazy na jednotlivé obrázky
Výstup našeho programu – URL odkazy obrázků, které jsou podle našeho programu podobné tomu, který jsme analyzovali

Závěr a výsledek

Je vidět, že náš program má ještě mouchy (orientuje se jen podle popisu obrázku a ne podle obrázku samotného), ale poznal hlavní součást obrázku a to byl i náš cíl. Výsledek je nakonec tento: (váš se může trochu lišit)

Nastavení souborů Cookies

1. Co jsou soubory cookies

Soubory cookies jsou krátké textové soubory, které internetová stránka odešle do vašeho prohlížeče. Umožňují internetové stránce zaznamenat informace o vaší návštěvě, například zvolený jazyk a podobně. Následující návštěva stránek tak pro vás může být snazší a příjemnější. Soubory cookies jsou důležité, neboť bez nich by procházení sítě Internet bylo mnohem složitější. Soubory cookies umožňují lepší využití naší internetové stránky a přizpůsobení jejího obsahu vašim potřebám. Soubory cookies používá téměř každá internetová stránka na světě.

2. Druhy souborů cookies

Relační (tedy dočasné) soubory cookies nám umožňují propojovat vaše jednotlivé aktivity po dobu prohlížení těchto internetových stránek. V okamžiku otevření okna vašeho prohlížeče se tyto soubory vytvoří a po zavření okna vašeho prohlížeče se odstraní.

Trvalé soubory cookies nám pomáhají váš počítač identifikovat, jestliže opětovně navštívíte naši internetovou stránku.

3. Využívání souborů cookies

V souladu s ustanovením § 89 odst. 3 zák. č. 127/2005 Sb., o elektronických komunikacích, v účinném znění, si vás tímto dovolujeme informovat, že naše internetové stránky využívají pro svoji činnost soubory cookies, tedy vaše soubory cookies, včetně trvalých, zpracováváme.

Internetové prohlížeče obvykle obsahují správu souborů cookies. V rámci nastavení vašeho prohlížeče tak pravděpodobně můžete jednotlivé soubory cookies ručně mazat, blokovat či zcela zakázat jejich používání. Pro více informací použijte nápovědu vašeho internetového prohlížeče. Jsou-li cookies povoleny, lze toto nastavení internetového prohlížeče považovat za souhlas se zpracováním osobních údajů.

4. Účel použití souborů cookies

K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookies. Informace o tom, jak náš web používáte, sdílíme se svými partnery působícími v oblasti sociálních médií, inzerce a analýz. Používáním internetových stránek vyjadřujete souhlas propojením následujících služeb: Google Analytics, Google Tag Manager, Facebook Pixel, Microsoft Clarity.

Soubory cookies využíváme, kromě účelu uvedeného v předchozím odstavci, pouze pro měření návštěvnosti webové stránky.

5. Správce osobních údajů

Provozovatelem webové stránky studuj.digital a správcem osobních údajů je společnost: pg-sec s.r.o., sídlem Rybná 716/24, Staré Město, 110 00 Praha 1, identifikační číslo 09580905, zapsaná v obchodním rejstříku Městského soudu v Praze, oddíl C, vložka 338028.

​6. Zásady ochrany osobních údajů

Podrobnější informace o souborech cookies a zpracování tvých osobních údajů najdete v našich Zásadách ochrany osobních údajů.

Nezbytné

Tyto soubory cookie jsou nutné pro základní funkce stránky, a jsou proto vždy povolené. Mezi ně patří soubory cookie, které stránce umožňují si vás zapamatovat při procházení stránky v rámci jedné relace nebo, pokud o ně požádáte, mezi relacemi.

Volitelné

Výkon

Tyto soubory cookie nám pomáhají vylepšovat funkce stránek sledováním využití této webové stránky. V některých případech zrychlují zpracování vašeho požadavku a umožňují nám zapamatovat si vaše vybrané předvolby na stránce. Pokud soubory cookie zakážete, může se tím zhoršit přesnost našich doporučení a zpomalit funkčnost stránek.

Sociální média a relamy

Díky souborům cookies sociálních médií si můžete připojit ke svým sociálním sítím a prostřednictvím sociálních médií sdílet obsah z naší webové stránky. Reklamní soubory cookie (třetích stran) shromažďují informace pro lepší přizpůsobení reklamy tvým zájmům, a to na webových stránkách studuj.digital i mimo ně. V některých případech tyto soubory cookies zpracovávají vaše osobní údaje. Pokud chcete získat více informací o zpracování osobních údajů, přečtěte si naše Zásady ochrany osobních údajů. Pokud zakážete soubory cookies, mohou se zobrazovat reklamy, které méně souvisejí s vašimi zájmy, nebo nebudete moci účinně používat odkazy na Facebook, Instagram či jiné sociální sítě anebo nebudete moci sdílet obsah na sociálnch médiích.