برنامه نویسی
نحوه ایجاد یک مدل از داده های من در Kaggle

1، تابعی از جستجوی تصاویر را تعریف کنید
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')
2، عکس سگ را جستجو کنید و URL ها را از جستجو دریافت کنید
urls = search_images('dog photos', max_images=1)
3- یک تصویر را دانلود کنید و به آن نگاه کنید
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)
4- همین کار را برای عکس گربه انجام دهید
download_url(search_images('cat photos', max_images=1)[0], 'cat.jpg', show_progress=False)
Image.open('cat.jpg').to_thumb(256,256)
5، چند نمونه از هر یک از عکس های سگ و گربه را بردارید و هر گروه از عکس ها را در یک پوشه متفاوت ذخیره کنید.
searches = 'dog', 'cat'
path = Path('dog_or_not')
for o in searches:
# make sub dirs in dog_or_not
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)
6، عکس هایی را که ممکن است به درستی دانلود نشوند و باعث شکست آموزش مدل ما شود، حذف کنید
failed = verify_images(get_image_files(path))
failed.map(Path.unlink)
1، دیتالودرها را با استفاده از DataBlock ایجاد کنید
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)
2، از مدل از پیش آموزش دیده استفاده کنید و آن را در مجموعه داده ما تنظیم کنید
learn = vision_learner(dls, resnet50, metrics=error_rate)
learn.fine_tune(3)
1، از عکس سگی که در ابتدا دانلود کردیم استفاده کنید تا ببینید مدل ما در مورد چه فکری می کند
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}")
این یک: سگ است.
احتمال سگ بودن: 10000