9天成为机器学习工程师
引言
我对这项技术了解不多。但我知道它是一项解决重大问题的强大工具。以自动驾驶汽车为例——不用再操控方向盘,想想就令人兴奋,它不仅能帮助我们缓解交通拥堵、应对气候变化,还能节省时间,让道路更安全。
但就像所有伟大的技术一样,它也引起了广泛的关注。作为一名开发者,为了更好地了解它能解决哪些问题以及如何真正利用机器学习,我接受了一项挑战——在9天内成为一名机器学习工程师。
在本文中,我将带您了解我的经历、过程,并分享一些资源。
我几乎一窍不通,最终却开发出了一个能够检测视频/网络摄像头画面中的“OK”和“STOP”标志的工具。
计划
为了给任务设定时间限制并制定清晰的学习路径,我制定了一个计划。
- 第一天:了解无需编写代码的机器学习工具,掌握其基本功能。
- 第二天:学习基础理论(课程,麻省理工学院课程,3blue1brown 或其他类似课程)
- 第三天:学习基础理论(课程,麻省理工学院课程,3blue1brown 或其他类似课程)
- 第四天:观看一些介绍技术的实用视频教程。
- 第5-9天:构建一个能够识别视频中“停止”和“OK”标志的工具
我的旅程,日复一日
事实是?我可以肯定地说,一切都没有按计划进行。
第 1-2 天 - 无代码机器学习工具
在前两天,我学习了很多关于无代码机器学习工具的知识,并对机器学习的功能有了基本的了解。我浏览了一份不同的无代码机器学习工具列表,并对每个工具都做了简要的评价。
令人惊叹的是,它既有面向企业级用户的软件,也有面向完全初学者的软件。
例如,如果您对机器学习一无所知,我建议您尝试一下Teachable Machine。它最初让我印象深刻,因为我能够轻松地构建一个姿态检测器。
另一个很有趣的工具是Lobe,我可以用它构建图像检测器并学习图像标注。Lobe 的用户界面非常简洁易用,使用起来就像玩游戏一样。
至于更高级的工具,我推荐您了解一下Peltarion和Obviously.ai(自录)。
Peltarion看起来是一个非常全面的平台。对于不太了解机器学习的初学者来说,它提供的众多选项一开始可能会让人感到困惑,但通过学习教程,一切都会变得清晰明了。他们还提供了一些辅助材料,帮助用户学习机器学习/人工智能领域的专业术语。
至于Obviously.ai,我推荐给想要了解人工智能应用前景的商业人士,因为他们似乎更多地使用了商业术语,这一点我很喜欢。它还提供了一个用户示例数据集供用户练习。我使用了 Airbnb 的数据集。
第3-4天 理论 理论 理论
我的目标是深入了解机器学习和深度学习。
我观看了大量的视频和文章,以获得一些基本概念。我认为最难的部分在于如何选择学习内容和学习方法,因为相关的资源实在太多了。我的学习方法是先从基础视频入手,然后再逐步深入到深度学习。
为了学习最基础的内容,我观看了Simplilearn、Google Cloud Tech、Tensorflow Channel和Edureka等频道的视频。
之后,我选修了一门麻省理工学院的深度学习课程。虽然我没能完全理解,但它确实让我对神经网络的工作原理有了很好的了解。我还从3Blue1Brown的频道获取了一些补充信息。
至少,你应该理解一些简单的术语,例如
- 精确率、召回率、真正例、假正例、混淆矩阵。
在介绍深度学习时,也会出现诸如此类的短语。
- 卷积层
- 学习率
- 梯度下降法
- 汇集。
即使你没完全理解也不用担心。我当然也没完全理解,但对我来说,掌握主要概念已经足够了。
第 5 天 - Deeplizard 的实用教程
学习了两天基础理论后,我想做一些更实际的事情。
我在 freeCodeCamp 的 YouTube 频道上找到了 Deeplizard 的一个视频,非常实用,讲解也很清晰。视频详细讲解了如何操作的所有步骤。
- 建立本地环境
- 使用 Jupyter notebook
- 创建我们自己的训练数据集
- 训练模型
- 创建神经网络
- 查看混淆矩阵。
如果你想学习如何构建图像分类器的基础知识,我强烈推荐这个视频。他们还提供了源代码,我将其作为我未来研究的基础。
到当天结束时,我使用了教程提供的源代码,进行了一些尝试,并得到了区分猫和狗的第一批训练结果!太棒了!
第 6 天 构建我自己的项目
第六天,我开始着手自己的项目。
我的目标是开发一个应用程序,能够检测视频中的“停止”和“OK”手势,这样我就可以利用这些检测结果剪掉录像中不需要的部分。
我从 Deeplizard 的教程中获取了源代码,并根据我的需求开始修改它,结果发现我的模型需要一些训练数据。
我拍了很多自己拿着“停止”和“OK”手势的照片,把它们分成测试/训练/验证三个文件夹,然后输入到深度学习模型中。我满怀希望地想着它会成功,结果却失败了。
我咨询了一位同事,他建议我先检测出手部部位,然后再进行分类。这个建议让我重新思考了整个方法。
为了使系统正常工作,我必须(对每一帧)
- 检测手部(如果存在)
- 截取检测到的手部的屏幕截图
- 判断这个手势是“OK”还是“停止”的标志
第 7 天 - YOLO 目标检测
第七天,我开始搜索有关目标检测的教程,很快就找到了一些关于 YOLO(You Only Learn Once,你只需学习一次)目标检测系统的优秀教程。
我使用的教程是由 Jay Bhatt 和 Pysource 创建的。
在这些教程中,我了解到了Colab,它本质上是 Google Jupyter 的在线版本,用于运行代码和训练模型。它还可以连接到你的 Google 云端硬盘,使文件管理变得非常方便。
由于它可以使用远程 GPU,所以比我的本地机器快得多。
看完教程后,就到了设置我自己的手部检测系统的时候了。然而,当我开始手动标注时,最初的热情在5分钟后就消失殆尽了。
这意味着要在不同的图像中绘制大约 500 只手的方框,以此来创建我未来模型的训练数据。作为一名开发者,我真的非常讨厌手工工作,唉……这简直太痛苦了。(放大)
不过,在使用教程中的源代码并根据我的需求进行调整后,我的物体检测功能终于实现了!所有的手都被检测到了。
我甚至用实时网络摄像头在本地进行了测试,看到一个真正使用机器学习的软件实际运行,感觉真好。
第 8 天 - 数据 数据 数据
第八天带着满满的希望开始了——我有一个能正常工作的手持式探测器,现在只需要对它们进行分类。
我以Deeplizard的源代码为基础,从网上收集训练数据并训练模型。结果如何?看起来还不错。直到我用自己视频的真实素材进行测试。结果完全不准——“停止”标志被识别成了“正常”。
我花了一整天时间研究代码和训练数据,试图弄明白到底发生了什么。
第 9 天 - 让一切运转起来
第九天,我想到一个办法,就是利用YOLO检测器和实时网络摄像头画面来创建训练数据。我设置好网络摄像头,当它检测到手部动作时,就将其保存到训练数据中(脚本是用Python编写的)。
我收集了大约2000张图像,当时感觉很有希望。当我把视频流中的一帧图像发送到分类器时,一切似乎都很顺利。验证准确率高达98%,这显然好得令人难以置信。
虽然测试真实视频素材还不够完美,但对我来说已经足够好了,因为我可以在应用程序层面添加额外的检查。
我想为了改进模型,我需要来自各种情况的更多训练数据,并使用数据增强(以不同的方式显示同一图像)。
结论
我成为机器学习工程师了吗?当然没有。但我确实了解了机器学习的工作原理,以及可以用它解决哪些类型的问题。
通过这项实验,我明白了数据对于模型训练的重要性。
我的主要收获是:
- 首先,机器学习并不像看起来那么难,至少在基础层面上是这样。
- 通过使用无代码工具,您可以了解该领域的很多知识。
- 对于想要尝试这项技术的开发者来说,免费资源非常丰富。只需访问 YouTube,打开 freeCodeBootcamp,就能找到一些实用的教程。
- 创建机器学习模型最重要的部分是数据及其准备。
- 与所有技术一样,在使用机器学习之前,必须先问问自己要解决什么问题。
最后,我想说,有很多我不知道的事情,但是亲身经历构建事物的过程,无疑让我对机器学习的未来更加充满热情。
我真心希望这篇文章/视频能激发你尝试机器学习的兴趣。
如果你对这篇文章/视频有任何想法或建议,请在下方评论区留言。
我推荐尝试的无代码机器学习工具
- Teachable Machine,https://teachablemachine.withgoogle.com/
- Lobe,https://lobe.ai/
- 显然,obvously.ai,http://obvously.ai/
- Peltarion,https://peltarion.com/
学习基础知识的资源
- Simplilearn 的机器学习基础教程,https://youtu.be/ukzFI9rgwfU
- Google Cloud Tech 的机器学习七个步骤,https://youtu.be/nKW8Ndu7Mjw
- Edureka 的机器学习基础教程,https://youtu.be/hjh1ikznScg
- Learn With Whiteboard 五分钟带你了解所有机器学习模型,https://youtu.be/yN7ypxC7838
深度学习资源
- 但什么是神经网络?(3Blue1Brown,https://youtu.be/aircAruvnKk)
- 亚历山大·阿米尼 (Alexander Amini) 的麻省理工学院课程,https://youtu.be/5tvmMX8r_OM
实用教程资源
- Deeplizard 的 Keras with TensorFlow 课程,https://youtu.be/qFJeN9V1ZsI
- Pysource 的 YOLO 目标检测,https://youtu.be/h56M5iUVgGs
- Jay Bhatt 的 YOLO 目标检测,https://youtu.be/hTCmL3S4Obw
其他资源
- 关于分类,请参阅谷歌的机器学习速成课程:https://developers.google.com/machine...
- Codebasics 讲解精确率、召回率、F1 分数和真正例,https://youtu.be/2osIZ-dSPGE
工具
我肯定还读过一些文章和资料,但很遗憾没有记下来。所以如果你有的话,请在评论区分享。
DeveloperHabits
📷 YouTube:developerHabits
👉 Twitter: https: //twitter.com/developerHabits
👉 Instagram: https: //www.instagram.com/developerhabits






