工具与软件:
如果我使用 SDK 10.1中的 Yocto (ti-processor-sdk-linux-edgeai-j721s2-evm-10_01_00_04-linux-x86-Install.bin)构建系统、最终会得到一个无法执行推理的系统。 我已经尝试了使用 SDK 版本本身附带的配置文件(configs/processor-sdk-analysis/processor-sdk-analysis-10_01-config.txt)和通过 repo https://git.ti.com/git/arago-project/oe-layersetup.git (configs/processor-sdk-analytics/processor-sdk-analysis-10.01.00-config.txt)获得的配置文件。 我希望这些内容是相同的、但实际上不同(引用的 meta-edgeai 提交在它们之间有所不同)。
使用任一配置进行编译会在从 GST 流水线中提取张量数据时导致错误:
root@am68a-sk:/opt/edgeai-gst-apps# cd apps_python/root@am68a-sk:/opt/edgeai-gst-apps/apps_python# ./app_edgeai.py -n -v ../configs/image_classification.yaml
Number of subgraphs:1 , 34 nodes delegated out of 34 nodes
APP: Init ... !!! 22603.275840 s: MEM: Init ... !!! 22603.275908 s: MEM: Initialized DMA HEAP (fd=6) !!! 22603.276082 s: MEM: Init ... Done !!! 22603.276110 s: IPC: Init ... !!! 22603.312964 s: IPC: Init ... Done !!!REMOTE_SERVICE: Init ... !!!REMOTE_SERVICE: Init ... Done !!! 22603.319090 s: GTC Frequency = 200 MHzAPP: Init ... Done !!! 22603.321311 s: VX_ZONE_INIT:Enabled 22603.321544 s: VX_ZONE_ERROR:Enabled 22603.323104 s: VX_ZONE_WARNING:Enabled 22603.328488 s: VX_ZONE_INIT:[tivxPlatformCreateTargetId:124] Added target MPU-0 22603.328804 s: VX_ZONE_INIT:[tivxPlatformCreateTargetId:124] Added target MPU-1 22603.328938 s: VX_ZONE_INIT:[tivxPlatformCreateTargetId:124] Added target MPU-2 22603.329067 s: VX_ZONE_INIT:[tivxPlatformCreateTargetId:124] Added target MPU-3 22603.329085 s: VX_ZONE_INIT:[tivxInitLocal:136] Initialization Done !!! 22603.331131 s: VX_ZONE_INIT:[tivxHostInitLocal:106] Initialization Done for HOST !!!==========[INPUT PIPELINE(S)]==========
[PIPE-0]
multifilesrc location=/opt/edgeai-test-data/images/%04d.jpg index=1 stop-index=-1 loop=True ! jpegdec ! videoscale qos=True ! capsfilter caps="video/x-raw, width=(int)1280, height=(int)720;" ! tiovxdlcolorconvert ! capsfilter caps="video/x-raw, format=(string)NV12;" ! tiovxmultiscaler name=split_01split_01. ! queue ! capsfilter caps="video/x-raw, width=(int)1280, height=(int)720;" ! tiovxdlcolorconvert out-pool-size=4 ! capsfilter caps="video/x-raw, format=(string)RGB;" ! appsink max-buffers=2 drop=True name=sen_0split_01. ! queue ! capsfilter caps="video/x-raw, width=(int)454, height=(int)256;" ! tiovxdlcolorconvert out-pool-size=4 ! capsfilter caps="video/x-raw, format=(string)RGB;" ! videobox qos=True left=115 right=115 top=16 bottom=16 ! tiovxdlpreproc out-pool-size=4 channel-order=1 data-type=3 ! capsfilter caps="application/x-tensor-tiovx;" ! appsink max-buffers=2 drop=True name=pre_0
==========[OUTPUT PIPELINE]==========
appsrc do-timestamp=True format=3 block=True name=post_0 ! tiovxdlcolorconvert ! capsfilter caps="video/x-raw, format=(string)NV12, width=(int)1280, height=(int)720;" ! queue ! mosaic_0.sink_0
tiovxmosaic target=1 background=/tmp/background_0 name=mosaic_0 src::pool-size=4sink_0::startx="<320>" sink_0::starty="<150>" sink_0::widths="<1280>" sink_0::heights="<720>"! capsfilter caps="video/x-raw, format=(string)NV12, width=(int)1920, height=(int)1080;" ! queue ! tiperfoverlay title=Image Classification ! kmssink sync=False max-lateness=5000000 qos=True processing-deadline=15000000 driver-name=tidss connector-id=40 plane-id=31 force-modesetting=True fd=44
[ERROR] Error pulling tensor from GST Pipeline
如果我下载预编译的10.01.00.04映像并使用它、那么推理操作会正常进行。
此外、如果我使用 Yocto 编译将预编译映像的`/usr/lib` dir 的内容复制到 SD 卡、那么推理工作!
在查看预构建图像的内容时、我看到多个 TI 特定库之间存在差异。 这里有一个示例: Yocto 构建字段为`/usr/lib/libtivision_apps.so.10.0.0`。 预构建映像具有 `/usr/lib/libtivision_apps.so.10.1.0`。 我希望版本是相同的、但却不同。 根据其 md5sums、还有其他与 edgeai 相关的库也不同。 我希望所有内容都相同、但事实并非如此。
有什么想法吗? 有人可以尝试使用 Yocto for am68-SK 从零开始构建、并确认最终得到可以执行推理的操作吗?