本文主要是介绍基于Ascend910+PyTorch1.11.0+CANN6.3.RC2的YoloV5训练推理一体化解决方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
昇腾Pytorch镜像:https://ascendhub.huawei.com/#/detail/ascend-pytorch
代码仓:git clone https://gitee.com/ascend/modelzoo-GPL.git
coco测试验证集:wget https://bj-aicc.obs.cn-north-309.mtgascendic.cn/dataset/coco2017/coco.zip
coco训练集(放images下):wget https://bj-aicc.obs.cn-north-309.mtgascendic.cn/dataset/coco2017/train2017.zip
部分代码
# import StreamManagerApi.py
from StreamManagerApi import *if __name__ == '__main__':# init stream managerstreamManagerApi = StreamManagerApi()ret = streamManagerApi.InitManager()if ret != 0:print("Failed to init Stream manager, ret=%s" % str(ret))exit()# create streams by pipeline config filewith open("data/pipeline/Sample.pipeline", 'rb') as f:pipelineStr = f.read()ret = streamManagerApi.CreateMultipleStreams(pipelineStr)if ret != 0:print("Failed to create Stream, ret=%s" % str(ret))exit()# Construct the input of the streamdataInput = MxDataInput()with open("data/test.jpg", 'rb') as f:dataInput.data = f.read()# The following is how to set the dataInput.roiBoxs"""roiVector = RoiBoxVector()roi = RoiBox()roi.x0 = 100roi.y0 = 100roi.x1 = 200roi.y1 = 200roiVector.push_back(roi)dataInput.roiBoxs = roiVector"""# Inputs data to a specified stream based on streamName.streamName = b'classification'inPluginId = 0uniqueId = streamManagerApi.SendDataWithUniqueId(streamName, inPluginId, dataInput)if uniqueId < 0:print("Failed to send data to stream.")exit()# Obtain the inference result by specifying streamName and uniqueId.inferResult = streamManagerApi.GetResultWithUniqueId(streamName, uniqueId, 3000)if inferResult.errorCode != 0:print("GetResultWithUniqueId error. errorCode=%d, errorMsg=%s" % (inferResult.errorCode, inferResult.data.decode()))exit()# print the infer resultprint(inferResult.data.decode())# destroy streamsstreamManagerApi.DestroyAllStreams()
本来想一次性写完的,奈何装CANN的驱动装了一个礼拜,各种内核版本不匹配,国产AI硬件任重道远…
这篇关于基于Ascend910+PyTorch1.11.0+CANN6.3.RC2的YoloV5训练推理一体化解决方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!