openvino 无法从冻结的 tensorflow pb、xml 或 bin 模型编译 blob
Posted
技术标签:
【中文标题】openvino 无法从冻结的 tensorflow pb、xml 或 bin 模型编译 blob【英文标题】:openvino could not compile blob from frozen tensorflow pb, xml or bin model 【发布时间】:2021-04-09 00:33:27 【问题描述】:openvino 2021.1 启动并运行
从https://pjreddie.com/darknet/yolo/下载了yolov3_tiny.weights和yolov3_tiny.cfg文件
按照此链接 (https://colab.research.google.com/github/luxonis/depthai-ml-training/blob/master/colab-notebooks/Easy_TinyYolov3_Object_Detector_Training_on_Custom_Data.ipynb#scrollTo=2tojp0Wd-Pdw) 中的建议下载 https://github.com/mystic123/tensorflow-yolo-v3
使用 convert_weights_pb.py 文件将权重和 cfg 文件转换为冻结的 yolov3 tiny .pb 模型。
python3 convert_weights_pb.py --class_names /home/user/depthai-python/my_job/coco.names --data_format NHWC --weights_file /home/user/depthai-python/my_job/yolov3-tiny.weights --tiny
使用 openvino mo.py 文件将 yolov3_tiny .pb 模型转换为 IR 文件 .xml 和 .bin
python3 mo.py --input_model /home/user/depthai-python/my_job/frozen_darknet_yolov3_model.pb --tensorflow_use_custom_operations_config /home/user/depthai-python/my_job/yolo_v3_tiny.json --batch 1 --data_type FP16 - -reverse_input_channel --output_dir /home/user/depthai-python/my_job
使用此脚本作为 python 文件将 .xml 和 .bin 转换为 .blob 文件
blob_dir = "./my_job/"
binfile = "./my_job/frozen_darknet_yolov3_model.bin" xmlfile = "./my_job/frozen_darknet_yolov3_model.xml"
导入请求
url = "http://69.164.214.171:8083/compile" # 如果针对其他 URL 运行则更改
有效载荷 = 'compiler_params': '-ip U8 -VPU_NUMBER_OF_SHAVES 8 -VPU_NUMBER_OF_CMX_SLICES 8', 'compile_type':'无数' 文件 = '定义':打开(xmlfile,'rb'), “权重”:打开(binfile,“rb”) 参数 = 'version': '2021.1', # OpenVINO版本,可以是“2021.1”、“2020.4”、“2020.3”、“2020.2”、“2020.1”、“2019.R3”
response = requests.post(url, data=payload, files=files, params=params) 打印(response.headers) 打印(响应。内容) blobnameraw = response.headers.get('Content-Disposition') 打印('blobnameraw',blobnameraw) blobname = blobnameraw[blobnameraw.find('='):][1:] 使用 open(blob_dir + blobname, 'wb') 作为 f: f.write(response.content)
出现以下错误
'Content-Type': 'application/json', 'Content-Length': '564', 'Server': 'Werkzeug/1.0.0 Python/3.6.9', 'Date': 'Fri, 2021 年 4 月 9 日 00:25:33 GMT' b'"exit_code":1,"message":"命令失败,退出代码为 1,命令:/opt/intel/openvino/deployment_tools/inference_engine/lib/intel64/myriad_compile -m /tmp/blobconverter/b9ea1f9cdb2c44bcb9bb2676ff414bf3/frozen_darknet_yolov3_model。 xml -o /tmp/blobconverter/b9ea1f9cdb2c44bcb9bb2676ff414bf3/frozen_darknet_yolov3_model.blob -ip U8 -VPU_NUMBER_OF_SHAVES 8 -VPU_NUMBER_OF_CMX_SLICES 8","stderr":"stoi\n","stdout":"推理引擎: \n\tAPI 版本 ... ......... 2.1\n\tBuild ..................... 2021.1.0-1237-bece22ac675-releases/2021/1\n\t 说明。 ...... API\n"\n' blobnameraw 无 回溯(最近一次通话最后): 文件“converter.py”,第 29 行,在 blobname = blobnameraw[blobnameraw.find('='):][1:] AttributeError: 'NoneType' 对象没有属性 'find'
或者,我尝试了来自 openvino http://69.164.214.171:8083/ 的在线 blob 转换器工具,将 .xm 和 .bin 到 .blob 或从 .pb 到 .blob 都给出了错误
任何人都有想法..我已经尝试了所有版本的 openvino
【问题讨论】:
【参考方案1】:我们建议您使用 myriad_compile.exe 或 compile_tool 将您的模型转换为 blob。编译工具是一个 C++ 应用程序,使您能够编译网络以在特定设备上进行推理并将其导出到二进制文件。使用编译工具,您可以在未连接物理设备的机器上使用受支持的推理引擎插件编译网络,然后将生成的文件传输到目标推理设备可用的任何机器。
【讨论】:
以上是关于openvino 无法从冻结的 tensorflow pb、xml 或 bin 模型编译 blob的主要内容,如果未能解决你的问题,请参考以下文章