Maison >développement back-end >Tutoriel Python >Comment créer un modèle à partir de mes données sur Kaggle

Comment créer un modèle à partir de mes données sur Kaggle

DDD
DDDoriginal
2025-01-26 10:12:091016parcourir

Ce tutoriel montre comment utiliser la bibliothèque FastAI pour entraîner un modèle de classification d'images afin de distinguer les chats des chiens. Nous procéderons étape par étape, de la préparation des données à la formation et à l'utilisation du modèle.

Étape 1 : Préparation des données

  1. Fonction de recherche d'images : Tout d'abord, nous définissons une fonction de recherche d'images à partir du moteur de recherche DuckDuckGo. Cette fonction accepte les mots-clés et le nombre maximum d'images en entrée et renvoie une liste d'URL d'images.
<code class="language-python">import os
iskaggle = os.environ.get('KAGGLE_KERNEL_RUN_TYPE', '')

if iskaggle:
    !pip install -Uqq fastai 'duckduckgo_search>=6.2'

from duckduckgo_search import DDGS
from fastcore.all import *
import time, json
def search_images(keywords, max_images=200):
    return L(DDGS().images(keywords, max_results=max_images)).itemgot('image')</code>
  1. Recherchez et téléchargez des exemples d'images : Recherchons respectivement « photos de chien » et « photos de chat » et téléchargeons un exemple d'image.
<code class="language-python">urls = search_images('dog photos', max_images=1)
from fastdownload import download_url
dest = 'dog.jpg'
download_url(urls[0], dest, show_progress=False)
from fastai.vision.all import *
im = Image.open(dest)
im.to_thumb(256,256)</code>

How to create a model from my data on Kaggle

De même, on télécharge une photo d'un chat :

<code class="language-python">download_url(search_images('cat photos', max_images=1)[0], 'cat.jpg', show_progress=False)
Image.open('cat.jpg').to_thumb(256,256)</code>

How to create a model from my data on Kaggle

  1. Téléchargement par lots et prétraitement des images : Nous téléchargeons plusieurs photos de chats et de chiens et les enregistrons respectivement dans les dossiers dog_or_not/dog et dog_or_not/cat. Dans le même temps, nous redimensionnons l’image pour améliorer l’efficacité.
<code class="language-python">searches = 'dog', 'cat'
path = Path('dog_or_not')

for o in searches:
    dest = (path/o)
    dest.mkdir(exist_ok=True, parents=True)
    download_images(dest, urls=search_images(f'{o} photo'))
    time.sleep(5)
    resize_images(path/o, max_size=400, dest=path/o)</code>
  1. Nettoyer les images invalides : Supprimez les images dont le téléchargement a échoué ou qui sont endommagées.
<code class="language-python">failed = verify_images(get_image_files(path))
failed.map(Path.unlink)</code>

Étape 2 : Formation du modèle

  1. Créer un DataLoader : Utilisez DataBlock pour créer un DataLoader pour charger et traiter les données d'image.
<code class="language-python">dls = DataBlock(
    blocks=(ImageBlock, CategoryBlock),
    get_items=get_image_files,
    splitter=RandomSplitter(valid_pct=0.2, seed=42),
    get_y=parent_label,
    item_tfms=[Resize(192, method='squish')]
).dataloaders(path, bs=32)
dls.show_batch(max_n=6)</code>

How to create a model from my data on Kaggle

  1. Affiner le modèle pré-entraîné : Utilisez un modèle ResNet50 pré-entraîné et affinez-le sur notre ensemble de données.
<code class="language-python">learn = vision_learner(dls, resnet50, metrics=error_rate)
learn.fine_tune(3)</code>

How to create a model from my data on Kaggle

Étape 3 : Utilisation du modèle

  1. Prédiction : Prédisez l'exemple d'image de chien précédemment téléchargé à l'aide du modèle entraîné.
<code class="language-python">is_dog,_,probs = learn.predict(PILImage.create('dog.jpg'))
print(f'This is a: {is_dog}.')
print(f"Probability it's a dog: {probs[1]:.4f}")</code>

Résultat de sortie :

C'est un : chien. Probabilité que ce soit un chien : 1.0000

Ce tutoriel montre comment utiliser FastAI pour créer rapidement un modèle simple de classification d'images. N'oubliez pas que la précision de votre modèle dépend de la qualité et de la quantité de vos données d'entraînement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn