Toybrick

标题: 灵异事件~~~虚拟机和板子上(错误)的推理结果不一致! [打印本页]

作者: zhouzhouzlove    时间: 2019-3-12 17:44
标题: 灵异事件~~~虚拟机和板子上(错误)的推理结果不一致!
本帖最后由 zhouzhouzlove 于 2019-3-12 17:44 编辑

小白一枚,遇到了灵异事件:Ubuntu虚拟机和3399pro开发板的推理结果不一致,Demo和自己找的模型都是这样的问题。贴图如下:

mobilenet_v1:
ubuntu推理结果:(左侧ubuntu虚拟机,右侧开发板)


作者: zhouzhouzlove    时间: 2019-3-13 09:27
手工置顶~~~
官方大牛帮忙指导一下吧~~~~
作者: elooon    时间: 2019-3-13 10:48
It works ok on my board.
Maybe something is wrong with your rknn environment?
My personal advice is uninstall all rknn related python packages and re-install.
作者: zhouzhouzlove    时间: 2019-3-13 11:04
elooon 发表于 2019-3-13 10:48
It works ok on my board.
Maybe something is wrong with your rknn environment?
My personal advice is ...

thanks,i will try it。 Could you please share your rknn related python packages version?I want to consistent with yours.
作者: elooon    时间: 2019-3-13 12:05
zhouzhouzlove 发表于 2019-3-13 11:04
thanks,i will try it。 Could you please share your rknn related python packages version?I want t ...

作者: zhouzhouzlove    时间: 2019-3-13 20:29
elooon 发表于 2019-3-13 12:05
absl-py (0.7.0)
asn1crypto (0.24.0)
astor (0.7.1)

I  boot my board again , and installed the packages again.
The result is still wrong. I have no idea. maybe something wrong with my board?
作者: zhouzhouzlove    时间: 2019-3-13 20:31
[toybrick@localhost mobilenet_v1]$ ls
dataset.txt  dog_224x224.jpg  mobilenet_v1.tflite  test.py
[toybrick@localhost mobilenet_v1]$ python3 test.py
--> config model
done
--> Loading model
done
--> Building model
done
--> Export RKNN model
done
--> Init runtime environment
done
--> Running model
mobilenet_v1
-----TOP 5-----
[464]: 0.29833984375
[601]: 0.131103515625
[732]: 0.0784912109375
[900]: 0.0311279296875
[677 853]: 0.0280914306640625

done
--> Begin evaluate model performance
========================================================================
                               Performance                              
========================================================================
Total Time(us): 4796
FPS: 208.51

