Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Media & AI 가속기를 탑재한 카카오클라우드의 Video Instance 활용기

kakao
November 01, 2024

Media & AI 가속기를 탑재한 카카오클라우드의 Video Instance 활용기

#ML #Vison #Cloud #Video Streaming

비디오 스트리밍을 위한 Media 가속기(AMD의 U30, MA35D) & AI 가속기(AMD의 V70) 소개.
Media 가속기를 통해 저지연 멀티스트림 트랜스코딩을 달성하고 실시간 스트리밍하는 사례를 공유합니다.
AI 가속기를 통해 영상에 Vision AI를 적용하여 스트리밍하는 방법을 소개합니다.

발표자 : mjkim.7770
카카오엔터프라이즈에서 Vision AI 관련 서비스를 개발하고 있습니다.

kakao

November 01, 2024
Tweet

More Decks by kakao

Other Decks in Programming

Transcript

  1. 75*OTUBODF 75*OTUBODF 7*OG*OTUBODF X"DDFMFSBUPS$BSE ".%"MWFPĄ 6 .FEJB"DDFMFSBUPS$BSE '1("CBTF "MWFPĄ ."%

    .FEJB"DDFMFSBUPS$BSE "4*$CBTF "MWFPĄ 7 "DDFMFSBUPS$BSE ".%9%/"m 7FSTBM"*$PSF CBTF 4PGUXBSF%FWFMPQNFOU,JU 9JMJOY7JEFP4%, ".%"."7JEFP4%, 7JUJT"* 77"4 7JUJT7JEFP "OBMZUJDT4%, .BY 7JEFP3FTPMVUJPO QFSDBSE , Y , Y 'VMM)% Y .BY 7JEFP4USFBNT QFSDBSE    '535 'BTUFSUIBO3FBM5JNF 0 0  7JEFP*OTUBODFJO,BLBP$MPVE
  2. 75*OTUBODF 75*OTUBODF 7*OG*OTUBODF X"DDFMFSBUPS$BSE ".%"MWFPĄ 6 .FEJB"DDFMFSBUPS$BSE '1("CBTF "MWFPĄ ."%

    .FEJB"DDFMFSBUPS$BSE "4*$CBTF "MWFPĄ 7 "DDFMFSBUPSDBSE ".%9%/"m 7FSTBM"*$PSF CBTF 4PGUXBSF%FWFMPQNFOU,JU 9JMJOY7JEFP4%, ".%"."7JEFP4%, 7JUJT"* 77"4 7JUJT7JEFP "OBMZUJDT4%, .BY 7JEFP3FTPMVUJPO QFSDBSE , Y , Y 'VMM)% Y .BY 7JEFP4USFBNT QFSDBSE    '535 'BTUFSUIBO3FBM5JNF 0 0  7JEFP*OTUBODFJO,BLBP$MPVE
  3. 75*OTUBODF 75*OTUBODF 7*OG*OTUBODF $PEFDT EFDPEFS ) "7$ ) )&7$ )

    "7$ ) )&7$ "7 71 ) "7$ ) )&7$ FODPEFS ) "7$ ) )&7$ "7  .BY4JNVMUBOFPVT 5SBOTDPEJOH1FSGPSNBODF QFSDBSE Y,QGQT YQGQT YQGQT YQGQT Y,QGQT YQGQT YQGQT YQGQT Y,QGQT Y,QGQT YQGQT YQGQT YQGQT YQGQT "*$PNQPOFOU  X"*1SPDFTTPS 5014QFSDBSE X%16 5014*/5  5014#' 7JEFP*OTUBODFJO,BLBP$MPVE
  4. 75*OTUBODF 75*OTUBODF 7*OG*OTUBODF $PEFDT EFDPEFS ) "7$ ) )&7$ )

    "7$ ) )&7$ "7 71 ) "7$ ) )&7$ FODPEFS ) "7$ ) )&7$ "7  .BY4JNVMUBOFPVT 5SBOTDPEJOH1FSGPSNBODF QFSDBSE Y,QGQT YQGQT YQGQT YQGQT Y,QGQT YQGQT YQGQT YQGQT Y,QGQT Y,QGQT YQGQT YQGQT YQGQT YQGQT "*$PNQPOFOU  X"*1SPDFTTPS 5014QFSDBSE X%16 5014*/5  5014#' 7JEFP*OTUBODFJO,BLBP$MPVE
  5. 75*OTUBODF 75*OTUBODF 7*OG*OTUBODF $PEFDT EFDPEFS ) "7$ ) )&7$ )

    "7$ ) )&7$ "7 71 ) "7$ ) )&7$ FODPEFS ) "7$ ) )&7$ "7  .BY4JNVMUBOFPVT 5SBOTDPEJOH1FSGPSNBODF QFSDBSE Y,QGQT YQGQT YQGQT YQGQT Y,QGQT YQGQT YQGQT YQGQT Y,QGQT Y,QGQT YQGQT YQGQT YQGQT YQGQT "*$PNQPOFOU  X"*1SPDFTTPS 5014QFSDBSE X%16 5014*/5  5014#' 7JEFP*OTUBODFJO,BLBP$MPVE
  6. 75*OTUBODF 75*OTUBODF 7*OG*OTUBODF X"DDFMFSBUPS$BSE ".%"MWFPĄ 6 .FEJB"DDFMFSBUPS$BSE '1("CBTF "-7&0Ą ."%

    .FEJB"DDFMFSBUPS$BSE "4*$CBTF "MWFPĄ 7 "DDFMFSBUPSDBSE ".%9%/"m 7FSTBM"*$PSF CBTF 4PGUXBSF%FWFMPQNFOU,JU 9JMJOY7JEFP4%, ".%"."7JEFP4%, 7JUJT"* 77"4 7JUJT7JEFP "OBMZUJDT4%, .BY 7JEFP3FTPMVUJPO QFSDBSE , Y , Y 'VMM)% Y .BY 7JEFP4USFBNT QFSDBSE    '535 'BTUFSUIBO3FBM5JNF 0 0  7JEFP*OTUBODFJO,BLBP$MPVE
  7. 75*OTUBODF 75*OTUBODF 7*OG*OTUBODF $PEFDT EFDPEFS ) "7$ ) )&7$ )

    "7$ ) )&7$ "7 71 ) "7$ ) )&7$ FODPEFS ) "7$ ) )&7$ "7  .BY4JNVMUBOFPVT 5SBOTDPEJOH1FSGPSNBODF QFSDBSE Y,QGQT YQGQT YQGQT YQGQT Y,QGQT YQGQT YQGQT YQGQT Y,QGQT Y,QGQT YQGQT YQGQT YQGQT YQGQT "*$PNQPOFOU  X"*1SPDFTTPS 5014QFSDBSE X%16 5014*/5  5014#' 7JEFP*OTUBODFJO,BLBP$MPVE
  8. $16 X48 INPUT_FILE=videos/sample_60sec_3840x2160_60fps_h264.mp4 ENC_OPTION="-max_interleave_delta 0 -profile:v main -preset fast -f

    mp4 –y" ffmpeg -re -i ${INPUT_FILE} -filter_complex "[0]split=3[a1][a2][a3]; [a1]scale=1920:1080[a11]; [a2]scale=1280:720[a21]; [a3]scale=640:360,fps=30[e]; [a11]split[a][b1]; [b1]fps=30[b]; [a21]split[c][d1]; [d1]fps=30[d]" -map '[a]' -c:v libx264 -b:v 12M -maxrate 12M -threads $N $ENC_OPTION 1080p60.mp4 -map '[b]' -c:v libx264 -b:v 10M -maxrate 10M -threads $N $ENC_OPTION 1080p30.mp4 -map '[c]' -c:v libx264 -b:v 7M -maxrate 7M -threads $N $ENC_OPTION 720p60.mp4 -map '[d]' -c:v libx264 -b:v 5M -maxrate 5M -threads $N $ENC_OPTION 720p30.mp4 -map '[e]' -c:v libx264 -b:v 2500K -maxrate 2500K -threads $N $ENC_OPTION 360p30.mp4 ױੌ .VMUJ4DBMJOH੘স 1FSGPSNBODF࠺Ү
  9. ENC_OPTION="-max_interleave_delta 0 -profile:v main -f mp4 –y" ffmpeg -lxlnx_hwdev 0

    -c:v mpsoc_vcu_h264 -i ${INPUT_FILE} -filter_complex "multiscale_xma=outputs=3: out_1_width=1920: out_1_height=1080: out_1_rate=full: out_2_width=1280: out_1_height=720: out_1_rate=full: out_3_width=640: out_2_height=360: out_2_rate=half: [a1][a2][e]; [a1]split[a][b1]; [b1]fps=30[b]; [a2]split[c][d1]; [d1]fps=30[d]" -map '[a]' -c:v mpsoc_vcu_h264 -b:v 12M -max-bitrate 12M $ENC_OPTION 1080p60.mp4 -map '[b]' -c:v mpsoc_vcu_h264 -b:v 10M -max-bitrate 10M $ENC_OPTION 1080p30.mp4 -map '[c]' -c:v mpsoc_vcu_h264 -b:v 7M -max-bitrate 7M $ENC_OPTION 720p60.mp4 -map '[d]' -c:v mpsoc_vcu_h264 -b:v 5M -max-bitrate 5M $ENC_OPTION 720p30.mp4 -map '[e]' -c:v mpsoc_vcu_h264 -b:v 2500K -max-bitrate 2500K $ENC_OPTION 360p30.mp4 ױੌ .VMUJ4DBMJOH੘স 1FSGPSNBODF࠺Ү 75*OTUBODF
  10. 75*OTUBODF ENC_OPTION="-max_interleave_delta 0 -profile:v main -preset fast -f mp4 –y"

    ffmpeg -hwaccel ama -c:v h264_ama -i ${INPUT_FILE} -filter_complex "scaler_ama=outputs=3: out_res=(1920x1080|full)(1280x720|full)(640x360|half)(320x180|half) [a1][a2][e]; [a1]split[a][b1]; [b1]fps=30[b]; [a2]split[c][d1]; [d1]fps=30[d]" -map '[a]' -c:v h264_ama -b:v 12M –maxrate 12M $ENC_OPTION 1080p60.mp4 -map '[b]' -c:v h264_ama -b:v 10M –maxrate 10M $ENC_OPTION 1080p30.mp4 -map '[b]' -c:v h264_ama -b:v 7M –maxrate 7M $ENC_OPTION 720p60.mp4 -map '[c]' -c:v h264_ama -b:v 5M –maxrate 5M $ENC_OPTION 720p30.mp4 -map '[d]' -c:v h264_ama -b:v 2500K –maxrate 2500K $ENC_OPTION 360p30.mp4 ױੌ .VMUJ4DBMJOH੘স 1FSGPSNBODF࠺Ү
  11. ENC_OPTION="-max_interleave_delta 0 -profile:v main -preset fast -f mp4 –y" ffmpeg

    -hwaccel cuda -hwaccel_output_format cuda -i ${INPUT_FILE} -filter_complex "[0]split=3[a1][a2][a3]; [a1]scale_cuda=1920:1080[a11]; [a2]scale_cuda=1280:720[a21]; [a3]scale_cuda=640:360[a31]; [a11]split[a][b1]; [b1]fps=30[b]; [a21]split[c][d1]; [d1]fps=30[d]; [a31]fps=30[e]" -map '[a]' -c:v h264_nvenc -b:v 12M -maxrate 12M $ENC_OPTION 1080p60.mp4 -map '[b]' -c:v h264_nvenc -b:v 10M -maxrate 10M $ENC_OPTION 1080p30.mp4 -map '[c]' -c:v h264_nvenc -b:v 7M -maxrate 7M $ENC_OPTION 720p60.mp4 -map '[d]' -c:v h264_nvenc -b:v 5M -maxrate 5M $ENC_OPTION 720p30.mp4 -map '[e]' -c:v h264_nvenc -b:v 2500K -maxrate 2500K $ENC_OPTION 360p30.mp4 ױੌ .VMUJ4DBMJOH੘স 1FSGPSNBODF࠺Ү (16 5
  12. ױੌ .VMUJ4DBMJOH੘স 1FSGPSNBODF࠺Ү *OTUBODF5ZQF $16T DPSFTY ࢎਊ IXѐࣻ &MBQTFE5JNF TFD

    1SPDFTTJOH4QFFE UISFBET UISFBET UISFBET UISFBET $16 XJUIPVUIX BDDFMFSBUPS     Y Y     Y Y     Y Y 75  DBSE EFWJDF  Y 75  DBSE EFWJDF  Y 5(16   DVEB DPSFT  Y
  13. INPUT_FILE=sample_60sec_1920x1080_60fps_h264.mp4 # VT1 Instance ffmpeg -xlnx_hwdev ${DEVICE_ID} -c:v mpsoc_vcu_h264 \

    -i ${INPUT_FILE} -c:v mpsoc_vcu_hevc -b:v 10M -f mp4 -y /tmp/output.mp4 # VT2 Instance ffmpeg -hwaccel ama -hwaccel_device /dev/ama_transcoder${DEVICE_ID} -c:v h264_ama -i ${INPUT_FILE} -c:v hevc_ama –slice ${CORE_ID} -b:v 10M -f mp4 -y /tmp/output.mp4 .VMUJ4USFBN5SBOTDPEJOH੘স 1FSGPSNBODF࠺Ү
  14. 75*OTUBODF EFWJDF 75*OTUBODF EFWJDF 75*OTUBODF EFWJDF 75*OTUBODF EFWJDF ೐۽ࣁय TUSFBN

    ѐࣻ &MBQTFE 5JNF TFD .VMUJ4USFBN5SBOTDPEJOH੘স 1FSGPSNBODF࠺Ү .BY4USFBNT QFSEFWJDFQFSˬDBSE 75 YQGQT75 YQGQT
  15. 75*OTUBODF EFWJDF 75*OTUBODF EFWJDF 75*OTUBODF EFWJDF 75*OTUBODF EFWJDF ೐۽ࣁय TUSFBN

    ѐࣻ &MBQTFE 5JNF TFD .VMUJ4USFBN5SBOTDPEJOH੘স 1FSGPSNBODF࠺Ү .BY4USFBNT QFSEFWJDFQFSˬDBSE 75 YQGQT75 YQGQT
  16. 75*OTUBODF EFWJDF 75*OTUBODF EFWJDF 75*OTUBODF EFWJDF 75*OTUBODF EFWJDF 프로세싱 stream

    개수 &MBQTFE 5JNF TFD .VMUJ4USFBN5SBOTDPEJOH੘স 1FSGPSNBODF࠺Ү .BY4USFBNT QFSEFWJDFQFSˬDBSE 75 YQGQT75 YQGQT
  17. 75*OTUBODF EFWJDF 75*OTUBODF EFWJDF 75*OTUBODF EFWJDF 75*OTUBODF EFWJDF ೐۽ࣁय TUSFBN

    ѐࣻ &MBQTFE 5JNF TFD .VMUJ4USFBN5SBOTDPEJOH੘স 1FSGPSNBODF࠺Ү .BY4USFBNT QFSEFWJDFQFSˬDBSE 75 YQGQT75 YQGQT
  18. #include <opencv2/core.hpp> ... #include <vitis/ai/classification.hpp> #include <vitis/ai/demo.hpp> #include "./process_result.hpp" int

    main(int argc, char *argv[]) { std::string model = argv[1]; return vitis::ai::main_for_video_demo( argc, argv, [model] { return vitis::ai::Classification::create(model); }, process_result, 2); } 7*OG*OTUBODF "**OGFSFODF4USFBNJOH
  19. XCLBIN_PATH=/opt/xilinx/xclbin/v70.xclbin DECODER="kernel_vdu_decoder:{kernel_vdu_decoder_0}" gst-launch-1.0 rtspsrc location=${SRC_URL} ! rtph264depay ! h264parse !

    "video/x-h264, stream-format=byte-stream, alignment=au" ! vvas_xvideodec dev-idx=0 xclbin-location=${XCLBIN_PATH} kernel-name=${DECODER} instance-id=0 avoid-dynamic-alloc=0 ! identity sync=0 ! vvas_xinfer preprocess-config=${PPE_CFG_PATH} infer-config=${INFER_CFG_PATH} ! vvas_xmetaconvert config-location=${META_CFG_PATH} ! vvas_xoverlay ! videoconvert ! x264enc ! filesink location=output.h264 7*OG*OTUBODF "**OGFSFODF4USFBNJOH
  20. "* ݽ؛ ߹ 1FSGPSNBODF Domain Model Architecture Input Size (h

    x w x c) FLOPs Inference FPS Object Detection :PMP7O YY (  :PMP7N YY (  :PMPWN YY (  Classification 3FT/FU YY (  4RVFF[F/FU YY (  *ODFQUJPO7 YY (  Super Resolution 3$"/ CZ0'" YY (  4&434 YY ( 
  21. 7*OG*OTUBODF%FNP 4PVSDF WWBT@YWJEFPEFD )8 1SFQSPDFTTPS %16 *OGFSFODF 4PVSDF#JO *OGFSFODF1MVHJO %FUFDUJPO

    *OGFSFODF1MVHJO $MBTTJGJDBUJPO *OGFSFODF#JO $MBTTJGJFS $MBTTJGJFS )8 1SFQSPDFTTPS %16 *OGFSFODF )8 1SFQSPDFTTPS %16 *OGFSFODF $MBTTJGJFS )8 1SFQSPDFTTPS %16 *OGFSFODF 4DBMFS 4JOL#JO 0WFSMBZ 4JOL j $BTDBEF.VMUJQMF"**OGFSFODF
  22. 7*OG*OTUBODF%FNP 4PVSDF WWBT@YWJEFPEFD )8 1SFQSPDFTTPS %16 *OGFSFODF 4PVSDF#JO *OGFSFODF1MVHJO %FUFDUJPO

    *OGFSFODF1MVHJO $MBTTJGJDBUJPO *OGFSFODF#JO $MBTTJGJFS $MBTTJGJFS )8 1SFQSPDFTTPS %16 *OGFSFODF )8 1SFQSPDFTTPS %16 *OGFSFODF $MBTTJGJFS )8 1SFQSPDFTTPS %16 *OGFSFODF 4DBMFS 4JOL#JO 0WFSMBZ 4JOL j $BTDBEF.VMUJQMF"**OGFSFODF
  23. 7*OG*OTUBODF%FNP 4PVSDF WWBT@YWJEFPEFD )8 1SFQSPDFTTPS %16 *OGFSFODF 4PVSDF#JO *OGFSFODF1MVHJO %FUFDUJPO

    *OGFSFODF1MVHJO $MBTTJGJDBUJPO *OGFSFODF#JO $MBTTJGJFS $MBTTJGJFS )8 1SFQSPDFTTPS %16 *OGFSFODF )8 1SFQSPDFTTPS %16 *OGFSFODF $MBTTJGJFS )8 1SFQSPDFTTPS %16 *OGFSFODF 4DBMFS 4JOL#JO 0WFSMBZ 4JOL j $BTDBEF.VMUJQMF"**OGFSFODF
  24. 7*OG*OTUBODF%FNP 4PVSDF WWBT@YWJEFPEFD )8 1SFQSPDFTTPS %16 *OGFSFODF 4PVSDF#JO *OGFSFODF1MVHJO %FUFDUJPO

    *OGFSFODF1MVHJO $MBTTJGJDBUJPO *OGFSFODF#JO $MBTTJGJFS $MBTTJGJFS )8 1SFQSPDFTTPS %16 *OGFSFODF )8 1SFQSPDFTTPS %16 *OGFSFODF $MBTTJGJFS )8 1SFQSPDFTTPS %16 *OGFSFODF 4DBMFS 4JOL#JO 0WFSMBZ 4JOL j $BTDBEF.VMUJQMF"**OGFSFODF
  25. 7*OG*OTUBODF%FNP 4PVSDF WWBT@YWJEFPEFD )8 1SFQSPDFTTPS %16 *OGFSFODF 4PVSDF#JO *OGFSFODF1MVHJO %FUFDUJPO

    *OGFSFODF1MVHJO $MBTTJGJDBUJPO *OGFSFODF#JO $MBTTJGJFS $MBTTJGJFS )8 1SFQSPDFTTPS %16 *OGFSFODF )8 1SFQSPDFTTPS %16 *OGFSFODF $MBTTJGJFS )8 1SFQSPDFTTPS %16 *OGFSFODF 4DBMFS 4JOL#JO 0WFSMBZ 4JOL j $BTDBEF.VMUJQMF"**OGFSFODF
  26. XCLBIN_PATH=/opt/xilinx/xclbin/v70.xclbin DECODER="kernel_vdu_decoder:{kernel_vdu_decoder_0}" SCALER="image_processing:{image_processing_1}" gst-launch-1.0 -v filesrc location=input.mp4 ! qtdemux !

    h264parse ! vvas_xvideodec dev-idx=0 xclbin-location=${XCLBIN_PATH} kernel-name=$DECODER instance-id=0 avoid-dynamic-alloc=0 ! identity sync=0 ! videoconvert ! vvas_xinfer preprocess-config=${PPE_CFG} infer-config="yolo_car.json" ! vvas_xinfer preprocess-config=${PPE_CFG} infer-config="resnet_car_color.json" ! vvas_xinfer preprocess-config=${PPE_CFG} infer-config="resnet_car_make.json" ! vvas_xinfer preprocess-config=${PPE_CFG_PATH} infer-config="resnet_car_type.json" ! vvas_xabrscaler dev-idx=0 xclbin-location=${XCLBIN_PATH} kernel-name=${SCALER} ! video/x-raw, width=480, height=270, format=NV12 ! vvas_xmetaconvert config-location=${META_CFG_PATH} ! vvas_xoverlay ! videoconvert ! x264enc ! mp4mux ! filesink location=out.mp4 7*OG*OTUBODF%FNP $BTDBEF.VMUJQMF"**OGFSFODF
  27. XCLBIN_PATH=/opt/xilinx/xclbin/v70.xclbin DECODER="kernel_vdu_decoder:{kernel_vdu_decoder_0}" SCALER="image_processing:{image_processing_1}" gst-launch-1.0 -v filesrc location=input.mp4 ! qtdemux !

    h264parse ! vvas_xvideodec dev-idx=0 xclbin-location=${XCLBIN_PATH} kernel-name=$DECODER instance-id=0 avoid-dynamic-alloc=0 ! identity sync=0 ! videoconvert ! vvas_xinfer preprocess-config=${PPE_CFG} infer-config="yolo_car.json" ! vvas_xinfer preprocess-config=${PPE_CFG} infer-config="resnet_car_color.json" ! vvas_xinfer preprocess-config=${PPE_CFG} infer-config="resnet_car_make.json" ! vvas_xinfer preprocess-config=${PPE_CFG_PATH} infer-config="resnet_car_type.json" ! vvas_xabrscaler dev-idx=0 xclbin-location=${XCLBIN_PATH} kernel-name=${SCALER} ! video/x-raw, width=480, height=270, format=NV12 ! vvas_xmetaconvert config-location=${META_CFG_PATH} ! vvas_xoverlay ! videoconvert ! x264enc ! mp4mux ! filesink location=out.mp4 7*OG*OTUBODF%FNP $BTDBEF.VMUJQMF"**OGFSFODF
  28. XCLBIN_PATH=/opt/xilinx/xclbin/v70.xclbin DECODER="kernel_vdu_decoder:{kernel_vdu_decoder_0}" SCALER="image_processing:{image_processing_1}" gst-launch-1.0 -v filesrc location=input.mp4 ! qtdemux !

    h264parse ! vvas_xvideodec dev-idx=0 xclbin-location=${XCLBIN_PATH} kernel-name=$DECODER instance-id=0 avoid-dynamic-alloc=0 ! identity sync=0 ! videoconvert ! vvas_xinfer preprocess-config=${PPE_CFG} infer-config="yolo_car.json" ! vvas_xinfer preprocess-config=${PPE_CFG} infer-config="resnet_car_color.json" ! vvas_xinfer preprocess-config=${PPE_CFG} infer-config="resnet_car_make.json" ! vvas_xinfer preprocess-config=${PPE_CFG_PATH} infer-config="resnet_car_type.json" ! vvas_xabrscaler dev-idx=0 xclbin-location=${XCLBIN_PATH} kernel-name=${SCALER} ! video/x-raw, width=480, height=270, format=NV12 ! vvas_xmetaconvert config-location=${META_CFG_PATH} ! vvas_xoverlay ! videoconvert ! x264enc ! mp4mux ! filesink location=out.mp4 7*OG*OTUBODF%FNP $BTDBEF.VMUJQMF"**OGFSFODF
  29. XCLBIN_PATH=/opt/xilinx/xclbin/v70.xclbin DECODER="kernel_vdu_decoder:{kernel_vdu_decoder_0}" SCALER="image_processing:{image_processing_1}" gst-launch-1.0 -v filesrc location=input.mp4 ! qtdemux !

    h264parse ! vvas_xvideodec dev-idx=0 xclbin-location=${XCLBIN_PATH} kernel-name=$DECODER instance-id=0 avoid-dynamic-alloc=0 ! identity sync=0 ! videoconvert ! vvas_xinfer preprocess-config=${PPE_CFG} infer-config="yolo_car.json" ! vvas_xinfer preprocess-config=${PPE_CFG} infer-config="resnet_car_color.json" ! vvas_xinfer preprocess-config=${PPE_CFG} infer-config="resnet_car_make.json" ! vvas_xinfer preprocess-config=${PPE_CFG_PATH} infer-config="resnet_car_type.json" ! vvas_xabrscaler dev-idx=0 xclbin-location=${XCLBIN_PATH} kernel-name=${SCALER} ! video/x-raw, width=480, height=270, format=NV12 ! vvas_xmetaconvert config-location=${META_CFG_PATH} ! vvas_xoverlay ! videoconvert ! x264enc ! mp4mux ! filesink location=out.mp4 7*OG*OTUBODF%FNP $BTDBEF.VMUJQMF"**OGFSFODF
  30. { "inference-level" : 1, "attach-ppe-outbuf" : false, "kernel" : {

    "config" : { "batch-size" : 14, "model-name" : "yolov3_voc_tf", "model-class" : "YOLOV3", "model-format" : "BGR", "model-path" : "/workspace/models/", "vitis-ai-preprocess" : false, "debug-level" : 2, "max-objects": 3, "filter-labels" : ["car"] } } } { "inference-level" : 2, "inference-max-queue" : 14, "attach-ppe-outbuf" : true, "kernel" : { "config": { "batch-size" : 14, "model-name" : "chen_color_resnet18_pt", "model-class" : "CLASSIFICATION", "model-format" : "BGR", "model-path" : "/workspace/models/", "performance-test" : false, "vitis-ai-preprocess" : false, "debug-level" : 2 } } } ZPMP@DBSKTPO SFTOFU@DBS@DPMPSKTPO 7*OG*OTUBODF%FNP $BTDBEF.VMUJQMF"**OGFSFODF
  31. { "inference-level" : 1, "attach-ppe-outbuf" : false, "kernel" : {

    "config" : { "batch-size" : 14, "model-name" : "yolov3_voc_tf", "model-class" : "YOLOV3", "model-format" : "BGR", "model-path" : "/workspace/models/", "vitis-ai-preprocess" : false, "debug-level" : 2, "max-objects": 3, "filter-labels" : ["car"] } } } ZPMP@DBSKTPO 7*OG*OTUBODF%FNP { "inference-level" : 2, "inference-max-queue" : 14, "attach-ppe-outbuf" : true, "kernel" : { "config": { "batch-size" : 14, "model-name" : "chen_color_resnet18_pt", "model-class" : "CLASSIFICATION", "model-format" : "BGR", "model-path" : "/workspace/models/", "performance-test" : false, "vitis-ai-preprocess" : false, "debug-level" : 2 } } } SFTOFU@DBS@DPMPSKTPO $BTDBEF.VMUJQMF"**OGFSFODF
  32. 2"