如何用Python和深度神经网络识别图像?

简介:

只需要10几行Python代码,你就能自己构建机器视觉模型,对图片做出准确辨识和分类。快来试试吧!


视觉


进化的作用,让人类对图像的处理非常高效。


这里,我给你展示一张照片。


0?wx_fmt=jpeg


如果我这样问你:


你能否分辨出图片中哪个是猫,哪个是狗?


你可能立即会觉得自己遭受到了莫大的侮辱。并且大声质问我:你觉得我智商有问题吗?!


息怒。


换一个问法:


你能否把自己分辨猫狗图片的方法,描述成严格的规则,教给计算机,以便让它替我们人类分辨成千上万张图片呢?


对大多数人来说,此时感受到的,就不是羞辱,而是压力了。


如果你是个有毅力的人,可能会尝试各种判别标准:图片某个位置的像素颜色、某个局部的边缘形状、某个水平位置的连续颜色长度……


你把这些描述告诉计算机,它果然就可以判断出左边的猫和右边的狗了。


问题是,计算机真的会分辨猫狗图片了吗?


我又拿出一张照片给你。


0?wx_fmt=jpeg


你会发现,几乎所有的规则定义,都需要改写。


当机器好不容易可以用近似投机取巧的方法正确分辨了这两张图片里面的动物时,我又拿出来一张新图片……


0?wx_fmt=png


几个小时以后,你决定放弃。


别气馁。


你遭遇到的,并不是新问题。就连大法官,也有过同样的烦恼。


0?wx_fmt=jpeg


1964年,美国最高法院的大法官Potter Stewart在“Jacobellis v. Ohio”一案中,曾经就某部电影中出现的某种具体图像分类问题,说过一句名言“我不准备就其概念给出简短而明确的定义……但是,我看见的时候自然会知道”(I know it when I see it)。


原文如下:


I shall not today attempt further to define the kinds of material I understand to be embraced within that shorthand description (“hard-core pornography”), and perhaps I could never succeed in intelligibly doing so. But I know it when I see it, and the motion picture involved in this case is not that.


考虑到精神文明建设的需要,这一段就不翻译了。


人类没法把图片分辨的规则详细、具体而准确地描述给计算机,是不是意味着计算机不能辨识图片呢?


当然不是。


2017年12月份的《科学美国人》杂志,就把“视觉人工智能”(AI that sees like humans)定义为2017年新兴技术之一。


0?wx_fmt=jpeg


你早已听说过自动驾驶汽车的神奇吧?没有机器对图像的辨识,能做到吗?


你的好友可能(不止一次)给你演示如何用新买的iPhone X做面部识别解锁了吧?没有机器对图像的辨识,能做到吗?


0?wx_fmt=jpeg


医学领域里,计算机对于科学影像(如X光片)的分析能力,已经超过有多年从业经验的医生了。没有机器对图像的辨识,能做到吗?


0?wx_fmt=png


你可能一下子觉得有些迷茫了——这难道是奇迹?


不是。


计算机所做的,是学习。


通过学习足够数量的样本,机器可以从数据中自己构建模型。其中,可能涉及大量的判断准则。但是,人类不需要告诉机器任何一条。它是完全自己领悟和掌握的。


你可能会觉得很兴奋。


那么,下面我来告诉你一个更令你兴奋的消息——你自己也能很轻易地构建图片分类系统!


不信?请跟着我下面的介绍,来试试看。


数据


咱们就不辨识猫和狗了,这个问题有点不够新鲜。


咱们来分辨机器猫,好不好?


对,我说的就是哆啦a梦。


0?wx_fmt=png


把它和谁进行区分呢?


一开始我想找霸王龙,后来觉得这样简直是作弊,因为他俩长得实在差别太大。


0?wx_fmt=png


既然哆啦a梦是机器人,咱们就另外找个机器人来区分吧。


一提到机器人,我立刻就想起来了它。


0?wx_fmt=png


对,机器人瓦力(WALLE)。


