结合工程实践选题调研分析同类软件产品

软件有很多种: ShrinkWrap(在包装盒⼦⾥⾯的软件)、Web APP ( 基于⽹⻚的软件)、Internal Software (企业或学校或某组织内部的软件)、Games(游戏)、Mobile Apps(⼿机应⽤)、Operating Systems(操作系统)、Tools(⼯具软件),请结合工程实践选题选取至少三款同类软件产品,请分析它们各⾃的特点。

我工程实践的主要方向是:计算机视觉中目标检测的一个分支:行人检测。主要需要实现的是将录像或实时摄像采集到的数据中的行人从背景中识别和标记出来。为了完成这个课题,需要运用到计算机视觉库和深度学习框架,主要可能会用到的软件包括OpenCV、Tensorflow、Keras等,OpenCV主要是基于C++编写的计算机视觉软件库,而Tensorflow和Keras则主要基于Python语言,用来实现人工神经网络等深度学习框架。而在OpenCV中也提供了关于Python一些库的接口,可以使用接口调用Tensorflow。这些软件在类型上可以被认为是ShrinkWrap,它们运行在较底层,而且被封装打包了。

 

1、这些软件的开发者是怎么说服你(陌⽣⼈)成为他们的⽤户的?他们的⽬标都是盈利么?他们的⽬标
都是赚取⽤户的现⾦么?还是别的?

这些软件对于我们的学习和研究具有重要的意义,在一些具体实现中需要依赖这些已经写好的软件去实现相应的功能。它们的产生最初主要是用做科研用途,几乎都是开源的,并非以盈利为目的,将这些软件开源更好地促进了这些软件的维护和更新工作,从而支持了计算机视觉和人工智能等领域方面的研究。现在,既可以用作基础研究,也可以带来商业价值。

 

2、这些软件是如何到你⼿⾥的(邮购,下载,互相拷⻉、在线使用……)

通过主动搜索下载的方式

 

3、这些软件有Bug 么?⼜是如何更新新版本的?

很少。因为有相应的开发人员不断地进行维护,也有开源社区给用户提供反馈错误的途径。另一个重要的原因是:代码高度模块化,功能明确,更新也不像商业软件那样频繁,所以少有bug出现。其更新方式一般为:在官方网站上通知新版本,或者在使用软件时以运行中提示的形式通知更新。

 

4、此类软件是什么时候开始出现的,同⼀类型的软件之间是如何竞争的? 发展趋势如何?

2000年6月,OpenCV的第一个开源版本OpenCV alpha 3发布。Keras的前身是François Chollet为ONEIROS项目所的编写的代码,在2015年分离成为开源的人工神经网络工具。2015年11月,在DistBelief的基础上,谷歌大脑完成了对“第二代机器学习系统”TensorFlow的开发并对代码开源。

所以,像Tensorflow、Keras这样的机器学习库是近几年才开始出现的,这些同类型的软件之间在:性能、功能性、可扩展性、模块化、用户友好等方面进行竞争。目前TensorFlow和Keras在所有深度学习框架中占领先的地位,而OpenCV则在计算机视觉领域最为常用。目前发展趋势很好。

5、列举你在使⽤上述软件时观察到的“特殊”现象,它们和硬件有什么不同?这些能说明软件的某些本质特
性么?

特殊现象就是它们往往需要高性能CPU、GPU的支持,否则运行速度会非常缓慢,对于运行这些软件的主机要求高。它们和硬件的区别在于:它们的抽象层次可能非常高,但又介于硬件和用户软件之间,主要用来辅助实现用户编写自己需要的软件。本质特征就是一个个库,向用户提供接口和函数。

 

6、你个⼈第⼀次⽤此类软件是什么时候,你当时是⼏年级,班主任叫什么?在哪⾥,什么状态,当时的
软件是如何得到的(买的正版,盗版,下载?)

第一次使用时在大学二年级,公选课是IOS和无人机应用开发,需要使用到OpenCV库,当时的软件是从官方网站上下载得到的

 

7、你是如何精通这类软件的?它给你什么好处,坏处?

在本科毕业设计中,因为需要使用到深度学习和神经网络方法来完成毕业设计中的工程部分,所以通过上网阅读博客和官方文档,以及学习相关的代码,然后逐渐了解、掌握了这些软件的应用和使用方式。好处是避免我自己去实现一些相对底层的代码,就像一个黑盒子,只需要知道输入和输出是什么就可以使用了。坏处在于这样我们有时仍不知道神经网络的基本原理和具体实现是怎样的,而且很难通过优化底层的方式去优化我们的代码。

 

8、你现在还⽤它么,或者是同类软件的不同品牌,为何?

还在使用。因为它们实在是太强大了,集成了很多实用的算法和框架,对于我们的相应的开发帮助很大。

 

9、这种软件再过10年,20年还会存在么,为什么?

不一定。这些软件对于初次使用者来说还是非常不友好的,主要面向的群体也都是有经验的科研工作者和开发人员。它们没有给出很好的学习文档,没有可视化的操作方式...而且,最关键的是,这些软件的发展要依赖于计算机视觉技术、人工智能技术的发展。它们很大概率会继续存在,并且发展地更好,但可能也会被更新、更好的软件给取代。

posted @ 2019-10-12 18:49  Jaroo  阅读(154)  评论(0编辑  收藏  举报