首頁 > 後端開發 > Python教學 > 如何從我在Kaggle上的數據中創建模型

如何從我在Kaggle上的數據中創建模型

DDD
發布: 2025-01-26 10:12:09
原創
1020 人瀏覽過

本教學示範如何使用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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板