Web开发工程师转型机器学习的实战经验

本文涉及的产品
图像搜索,7款服务类型 1个月
简介: 历经两个月对深度学习和计算机视觉领域进行探索,获得一些经验与总结。

        作为一名Web开发人员,我发现计算机视觉和机器学习领域的快速发展是让人感到兴奋,但是我没有任何使用这些技术的背景经验。 最终,我决定用两年的时间来转型。

开始学习

 在一本涵盖深度学习和计算机视觉的书出版的时候,我开始了这段转型之旅。 来自PyImageSearch.com的作者Adrian Rosebrock编写了一个三卷巨著,它涵盖了计算机视觉和深度学习的高层思想和低层应用。在探索深度学习的同时,我遇到了对线性回归、朴素贝叶斯(Naive Bayesian)应用、随机森林/决策树学习等诸多新的算法。

 5d0cfbe8946ea83752704370cc3d55aeee230fd6

    我花了几个星期的时间阅读这本书,并且把所有已经读过的各种博文和数学概念的队列、抽象思维的概念以及它实际的编程应用联系起来。我很快就读完了这本书,从而更好地理解了如何从整体上走进这个领域。我获得的最大的结论:筹备自己的工具和硬件来构建计算机视觉软件。

 硬件实现

        受到启发后,我找到一个树莓派(Raspberry Pi)和RPI摄像机用来分析视频流。我从来没想过配置树莓派会花费这么长时间。最初, 我希望仅仅用视频流启动和运行树莓派,并且处理计算机上的视频。我尽可能的使树莓派的操作系统可以正常工作。一旦我意识到什么出了问题,然后我就不小心安装了错误的图像驱动,并出乎意外的安装了导致冲突的软件。最初我以为的视频处理过程,结果变成了一个多小时的调试噩梦。

        到目前为止,我已经意识到调试机器是开始机器学习和计算机视觉所涉及到的一个大方面。

 9eae4e868df157cdd014fe7c3c401b00c4915339

                       https://aiyprojects.withgoogle.com/vision#list-of-materials

我最初基于树莓派的灵感是一个想法,配置一个带有摄像头和GPS信号的简单设备。这个想法是考虑到未来有多少车辆需要许多台摄像机进行导航,无论是什么样的交通工具,都将需要许多的摄像机导航。无论是出于保险目的还是基本功能的需要,可以想象出未来将会创建和使用大量的视频片段。在这个过程中,将会有大量的媒体库被闲置,并且成为了解世界的一个庞大的数据库。

我结束了探索树莓派的计算机视觉能力的工作,但是也没如我所愿成功的获得任何有趣的成果。我发现有很多价格便宜的类树莓派设备,在一个比整个树莓派小很多的的PCB板上仍具有互通性和摄像功能。我意识到与其走硬件路线,还不如使用旧的iPhone来开发一些软件。

我在探索深度学习的硬件组成上进行了简单的尝试,这使我意识到应该尽可能的坚持使用软件。当软件部分不能解决问题时,包含一个新的变量仅仅只会增加其复杂性。

更多关于树莓派的文章点击这里!

开源工具

在到处寻找机器学习资源的第一个月中,我发现了很多启动和运行都非常容易的开源工具。我了解到FANG科技公司提供了很多专有的服务,但是并不能确定他们是如何和那些开源方案竞争的。在IBM, Google, AmazonMicrosoft上可以被用作SAAS工具的图像识别以及OCR工具使用起来比较简单。令我感到惊讶的是,有很多优秀的开源方案值得配置来避免一些不必要的依赖项。     

a5445dde0c2843c9e9b3c1ca6400072797d8d832

例如,几年前,我启动了一个IOS应用程序来收集和分享涂鸦照片。我从 Instagram Flickr等带有地理标记图像的公开API对图像进行索引。利用这些资源,我使用像标签和位置数据这样的基本特征来区分图像是否被涂鸦。最初,我每周开始对数千张图像进行索引,很快每月就扩大到数十万张。我很快的注意到,编入索引的很多图像都没有涂鸦,取而代之的则是对我努力建立的社区具有破坏性的图像。我无法阻止人们自己拍摄的低质量的图像,或者从别人的种子下载的用起来有安全风险的标记不良的图像。因此,我决定了关闭整个项目。