我给你准备好了119张哆啦a梦的照片,和80张瓦力的照片。图片已经上传到了这个Github项目(https://github.com/wshuyi/demo-python-image-classification)。


请点击这个链接(https://link.jianshu.com/?t=https%3A%2F%2Fgithub.com%2Fwshuyi%2Fdemo-python-image-classification%2Farchive%2Fmaster.zip),下载压缩包。然后在本地解压。作为咱们的演示目录。


解压后,你会看到目录下有个image文件夹,其中包含两个子目录,分别是doraemon和walle。


0?wx_fmt=png


打开其中doraemon的目录,我们看看都有哪些图片。


0?wx_fmt=png


可以看到,哆啦a梦的图片真是五花八门。各种场景、背景颜色、表情、动作、角度……不一而足。


这些图片,大小不一,长宽比例也各不相同。


我们再来看看瓦力,也是类似的状况。


0?wx_fmt=png


数据已经有了,下面我们来准备一下环境配置。


环境


我们使用Python集成运行环境Anaconda。


请到这个网址(https://www.anaconda.com/downloads)下载最新版的Anaconda。下拉页面,找到下载位置。根据你目前使用的系统,网站会自动推荐给你适合的版本下载。我使用的是macOS,下载文件格式为pkg。


0?wx_fmt=png


下载页面区左侧是Python 3.6版,右侧是2.7版。请选择2.7版本。


双击下载后的pkg文件,根据中文提示一步步安装即可。


0?wx_fmt=png


安装好Anaconda后,我们需要安装TuriCreate。


请到你的“终端”(Linux, macOS)或者“命令提示符”(Windows)下面,进入咱们刚刚下载解压后的样例目录。


执行以下命令,我们来创建一个Anaconda虚拟环境,名字叫做turi。


conda create -n turi python=2.7 anaconda


然后,我们激活turi虚拟环境。


source activate turi


在这个环境中,我们安装最新版的TuriCreate。


pip install -U turicreate



转自:http://blog.csdn.net/nkwshuyi/article/details/78956890


目录
相关文章
|
2月前
|
运维 监控 数据可视化
Python 网络请求架构——统一 SOCKS5 接入与配置管理
通过统一接入端点与标准化认证,集中管理配置、连接策略及监控,实现跨技术栈的一致性网络出口,提升系统稳定性、可维护性与可观测性。
|
5月前
|
机器学习/深度学习 算法 量子技术
GQNN框架:让Python开发者轻松构建量子神经网络
为降低量子神经网络的研发门槛并提升其实用性,本文介绍一个名为GQNN(Generalized Quantum Neural Network)的Python开发框架。
130 4
GQNN框架:让Python开发者轻松构建量子神经网络
|
2月前
|
机器学习/深度学习 大数据 关系型数据库
基于python大数据的青少年网络使用情况分析及预测系统
本研究基于Python大数据技术,构建青少年网络行为分析系统,旨在破解现有防沉迷模式下用户画像模糊、预警滞后等难题。通过整合多平台亿级数据,运用机器学习实现精准行为预测与实时干预,推动数字治理向“数据驱动”转型,为家庭、学校及政府提供科学决策支持,助力青少年健康上网。
|
3月前
|
JavaScript Java 大数据
基于python的网络课程在线学习交流系统
本研究聚焦网络课程在线学习交流系统,从社会、技术、教育三方面探讨其发展背景与意义。系统借助Java、Spring Boot、MySQL、Vue等技术实现,融合云计算、大数据与人工智能,推动教育公平与教学模式创新,具有重要理论价值与实践意义。
|
4月前
|
运维 Linux 开发者
Linux系统中使用Python的ping3库进行网络连通性测试
以上步骤展示了如何利用 Python 的 `ping3` 库来检测网络连通性,并且提供了基本错误处理方法以确保程序能够优雅地处理各种意外情形。通过简洁明快、易读易懂、实操性强等特点使得该方法非常适合开发者或系统管理员快速集成至自动化工具链之内进行日常运维任务之需求满足。
288 18
|
5月前
|
JSON 网络安全 数据格式
Python网络请求库requests使用详述
总结来说,`requests`库非常适用于需要快速、简易、可靠进行HTTP请求的应用场景,它的简洁性让开发者避免繁琐的网络代码而专注于交互逻辑本身。通过上述方式,你可以利用 `requests`处理大部分常见的HTTP请求需求。
542 51
|
4月前
|
数据采集 存储 数据可视化
Python网络爬虫在环境保护中的应用:污染源监测数据抓取与分析
在环保领域,数据是决策基础,但分散在多个平台,获取困难。Python网络爬虫技术灵活高效,可自动化抓取空气质量、水质、污染源等数据,实现多平台整合、实时更新、结构化存储与异常预警。本文详解爬虫实战应用,涵盖技术选型、代码实现、反爬策略与数据分析,助力环保数据高效利用。
306 0
|
5月前
|
存储 监控 算法
基于 Python 跳表算法的局域网网络监控软件动态数据索引优化策略研究
局域网网络监控软件需高效处理终端行为数据,跳表作为一种基于概率平衡的动态数据结构,具备高效的插入、删除与查询性能(平均时间复杂度为O(log n)),适用于高频数据写入和随机查询场景。本文深入解析跳表原理,探讨其在局域网监控中的适配性,并提供基于Python的完整实现方案,优化终端会话管理,提升系统响应性能。
158 4
|
7月前
|
调度 Python
探索Python高级并发与网络编程技术。
可以看出,Python的高级并发和网络编程极具挑战,却也饱含乐趣。探索这些技术,你将会发现:它们好比是Python世界的海洋,有穿越风暴的波涛,也有寂静深海的奇妙。开始旅途,探索无尽可能吧!
210 15
|
7月前
|
机器学习/深度学习 算法 测试技术
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
本文探讨了基于图的重排序方法在信息检索领域的应用与前景。传统两阶段检索架构中,初始检索速度快但结果可能含噪声,重排序阶段通过强大语言模型提升精度,但仍面临复杂需求挑战
267 0
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析

热门文章

最新文章

推荐镜像

更多