[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
首页 > 后端开发 > Python教程 > 如何根据 Kaggle 上的数据创建模型

如何根据 Kaggle 上的数据创建模型

DDD
发布: 2025-01-26 10:12:09
原创
993 人浏览过

本教程演示了如何使用FastAI库训练一个图像分类模型,区分猫和狗。 我们将逐步进行,从数据准备到模型训练和使用。

步骤一:数据准备

  1. 图像搜索函数: 首先,我们定义一个函数用于从DuckDuckGo搜索引擎搜索图像。该函数接受关键词和最大图像数量作为输入,返回图像URL列表。
<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. 搜索和下载示例图像: 我们分别搜索“dog photos”和“cat photos”,下载一张示例图片。
<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

同样地,我们下载一张猫的图片:

<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. 批量下载和预处理图像: 我们下载多张猫和狗的图片,并将其分别保存到dog_or_not/dogdog_or_not/cat文件夹中。 同时,我们调整图像大小以提高效率。
<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. 清理无效图像: 删除下载失败或损坏的图片。
<code class="language-python">failed = verify_images(get_image_files(path))
failed.map(Path.unlink)</code>
登录后复制

步骤二:模型训练

  1. 创建DataLoader: 使用DataBlock创建DataLoader,用于加载和处理图像数据。
<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. 微调预训练模型: 使用预训练的ResNet50模型,并在我们的数据集上进行微调。
<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

步骤三:模型使用

  1. 预测: 使用训练好的模型预测之前下载的示例狗图片。
<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>
登录后复制

输出结果:

This is a: dog. Probability it's a dog: 1.0000

这个教程展示了如何利用FastAI快速构建一个简单的图像分类模型。 记住,模型的准确性取决于训练数据的质量和数量。

以上是如何根据 Kaggle 上的数据创建模型的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新下载
更多>
网站特效
网站源码
网站素材
前端模板