如何用 Python 脚本批量下载 Google 图像?
分不清谭卓和郝蕾?各来200张照片,让深度学习帮我们识别吧。
问题
《如何用Python和深度神经网络识别图像?》一文中,我给你展示了如何用深度学习,教电脑区分机器人瓦力和哆啦a梦。
很快就有用户在后台留言,问:
老师,我想自己训练一个图片分类器,到哪里去批量下载带标注的训练图像呢?
说说我写教程的时候,是如何找图片的吧。
最大的图片库,当然就是 Google 了。
在 Google 图像栏目下,键入"Walle"。
怎么样?搜索结果很符合需求吧。
你不但找到了一批高质量图片,而且它们的标注, Google 都帮你打好了。
下面一步,自然就是把这些图片下载下来了。
我让学生实际动手做,每个人找两个与别人不同的图像集合,尝试根据教程做深度学习分类。
我提供给他们的方案(几款不同的 Chrome 浏览器插件),效果都不好。
有的才下了几张,就停工,甚至把浏览器整崩溃了。
有的下载图片,都是重复的。
学生告诉我,经验证,最简单有效的方法,是一张张手动点击下载……
这显然不是正经办法。
痛点
渴望从 Google 图片库高效批量获得优质带标注图像,不会是个案。
这个大众痛点,真的没有人尝试解决吗?
今天,一个偶然的机会,我发现了一个特别棒的 Github 项目,叫做 google-images-download
。
Github repo 链接在这里。
项目发布至今,只有短短5个月的时间,星标数量居然已经上了2000,看来确实非常受欢迎。
google-images-download
是个 Python 脚本。
使用它,你可以一条命令,就完成 Google 图片搜索和批量下载功能。
而且,这工具还跨平台运行,Linux, Windows 和 macOS 都支持。
简直是懒人福音。
安装
google-images-download
安装很简单。
以 macOS 为例,只需要在终端下,执行以下命令:
pip install google_images_download
安装就算完成了。
当然,这需要你系统里已经安装了 Python 环境。
如果你还没有安装,或者对终端操作命令不太熟悉,可以参考我的《如何安装Python运行环境Anaconda?(视频教程)》一文,学习如何下载安装 Anaconda ,和进行终端命令行操作。
尝试
进入下载目录:
cd ~/Downloads
我们尝试下载一些图片。
《我不是药神》里面有个叫谭卓的女演员,演的不错。可是我一开始,把她当成郝蕾了。
咱们尝试下载一些谭卓的图片吧。
终端里面执行:
googleimagesdownload -k "谭卓" -l 20
解释一下,这里的 -k
指的是 "keyword",也就是“关键词”,后面用双引号括起来要查找的关键词。
你可以看出,使用中文关键词,也没问题。
后面的 -l
,指的是"limit",也就是图片数量限定,你需要指定自己要下载多少张图像。
本例中,我们要20张。
下面是执行过程:
执行完毕。
可以看到,下载过程中,发生了一个错误。
但程序依然锲而不舍,帮我们把下载流程运行完毕。
我们看看结果。
下载的图片都存放在 ~/Downloads/downloads/谭卓
下面,google-images-download
非常贴心地,为我们建立子目录。
我们在 Finder 里打开看看:
看了半天,有的照片,还是跟郝蕾分不大清楚。
为了彻底分清两位女演员,我们再下载 200 张郝蕾的照片吧。
仿照刚才的命令,我们执行:
googleimagesdownload -k "郝蕾" -l 200
然后……就报错了:
解决
遇到问题,不要慌。
你得认真看看错误提示。
注意其中出现了一个关键词:chromedriver
。
这是个什么东西呢?
我们回到 google-images-download
的 github 页面,以 chromedriver
为关键词进行检索。
你会立即找到如下结果:
原来如果你要的图片数量超过100张,那么程序就必须调用 Selenium 和 chromedriver 才行。
Selenium 在你安装 google-images-download
的时候,已经自动安装好了。
你只需要下载 chromedriver ,并且指定路径。
下载链接在这里。
请根据你的操作系统类型,选择合适的版本:
我选的是 macOS 版本。
下载后,压缩包里面只有一个文件,把它解压,放在 ~/Downloads
目录下。
然后,执行:
googleimagesdownload -k "郝蕾" -l 200 --chromedriver="./chromedriver"
这里 --chromedriver
参数,用来告诉 google-images-download
,解压后 chromedriver
所在路径。
这回机器勤勤恳恳,帮我们下载郝蕾的照片了。
200张图片,需要下载一会儿。请耐心等待。
下完了。
中间也有一些报错,部分图片没有正确下载。
好在,这对总体结果没有太大影响。
为了保险起见,建议你设置下载数量时,多设置一些。
给自己留出安全边际嘛。
咱们打开下载后的目录 ~/Downloads/downloads/郝蕾
看看:
这回,你能分清楚她俩不?
作业
给你留个作业。
你已经学会如何一行命令,下载谭卓和郝蕾的照片。
能否活学活用咱们之前介绍的卷积神经网络知识,用 TuriCreate (或者 Tensorflow) ,建立模型识别两个人的照片?
完成作业后,欢迎把你的测试准确率结果告诉我。
当然,如果你能举一反三,利用咱们今天介绍的脚本,下载其他图像集合,并且进行深度学习训练,就更好了。
也欢迎把结果反馈给我哦。
喜欢请点赞。还可以微信关注和置顶我的公众号“玉树芝兰”(nkwangshuyi)。
如果你对数据科学感兴趣,不妨阅读我的系列教程索引贴《如何高效入门数据科学?》,里面还有更多的有趣问题及解法。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
不学无数——SpringBoot入门Ⅰ
SpringBoot 1.SpringBoot简介 在刚接触SSM框架的时候,想必都会被这个框架的配置文件所烦扰,需要自己手动配置的东西非常多,哪怕有些东西自己不需要也是需要配置的。而SpringBoot此时就应运而生,减少了大家的配置过程。相信都听过“约定优于配置”的这样一句话,就是说系统,类库,框架应该假定合理的默认值,而非要求提供不必要的配置,可是使用Spring或者SpringMVC的话依然有许多这样的东西需要我们进行配置,这样不仅徒增工作量而且在跨平台部署时容易出问题。简单来说就是使用SpringBoot可以快速构建一个能够运行的Spring项目。 1.1 SpringBoot优点 能够快速构建一个能够独立运行的Spring项目 内嵌有Tomcat容器,无需配置Tomcat 提供了许多starter,简化了许多的配置 无代码生成,没有xml的配置 2.第一个SpringBoot项目启动 2.1 项目搭建 介绍完Springboot以后,让我们开始搭建一个简单的“Hello World!”的SpringBoot项目。千里之行始于足下,相信第一个java项目也是从“hello,w...
- 下一篇
Java 特性之多态性
多态性 面向对象(OOP)三大特性:封装、继承、多态。 多态(polymorphism)指同一行为具有多种不同表现形式,在面向对象程序设计中表现为同一消息可以根据发送对象的类型不同,做出多种不同的行为。 多态的优点 多态性能够从一定程度上消除类型之间的耦合关系,通过统一接口方式,不同类的对象可以直接替换,程序更加灵活,可扩展。 多态存在的三个必要条件 继承 重写 父类引用指向子类对象 多态的实现方式 重写(Override)与重载(Overload) 方法重载(Method Overloading) 方法重载(Method Overloading)允许类具有多个相同名称的方法,但是方法参数列表不同。 重载形式: case 1: 参数数量变化(有效) add(int, int) add(int, int, int) case 2: 参数数据类型变化(有效) add(int, int) add(int, float) case 3: 参数数据类型顺序变化(有效) add(int, float) add(float, int) bad case 1: 仅改变返回类型(无效) int add(...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Mario游戏-低调大师作品
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS8编译安装MySQL8.0.19
- MySQL8.0.19开启GTID主从同步CentOS8