Učitavanje unaprijed obučenog modela
Prvi korak u radu sa unapred obučenim modelom je nabavka samog modela. Dostupno je nekoliko popularnih unaprijed obučenih modela, kao što su VGG, ResNet i Inception, koji se često koriste za zadatke poput klasifikacije slika i detekcije objekata. U ovom primjeru koristit ćemo model VGG16, koji je prethodno obučen na ImageNet skupu podataka.
Za učitavanje prethodno obučenog modela VGG16, trebamo koristiti TensorFlow biblioteku i njen Keras modul. Ako nemate instaliran TensorFlow, to možete učiniti sljedećom naredbom:
"`
pip install tensorflow
"`
Kada se TensorFlow instalira, možemo nastaviti sa učitavanjem VGG16 modela. Evo korak po korak objašnjenja koda:
from tensorflow.keras.applications import VGG16 # Load the pretrained VGG16 model with the 'imagenet' weights model = VGG16(weights="imagenet")
U kodu iznad, prvo uvozimo klasu VGG16 iz modula `tensorflow.keras.applications`. Zatim kreiramo instancu VGG16 modela prosljeđivanjem argumenta `weights=”imagenet”`, koji daje instrukcije modelu da učita težine koje su prethodno obučene na ImageNet skupu podataka.
Korištenje unaprijed obučenog modela
Sada kada smo učitali prethodno obučeni VGG16 model, možemo ga koristiti za različite zadatke kao što je klasifikacija slika. Da bismo izvršili klasifikaciju slike, moramo prethodno obraditi ulaznu sliku kako bismo je učinili kompatibilnom sa VGG16 modelom. Ovo uključuje promjenu veličine slike, normalizaciju vrijednosti piksela i proširenje njenih dimenzija.
import numpy as np from tensorflow.keras.preprocessing import image from tensorflow.keras.applications.vgg16 import preprocess_input # Load an example image and preprocess it img_path = "path/to/your/image.jpg" img = image.load_img(img_path, target_size=(224, 224)) x = image.img_to_array(img) x = np.expand_dims(x, axis=0) x = preprocess_input(x)
U kodu iznad, koristimo modul `image` iz `tensorflow.keras.preprocessing` za učitavanje i prethodnu obradu ulazne slike. Veličina slike je promijenjena na `(224, 224)` prema zahtjevu modela VGG16. Zatim pretvaramo sliku u NumPy niz i širimo njene dimenzije kako bi odgovarale očekivanom ulaznom obliku. Konačno, koristimo funkciju `preprocess_input` iz modula `tensorflow.keras.applications.vgg16` za normalizaciju vrijednosti piksela.
Sa ulaznom slikom koja je prethodno obrađena i spremna, sada možemo koristiti unaprijed obučeni VGG16 model da napravimo predviđanje:
from tensorflow.keras.applications.vgg16 import decode_predictions # Make a prediction using the pretrained model predictions = model.predict(x) # Decode the prediction and print the top 3 results predicted_classes = decode_predictions(predictions, top=3) print(predicted_classes)
U gornjem primjeru koristimo metodu `model.predict` za generiranje predviđanja za ulaznu sliku. Rezultirajuća predviđanja se zatim dekodiraju pomoću funkcije `decode_predictions` iz modula `tensorflow.keras.applications.vgg16` kako bi se otkrile 3 najbolje predviđene klase iz ImageNet skupa podataka.
U zaključku, učitavanje i korištenje unaprijed obučenih modela u Pythonu je olakšano uz TensorFlow biblioteku. Ovaj pristup može značajno smanjiti vrijeme i resurse potrebne za postizanje tačnih rezultata, što ga čini nevjerovatno vrijednim i za početnike i za iskusne praktičare mašinskog učenja.