Kaggle上原本内容课程1链接Is it a bird? Creating a model from your own data | Kaggle.,文末有我针对报错修改后可正常运行的版本。
断断续续几次想学fastai的课程,可是在用课程中提供的代码运行时,经常会遇到一些奇怪的报错(可能是软件库更新太快,而课程代码却没有同步更新的缘故),对于课程所倡导的快速体验入门AI产生了阻力。想到现在chatgpt类的智能助手已经很先进了,可以利用智能助手扫除意外报错,于是又有了尝试重新学习fastai的动力。
在第一课“Is it a bird? Creating a model from your own data”中,在查找bird图片时,提示ddg_images被弃用,建议使用DDG().images()。
根据智能助手的建议,把ddg_images换成DDGSearch,结果运行提示不存在。后来还是在stackoverflow上看其他人给的方案,应该import DDGS。
只是因为函数定义变了,后面的内容也要改。又遇到了新的问题,不确定是不是duckduckgo服务器自身的问题
fastai论坛里的这的帖子看起来也是相关问题讨论,而且提示课程视频里用fastbook的方法
Ddg_images doesnt return any results - Part 1 2022 - fast.ai Course Forums
在教学视频里看到的是自定义search_images函数,未使用duckduckgo的库。 通过在kaggle中查看,那是version 8里的内容,我目前看的是version 9,所以和上面不一致。但整体一下看起来复杂了许多,
最后用如下如下方法解决了下载urls的问题,即用fastbook里定义的search_images_ddg取代search_images,代码也简洁了许多,方便理解。
!pip install fastbook
import fastbook
from fastbook import *
#NB: `search_images` depends on duckduckgo.com, which doesn't always return correct responses.
# If you get a JSON error, just try running it again (it may take a couple of tries).
urls = search_images_ddg('bird photos', max_images=10)
urls[0]
接着产生新的问题,如下代码运行时,提示dest找不到。(ps:如果没报错就不用改,因为我后面想复现问题时,又不报错了)
重新更改代码顺序后可以正常执行
接着看后面代码,又报错了
需要把search_images改成search_images_ddg,如下所示
后面还有几处相同的问题,统一把search_images改成search_images_ddg就好。
这个图片搜索建立数据集的过程用时比较长,手动中止虽然会报错,不影响后面训练。推测是下载了一部分数量的数据被中止的,虽然数据数量没达到设置的最大值,但是也可以使用了。
接下来整个部分都正常了,从头到尾重新执行一遍总用时343秒。
下面是我修改过的整个版本,点击这里,可以全部正常运行,请放心食用,下期再会...