背景
一个能够实际应用的深度学习模型,背后的数据集往往都花费了大量的人力财力,通过聘用标注团队对真实场景数据进行标注生产出来,大多数情况不太可能使用网络来源的图片。但在项目初期的demo阶段,或者某些特定的场合下,你可能需要借助一些网络来源的图片来辅助你构建最初的数据集。
本文就将我制作的两个脚本工具分享给大家,它们可以让你借助百度识图来快速的爬取一批目标数据来丰富你的数据集。
代码也整合到了我维护的GitHub仓库AI-ToolBox中,欢迎关注。
方法1:关键字搜索
脚本1提供了模拟使用百度图片搜索功能的方式,来快速获取你想要的目标数据集。代码
百度图片搜索是我们最常用的功能之一:
本程序的大致思路如下:
程序将会依次使用预先设定的关键字进行图片搜索
借助爬虫来模拟使用百度搜图的过程,爬取页面中的url并下载
由于图片搜索结果是动态加载的,采用的解决方案是借助selenium库模拟鼠标滚轮不停向下拖动,达到达到自动化搜索大量目标图片的目的。
代码很简单,只是分享一个工具,如果大家对具体的实现细节感兴趣就直接看代码吧~
如果对爬虫没什么概念可以看下之前写的一篇新手向的爬虫教程十分钟能学会的简单python爬虫,然后再简单了解下css selector和selenium,就可以上手啦。
win10的使用方法如下:
1.安装chromedriver
教程: https://www.jb51.net/article/162903.htm
查看谷歌浏览器版本命令: chrome://version/
下载链接(需选择对应版本) http://chromedriver.storage.googleapis.com/index.html
2.修改参数
提前准备好要搜索的关键字,保存到变量keyword_list中
设置每个关键字下载图片的页数,默认30页
例如:
if __name__ == "__main__":# 使用示例:keyword_list = ['T-shirt', 'skirt']max_page = 30search_imgs(keyword_list, max_page)
3.运行本程序,耐心等待。
为了留出足够的时间进行页面加载,我设置的操作间隔比较长,程序运行会比较慢,根据网络状况可以修改小一些。
搜索的结果将会自动的按照设定的关键字分文件夹保存在keyword_search_result目录下。
例如,按照上面的参数设置,keyword_search_result目录下将会创建T-shirt和skirt两个子文件夹,你将会在其中看到类似如下的爬取数据:
方法2:以图搜图
不知大家是否尝试过另一种搜索场景:以图搜图
即通过提供的图片搜索近似的图片,这也是一种利用已有的少量图片扩充数据集的好思路。
脚本2提供了模拟使用百度识图功能来快速获取你想要的目标数据集的方法。代码
代码逻辑和脚本1类似,但使用起来稍微麻烦一些(如果用于搜图的种子图片是本地图片,你需要先将其转化为可以公网访问的url,这样百度识图功能才有可能访问到这张图片)
本程序的大致使用方法如下:
1.安装chromedriver
同上,确保已经安装了谷歌浏览器驱动
2.准备种子图片
收集所有想要用来搜索相似图片的原始图片,放置在seed_imgs中
3.使本地图片可以被url访问
将seed_imgs中的图片做成可供外界访问的url形式,你可以使用任何可能的方法
例如我的解决办法是将这些图片上传到github上,将github作为一个临时的图床使用
根据你制作的图床的url前缀,修改变量base_url
如果你的待搜索图片本身就是url形式的,那可以忽略这两个步骤。
但无论如何,你可能需要阅读并稍稍修改下代码,确认url路径拼接正确才能正常使用。
4.运行本程序,耐心等待