OpenCV是什么
OpenCV是一个用于图像处理、分析、机器视觉方面的开源函数库.
该库采用C及C++ 语言编写,可以在windows,linux,macOSX系统上面运行。该库的所有代码都经过优化,计算效率很高
它的一个目标是提供友好的机器视觉接口函数,从而使得复杂的机器视觉产品可以加速面世。该库包含了横跨工业产品检测、医学图像处理、安防、用户界面、摄像头标定、三维成像、机器视觉等领域的超过500个接口函数。
同时,由于计算机视觉与机器学习密不可分,该库也包含了比较常用的一些机器学习算法。或许,很多人知道,图像识别、机器视觉在安防领域有所应用。但,很少有人知道,在航拍图片、街道图片(例如googlestreetview)中,要严重依赖于机器视觉的摄像头标定、图像融合等技术。
近年来,在入侵检测、特定目标跟踪、目标检测、人脸检测、人脸识别、人脸跟踪等领域,opencv可谓大显身手,而这些,仅仅是其应用的冰山一角。
如今,来自世界各地的各大公司、科研机构的研究人员,共同维护支持着opencv的开源库开发。这些公司和机构包括:微软,IBM,索尼、西门子、google、intel、斯坦福、MIT、CMU、剑桥。
Django是什么
是一个开放源代码的Web应用框架,由Python写成。
采用了MTV的框架模式,即模型M,视图V和模版T。
这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。
具体介绍django之前,必须先介绍python的web框架等概念。
web框架: 别人已经设定好的一个web网站模板,你学习它的规则,然后“填空”或“修改”成你自己需要的样子。
一般web框架的架构是这样的(看图)
编辑 Python做Web开发,Django框架
Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,视图V和模版T。
Django将MVC中的视图进一步分解为 Django视图 和 Django模板两个部分,分别决定 “展现哪些数据” 和 “如何展现”,使得Django的模板可以根据需要随时替换,而不仅仅限制于内置的模板。
至于MVC控制器部分,由Django框架的URLconf来实现。URLconf机制是使用正则表达式匹配URL,然后调用合适的Python函数。
URLconf对于URL的规则没有任何限制,你完全可以设计成任意的URL风格,不管是传统的,RESTful的,或者是另类的。框架把控制层给封装了,无非与数据交互这层都是数据库表的读,写,删除,更新的操作。在写程序的时候,只要调用相应的方法就行了,感觉很方便。程序员把控制层东西交给Django自动完成了。 只需要编写非常少的代码完成很多的事情。所以,它比MVC框架考虑的问题要深一步,因为我们程序员大都在写控制层的程序。这个工作交给了框架,仅需写很少的调用代码,大大提高了工作效率。
pytorch
Pytorch是torch的python版本,是由Facebook开源的神经网络框架,专门针对 GPU 加速的深度神经网络(DNN)编程。Torch 是一个经典的对多维矩阵数据进行操作的张量(tensor )库,在机器学习和其他数学密集型应用有广泛应用。与Tensorflow的静态计算图不同,pytorch的计算图是动态的,可以根据计算需要实时改变计算图。但由于Torch语言采用 Lua,导致在国内一直很小众,并逐渐被支持 Python 的 Tensorflow 抢走用户。作为经典机器学习库 Torch 的端口,PyTorch 为 Python 语言使用者提供了舒适的写代码选择。
它是一个基于Python的可续计算包,提供两个高级功能:1、具有强大的GPU加速的张量计算(如NumPy)。2、包含自动求导系统的深度神经网络。
Pytorch有哪些常用工具包
torch :类似 NumPy 的张量库,强 GPU 支持 ;
torch.autograd :基于 tape 的自动区别库,支持 torch 之中的所有可区分张量运行;
torch.nn :为最大化灵活性未涉及、与 autograd 深度整合的神经网络库;
torch.optim:与 torch.nn 一起使用的优化包,包含 SGD、RMSProp、LBFGS、Adam 等标准优化方式;
torch.multiprocessing: python 多进程并发,进程之间 torch Tensors 的内存共享;
torch.utils:数据载入器。具有训练器和其他便利功能;
torch.legacy(.nn/.optim) :处于向后兼容性考虑,从 Torch 移植来的 legacy 代码;
pytorch和tensorflow的区别
pytorch和tensorflow两种深度学习框架
- pytorch和tensorflow的运算差异
首先要搞清楚 pytorch和tensorflow之间的不同点就要知道两者在运算模式上的差异,前者是一个动态的框架,所谓动态框架,就是说在运算过程中,会根据不同的数值,按照最优方式进行合理安排。而相对来说后者属于静态框架,所谓静态框架,就是只需要建构一个tensorflow的计算图,然后才能够将不同的数据输入进去,进行运算,这世界上就带来了一个非常严重的问题,那就是计算的流程处于固定状态,这种不灵活的运算方式,必然会导致在结算结果上效率比较低下。从运算过程的区别来看,pytorch的优势比较明显。
- pytorch和tensorflow的使用对象
这两种程序操作虽然能够得到同样的结果,但是由于不同的运算过程,会导致在程序应用的过程中有不同的难点,Pytorch,相对来说更能够在短时间内建立结果和方案更适合于计算机程序爱好者或者是小规模项目,包括研究人员。而tensorflow则更适合在大范围内进行操作,尤其是对于跨台或者是在实现嵌入式部署的时候更具优势。所以如果不知道应该选择使用pytorch还是tensorflow,必须对自己的目标和预期效果做以评判。
神经网络
BP神经网络(Back Propagation,BP)
强化多层神经网络的训练,必须引入算法,其中最成功的是误差逆传播算法(Back Propagation,简称BP算法)
全连接神经网络CNN
全连接神经网络(fully connected neural network),顾名思义,就是相邻两层之间任意两个节点之间都有连接。全连接神经网络是最为普通的一种模型CNN
卷积神经网络(Convolutional Neural Networks, CNN)
卷积神经网络CNN(Convolutional Neural Networks, CNN)可以应用在场景分类,图像分类,现在还可以应用到自然语言处理(NLP)方面的很多问题,比如句子分类等。
递归神经网络(Recurrent neural network,RNN)
与前馈神经网络不同"递归神经网络" (recurrent neural networks)允许网络中出现环形结构,从而可让一些神经元的输出反馈回来作为输入信号.这样的结构与信息反馈过程,使得网络在 t 时刻的输出状态不仅与 t 时刻的输入有关,还与 t - 1 时刻的网络状态有关,从而能处理与时间有关的动态变化。
对抗神经网络GAN
对抗神经网络其实是两个网络的组合,可以理解为一个网络生成模拟数据,另一个网络判断生成的数据是真实的还是模拟的。生成模拟数据的网络要不断优化自己让判别的网络判断不出来,判别的网络也要不断优化自己让判断的更加精确。两者的关系形成对抗,因此叫对抗神经网络。
结构:GAN由generator(生成模型)和discriminator(判别式模型)两部分构成。 二者结合之后,经过大量次数的迭代训练会使generator尽可能模拟出以假乱真的样本,而discrimator会有更精确的鉴别真伪数据的能力,最终整个GAN会达到所谓的纳什均衡,即discriminator对于generator的数据鉴别结果为正确率和错误率各占50%。