人工智能细分领域常用的开发软件是什么?

链接:https://www.zhihu.com/question/421105005

编辑:深度学习与计算机视觉

声明:仅做学术分享,侵删

机器学习、NLP、CV、SLAM、机器视觉、人脸识别、图像识别、语音识别、推荐系统、知识图谱等人工智能领域常用的开发软件各是什么?它们都有深度学习的功能吗?

作者:金天

https://www.zhihu.com/question/421105005/answer/1486192914

人工智能常用的开发软件?我猜测你指的是框架,当然也可能包括IDE,没关系,我将统统给予解答。

首先我认为人工智能已经变成了一个十分成熟的领域,就跟四五年前各种Java培训班,前端培训班,.Net C#等语言培训班一样,现在随处可见的人工智能速成班依旧重蹈着昔日开发领域的步伐。这并非偶然,都是市场驱动导致。

1年前我们还在苦恼一些好用的模型无法部署到更低端的芯片上,而现在我们已经有了很厉害的各个精度的量化算法,各大硬件的前向推理框架已经把速度做到了前所未有的快,甚至大家已经在思考如何做图优化,如何把深度学习模型当成是编译器来做等等; 2年前我们还在纠结用什么训练框架,我们还在纠结如何用tensorflow生成需要的数据格式,而现在,我们有超过五种深度学习训练框架可供选择,有超过数十个甚至更多的深度学习周边辅助库来帮助你完成目标...

可以说,深度学习的发展之快速,领域之深入,应用之广阔,可能远超乎你的想象,它正在成为新一代的技术基石,就如同上个世纪八十年代的DOS操作系统一样。

话说回来,就我们通常什么软件, 分为几个方面来阐述:这篇回答即是回答题猪的问题,同时也希望给后来者一个锦囊

  • 深度学习模型的训练框架

这个你可以选择的很多,比如Pytorch,比如TensorFlow,比如PaddlePaddle,甚至是天元。这些都有各自的优点和缺点。在这里我只告诉大家最好的选择,至于为什么还需要大家自己去探索,或者自己去踩坑,当然这个最好永远是相对的,不是绝对的答案,我建议选择pytorch。

  • 部署框架

我很建议每一位学习人工智能的同学,合理的选择自己的方向,在我看来,当你入门之后,摆在你面前的有两条路,一条路是学术路线,一条路是工业路线。不管你选择哪一条,我认为都有不错的前景。如果你思路开阔,喜欢阅读英文文献,我建议你深入的选择学术路线,那么就不需要过多的关注或者触碰部署方面的东西; 如果你喜欢实践,你不喜欢论文里面那些不告诉输入尺寸就对比时间的傻逼,你不喜欢做一个牛逼的东西但是用不起来,那你可以深入部署,往工程方面靠。不管怎样,这两个方向其实也不冲突,关键是看个人精力是否允许你可以两条腿走路。

说道部署框架,其实现在用的比较多的是透过ONNX的方式进行转换。这在很多框架里面支持的已经很好了,比如pytorch,就可以通过onnx部署到GPU上,通过TensorRT加速可以让网络模型提速很多,也可以通过ONNX转到ncnn或者mnn,部署到移动端不在话下。

这里面其实有一个很有意思的逻辑,大家可以想一下为什么需要有一个ONNX的角色存在?不得不说微软是很有先见之名的。随着ONNX的发展,它确实已经发展成了比较标准的网络模型定义格式。未来毫无疑问也会有更多的东西在这上面构建。比如以后会极大发展起来的深度学习编译器等。

总结来说,部署框架分为CPU和GPU,GPU毫无疑问,你不管哪个公司做的,哪个人做的,都做不过英伟达,毕竟芯片是人家做的。所以说这里面有一个很确定的第一性原理在里面。CPU的就八仙过海各显神通了。业内用的比较多得是ncnn和mnn。ARM旗下主导的Tengine也是一个不错的推理框架。

  • 数据处理

鲁迅曾经说过:数据科学家80%的工作是在数据处理上。其实没有错的,数据的准备,清洗,标签制作,数据集格式的转换等等,你将会有很大一部分工作是做这个。

那么这一部分我也推荐一些工具给大家。首当其冲的,当然是自家的库了。

pip install alfred-py

这个库干什么的?有什么用?简单来说它就是,我直接贴github链接吧:

https://github.com/jinfagang/alfred

感兴趣的同学可以去看看。

当你需要可视化VOC的数据,coco的数据,你需要从voc转到coo,coco转到voc,voc转yolo,yolo转coco等等,你自己写脚本会累死的。有了他,你就可以找到归属感。

  • IDE

最后说一下写代码不能不说IDE。到目前为止,我一般只用vscode。

作者:SunAries
https://www.zhihu.com/question/421105005/answer/1473432606

