作者:朱金灿
来源:clever101的专栏
为什么大多数人学不会人工智能编程?>>>
最近需要将yolov5代码从英伟达平台移植到华为昇腾开发板上。搜了一些代码和资料,大致明白了二者的差别。
1.二者使用的模型文件不一样
yolov5官方用的模型文件为pt文件,华为昇腾开发板用的是om模型文件。具体怎么转换参考文末的参考资料1.
2.代码方面的差别
因为模型文件不一样,因此加载模型文件中生成的模型对象也是不一样的。yolov5官方代码如下:
# Load model
device = select_device(device)
# weights为输入的模型文件
model = DetectMultiBackend(weights, device=device, dnn=dnn, data=data, fp16=half)
从上面可以知道模型对象是从调用DetectMultiBackend函数返回的。
华为昇腾开发板的开发示例代码如下:
# 1.Load model
print("Loading model %s" % opt.weights)
model_path = str(opt.weights)
net = Net(device_id, model_path)
可以看到模型对象是调用Net函数生成的。因此后面要移植的话就得把二者对应起来。
参考资料:
1.Atlas200DK部署YOLOV5
2.YOLOv5 ascend
3.Atlas_ACL_E2E_Demo
4.yolov5的推理输出detect.py部分
5.华为Atlas 200I DK A2开发者套件–基础使用配置