Using GStreamer + NNStreamer to run YOLOv5 (nano) model on i.MX 8M Plus

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

Using GStreamer + NNStreamer to run YOLOv5 (nano) model on i.MX 8M Plus

590件の閲覧回数
cadietrich78
Contributor I

Dear NXP community,

 

I’m trying an YOLOv5 (nano) model on i.MX 8M Plus (the model follows attached), and one of the options seems to be GStreamer. I’ve found some examples, all around the same construction (using the webcam as input):

 

gst-launch-1.0 --no-position v4l2src device=/dev/video3 ! \

"video/x-raw,width=640,height=480,framerate=30/1" ! \

tee name=t t. ! queue max-size-buffers=2 leaky=2 ! \

imxvideoconvert_g2d ! video/x-raw,width=640,height=640,format=RGBA ! \

videoconvert ! video/x-raw,format=RGB ! \

tensor_converter ! \

tensor_filter framework=tensorflow-lite model= yolov5n-fp16.tflite \

custom=Delegate:External,ExtDelegateLib:libvx_delegate.so ! \

tensor_decoder mode=bounding_boxes option1=yolov5 option2=coco.names \

option4=640:480 option5=640:640 ! \

mix. t. ! queue max-size-buffers=2 ! \

imxcompositor_g2d name=mix sink_0::zorder=2 sink_1::zorder=1 ! waylandsink

 

but then GStreamer complains about the format of the input tensor (the pipeline generates int8, the model expects float32). There are also examples of tensor conversion, like

 

tensor_converter ! \

tensor_transform mode=arithmetic option=typecast:float32,add:-127.5,div:127.5 \

 

which work, but with a terrible performance. I know the model is still at float32, but is there something that may be optimized in the GStreamer call?

 

Thanks in advance,

Carlos

ラベル(1)
タグ(3)
0 件の賞賛
返信
1 返信

536件の閲覧回数
Bio_TICFSL
NXP TechSupport
NXP TechSupport

Hello,

The default input model should be filled in with the shape from the original model, take a look at the eIQ link for more information on quantization.

https://community.nxp.com/t5/eIQ-Machine-Learning-Software/tkb-p/eiq@tkb

The video pipeline is using gstreamer in the document. Please refer official detect code: https://github.com/ultralytics/yolov5/blob/master/detect.py

 

regards