61292b7ebb1690d9f3a69621073d4da66de53dfd 

现在,利用为对象检测和人体检测提供的机器学习服务和开源实现,我可以推出自己的易用的检索图像服务。以前我需要付费服务做这个质量检查,如即便是不花费数千美元的API费用,也要花费数百美元。相反,我现在可以从一些数据科学”AWS框架中下载一个AMI,创建自己的API来检查不需要的图像内容。

概论

       在经历这些过程以前,我以为我在理论上已经理解了大部分图像识别和机器学习的原理。开始的时候我将我所需要使用到的机器学习内容进行关联之后,我对需要学习什么概念就一目了然了。例如,我并不仅仅知道线性代数对于机器学习很重要,现在我理解了如何将问题分解为多维数组/矩阵,并对其进行批量处理,以便找到可以在理论上表示的模式。在这之前,我知道在特征之间存在一些抽象的概念,以及如何将它们表示为可以在一系列评估项目中进行比较的数字。现在我更清楚地理解到,在很多直接和间接相互关联的因素下,机器学习的维度是如何表示的。矩阵数学的特征检测和评估的多维形式对我来说仍然是一个谜,但是我能够理解更高层次的概念。     

4dbfcb5599a0be4934c09faa1c88cf2016bcc74c 

以前难以辨认的网络架构现在看起来很清晰

阿德里安·罗斯布罗克(Adrian Rosebrock)的书让我对解码机器学习算法的简图顿悟了。深度学习网络架构的分解现在也可以理解一些了,我还熟悉了用于各种图像识别模型的基准数据集(MNISTCIFAR-10ImageNet)以及图像识别模型(VGG-16Inception等)之间的差异。

熟能生巧(动手去做才是王道)

回顾我一直以来阅读的资料,我发现大多数知识还是不能熟练掌握,为此我决定开展更多的行动来配合阅读相关博客。或许只有理论和实践相结合才能获得更快的成长速度。为此,我购买了一个GPU有了它我再也不需要因为训练模型和操作数据集等问题有任何的限制。

如果你想要在机器学习的相关技术上有所提高,你一定不要只看论文和博客,一定要尝试自己动手去做,这样你才有可能收获更多。     

 

本文由北邮@爱可可-爱生活 老师推荐,阿里云云栖社区组织翻译。

文章原标题《Two months exploring deep learning and computer vision

作者:Leonard Bogdonoff

译者:Mags,审校:袁虎。

文章为简译,更为详细的内容,请查看原文