作者: zhouzhouzlove    时间: 2019-3-13 21:15
[toybrick@localhost mobilenet_v2]$ python3
Python 3.6.8 (default, Jan 31 2019, 09:06:51)
[GCC 8.2.1 20181215 (Red Hat 8.2.1-6)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
>>> numpy.__version__
'1.16.2'
>>> import scipy
>>>
>>> scipy.__version__
'1.2.1'
>>> import PIL
>>> PIL.__version__
'5.1.1'
>>> import h5py
>>> h5py.__version__
'2.9.0'
>>> import lmdb
>>> lmdb.__version__
'0.94'
>>> import networkx
>>> networkx.__version__
'1.11'
>>> import flatbuffers
>>> flatbuffers.__version__
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: module 'flatbuffers' has no attribute '__version__'
>>> import protobuf
>>> protobuf.__version__
'3.7.0'
>>> import onnx
>>> onnx.__version__
'1.4.1'
>>> import flask
>>> flsak.__version__
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'flsak' is not defined
>>> flask.__version__
'1.0.2'
>>> import tensorflow
>>> tensorflow.__version__
'1.10.1'
>>> import dill
>>> dill.__version__
'0.2.8.2'
>>> import cv2
>>> cv2.__version__
'3.4.1'

作者: zhouzhouzlove    时间: 2019-3-13 21:19
[toybrick@localhost mobilenet_v2]$ pip3 list
DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
absl-py (0.7.0)
asn1crypto (0.24.0)
astor (0.7.1)
Babel (2.5.3)
blivet (3.0.0b1)
blivet-gui (2.1.9)
cffi (1.11.5)
chardet (3.0.4)
Click (7.0)
coverage (4.5.1)
cryptography (2.3)
cupshelpers (1.0)
decorator (4.2.1)
dill (0.2.8.2)
dnspython (1.15.0)
docker (3.2.1)
docker-pycreds (0.2.2)
Flask (1.0.2)
flatbuffers (1.9)
fros (1.1)
gast (0.2.2)
gpg (1.10.0)
grpcio (1.19.0)
gssapi (1.5.0)
h5py (2.9.0)
humanize (0.5.1)
idna (2.5)
iniparse (0.4)
initial-setup (0.3.56)
ipaclient (4.7.2)
ipalib (4.7.2)
ipaplatform (4.7.2)
ipapython (4.7.2)
IPy (0.81)
isc (2.0)
itsdangerous (1.1.0)
Jinja2 (2.10)
jwcrypto (0.4.2)
langtable (0.0.38)
lmdb (0.94)
Markdown (3.0.1)
MarkupSafe (0.23)
netaddr (0.7.19)
netifaces (0.10.6)
networkx (1.11)
ntplib (0.3.3)
numpy (1.16.2)
olefile (0.46)
onnx (1.4.1)
ordered-set (2.0.2)
pid (2.1.1)
Pillow (5.1.1)
pip (9.0.3)
ply (3.9)
protobuf (3.7.0)
pwquality (1.4.0)
pyasn1 (0.3.7)
pyasn1-modules (0.1.5)
pycairo (1.16.3)
pycparser (2.14)
pycrypto (2.6.1)
pycups (1.9.72)
pycurl (7.43.0.2)
pydbus (0.6.0)
pyenchant (2.0.0)
pygobject (3.28.3)
pyinotify (0.9.6)
pykickstart (3.12)
pyOpenSSL (17.3.0)
pyparted (3.11.0)
PySocks (1.6.8)
pystray (0.14.3)
python-augeas (0.5.0)
python-dateutil (2.6.1)
python-dmidecode (3.12.2)
python-ldap (3.1.0)
python-meh (0.46)
python-xlib (0.20)
python-yubico (1.3.2)
pytoml (0.1.18)
pytz (2017.2)
pyudev (0.21.0)
pyusb (1.0.2)
pyxdg (0.25)
PyYAML (3.12)
qrcode (5.1)
registries (0.1)
requests (2.20.0)
requests-file (1.4.3)
requests-ftp (0.3.1)
rknn-toolkit (0.9.8.1)
rpm (4.14.2.1)
scipy (1.2.1)
sepolicy (1.1)
setools (4.1.1)
setroubleshoot (1.1)
setuptools (39.1.0)
sh (1.12.14)
simpleline (1.1)
six (1.11.0)
slip (0.6.4)
slip.dbus (0.6.4)
smartcols (0.3.0)
sos (3.6)
SSSDConfig (1.16.3)
systemd-python (234)
tensorboard (1.10.0)
tensorflow (1.10.1)
termcolor (1.1.0)
typing (3.6.6)
typing-extensions (3.7.2)
urllib3 (1.24.1)
virtualenv (16.4.3)
websocket-client (0.47.0)
Werkzeug (0.14.1)
wheel (0.33.1)
wrapt (1.10.11)
作者: zhouzhouzlove    时间: 2019-3-14 09:20
I am sure I use the same file(another Demo also wrong ) :

Ubuntu:
(venv) bit@ubuntu:~/Desktop/rknn-toolkit/example/mobilenet_v2$ md5sum mobilenet_v2.prototxt
487b2742b889fa1ca76de2f9bdd69fcf  mobilenet_v2.prototxt
(venv) bit@ubuntu:~/Desktop/rknn-toolkit/example/mobilenet_v2$ md5sum mobilenet_v2.caffemodel
54aab8425ea068d472e8e4015f22360c  mobilenet_v2.caffemodel

3399pro:
[toybrick@localhost mobilenet_v2]$ md5sum mobilenet_v2.prototxt
487b2742b889fa1ca76de2f9bdd69fcf  mobilenet_v2.prototxt
[toybrick@localhost mobilenet_v2]$ md5sum mobilenet_v2.caffemodel
54aab8425ea068d472e8e4015f22360c  mobilenet_v2.caffemodel

3399pro result:
[toybrick@localhost mobilenet_v2]$ md5sum mobilenet_v2.caffemodel
54aab8425ea068d472e8e4015f22360c  mobilenet_v2.caffemodel
[toybrick@localhost mobilenet_v2]$ python3 test.py
--> config model
done
--> Loading model
done
--> Building model
done
--> Export RKNN model
done
--> Init runtime environment
done
--> Running model
mobilenet_v2
-----TOP 5-----
[151 412 421 427 428 447 457 462 463 469 488 515 523 541 587 596 600 618
620 641 643 676 696 700 725 728 731 733 758 769 772 778 784 792 808 813
818 828 836 837 840 845 851 852 868 879 882 898 899 902 907 910 987]: 0.01183319091796875
[151 412 421 427 428 447 457 462 463 469 488 515 523 541 587 596 600 618
620 641 643 676 696 700 725 728 731 733 758 769 772 778 784 792 808 813
818 828 836 837 840 845 851 852 868 879 882 898 899 902 907 910 987]: 0.01183319091796875
[151 412 421 427 428 447 457 462 463 469 488 515 523 541 587 596 600 618
620 641 643 676 696 700 725 728 731 733 758 769 772 778 784 792 808 813
818 828 836 837 840 845 851 852 868 879 882 898 899 902 907 910 987]: 0.01183319091796875
[151 412 421 427 428 447 457 462 463 469 488 515 523 541 587 596 600 618
620 641 643 676 696 700 725 728 731 733 758 769 772 778 784 792 808 813
818 828 836 837 840 845 851 852 868 879 882 898 899 902 907 910 987]: 0.01183319091796875
[151 412 421 427 428 447 457 462 463 469 488 515 523 541 587 596 600 618
620 641 643 676 696 700 725 728 731 733 758 769 772 778 784 792 808 813
818 828 836 837 840 845 851 852 868 879 882 898 899 902 907 910 987]: 0.01183319091796875

done
--> Begin evaluate model performance
========================================================================
                               Performance                              
========================================================================
Total Time(us): 6713
FPS: 148.96
========================================================================

done


作者: zhouzhouzlove    时间: 2019-3-14 11:45
手工置顶~~~~~
作者: zhouzhouzlove    时间: 2019-3-18 17:53
elooon 发表于 2019-3-13 12:05
absl-py (0.7.0)
asn1crypto (0.24.0)
astor (0.7.1)

I get a new board and run the three Demos again.
For mobilenet_v1, the results are same.
For mobilenet_v2, the results are different.
For mobilenet-ssd, the results are almost the same。

For mobilenet_v2top 5 are different)
Results on 3399pro:
-----TOP 5-----
[282 285]: 0.126953125
[282 285]: 0.126953125
[281]: 0.1129150390625
[186]: 0.09466552734375
[277 278]: 0.0665283203125

