当前位置: 首页 > news >正文

Qualcomm SNPE(Neural Processing SDK)集成到 OpenWRT + QCS6490 的完整配置后续

基于前面的内容本期继续接着开发过程来说,下面给出 三套完整可直接使用的源码,全部基于 OpenWRT + QCS6490 + SNPE 环境:

  1. 自动化模型转换脚本(主机端,ONNX → DLC + 量化 + 校验)
  2. LuCI 推理控制面板(Web 上传模型、选择运行时、实时推理)
  3. OTA 模型更新服务(设备端自动下载、校验、替换、通知)

1. 自动化模型转换脚本(主机端)

文件:convert_model.sh
路径:~/snpe-tools/convert_model.sh
功能:一键 ONNX → DLC → 量化 → 校验 → 打包 OTA 包

#!/bin/bash
# convert_model.sh
# 用法: ./convert_model.sh yolov8n.onnx yolov8nset -eMODEL_ONNX="$1"
MODEL_NAME="$2"
INPUT_SIZE="${3:-640}"  # 默认 640x640
QUANTIZE="${4:-true}"   # 是否量化
SNPE_ROOT="$HOME/snpe-sdk"
OUTPUT_DIR="./ota_models"# 1. 检查环境
if [ ! -d "$SNPE_ROOT" ]; thenecho "SNPE_ROOT not found: $SNPE_ROOT"exit 1
fisource "$SNPE_ROOT/bin/envsetup.sh"mkdir -p "$OUTPUT_DIR"DLC_FILE="${OUTPUT_DIR}/${MODEL_NAME}.dlc"
DLC_QUANT="${OUTPUT_DIR}/${MODEL_NAME}_quant.dlc"
INPUT_LIST="${OUTPUT_DIR}/input_list.txt"
OTA_PKG="${OUTPUT_DIR}/${MODEL_NAME}_ota.tar.gz"# 2. 生成输入列表(随机图像)
echo "Generating input list..."
mkdir -p images
for i in {1..5}; doconvert -size ${INPUT_SIZE}x${INPUT_SIZE} xc:gray images/calib_$i.jpgecho "images/calib_$i.jpg" >> "$INPUT_LIST"
done# 3. ONNX → DLC
echo "Converting ONNX to DLC..."
snpe-onnx-to-dlc \--input_model "$MODEL_ONNX" \--output_model "$DLC_FILE" \--input_dim input_0 1,3,${INPUT_SIZE},${INPUT_SIZE}# 4. 量化(可选)
if [ "$QUANTIZE" = "true" ]; thenecho "Quantizing to INT8..."snpe-dlc-quantize \--input_dlc "$DLC_FILE" \--input_list "$INPUT_LIST" \--output_dlc "$DLC_QUANT" \--use_enhanced_quantizer \--use_adjusted_weights_quantizerFINAL_DLC="$DLC_QUANT"
elseFINAL_DLC="$DLC_FILE"
fi# 5. 校验模型
echo "Validating model..."
snpe-dlc-info --input_dlc "$FINAL_DLC" | head -20# 6. 打包 OTA 包(含校验码)
echo "Packaging OTA update..."
cat > "${OUTPUT_DIR}/model.json" << EOF
{"name": "$MODEL_NAME","version": "$(date +%Y%m%d%H%M)","size": $(stat -c%s "$FINAL_D cellular"),"sha256": "$(sha256sum "$FINAL_DLC" | cut -d' ' -f1)","input_size": ${INPUT_SIZE},"quantized": $QUANTIZE
}
EOFtar -czf "$OTA_PKG" -C "$OUTPUT_DIR" \"$(basename $FINAL_DLC)" model.jsonecho "OTA package ready: $OTA_PKG"
echo "Upload to: http://your-server.com/ota/${MODEL_NAME}_ota.tar.gz"

使用示例

./convert_model.sh yolov8n.onnx yolov8n 640 true

