Przygotowanie obrazu wejściowego
Oryginalny model ResNet50 był trenowany na obrazach o rozmiarze 224 x 224 pikseli z zastosowaniem kilku operacji wstępnego przetwarzania – m.in. odejmowania średniej wartości piksela wyznaczonej na zbiorze treningowym. Aby model działał poprawnie, obrazy, na których chcesz wykonywać predykcje, musisz przetworzyć w dokładnie taki sam sposób.
Podczas predykcji na pojedynczym obrazie konieczne jest dopasowanie go do kształtu wejściowego modelu, który wygląda następująco:
(batch-size, width, height, channels). Funkcja np.expand_dims z parametrem axis = 0 dodaje wymiar batch-size, oznaczający, że do predykcji przekazywany jest jeden obraz. Wartość tego wymiaru wynosi 1, ponieważ przewidujemy tylko dla jednego obrazu.
Przejdziesz teraz przez kolejne kroki przetwarzania wstępnego i przygotujesz zdjęcie psa o imieniu Ivy tak, aby mogło zostać sklasyfikowane przez ResNet50.
To ćwiczenie jest częścią kursu
Wprowadzenie do uczenia głębokiego z Keras
Instrukcje do ćwiczenia
- Zaimportuj
imageztensorflow.keras.preprocessingorazpreprocess_inputztensorflow.keras.applications.resnet50. - Wczytaj obraz z odpowiednim parametrem
target_sizedla swojego modelu. - Przekształć go w tablicę za pomocą
image.img_to_array(). - Przetwórz wstępnie
img_expandedw taki sam sposób, w jaki przetwarzano oryginalne obrazy treningowe ResNet50 – użyj do tego funkcjipreprocess_input().
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# Import image and preprocess_input
from tensorflow.keras.____ import ____
from tensorflow.keras.____.____ import ____
# Load the image with the right target size for your model
img = image.load_img(img_path, target_size=(____, ____))
# Turn it into an array
img_array = image.____(____)
# Expand the dimensions of the image, this is so that it fits the expected model input format
img_expanded = np.expand_dims(img_array, axis = 0)
# Pre-process the img in the same way original images were
img_ready = ____(____)