done


Results on Ubuntu:
-----TOP 5-----
[282 285]: 0.127685546875
[282 285]: 0.127685546875
[281]: 0.11346435546875
[186]: 0.09515380859375
[277]: 0.06689453125

done

作者: troy    时间: 2019-3-18 18:10
本帖最后由 troy 于 2019-3-19 10:03 编辑
zhouzhouzlove 发表于 2019-3-18 17:53
I get a new board and run the three Demos again.
For mobilenet_v1, the results are same.
For mobil ...

麻烦做一下以下两个实验。
1.保证rknn模型一致性,将demo修改一下,从电脑上将模型转换好之后,保存下来。ubuntu和板子都使用load_rknn的方式直接加载rknn模型进行测试,比对结果
2.在1的基础上,将输入到interface的数组,打印出来,或者保存到文件,对比一下ubuntu和板子的输入是否完全一致。
作者: zhouzhouzlove    时间: 2019-3-19 09:49
troy 发表于 2019-3-18 18:10
麻烦做一下以下两个实验。
1.保证rknn模型一致性,将demo修改一下,从电脑上将模型转换好之后,保存下来 ...

您好,谢谢您的回复:
1、将ubuntu上的rknn模型复制到开发板后,结果保持精确一致:
2、由于刚接触,未能迅速理解您的意思,正在琢磨,如果您看到了,不妨说的更具体一些。。。。。。。。。。。。。。。