2. LuCI 推理控制面板(Web 界面)

路径:package/luci-app-snpe/

目录结构

luci-app-snpe/
├── root/
│   └── usr/share/luci/menu.d/snpe.json
├── htdocs/
│   └── luci-static/resources/view/snpe/
│       ├── dashboard.htm
│       └── inference.js
└── src/└── Makefile

src/Makefile

include $(TOPDIR)/rules.mkPKG_NAME:=luci-app-snpe
PKG_VERSION:=1.0
PKG_RELEASE:=1include $(INCLUDE_DIR)/package.mkdefine Package/luci-app-snpeSECTION:=luciCATEGORY:=LuCISUBMENU:=3. ApplicationsTITLE:=SNPE AI Inference PanelDEPENDS:=+snpe +python3 +python3-opencv +luci-base
endefdefine Build/Compile
endefdefine Package/luci-app-snpe/install$(INSTALL_DIR) $(1)/usr/share/luci/menu.d$(CP) ./root/usr/share/luci/menu.d/snpe.json $(1)/usr/share/luci/menu.d/$(INSTALL_DIR) $(1)/usr/share/luci/static/resources/view/snpe$(CP) ./htdocs/luci-static/resources/view/snpe/* $(1)/usr/share/luci/static/resources/view/snpe/
endef$(eval $(call BuildPackage,luci-app-snpe))

root/usr/share/luci/menu.d/snpe.json

{"admin/ai": {"snpe": {"title": "SNPE Inference","order": 10,"action": {"type": "view","path": "snpe/dashboard"}}}
}

htdocs/luci-static/resources/view/snpe/dashboard.htm

<%+header%>
<h2>SNPE AI Inference Panel</h2><div class="cbi-section"><div class="cbi-section-node"><label class="cbi-value-title">Model</label><div class="cbi-value-field"><select id="model_select" class="cbi-input-select"></select><button onclick="uploadModel()">Upload New</button><input type="file" id="model_file" style="display:none" accept=".dlc"></div></div><div class="cbi-section-node"><label>Runtime</label><select id="runtime"><option value="DSP">DSP (Hexagon)</option><option value="HTP">HTP (NPU)</option></select></div><div class="cbi-section-node
http://www.dtcms.com/a/525272.html

相关文章:

  • 多平台终端模拟器
  • wordpress建站网站根目录百度竞价托管一月多少钱
  • wordpress如何仿站wordpress文件夹改名
  • kotlin中的let的使用
  • 计算机视觉领域应用了模块缝合思想的经典模型
  • Kubernetes Calico 网络故障排查与修复:RBAC 权限问题完整解决记录
  • Orleans 客户端与 Silo 配置方式深度分析
  • RecyclerView设置空布局
  • 如何看网站空间问题开发网站公司
  • 广州网站设计开发招聘泰兴中信建设有限责任公司
  • 石家庄seo网站建设云南省科技网站
  • 基于单片机的恒流源三极管放大倍数测量仪设计
  • 如何解除 iPad 和 iPhone 文本消息的关联?
  • 乔智云智能建站软件开发培训视频
  • 网站建设有哪些推广渠道做违法网站会怎么样
  • 多少钱算网站常州网站建设哪家便宜
  • 郑州企业网站建设费用策划公司起什么名字好
  • KTH1701 系列高性能、低功耗、全极磁场检测霍尔开关传感器
  • LeeCode 143. 重排链表
  • 1024节日?
  • 云图-地基云图-云层分割
  • 网上做论文的网站c网站开发
  • 递归|模拟
  • 站长之家统计广告设计制作税率
  • Linux环境下编译C语言使用libpq连接瀚高数据库
  • 门户网站排行榜seo实战密码第四版电子书
  • 购物网站哪个好电商网站营销
  • HBase基础命令详解
  • 租好服务器咋做网站呢网页设计与网站制作视频教程
  • 上海网站制作网络推广方法网站优化塔山双喜