本教學示範如何使用FastAI庫訓練一個影像分類模型,區分貓和狗。 我們將逐步進行,從資料準備到模型訓練和使用。
步驟一:資料準備
- 影像搜尋函數: 首先,我們定義一個函數用於從DuckDuckGo搜尋引擎搜尋影像。函數接受關鍵字和最大圖像數量作為輸入,並傳回圖像URL列表。
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')
- 搜尋和下載範例圖片: 我們分別搜尋“dog photos”和“cat photos”,下載一張範例圖片。
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)
同樣地,我們下載一張貓的圖片:
download_url(search_images('cat photos', max_images=1)[0], 'cat.jpg', show_progress=False) Image.open('cat.jpg').to_thumb(256,256)
-
批次下載和預處理圖像: 我們下載多張貓和狗的圖片,並將其分別保存到
dog_or_not/dog
和dog_or_not/cat
資料夾中。 同時,我們調整圖像大小以提高效率。
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)
- 清理無效影像: 刪除下載失敗或損壞的圖片。
failed = verify_images(get_image_files(path)) failed.map(Path.unlink)
步驟二:模型訓練
-
建立DataLoader: 使用
DataBlock
建立DataLoader,用於載入和處理影像資料。
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)
- 微調預訓練模型: 使用預先訓練的ResNet50模型,並在我們的資料集上進行微調。
learn = vision_learner(dls, resnet50, metrics=error_rate) learn.fine_tune(3)
步驟三:模型使用
- 預測: 使用訓練好的模型預測之前下載的範例狗圖片。
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}")
輸出結果:
This is a: dog. Probability it's a dog: 1.0000
這個教學展示如何利用FastAI快速建立一個簡單的影像分類模型。 記住,模型的準確性取決於訓練資料的品質和數量。
以上是如何從我在Kaggle上的數據中創建模型的詳細內容。更多資訊請關注PHP中文網其他相關文章!

theDifferenceBetweewneaforoopandawhileLoopInpythonisthataThataThataThataThataThataThataNumberoFiterationSiskNownInAdvance,而leleawhileLoopisusedWhenaconDitionNeedneedneedneedNeedStobeCheckedStobeCheckedStobeCheckedStobeCheckedStobeceDrepeTysepectients.peatsiveSectlyStheStobeCeptellyWithnumberofiterations.1)forloopsareAceareIdealForitoringercortersence

在Python中,for循環適用於已知迭代次數的情況,而while循環適合未知迭代次數且需要更多控制的情況。 1)for循環適用於遍歷序列,如列表、字符串等,代碼簡潔且Pythonic。 2)while循環在需要根據條件控制循環或等待用戶輸入時更合適,但需注意避免無限循環。 3)性能上,for循環略快,但差異通常不大。選擇合適的循環類型可以提高代碼的效率和可讀性。

在Python中,可以通過五種方法合併列表:1)使用 運算符,簡單直觀,適用於小列表;2)使用extend()方法,直接修改原列表,適用於需要頻繁更新的列表;3)使用列表解析式,簡潔且可對元素進行操作;4)使用itertools.chain()函數,內存高效,適合大數據集;5)使用*運算符和zip()函數,適用於需要配對元素的場景。每種方法都有其特定用途和優缺點,選擇時應考慮項目需求和性能。

foroopsare whenthenemberofiterationsisknown,而whileLoopsareUseduntilacTitionismet.1)ForloopSareIdealForeSequencesLikeLists,UsingSyntaxLike'forfruitinFruitinFruitinFruitIts:print(fruit)'。 2)'

toConcateNateAlistofListsInpython,useextend,listComprehensions,itertools.Chain,orrecursiveFunctions.1)ExtendMethodStraightForwardButverBose.2)listComprechencomprechensionsareconconconciseandemandeconeandefforlargerdatasets.3)

Tomergelistsinpython,YouCanusethe操作員,estextMethod,ListComprehension,Oritertools

在Python3中,可以通過多種方法連接兩個列表:1)使用 運算符,適用於小列表,但對大列表效率低;2)使用extend方法,適用於大列表,內存效率高,但會修改原列表;3)使用*運算符,適用於合併多個列表,不修改原列表;4)使用itertools.chain,適用於大數據集,內存效率高。

使用join()方法是Python中從列表連接字符串最有效的方法。 1)使用join()方法高效且易讀。 2)循環使用 運算符對大列表效率低。 3)列表推導式與join()結合適用於需要轉換的場景。 4)reduce()方法適用於其他類型歸約,但對字符串連接效率低。完整句子結束。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

SublimeText3 Linux新版
SublimeText3 Linux最新版

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中