相关文章
|
6天前
|
JSON Rust 安全
30天拿下Rust之实战Web Server
30天拿下Rust之实战Web Server
26 7
|
8天前
|
JavaScript 前端开发 数据安全/隐私保护
组件库实战 | 教你如何设计Web世界中的表单验证
该文章通过实战演练,教授了如何在Web应用中设计和实现表单验证,包括使用Vue.js处理表单输入的验证逻辑、展示错误信息以及通过插槽和组件间通信来增强表单的功能性和用户体验。
组件库实战 | 教你如何设计Web世界中的表单验证
|
11天前
|
缓存 中间件 网络架构
Python Web开发实战:高效利用路由与中间件提升应用性能
在Python Web开发中,路由和中间件是构建高效、可扩展应用的核心组件。路由通过装饰器如`@app.route()`将HTTP请求映射到处理函数;中间件则在请求处理流程中插入自定义逻辑,如日志记录和验证。合理设计路由和中间件能显著提升应用性能和可维护性。本文以Flask为例,详细介绍如何优化路由、避免冲突、使用蓝图管理大型应用,并通过中间件实现缓存、请求验证及异常处理等功能,帮助你构建快速且健壮的Web应用。
11 1
|
24天前
|
SQL 前端开发 JavaScript
Web前端开发工程师岗位要求
Web前端开发工程师岗位要求
|
23天前
|
机器学习/深度学习 算法 数据挖掘
从菜鸟到大师:Scikit-learn库实战教程,模型训练、评估、选择一网打尽!
【9月更文挑战第13天】在数据科学与机器学习领域,Scikit-learn是不可或缺的工具。本文通过问答形式,指导初学者从零开始使用Scikit-learn进行模型训练、评估与选择。首先介绍了如何安装库、预处理数据并训练模型;接着展示了如何利用多种评估指标确保模型性能;最后通过GridSearchCV演示了系统化的参数调优方法。通过这些实战技巧,帮助读者逐步成长为熟练的数据科学家。
64 3
|
1月前
|
机器学习/深度学习 人工智能 算法
利用机器学习预测股市趋势:一个实战案例
【9月更文挑战第5天】在这篇文章中,我们将探索如何使用机器学习技术来预测股市趋势。我们将通过一个简单的Python代码示例来演示如何实现这一目标。请注意,这只是一个入门级的示例,实际应用中可能需要更复杂的模型和更多的数据。
|
29天前
|
机器学习/深度学习 算法 Python
决策树下的智慧果实:Python机器学习实战,轻松摘取数据洞察的果实
【9月更文挑战第7天】当我们身处数据海洋,如何提炼出有价值的洞察?决策树作为一种直观且强大的机器学习算法,宛如智慧之树,引领我们在繁复的数据中找到答案。通过Python的scikit-learn库,我们可以轻松实现决策树模型,对数据进行分类或回归分析。本教程将带领大家从零开始,通过实际案例掌握决策树的原理与应用,探索数据中的秘密。
30 1
|
2月前
|
机器学习/深度学习 存储 前端开发
实战揭秘:如何借助TensorFlow.js的强大力量,轻松将高效能的机器学习模型无缝集成到Web浏览器中,从而打造智能化的前端应用并优化用户体验
【8月更文挑战第31天】将机器学习模型集成到Web应用中,可让用户在浏览器内体验智能化功能。TensorFlow.js作为在客户端浏览器中运行的库,提供了强大支持。本文通过问答形式详细介绍如何使用TensorFlow.js将机器学习模型带入Web浏览器,并通过具体示例代码展示最佳实践。首先,需在HTML文件中引入TensorFlow.js库;接着,可通过加载预训练模型如MobileNet实现图像分类;然后,编写代码处理图像识别并显示结果;此外,还介绍了如何训练自定义模型及优化模型性能的方法,包括模型量化、剪枝和压缩等。
34 1
|
2月前
|
数据库 开发者 Java
颠覆传统开发:Hibernate与Spring Boot的集成,让你的开发效率飞跃式提升!
【8月更文挑战第31天】在 Java 开发中,Spring Boot 和 Hibernate 已成为许多开发者的首选技术栈。Spring Boot 简化了配置和部署过程,而 Hibernate 则是一个强大的 ORM 框架,用于管理数据库交互。将两者结合使用,可以极大提升开发效率并构建高性能的现代 Java 应用。本文将通过代码示例展示如何在 Spring Boot 项目中集成 Hibernate,并实现基本的数据库操作,包括添加依赖、配置数据源、创建实体类和仓库接口,以及在服务层和控制器中处理 HTTP 请求。这种组合不仅简化了配置,还提供了一套强大的工具来快速开发现代 Java 应用程序。
62 0
|
2月前
|
Java 缓存 数据库连接
揭秘!Struts 2性能翻倍的秘诀:不可思议的优化技巧大公开
【8月更文挑战第31天】《Struts 2性能优化技巧》介绍了提升Struts 2 Web应用响应速度的关键策略,包括减少配置开销、优化Action处理、合理使用拦截器、精简标签库使用、改进数据访问方式、利用缓存机制以及浏览器与网络层面的优化。通过实施这些技巧,如懒加载配置、异步请求处理、高效数据库连接管理和启用GZIP压缩等,可显著提高应用性能,为用户提供更快的体验。性能优化需根据实际场景持续调整。
49 0
下一篇
无影云桌面