Has anyone convert yolo8n.pt to network.fpk file successfully,using imx package tools
You can try this
Thank you Toxite,i view the whole tutorial about the procedure to convert yolov8 or yolov11 .onnx or .tflite file format to rpk ,then deployed to imx500 edge sensor.It can solve my problem,but i don’t want to buy conversion service for the Conversion procedure.Is there any open-source solution to accomplish this task.BestRegards!
Where will the .fpk file be used?
If you’re targeting a Lucid Triton Smart (IMX501) and it specifically requires a network.fpk, that’s likely not the same pipeline as our Ultralytics IMX export (which is for Sony IMX500 / Raspberry Pi AI Camera and produces a <model>_imx_model/packerOut.zip, not an .fpk). The Ultralytics flow is documented in the Sony IMX500 export guide and the underlying exporter is format=imx (see the IMX export reference).
So: there is an “open” route to get an IMX500 package (packerOut.zip) via Ultralytics, e.g.:
pip install -U ultralytics
yolo export model=yolov8n.pt format=imx data=coco8.yaml
…but if Lucid’s device/SDK only accepts .fpk, you’ll need Lucid’s (or Sony AITRIOS/IMX501) tooling to package/compile to that format. We don’t currently provide an Ultralytics open-source exporter that emits network.fpk.
If you can link (or paste) the Lucid doc that defines what network.fpk is and which converter produces it (and what inputs it accepts: ONNX/TFLite/etc.), I can tell you the closest supported export path from Ultralytics YOLO and what’s likely missing.
Thank you for your reply,Paula.I get Packager.sh in Sony Developer forum to generate network.fpk and `network_info.txt.It seems that network.fpk and network_info.txt generated from Sony developer tools.Content below is packager.sh:
#!/bin/bash
DEVICE_ID=“00000000000000000000000000000000”
TENANT_ID=“XXXXXXXXXXXXXXXXXXXX”
CLIENT_ID=“YYYYYYYYYYYYYYYYYYYY”
SECRET=“ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ”
MODEL_PATH=“.sdsp_output/packerOut.zip”
MODEL_ID=“XXXXXXXXXXXXXXXXXXXX_model_0”
ORDINAL=0
FORMAT=“RGB”
SYSTEM_DOMAIN=“https://conv-pack.aitrios.sony-semicon.com”
PORTAL_OKTA_DOMAIN=“https://auth.aitrios.sony-semicon.com”
PARENT_META_FIELD=“aitriosPortalConverterPackager”
CHILD_META_FIELD_Conveter=“aitriosPortalConverter”
CHILD_META_FIELD_Packager=“aitriosPortalPackager”
echo “### Get Access Token”
AUTHORIZATION_CODE=(echo -n "{CLIENT_ID}:${SECRET}" | base64 | tr -d “\n”)
RESPONSE=$(curl --request POST
–url ${PORTAL_OKTA_DOMAIN}/oauth2/default/v1/token
–header “accept: application/json”
–header “authorization: Basic ${AUTHORIZATION_CODE}”
–header “cache-control: no-cache”
–header “content-type: application/x-www-form-urlencoded”
–data “grant_type=client_credentials&scope=system”)
ACCESS_TOKEN=$(echo $RESPONSE | jq -r “.access_token”)
echo “ACCESS_TOKEN = ${ACCESS_TOKEN}”
echo “### Upload File”
RESPONSE=(curl --location --request POST "{SYSTEM_DOMAIN}/api/v1/files"
–header “content-type: multipart/form-data”
–header “Authorization: Bearer ${ACCESS_TOKEN}”
–header “tenant_id: ${TENANT_ID}”
–form “file=@"${MODEL_PATH}"”
–form “type_code=“productAiModelConverted””)
FILE_ID=$(echo $RESPONSE | jq -r “.file_info.id”)
echo “FILE_ID = ${FILE_ID}”
echo “### Import Model”
RESPONSE=(curl --location --request POST "{SYSTEM_DOMAIN}/api/v1/models"
–header “Content-Type: application/json”
–header “source-service: marketplace”
–header “tenant_id: ${TENANT_ID}”
–header “Authorization: Bearer ${ACCESS_TOKEN}”
–header “parent_meta_field: ${PARENT_META_FIELD}”
–header “child_meta_field: ${CHILD_META_FIELD_Conveter}”
–data-raw “{
"model_id": "${MODEL_ID}",
"file_id": "${FILE_ID}",
"network_type": "1",
"input_format_param": [{"ordinal": {ORDINAL}, \"format\": \"{FORMAT}"}]
}”)
RESULT=$(echo $RESPONSE | jq -r “.result”)
if [ “$RESULT” = “SUCCESS” ]; then
echo “Success!”
else
echo $RESPONSE
echo “Fail!”
exit 1
fi
echo “### Publish Model”
RESPONSE=(curl --location --request POST "{SYSTEM_DOMAIN}/api/v1/models/${MODEL_ID}/model_publish"
–header “Content-Type: application/json”
–header “source-service: marketplace”
–header “tenant_id: ${TENANT_ID}”
–header “Authorization: Bearer ${ACCESS_TOKEN}”
–header “parent_meta_field: ${PARENT_META_FIELD}”
–header “child_meta_field: ${CHILD_META_FIELD_Packager}”
–data-raw “{
"device_id": "${DEVICE_ID}",
"key_generation": "0001",
"packager_version": "4.00.00"
}”)
RESULT=$(echo $RESPONSE | jq -r “.result”)
TRANSACTION_ID=$(echo $RESPONSE | jq -r “.transaction_id”)
if [ “$RESULT” = “SUCCESS” ]; then
echo “TRANSACTION_ID = ${TRANSACTION_ID}”
echo “Success!”
else
echo $RESPONSE
echo “Fail!”
exit 1
fi
echo “### Get Publish Status”
echo “Wait a moment…”
while true
do
sleep 60
RESPONSE=(curl --location --request GET "{SYSTEM_DOMAIN}/api/v1/model_publish/${TRANSACTION_ID}/status?include_publish_url=true"
–header “Content-Type: application/json”
–header “source-service: marketplace”
–header “tenant_id: ${TENANT_ID}”
–header “Authorization: Bearer ${ACCESS_TOKEN}”)
STATUS=$(echo $RESPONSE | jq -r “.status”)
PUBLISH_URL=$(echo $RESPONSE | jq -r “.publish_url”)
if [ “$STATUS” = “Publish complete” ]; then
echo “PUBLISH_URL = ${PUBLISH_URL}”
echo “Complete!”
break
else
echo $RESPONSE
echo “Imcomplete! Retry…”
fi
done
echo “### Download Packaged Model”
FILE_NAME=$(echo $PUBLISH_URL | awk -F’[/?]’ ‘{print $6}’)
wget -O $FILE_NAME $PUBLISH_URL
