马蹄链(Horse Chain)是一种基于区块链技术的数字货币,它由马蹄链网络发行和维护。区块链是一种分布式数据存储技术,它通过使用密码学方法,在不同的计算机节点之间共享数据,形成一条链式结构。每个节点都可以存储和传递数据,并通过共识机制确保数据的安全性和可靠性。
本质上来说,智能合约是一段程序,它以计算机指令的方式实现了传统合约的自动化处理。智能合约程序不只是一个可以自动执行的计算机程序,它本身就是一个系统参与者,对接收到的信息进行回应,可以接收和储存价值,也可以向外发送信息和价值。这个程序就像一个可以被信任的人,可以临时保管资产,总是按照事先的规则执行操作。
简单讲,智能合约就是双方在区块链资产上交易时,触发执行的一段代码,这段代码就是智能合约。提前规定好合约的内容,当在满足触发合约条件的时候,程序就会自动执行合约内容。
Open Neural Network Exchange(ONNX)是微软和Facebook携手开发的开放式神经网络交换工具。为人工智能模型(包括深度学习和传统ML)提供了一种开源格式。它定义了一个可扩展的计算图模型,以及内置运算符和标准数据类型。目前主要关注推断所需的功能。
ONNX之于机器学习模型就像JPEG之于图像或MPEG之于视频。你可以使用pytorch,tensorflow或者其他深度学习的框架来训练你的模型,最后都可以转成onnx模型.ONNX就想是不同模型之间的桥梁
ONNX Runtime
ONNX Runtime是将ONNX模型部署到生产环境的跨平台高性能运行引擎,主要对模型图应用了大量的图优化,然后基于可用的特定于硬件的加速器将其划分为子图(并行处理)。
通过其可扩展的Execution Providers(EP)框架与不同的硬件加速库协同工作,以在硬件平台上以最佳方式执行ONNX模型。
该接口使AP应用程序开发人员能够灵活地在云和边缘的不同环境中部署他们的ONNX模型,并通过利用平台的计算能力来优化执行
onnx runtime支持CPU和GPU,而tensorRT仅仅支持NVIDIAGPU。
onnx runtime在CPU上的加速效果很明显,而在GPU上的加速表现一般,不如tensorRT。
在部署onnx时,将要推理的图像做简单的前处理,如果采用pytorch的transform则还需要安装pytorch,导致软件过大。此时,应该自己实现图像预处理程序。如normalize和resize:
def normalize(self,im,mean=[0.5,0.5,0.5],std=[0.5,0.5,0.5]):
im=im.astype(np.float32,copy=False)/255.0
im-=mean
im/=std
return im
def resize(self,im,target_size=608,interp=cv2.INTER_LINEAR):
if isinstance(target_size,list)or isinstance(target_size,tuple):
w=target_size[0]
h=target_size[1]
else:
w=target_size
h=target_size
im=cv2.resize(im,(w,h),interpolation=interp)