NCNNには公式ソースコードのルーチン、シンプルなポーズがあり、今日はその効果を試しました。
全体的に、最適化が多すぎて、効果が良くありません。
プロセスは次のとおりです。
まず、生成されたモデルpose.param、pose.binをgluoncvに変換します。Pythonのソースコードは次のとおりです。
その中で、
export_block( 'simple_pose_resnet18_v1b'、net、preprocess = True、layout = 'HWC')で変換されたものは、NCNN
に正常にデプロイできないため、Pythonソースコードでコメントアウトしました。
# this one works OK for TestFcn_method2-symbol
import mxnet as mx
import gluoncv as gcv
from gluoncv.utils import export_block
net = gcv.model_zoo.get_model('simple_pose_resnet18_v1b', pretrained=True)
#pose_net = model_zoo.get_model('simple_pose_resnet18_v1b', pretrained=True)
net.hybridize()
#try & uncomment the below code to generate:
#it seems the below export method is NOT OK for NCNN
#export_block('simple_pose_resnet18_v1b', net, preprocess=True, layout='HWC')
#the below method is OK for NCNN
data_shape = (1, 3, 512, 512)
input_data = mx.nd.random.uniform(-1, 1, data_shape)
_ = net(input_data)
net.export('pose')
# uncomment the below code to display
print(net)
print('Done.')
# have a view of what has been done!
import glob
print(glob.glob('*.json') + glob.glob('*.params'))
print('All Done.')
第二段階
次に、次のコマンドを使用してncnn.paramとncnn.binを生成し、生成後に名前をpose.param、pose.binに変更します。
mxnet2ncnnポーズ-symbol.jsonポーズ-0000.params
3番目のステップ
この時点で、たとえばncnnでsimpleposeを使用してテストできます。
simplepose COCO_val2014_000000324595.jpg
私は直接gluoncvを使用して、このような効果をテストします。
私は現在NCNNのソースコードに精通していないので、何が悪かったのかは明らかではありません。
NCNNの他のモデルについては、著者が最も詳細に紹介したモデルのみを見つけました。著者が紹介した手順に従って、これも正常に展開されました。
「YOLACTインスタンスセグメンテーションncnn実現の詳細な記録」
https://zhuanlan.zhihu.com/p/128974102