快速人工智能mooc的实用功能
duckgoose的Python项目详细描述
鸭鹅
在线fast.ai课程的实用程序脚本。有两个主要部分:一个用于下载和组织任意图像类,另一个用于突出显示图像的哪些部分正在激活分类决策。
- 用于第1课外部图像类实验的实用程序。剧本:
- 从google images下载特定类别的图像
- 健全性检查图像是否可以打开并有三个通道
- 按照fast.ai库的要求,将图像组织到单独的文件夹(train/valid/test+classes)中
- 用于为两个分类创建类激活映射的实用程序。
先决条件
chromedriver
是必需的。在ubuntu/debian上:sudo apt-get chromium-chromedriver
安装
pipinstallduckgoose
用法
获取、健全检查和组织图像
fromduckgooseimportfetchImagesAndPrepForClassification# dictionary structure `class_name => search term`image_classes={'ducks':'ducks -rubber','geese':'geese'}download_path='/home/myuser/data/downloaded_from_google'output_path='/home/myuser/data/ducksgeese/'number_of_images=100fetchImagesAndPrepForClassification(image_classes,download_path,output_path,number_of_images)
创建类激活映射(cam)
note:这是针对fastai v2第1部分实现的。 下面是一个使用fast ai为鸭子和鹅创建类激活映射的完整示例。
fromfastai.importsimport*fromfastai.transformsimport*fromfastai.conv_learnerimport*fromfastai.modelimport*fromfastai.datasetimport*fromfastai.sgdrimport*fromfastai.plotsimport*fromduckgoose.camimportcalculateAndChartHeatZoneForPATH="data/ducksgeese/"sz=224arch=resnet34bs=64m=arch(True)m=nn.Sequential(*children(m)[:-2],nn.Conv2d(512,2,3,padding=1),nn.AdaptiveAvgPool2d(1),Flatten(),nn.LogSoftmax())tfms=tfms_from_model(arch,sz,aug_tfms=transforms_side_on,max_zoom=1.1)data=ImageClassifierData.from_paths(PATH,tfms=tfms,bs=bs)learn=ConvLearner.from_model_data(m,data)learn.freeze_to(-4)_,val_tfms=tfms_from_model(learn.model,sz)learn.fit(0.01,2)calculateAndChartHeatZoneFor('./data/ducksgeese/test/ducks/ducks_427.jpg',val_tfms,learn)