第1个坑是ckpt文件转pb文件:
网上的做法是先保存为ckpt,再import_meta_graph,再用saver.restore取会保存的内容,最后graph_util.convert_variables_to_constants。这样做可以产生pb文件,但文件比较大(130M)。而且用transform_graph工具压缩去除无用节点没有效果,文件大小基本不变。个人分析是这种保存方法有很多冗余变量也被保存进去了。我最后跳过ckpt保存,直接convert_variables_to_constants。保存的文件非常小(12M),小了10倍多!!!
隔了一个周末,再尝试直接graph_util.convert_variables_to_constants,发现pb文件还是130M,而且Model.summary后发现参数个数*4大概就是130M bytes。所以之前模型突然变成12M是我失忆了??无心再去找原因了。。。大家别当真就好
第2个坑是NCS2的Failed to read output from FIFO: NC_ERROR
E: [xLink] [ 697998] [EventRead00Thr] eventReader:218 eventReader thread stopped (err -4)
E: [global] [ 697998] [Scheduler00Thr] dispatcherEventSend:1004 Write failed (header) (err -4) | event XLINK_READ_REL_REQ
E: [xLink] [ 697998] [Scheduler00Thr] eventSchedulerRun:626 Event sending failed
E: [global] [ 698000] [Scheduler00Thr] dispatcherEventSend:1004 Write failed (header) (err -4) | event XLINK_WRITE_REQ
E: [xLink] [ 698000] [Scheduler00Thr] eventSchedulerRun:626 Event sending failed
E: [xLink] [ 698000] [Scheduler00Thr] eventSchedulerRun:576 Dispatcher received NULL event!
E: [ncAPI] [ 698000] [python2.7] ncFifoReadElem:3510 Packet reading is failed.
E: [watchdog] [ 698664] [WatchdogThread] sendPingMessage:121 Failed send ping message: X_LINK_ERROR
E: [watchdog] [ 699663] [WatchdogThread] sendPingMessage:121 Failed send ping message: X_LINK_ERROR
E: [watchdog] [ 700662] [WatchdogThread] sendPingMessage:121 Failed send ping message: X_LINK_ERROR
E: [watchdog] [ 701662] [WatchdogThread] sendPingMessage:121 Failed send ping message: X_LINK_ERROR
E: [watchdog] [ 702661] [WatchdogThread] sendPingMessage:121 Failed send ping message: X_LINK_ERROR
E: [watchdog] [ 703660] [WatchdogThread] sendPingMessage:121 Failed send ping message: X_LINK_ERROR
E: [watchdog] [ 704659] [WatchdogThread] sendPingMessage:121 Failed send ping message: X_LINK_ERROR
E: [watchdog] [ 705658] [WatchdogThread] sendPingMessage:121 Failed send ping message: X_LINK_ERROR
E: [watchdog] [ 706657] [WatchdogThread] sendPingMessage:121 Failed send ping message: X_LINK_ERROR
E: [watchdog] [ 707656] [WatchdogThread] sendPingMessage:121 Failed send ping message: X_LINK_ERROR
E: [watchdog] [ 708655] [WatchdogThread] sendPingMessage:121 Failed send ping message: X_LINK_ERROR
E: [watchdog] [ 709654] [WatchdogThread] sendPingMessage:121 Failed send ping message: X_LINK_ERROR
E: [watchdog] [ 710653] [WatchdogThread] sendPingMessage:121 Failed send ping message: X_LINK_ERROR
E: [watchdog] [ 710653] [WatchdogThread] watchdog_routine:315 [0x2c6ff50] device, not respond, removing from watchdog
Traceback (most recent call last):
File "/home/jojo/clion-2019.2.5/plugins/python/helpers/pydev/pydevd.py", line 1415, in _exec
pydev_imports.execfile(file, globals, locals) # execute the script
File "/home/jojo/CLionProjects/samples/python_samples/classification_sample/classification_sample.py", line 147, in <module>
sys.exit(main() or 0)
File "/home/jojo/CLionProjects/samples/python_samples/classification_sample/classification_sample.py", line 115, in main
res = exec_net.infer(inputs={input_blob: images})
File "ie_api.pyx", line 241, in openvino.inference_engine.ie_api.ExecutableNetwork.infer
File "ie_api.pyx", line 308, in openvino.inference_engine.ie_api.InferRequest.infer
File "ie_api.pyx", line 312, in openvino.inference_engine.ie_api.InferRequest.infer
RuntimeError: Failed to read output from FIFO: NC_ERROR
一开始有个帖子说NC_ERROR是没有管理员权限造成的,sudo后就没问题了。其实这个方法没用。后来怀疑是产生的IR太大超过计算棒容量了,故压缩了IR文件到FP16,大小减少了一半,但问题依旧。其实如果ie.load_network没问题就说明模型装载没问题的。最后找到帖子:https://github.com/PINTO0309/OpenVINO-YoloV3/issues/7
发现是模型input_shape比较大时,计算棒功率猛增,电流不够了!!!!麻蛋!!还有这骚操作!!!故减少网络输入大小,居然可以了。解决方法:1、缩小网络入口大小,2、计算棒插到有独立供电,且电流大于3A的USB上(这个没试过,理论可行)
本文分享了从ckpt文件直接转换成pb文件的技巧,避免了大量冗余变量导致的文件膨胀问题,同时介绍了在使用NCS2过程中遇到的功率限制问题及解决策略。
980

被折叠的 条评论
为什么被折叠?