0 件の賞賛
返信
%3CLINGO-SUB%20id%3D%22lingo-sub-2163844%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3EGStreamer%20%2B%20NNStreamer%20%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%20i.MX%208M%20Plus%20%E3%81%A7%20YOLOv5%20(nano)%20%E3%83%A2%E3%83%87%E3%83%AB%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2163844%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3ENXP%E3%82%B3%E3%83%9F%E3%83%A5%E3%83%8B%E3%83%86%E3%82%A3%E3%81%AE%E7%9A%86%E6%A7%98%3C%2FP%3E%3CBR%20%2F%3E%3CP%3Ei.MX%208M%20Plus%20%E3%81%A7%20YOLOv5%20(nano)%20%E3%83%A2%E3%83%87%E3%83%AB%E3%82%92%E8%A9%A6%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%81%8C%20(%E3%83%A2%E3%83%87%E3%83%AB%E3%81%AF%E6%B7%BB%E4%BB%98%E3%81%AE%E3%81%A8%E3%81%8A%E3%82%8A%E3%81%A7%E3%81%99)%E3%80%81%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%201%20%E3%81%A4%E3%81%8C%20GStreamer%20%E3%81%AE%E3%82%88%E3%81%86%E3%81%A7%E3%81%99%E3%80%82%E5%90%8C%E3%81%98%E3%82%88%E3%81%86%E3%81%AA%E6%A7%8B%E6%88%90%E3%81%AE%E4%BE%8B%E3%82%92%E3%81%84%E3%81%8F%E3%81%A4%E3%81%8B%E8%A6%8B%E3%81%A4%E3%81%91%E3%81%BE%E3%81%97%E3%81%9F%EF%BC%88%E5%85%A5%E5%8A%9B%E3%81%A8%E3%81%97%E3%81%A6%E3%82%A6%E3%82%A7%E3%83%96%E3%82%AB%E3%83%A1%E3%83%A9%E3%82%92%E4%BD%BF%E7%94%A8%EF%BC%89%E3%80%82%3C%2FP%3E%3CBR%20%2F%3E%3CBLOCKQUOTE%3E%3CP%3Egst-launch-1.0--no-%E3%83%9D%E3%82%B8%E3%82%B7%E3%83%A7%E3%83%8B%E3%83%B3%E3%82%B0%20v4l2src%20%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%3D%2Fdev%2Fvideo3%20!%5C%3C%2FP%3E%3CP%3E%E3%80%8Cvideo%2Fx-raw%E3%80%81%E5%B9%85%3D640%E3%80%81%E9%AB%98%E3%81%95%3D480%E3%80%81%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AC%E3%83%BC%E3%83%88%3D30%2F1%E3%80%8D!%5C%3C%2FP%3E%3CP%3E%E3%83%86%E3%82%A3%E3%83%BC%E5%90%8D%3Dt%20t.!%E3%82%AD%E3%83%A5%E3%83%BC%E3%81%AE%E6%9C%80%E5%A4%A7%E3%82%B5%E3%82%A4%E3%82%BA%E3%83%90%E3%83%83%E3%83%95%E3%82%A1%3D2%E3%80%81%E3%83%AA%E3%83%BC%E3%82%AF%3D2!%5C%3C%2FP%3E%3CP%3Eimxvideoconvert_g2d%20!%E3%83%93%E3%83%87%E3%82%AA%2Fx-raw%E3%80%81%E5%B9%85%3D640%E3%80%81%E9%AB%98%E3%81%95%3D640%E3%80%81%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88%3DRGBA!%5C%3C%2FP%3E%3CP%3E%E3%83%93%E3%83%87%E3%82%AA%E5%A4%89%E6%8F%9B%EF%BC%81%E3%83%93%E3%83%87%E3%82%AA%2Fx-raw%E3%80%81%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88%3DRGB!%5C%3C%2FP%3E%3CP%3E%E3%83%86%E3%83%B3%E3%82%BD%E3%83%AB%E3%82%B3%E3%83%B3%E3%83%90%E3%83%BC%E3%82%BF%E3%83%BC!%5C%3C%2FP%3E%3CP%3Etensor_filter%20%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF%3Dtensorflow-lite%20%E3%83%A2%E3%83%87%E3%83%AB%3Dyolov5n-fp16.tflite%20%5C%3C%2FP%3E%3CP%3E%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%3DDelegate%3AExternal%E3%80%81ExtDelegateLib%3Alibvx_delegate.so%20!%5C%3C%2FP%3E%3CP%3Etensor_decoder%20%E3%83%A2%E3%83%BC%E3%83%89%20%3D%20bounding_boxes%20%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3%201%20%3D%20yolov5%20%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3%202%20%3D%20coco.names%20%5C%3C%2FP%3E%3CP%3E%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B34%3D640%3A480%20%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B35%3D640%3A640%20!%5C%3C%2FP%3E%3CP%3E%E3%83%9F%E3%83%83%E3%82%AF%E3%82%B9%E3%80%82t%E3%80%82%EF%BC%81%E3%82%AD%E3%83%A5%E3%83%BC%E3%81%AE%E6%9C%80%E5%A4%A7%E3%83%90%E3%83%83%E3%83%95%E3%82%A1%E3%82%B5%E3%82%A4%E3%82%BA%E3%81%AF%202%20%E3%81%A7%E3%81%99!%5C%3C%2FP%3E%3CP%3Eimxcompositor_g2d%20name%3Dmix%20sink_0%3A%3Azorder%3D2%20sink_1%3A%3Azorder%3D1%20!%E3%82%A6%E3%82%A7%E3%82%A4%E3%83%A9%E3%83%B3%E3%83%89%E3%82%B7%E3%83%B3%E3%82%AF%3C%2FP%3E%3C%2FBLOCKQUOTE%3E%3CBR%20%2F%3E%3CP%3E%E3%81%97%E3%81%8B%E3%81%97%E3%80%81GStreamer%20%E3%81%AF%E5%85%A5%E5%8A%9B%E3%83%86%E3%83%B3%E3%82%BD%E3%83%AB%E3%81%AE%E5%BD%A2%E5%BC%8F%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E3%82%A8%E3%83%A9%E3%83%BC%E3%82%92%E5%A0%B1%E5%91%8A%E3%81%97%E3%81%BE%E3%81%99%20(%E3%83%91%E3%82%A4%E3%83%97%E3%83%A9%E3%82%A4%E3%83%B3%E3%81%AF%20int8%20%E3%82%92%E7%94%9F%E6%88%90%E3%81%97%E3%80%81%E3%83%A2%E3%83%87%E3%83%AB%E3%81%AF%20float32%20%E3%82%92%E6%83%B3%E5%AE%9A%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99)%E3%80%82%E3%83%86%E3%83%B3%E3%82%BD%E3%83%AB%E5%A4%89%E6%8F%9B%E3%81%AE%E4%BE%8B%E3%81%A8%E3%81%97%E3%81%A6%E3%81%AF%E3%80%81%3C%2FP%3E%3CBR%20%2F%3E%3CBLOCKQUOTE%3E%3CP%3E%E3%83%86%E3%83%B3%E3%82%BD%E3%83%AB%E3%82%B3%E3%83%B3%E3%83%90%E3%83%BC%E3%82%BF%E3%83%BC!%5C%3C%2FP%3E%3CP%3Etensor_transform%20%E3%83%A2%E3%83%BC%E3%83%89%20%3D%20%E7%AE%97%E8%A1%93%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3%20%3D%20%E5%9E%8B%E3%82%AD%E3%83%A3%E3%82%B9%E3%83%88%3Afloat32%E3%80%81%E5%8A%A0%E7%AE%97%3A-127.5%E3%80%81%E9%99%A4%E7%AE%97%3A127.5%20%5C%3C%2FP%3E%3C%2FBLOCKQUOTE%3E%3CBR%20%2F%3E%3CP%3E%E5%8B%95%E4%BD%9C%E3%81%97%E3%81%BE%E3%81%99%E3%81%8C%E3%80%81%E3%83%91%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%B3%E3%82%B9%E3%81%AF%E3%81%B2%E3%81%A9%E3%81%84%E3%81%A7%E3%81%99%E3%80%82%E3%83%A2%E3%83%87%E3%83%AB%E3%81%AF%E3%81%BE%E3%81%A0%20float32%20%E3%81%A7%E3%81%82%E3%82%8B%E3%81%93%E3%81%A8%E3%81%AF%E3%82%8F%E3%81%8B%E3%81%A3%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%81%8C%E3%80%81GStreamer%20%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%97%E3%81%A7%E6%9C%80%E9%81%A9%E5%8C%96%E3%81%95%E3%82%8C%E3%82%8B%E3%82%82%E3%81%AE%E3%81%AF%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%81%8B%3F%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%E3%82%88%E3%82%8D%E3%81%97%E3%81%8F%E3%81%8A%E9%A1%98%E3%81%84%E3%81%84%E3%81%9F%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%E3%82%AB%E3%83%AB%E3%83%AD%E3%82%B9%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-2163844%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CLINGO-LABEL%3Ei.MX%208M%20%7C%20i.MX%208M%20%E3%83%9F%E3%83%8B%20%7C%20i.MX%208M%20%E3%83%8A%E3%83%8E%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2165200%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20Using%20GStreamer%20%2B%20NNStreamer%20to%20run%20YOLOv5%20(nano)%20model%20on%20i.MX%208M%20Plus%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2165200%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%E3%80%81%3C%2FP%3E%0A%3CP%3E%E3%83%87%E3%83%95%E3%82%A9%E3%83%AB%E3%83%88%E3%81%AE%E5%85%A5%E5%8A%9B%E3%83%A2%E3%83%87%E3%83%AB%3CSPAN%20class%3D%22markedContent%22%3E%E3%81%AB%E3%81%AF%E5%85%83%E3%81%AE%E3%83%A2%E3%83%87%E3%83%AB%3CSPAN%3E%E3%81%AE%E5%BD%A2%E7%8A%B6%E3%81%8C%E5%85%A5%E5%8A%9B%E3%81%95%E3%82%8C%E3%82%8B%3C%2FSPAN%3E%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%3CSPAN%3E%E3%80%82%E9%87%8F%E5%AD%90%E5%8C%96%E3%81%AE%E8%A9%B3%E7%B4%B0%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E3%81%AF%E3%80%81eIQ%20%E3%83%AA%E3%83%B3%E3%82%AF%E3%82%92%E5%8F%82%E7%85%A7%E3%81%97%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%E3%80%82%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22markedContent%22%3E%3CSPAN%3E%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2FeIQ-Machine-Learning-Software%2Ftkb-p%2Feiq%40tkb%22%20target%3D%22_blank%22%3Ehttps%3A%2F%2Fcommunity.nxp.com%2Ft5%2FeIQ-%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%2Ftkb-p%2Feiq%40tkb%3C%2FA%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88%E5%86%85%E3%81%AE%E3%83%93%E3%83%87%E3%82%AA%20%E3%83%91%E3%82%A4%E3%83%97%E3%83%A9%E3%82%A4%E3%83%B3%E3%81%AF%20gstreamer%20%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%E5%85%AC%E5%BC%8F%E3%81%AE%E6%A4%9C%E5%87%BA%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E5%8F%82%E7%85%A7%E3%81%97%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%3A%20%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2Fultralytics%2Fyolov5%2Fblob%2Fmaster%2Fdetect.py%22%20target%3D%22_blank%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3Ehttps%3A%2F%2Fgithub.com%2Fultralytics%2Fyolov5%2Fblob%2Fmaster%2Fdetect.py%3C%2FA%3E%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CP%3E%E3%82%88%E3%82%8D%E3%81%97%E3%81%8F%E3%81%8A%E9%A1%98%E3%81%84%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3C%2FLINGO-BODY%3E