<jupyter_start><jupyter_text>* @author: <EMAIL>  * @site: e-smartdata.org  Transfer Learning z użyciem Tensorflow HubTensorflow Hub: [tfhub.dev](https://tfhub.dev/)Tensorflow Hub to biblioteka pozwalająca na wielokrotne i darmowe wykorzystywanie modułów modeli uczenia maszynowego. Tzw. transfer learning pozwala nam skorzystać z wcześniej wyuczonych modeli uczenia maszynowego na bardzo dużych zbiorach danych z zaawansowaną architekturą. Pozwala to zdecydowanie zaoszczędzic sporo czasu na dewelopowaniu własnych modeli, czy chociażby na mocy obliczeniowej wykorzystywaniej podczas trenowania. Przykłady użycia transfer learningu: - trenowanie modelu z małym zbiorem danych - pozwala poprawić generalizację modeli - przyśpiesza proces trenowania modeli - niski próg wejścia dla osób chcących poznać zastosowania modeli  Spis treści:1. [Import bibliotek](a1)2. [Załadowanie modelu](a2)3. [Załadowanie etykiet](a3)4. [Załadowanie obrazu](a4)5. [Predykcja na podstawie modelu](a5)6. [Wyświetlenie predykcji](a6)  Import bibliotek<jupyter_code>%tensorflow_version 2.x
import numpy as np
import PIL.Image as Image
import tensorflow as tf
import tensorflow_hub as hub
from tensorflow.keras import layers
import matplotlib.pyplot as plt
print(f'Tensorflow version: {tf.__version__}')
print(f'Tensorflow Hub version: {hub.__version__}')<jupyter_output>TensorFlow 2.x selected.
Tensorflow version: 2.0.0
Tensorflow Hub version: 0.7.0<jupyter_text>Załadowanie modelu<jupyter_code>classifier_url ="https://tfhub.dev/google/tf2-preview/mobilenet_v2/classification/4"

IMAGE_SHAPE = (224, 224)

classifier = tf.keras.Sequential([
    hub.KerasLayer(classifier_url, input_shape=IMAGE_SHAPE+(3,))
])<jupyter_output><empty_output><jupyter_text>Załadowanie etykiet<jupyter_code>labels_path = tf.keras.utils.get_file('ImageNetLabels.txt','https://storage.googleapis.com/download.tensorflow.org/data/ImageNetLabels.txt')
imagenet_labels = np.array(open(labels_path).read().splitlines())
imagenet_labels<jupyter_output><empty_output><jupyter_text>Załadowanie obrazu<jupyter_code>from google.colab import files
uploaded = files.upload()
filename = list(uploaded.keys())[0]
img = Image.open(filename).resize(IMAGE_SHAPE)
img<jupyter_output><empty_output><jupyter_text>Predykcja na podstawie modelu<jupyter_code>img_arr = np.array(img) / 255.0
img_arr = np.expand_dims(img_arr, axis=0)
result = classifier.predict(img_arr)
predicted_class = np.argmax(result[0], axis=-1)
predicted_class_name = imagenet_labels[predicted_class]
predicted_class_name<jupyter_output><empty_output><jupyter_text>Wyświetlenie predykcji<jupyter_code>from google.colab.patches import cv2_imshow
import cv2

img = cv2.imread(filename)
text = f'class: {predicted_class_name}'
img = cv2.putText(img=img, text=text, org=(10, 30), fontFace=cv2.FONT_HERSHEY_SIMPLEX, fontScale=1, color=(0, 255, 0), thickness=2)
cv2_imshow(img)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.10116999311768754, 'fraction_numerical': 0.018926359256710254, 'mean_word_length': 7.91717791411043, 'pattern_counts': {'":': 0, '<': 25, '<?xml version=': 0, '>': 25, 'https://': 3, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '6', 'dir': 'jupyter-structured-clean-dedup', 'id': '300026', 'license': 'MIT', 'n_tokens_mistral': 1141, 'n_tokens_neox': 1136, 'n_words': 215, 'path': '10_tensorflow_hub/01_classification.ipynb', 'repo_name': 'krakowiakpawel9/computer-vision-course', 'size': '2924'}