开发板结果(使用rknn模型):
--> config model
done
done
--> Init runtime environment
done
--> Running model
mobilenet_v2
-----TOP 5-----
[282 285]: 0.127685546875
[282 285]: 0.127685546875
[281]: 0.11346435546875
[186]: 0.09515380859375
[277]: 0.06689453125

done

修改后的test.py:(前后代码省略,未改动)
# Create RKNN object
    rknn = RKNN()
   
    # pre-process config
    print('--> config model')
    rknn.config(channel_mean_value='103.94 116.78 123.68 58.82', reorder_channel='2 1 0')
    print('done')


    # 从当前路径加载mobilenet_v1.rknn 模型
        ret = rknn.load_rknn(path='./mobilenet_v2.rknn')
    if ret != 0:
        print('Load mobilenet_v2 failed! Ret = {}'.format(ret))
        exit(ret)
    print('done')


    # Set inputs
    img = cv2.imread('./cat_224x224.jpg')
    img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

作者: troy    时间: 2019-3-19 10:00
zhouzhouzlove 发表于 2019-3-19 09:49
您好,谢谢您的回复:
1、将ubuntu上的rknn模型复制到开发板后,结果保持精确一致:
2、由于刚接触,未能 ...

实验1已经保持一致了吗,那说明ubuntu转出的rknn和板子转出的rknn模型会存在精度的差异。已经能说明板子正常了。实验1的目的是为了保持模型的一致性。
实验2的目的是为了保持输入的一致性,一般interface的数据是一个numpy的数组,原来是想让你把数组保存下来,使用beyond compare之类的对比工具,对比板子上的输入和ubuntu的输入是否一致。现在实验1已经正常,实验2就无需做了。

作者: zhouzhouzlove    时间: 2019-3-19 10:11
troy 发表于 2019-3-19 10:00
实验1已经保持一致了吗,那说明ubuntu转出的rknn和板子转出的rknn模型会存在精度的差异。已经能说明板子 ...

明白了,
刚才的贴图显示,使用ubuntu转换得到的rknn模型进行推理,结果保持精确的一致,谢谢耐心的解释和回复,手动好评!
作者: troy    时间: 2019-3-19 10:16
zhouzhouzlove 发表于 2019-3-19 10:11
明白了,
刚才的贴图显示,使用ubuntu转换得到的rknn模型进行推理,结果保持精确的一致,谢谢耐心的解释 ...


作者: troy    时间: 2019-3-19 11:24
zhouzhouzlove 发表于 2019-3-19 10:11
明白了,
刚才的贴图显示,使用ubuntu转换得到的rknn模型进行推理,结果保持精确的一致,谢谢耐心的解释 ...

麻烦再确认一个事情,看一下你docker上的tensorflow版本和rknn版本是否与板子一致、




欢迎光临 Toybrick (https://t.rock-chips.com/) Powered by Discuz! X3.3