À cette époque, vous pouvez acquérir de nouvelles compétences grâce à des cours en ligne. J'ai récemment terminé la spécialisation Deep Learning enseignée par Andrew Ng à Coursera, ce qui a été une excellente expérience d'apprentissage. Il existe de nombreuses explications mathématiques, et le premier modèle est entièrement réalisé avec python / numpy. Au fur et à mesure que vous poursuivez la leçon, vous pouvez également utiliser Tensorflow et Keras. Ce sera un style d'apprentissage pour étudier fermement la base de la théorie et l'utiliser.
Cependant, fast.ai, qui est un sujet brûlant depuis plusieurs années, est exactement le contraire. C'est une approche «faisons-le d'abord». C'est passionnant d'essayer de voir à quel point il est facile de créer un modèle d'intelligence artificielle avec la bibliothèque de base fast.ai.
Sur la base des accords de la leçon 1 de fast.ai, j'ai créé un modèle qui peut identifier la guitare. Désolé pour ceux qui ne connaissent pas grand-chose aux guitares, mais cet exemple ne sera probablement pas très utile!
Tout d'abord, avant de préparer le modèle, nous avons collecté des données d'image de quatre types de guitares.
La raison du choix de ces quatre types est que les guitares ont une forme de corps et une forme de tête distinctes. De plus, comme ce sont des guitares très populaires, il était facile de collecter des images. Merci pour votre recherche Google. J'ai créé des dossiers pour chaque type de guitare et j'en ai rassemblé des centaines.
Tout d'abord, importez fastai.vision. Définissez le chemin où vous avez enregistré les données et définissez la classe. Le nom de la classe correspond au nom du dossier.
from fastai.vision import *
path = Path('data/guitars')
classes = ['gibson_les_paul', 'fender_telecaster', 'fender_stratocaster', 'explorer']
fast.ai fournit une méthode pour préparer facilement les données. Avec une méthode, vous pouvez définir les modifications à refléter dans l'image (par exemple, la rotation pour l'augmentation des données), le redimensionnement et le ratio des ensembles de données d'entraînement et de validation. Pour plus d'informations, veuillez consulter la page de détails de l'API.
data = ImageDataBunch.from_folder(path, train=".", valid_pct=0.2,
ds_tfms=get_transforms(), size=224, num_workers=4, bs=16).normalize(imagenet_stats)
Il est également possible d'afficher des exemples de données!
data.show_batch(rows=3, figsize=(7,8))
L'apprentissage lui-même est très facile. Il peut être formé sur la base du modèle CNN formé en deux lignes de code.
learn = cnn_learner(data, models.resnet34, metrics=error_rate)
learn.fit_one_cycle(4)
Le résultat de l'apprentissage est le suivant. 90% système! N'est-ce pas l'état de l'art du moteur d'identification de guitare? C'est peut-être le seul modèle.
Vous pouvez également consulter les problèmes de formation et les résultats des ensembles de données de validation.
interp = ClassificationInterpretation.from_learner(learn)
interp.plot_confusion_matrix()
Ceci est la matrice de confusion! Telecaster et Stratocaster sont certainement les plus mixtes. Vous pouvez également afficher des images que le modèle n'a pas correctement prédites.
losses,idxs = interp.top_losses()
interp.plot_top_losses(9, figsize=(15,15))
Il existe certainement de nombreuses images difficiles à juger. L'image en haut à gauche est un étui de guitare en premier lieu. L'extrême droite au milieu est probablement la Stratocaster, mais l'image est trop recadrée et difficile pour le modèle. L'image en bas à droite est difficile à juger pour les humains. C'est une autre guitare. Autrement dit, il y a du bruit dans les données d'apprentissage et de validation. "Garbage in, Garbage out". En tant qu'amélioration future, nous rendrons les données plus propres et apprendrons. Vous pouvez également en savoir plus en débloquant les paramètres du modèle importé, mais cela prend bien sûr du temps.
Faisons une prédiction avec un modèle.
img = open_image(path/'gibson_les_paul'/'00000059.jpg')
pred_class,pred_idx,outputs = learn.predict(img)
Cette guitare.
Le résultat de la prédiction est: Catégorie gibson_les_paul
: v: Pipong Pipong: v:
Pour utiliser le modèle créé dans My App, vous pouvez exporter le modèle et le convertir en API avec un code Python simple.
La plupart du contenu ci-dessus provient de la leçon 1 de Fast.ai. C'est incroyable comme il est facile d'obtenir de bons résultats si rapidement. De plus, les cours sont gratuits! c'est recommandé