s470623-wko/wko-09.ipynb

1 line
1.5 MiB
Plaintext
Raw Normal View History

2023-01-16 13:52:30 +01:00
{"cells":[{"cell_type":"markdown","id":"80377b3b","metadata":{"id":"80377b3b"},"source":["![Logo 1](img/aitech-logotyp-1.jpg)\n","<div class=\"alert alert-block alert-info\">\n","<h1> Widzenie komputerowe </h1>\n","<h2> 09. <i>Metody głębokiego uczenia (1)</i> [laboratoria]</h2> \n","<h3>Andrzej Wójtowicz (2021)</h3>\n","</div>\n","\n","![Logo 2](img/aitech-logotyp-2.jpg)"]},{"cell_type":"code","source":["from google.colab import drive\n","drive.mount('/content/drive')\n","%cd /content/drive/My Drive/aitech-wko-pub"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"gnrjIhVmeHQQ","executionInfo":{"status":"ok","timestamp":1673872019054,"user_tz":-60,"elapsed":2133,"user":{"displayName":"Cezary Gałązkiewicz","userId":"01409497901784152256"}},"outputId":"36f987aa-4863-43c5-84e2-c90d990d7cf6"},"id":"gnrjIhVmeHQQ","execution_count":10,"outputs":[{"output_type":"stream","name":"stdout","text":["Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount(\"/content/drive\", force_remount=True).\n","/content/drive/My Drive/aitech-wko-pub\n"]}]},{"cell_type":"markdown","id":"07159136","metadata":{"id":"07159136"},"source":["W poniższym materiale zobaczymy w jaki sposób korzystać z metod głębokiego uczenia sieci neuronowych w pakiecie OpenCV.\n","\n","Na początku załadujmy niezbędne biblioteki:"]},{"cell_type":"code","execution_count":11,"id":"b2e906f0","metadata":{"id":"b2e906f0","executionInfo":{"status":"ok","timestamp":1673872022072,"user_tz":-60,"elapsed":300,"user":{"displayName":"Cezary Gałązkiewicz","userId":"01409497901784152256"}}},"outputs":[],"source":["import cv2 as cv\n","import numpy as np\n","import matplotlib.pyplot as plt\n","%matplotlib inline"]},{"cell_type":"markdown","id":"f4348bc5","metadata":{"id":"f4348bc5"},"source":["OpenCV wspiera [wiele](https://github.com/opencv/opencv/wiki/Deep-Learning-in-OpenCV) bibliotek i modeli sieci neuronowych. Modele trenuje się poza OpenCV - bibliotekę wykorzystuje się tylko do predykcji, aczkolwiek sama w sobie ma całkiem sporo możliwych optymalizacji w porównaniu do źródłowych bibliotek neuronowych, więc predykcja może być tutaj faktycznie szybsza.\n","\n","Pliki z modelami i danymi pomocniczymi będziemy pobierali z sieci i będziemy je zapisywali w katalogu `dnn`:"]},{"cell_type":"code","execution_count":3,"id":"42b85f55","metadata":{"id":"42b85f55","executionInfo":{"status":"ok","timestamp":1673870782396,"user_tz":-60,"elapsed":390,"user":{"displayName":"Cezary Gałązkiewicz","userId":"01409497901784152256"}}},"outputs":[],"source":["!mkdir -p dnn"]},{"cell_type":"markdown","id":"ac09b098","metadata":{"id":"ac09b098"},"source":["# Klasyfikacja obrazów\n","\n","Spróbujemy wykorzystać sieć do klasyfikacji obrazów wyuczonej na zbiorze [ImageNet](https://www.image-net.org/). Pobierzmy plik zawierający opis 1000 możliwych klas:"]},{"cell_type":"code","execution_count":4,"id":"85b1b68c","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"85b1b68c","executionInfo":{"status":"ok","timestamp":1673870782915,"user_tz":-60,"elapsed":523,"user":{"displayName":"Cezary Gałązkiewicz","userId":"01409497901784152256"}},"outputId":"834910f4-0f40-40dd-a763-c7ea03bcdb0b"},"outputs":[{"output_type":"stream","name":"stdout","text":["\r dnn/class 0%[ ] 0 --.-KB/s \rdnn/classification_ 100%[===================>] 21.17K --.-KB/s in 0.002s \n"]}],"source":["!wget -q --show-progress -O dnn/classification_classes_ILSVRC2012.txt https://raw.githubusercontent.com/opencv/opencv/master/samples/data/dnn/classification_classes_ILSVRC2012.txt "]},{"cell_type":"markdown","id":"fd0c577b","metadata":{"id":"fd0c577b"},"source":["Spójrzmy na pierwsze pięć klas w pliku:"]},{"cell_type":"code","execution_count":5,"id":"fb0d0546","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"fb0d0546","executionInfo":{"status":"ok","timestamp":1673870783220,"user_tz":-60,"elapsed":309,"user":{"displayName":"Cezary Gałązkiewicz","userId":"01409497901784152