主流 TensorFlow 和 PyTorch 生态肯定少不了了。一般还会配合其他各种小工具,如 sklearn、opencv、numpy 等等,甚至还有按键精灵的。因为人工智能是一个大课题,不可能仅一到两个工具软件就能完解所有问题,所以工具也在发展,自己也要会写些辅助工具帮助研究。


作者:西涛 

https://www.zhihu.com/question/421105005/answer/1511837167

开发框架tensorflow ,pytorch,numpy,pandas,sklearn,开发IDE pycharm,vscode,jupytor notebook等

作者:marsggbo
https://www.zhihu.com/question/421105005/answer/1497062214

1.写代码

VSCode用来写代码

Vscode超级推荐的快捷键:Ctrl + D

比如一个文件里一共有10个 myname字符,你想把前面5个替换成 youname,那么你就可以首先鼠标选中第一个myname然后按五次  Ctrl + D 后就可以选中前面5个myname,之后你只需要在键盘上写入youname ,就完成了替换。

其他快捷键想到再补充

2. 框架

框架推荐Pytorch,或者TensorFlow>=2.0

很多人都基于Pytorch做了封装,更进一步简化框架使用门槛,比如Pytorch-lightning,fast.ai,还有我自己写的裁缝库(各种封装哈哈哈,不过感觉挺好用的)torchline

3. 调试

调试代码很多人都用Pycharm,但是在服务器上你怎么办呢?这里强烈推荐 ipdb

pip install ipdb

用法很简单

首先运行py文件

python -m ipdb main.py

之后就会进入命令调试

  • b main.py:15      这个表示在第15行设置一个断点

  • b utils/other_file.py:66 同理你也可以在其他文件里设置断点,只要指定路径就好了

  • clear 1   取消第一个断点

  • c 运行到下一个断点

  • n 运行到下一行代码

  • s  这个命令可以进入某一个函数进行调试

  • r 这个命令是直接跳转到 return 语句,一般用在函数里或者for循环语句

ipdb常用的命令就是这些,欢迎补充。

4. Windows下命令行工具

人工智能细分领域常用的开发软件是什么?_第1张图片

Cmder超级推荐,用过的都说好,比Windows自带的命令行窗口好用很多,同时支持Linux下的很多命令,用起来很顺滑。https://cmder.net/

5. 代码版本控制

Vscode的插件库里宝库非常多,这里推荐安装Git graph,有了这个后你不用再记忆那么多git命令了

人工智能细分领域常用的开发软件是什么?_第2张图片

6. Markdown写笔记

推荐小书匠软件,好看免费还好用

其他可选:

  • 印象笔记

  • OneNote

  • 有道笔记

7. 论文阅读软件

还在用阿逗比的Acrobat或者福昕阅读器吗?学术论文用这些看的话各种知识点七零八落的,这个时候你需要。http://www.bookxnote.com/

是的,这个软件也是免费的哦,这个软件是Windows版本的Marginnote,关键目前是免费的,而且你可以通过搭配坚果云完成文档和笔记的云同步,简直香到不行,都舍不得推荐给你们,生怕用的人多开始收费。

8. 知识脑图

这里强推Xmind,懂的都懂哈哈哈

9. Visio替代品

Visio常用来话流程图,但是除非你下载盗版的,不然穷逼用不起,所以我当然还是推荐几个免费的。

坚果云自带这个功能,但是好像目前版本不支持导出PDF了,所以不爱ta了

ProcessOn在线流程图画图工具,免费用户好像可以创建10个文档,其实也是够用了

重磅来了!!!Drawio最好没有之一!!!

免费、功能强大、支持导出各种格式、还可以备份到谷歌云、GitHub、gitlab、本地等,好用到想哭啊。https://app.diagrams.net/

10. Mathpix

人工智能细分领域常用的开发软件是什么?_第3张图片

Mathpix可以非常方便地将图片中的数学公式转化成latex代码,写论文超级方便。每个月好像只有一定数量的免费使用次数,如果你使用频率很高,可以去闲鱼买账号https://mathpix.com/

11. Mobaxterm

跑实验肯定要用到服务器,这里强烈推荐MobaXterm,ssh和ftp等功能这个软件都有,用起来非常方便。

人工智能细分领域常用的开发软件是什么?_第4张图片

12. One Commander

超级好用的文件管理器,可以以树形结构展示不同层次文件夹的内容,不用在不同文件夹里来回切换了

人工智能细分领域常用的开发软件是什么?_第5张图片

☆ END ☆

如果看到这里,说明你喜欢这篇文章,请转发、点赞。微信搜索「uncle_pn」,欢迎添加小编微信「 mthler」,每日朋友圈更新一篇高质量博文。

扫描二维码添加小编↓

你可能感兴趣的:(人工智能,人脸识别,java,编程语言,大数据)