---
title: MobileSAM
canonical_url: "https://www.modelscope.cn/models/OGodPlayer/MobileSAM"
md_url: "https://www.modelscope.cn/models/OGodPlayer/MobileSAM.md"
repository: OGodPlayer/MobileSAM
chinese_name: MobileSAM
last_updated: 2025-07-10
pipeline_tag: image-segmentation
tasks:
  - image-segmentation
library_name:
  - onnx
  - pytorch
frameworks:
  - Pytorch
downloads: 28
stars: 0
---

# MobileSAM

> MobileSAM - OGodPlayer 在 ModelScope 开源的模型。本tag版本的模型文件与 icraft3.30.0 版本适配，部署时对应使用 24102404 版本位流。

- **Repository**: OGodPlayer/MobileSAM
- **Tasks**: image-segmentation
- **Downloads**: 28
- **Stars**: 0
- **Last updated**: 2025-07-10

Source: https://www.modelscope.cn/models/OGodPlayer/MobileSAM

---

# MobileSAM

![version](https://img.shields.io/badge/icraft_ver-3.30.0-gold?style=flat&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADcAAAA8CAYAAADCHCKFAAAAAXNSR0IArs4c6QAAAAlwSFlzAAAPYQAAD2EBqD+naQAACs5JREFUaEPdmnuQFNUVh3/n9sz07GN6FpD4QstHJIhaRAOou9OzpYDvGKmARlHRiEiSSiRijJVoaZkiaiJlMFpoiM+YSLBMBZ+lQpadnl0wUVDxkdJgohRgEHS7Z9idntm5J9UzsOxM90zPbnbR9f41Nfecc8/X59x7+56+hC9xoy8xGzzhAh3dp/a21K8b6eAuONX49AdAYBEIC+2Y9vRIBnTB1a21TmUBByrD4JV2ln6J6dqukQjpggu1WRMoyM+C6egikGyTHLw+F2/YMNIAXXCNHamv5BirwXxCHwxhE7O4Pas3PvFFAqxr7z5MUu4CKejIXEy7rtw394LyKgfDPdY6Bn2jvzAxPmbivwSCym27T2n87+cG+SoH63anpkhBcxj5FmLleAlekItrv/eHA6Aa5ssATXcDMACRlJDX5/ToK/sTMPxKz5Gc6z0DwCXEOJqZDy2s9UQbFWTO646N3VYTXMiwHiPgsirOvy2lvDvX2vTgsAJ2bqkL55qmsODLwXIqSJxQAHKe8d4meandGl3o5YfnPhdOdi1mFj+r5jgBO5nlBkUEr+yONbie2v8Dra43j0GPPJeDgQsF81HMONBrRybQR3lFmZ1rrv97zXDBpDVPMJZXc5CBtwVhXSaIG3Hyvq2ikD75/HiSchxLjGaiEGQ+T6SYHODtgNicbW7cVMl2XWf3xbI3dweIDgcRwP3DtE/L+ZuI19gxbYbzo2Y4tSN9BvJyFQjhUiUCiD9kyWvB+SXZ1tGbGtp2HNSrhC4ACWc+xACMrSFqOQCdzLyGSXk6pze+0afzBjeoZupugOeBHLrKTUpckWvVHq0k4akc7DCnKHl6mgkHFRSJwMxpAv5BRL/IxCJtarJrBqSYD8KsGmCqijBjnWA8mGnVinO4BkAGvSGQOz+jj/5oQHBqm/lVKHgeRMcUZi9joxTK0pxoWBnOpacwyZ+DyInUULf3Cbgjo2sP+QKyvN+ON33PZ13w6F5tjVHD1AGCJJlfBchlme2jtqqHWHeD6YdDTeSyR/QSExZlGxv/7ZWiBNpKzBf1xLWOgcMxk9qZvlfa4qHc6Q2vBQ3zZMG0HIR9by1+hAQJxicg9IARBDAaQJ2fWr9+SYT5mUhkhQegYW/fMh0XHpcdOFw/jVCy60Ji8ScASnXHaAsIzzLQTnm5wW6Nvl8uX5/YfXCeeicR0AKis5gx2Q+WGLdnopHF+wBBUAIL7OaGB3x1qwmEE9YVTHi4uhF+AZLut1sHfjwKJnafJNB7NYgWVB2D6F470nhjERAziOS0jN70waDhQkZqNoFXVl6J6DUmebMdi77gN4hfv2pY4wl8K4Muriwrl9ha9Ja6dPqsnpbIU342nX7vrSBhThWgTicBKhj5la1rP602QNBITxIs5zD4EBC9le3N34/TRnVVzRTDvJxBTrqV7a97tXihrUeX1gLmDecsJsn0RoAneRkhgSszLdojNThZ2FzDgjgjmQRha172npONj36z6kNp332iEPkVAMZ7jk+IZ2KaUQugR5kh9RuAr/VSZqZZ2bhPSqzfpdXlgh9PqBfhh8eHaVKjglW7enHRuz1Ooqy29cgMP8fCbZ8dwQHlOQAT3bK0wdYjJcexylOnX0/YsGIMeD4VAr6b0TWfxQUIJbpmEYknnzi2DjPHBPqsL/ogg/u25RCqw9jUZG2nH2AokZoIwQlijCmXZcibsnrTYj8bJZFTk9bzYJztUmL82o5rN/gZc/pD7eYcEvT4c8fXY1rTvil764dZ3LHFhlAC43qa67fWZKvD+hZJ/NVDNhNkOjwdj3xSzU4fXLg9dToLXuMG4412PHpSLc4U5pjRdRRDbP7mmACePLa4Z7/fIzF9U7fckeV3M7p2fK22HDnV8J4mBF6c0aM31QaXMFcw0UUecOfZ8aiT/zW3cMK8jYluHhskOaFeCMPMF3SZMTMb17wiUdl2245GNVD3AcDlp42dtq5VPYEUI9dmHaAG4BFietHWI2fVTNV//iatucyYK4DDJeN1UuieTEskMRhboQ7rBpK40z33+JKsHq1YtCrAhRPWPCb34ZQVzMw2D/BJD8Z7P50kR1Skd4I51F+UiFZmYhF3tu0RKsIZ1koGZpeOQdtsPXKo37j7qz9kmI8S6PKy8Uxb15oq+VCAU43UNoAPLhNabuva/P3lvN84oURqFhE/WS4nSZmSizW86qVPhcKm6HWdZpn40mws+ke/Qfdbf4V1gRjzM3HNs95D4UR6GpNc7ZqskiZmWyPvDtZ5NWHeA1BxzyTkAf6trUfvG6y9YoaZmwE6qsQG4y47rv3EM3LhdmsuC7jeFe133gvhmslOIWfALWykpzPkyyWKBGmHI2FMpkHZ3AP3EkAlr28EWpHRI56nCVIT5kIQOeekvsaEXdmYdsCAqfYoqO3W+RBYVa5vB3NRnDLGGqzdUMJ8nIjmlOpX3q6owh6y1da1cYN1Yrjg1KS1HIx5ZX6ttXXtNM+0VI30dYBcUta5w9a1A79ocKGk9Qgx5pZFruJJgyps4L22rjlFnUG1YYucYT0D4LzSuUxP2bGIZ+3UmXPngujZcgrK5o/ITBv14WDohhHOKcOXvngz3WvHI57lRip8SQ3Aa8k/39Y150kNuA0L3NscUj9N2W5nxEJbb/QsPRTfUBJmGkQNZYq+dZJK1MMBF050TWMSrv2YiE53yvueC0px/0i9BHDZ8Z/etPWIZx3FL5TDAaca1l0AFrm2FyVSj2ZyahiuVohcpSOFpMCpuVj9ej+Y8v7hgTM/AuiwspVyja1HPL4AF6WKcO2pY0nwO+VOMvBQVteu+rzhQklzDjE97vaDr7X16D2V/OsrM6iGtRZAqwtQ0AnZlshbAwEc6sipCfM1ELlKHUFBB6ZbIjt84UId6UtJyj94JO5Tdkwb0De4oYRTjdSPAHathsz8SDYevbLaQy+tfhmWE6HjyhWIcHUm5r4KMdyrZSixayJR8HWg8JWopElFOSnX3LCxZrjKuQ2WvdycOy1a0+IyVJELJawOIjR7rIPLbT3ie5D2qDh7vOIUl57/gHGmrWvv+c2/oYDzLn0UrmmYgbCYsHtq48d+fnjBOTV6JxW8PhRulkLMyrU0Ov0Vm9redQaEeLFcwE5FwjiHPN4ySiQpbFh/dtd0+pb3mirffVtBuRNBw7xMgB7z9p7TTHxVNtZU8fOWo6ca1gMAnVO0wXkQL7Vj0ZJzY7n90N92HYdg8HcEr1R0soeX2bHo9/0itre/4lWIkJG6xflmVtEQ0TJbyJvQHP201sGqRttIXwtI5y1k3weGUoUXbF3b87BqG7HqPQ/VMJcA5LoN18+0yaC7siFe1v+iTW1DF6XChnkZk/gxmE+sotduK5GzK71mVdLzveMcTlqLmVH1qlQxv+kJCXomwLS2O96wvaKjnVyn5kwdpJwNgdlwLqhVa4TnbRGZNVCwinOufCw1mVoA5mW1R4S3gMS/CNjBzIcAcG7YqczcSKBozXYI/2TAc/vJCl7kNyV8I7fXkWBn91TK55YS6JSandtzwa7mQQZg2FZ4zJDB7R1XTVrXg/lmgLRafHFunI0YuALQetZC2fRCIr4GgJN2FdvIg+uHEkqkvg3ImQQ6EwRXrXNEw/UPWdD4bJJCytch8TVJGEfAKAaOIJBz+68XjCwI3QROM7MJErKW1PaSsRX5Hb859z/oZJR5OtdOtQAAAABJRU5ErkJggg==)  ![author](https://img.shields.io/badge/author-ChaoningZhang-blue)<br>![metrics](https://img.shields.io/badge/metrics-OK-green?style=flat&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAAAXNSR0IArs4c6QAAAAlwSFlzAAAPYQAAD2EBqD+naQAABLZJREFUaEPtmmnIpWMYx39/+75lyy6ELGNohA8GIUvEB6RBtomYmhhDIlskkmUSWcLIyDKU9QOy88FSjCIylmSZsoxl7OPSf7pOPY7zvs8573Oa55x3nqveOr33fT/P/buv5f7f9zliGTMtY7w0wOPd442HGw+PsxVoQrrdoRGxOrBN4f8LJC0YVseXejgidgXeLQBeJ2lmAzwkK9B4uEMONyFdlsMRsTywPrAKsFDSj4MS8X0P6YjYCJgK7A2sCnwPvAA8IOm7usH7ChwRWwNP5DZm79oC+BV4EjhT0sI6ofsGHBGbA48Du40C9DRwvKSf6oLuC3BErAlcDpwNrJQw3wBfALtkLrcY7wBmSPq5Duh+Ae8P3AVslRBfA1cCLwJHARcAa2WbvTvD/SX9s7ShKwNHhHP1UuB8YDngb8BenClpUUpTA18IrJA5/TpwmqQPhxF4U+Clgt52KB8p6c0WTETY83cCB8CSWxYvihdhliR/7tkiwou3WJKLYtfWDw87ZB9J7/rFDwJTJC0uziIipgC3FELb+vxQSQ7/ri33+B2BycDcXg8y/QA24LGFGR8s6dl2gohYA3gUOCjbvCAO69nd0kbE2sAprvTAzsCNki7qdrz7VQLO1bawaBWkz4HtJP3VaRIR4eL2fKFtnqQJZROOCM/THr0W2AlYLcf8Buwj6Z2yZ7TaqwLvAbxVeNlsSSeP9vKIeAOYVOgzWdLLIyyQ89Q14hzgdMBn83bzTuDU+L0b6KrAnsj1hRcdJ+mhEuCTgLsLOX8PcGqn4hMRvni4DDgEWK8wpviKX4Bzc5v7T93oNI+qwI+5IueDvb9OkvRRCbAVmbV16xblE2BfSV92yHunypb5t316eYe2fq7Sr7mtm22uKrDDbU9gIrAucImkH0qArcpmAa3Qt+KaJuneknEOb4e+DyW2RYAXy0ruT+Bi4CZJ/jyiVQLuJmc6eM3vPCHFycrZPicr9h8jPTMivLjO/02yj/f5w1PIuPLb8zeUHU6WOrAnGxG7A85de8f2nrcbSW+PAnwE4ChYJ/vclprcnu7a6gL2nmwRYjFiOeoKa319eyflFRHuc1X2WTFDeLqjpF3glJHXApxePibD2mLC9ipwtKRvO6TBZnk4aYmW+RkRr5QBtrfXCezi5SJUPD+fKOm+4iRTdByWWnzjbPO52irNur0nqw04vWxJej/gOzDbp8CBklx9l1ietq4Bzkpl6PD30fPqsRwv6wb20XJuVtsWo/X2VEmWrAbeLw8kG2aHr6zHJb3fk2uzc63ACWRt/Exhu/HWdGsqLIew78K2LcDdDEwfi3f9jEEA9pXQtAxT33IuWYcM7w0A53rLHPITq1z71g6cXjbYFdbUhTux9oj9LBXZU2MJ5daYgQBO6C3ymuiMvAoqcn2cIf5wmXQsW4yBAU5oC5K9gPPyCGld/lyKlA9GOmeXQRbbBwq4l4mPtW8D3L5yzRfi0PwCYKz5VMe4JoebHP7/r3h8teKvVgbRXF9G/UnVWEJ6EEFbc5ogad5oE2yAu8jhce9hX6X6EnwYbL6/k64U0sNA2cscS3O4l4cNQ98GeBi8VGWOjYerrN4wjG08PAxeqjLHfwG92SNbyY+y8QAAAABJRU5ErkJggg==)  ![speed](https://img.shields.io/badge/speed-OK-green?style=flat&logo=fastapi)<br>![FPGA_ops](https://img.shields.io/badge/FPGA_ops-ImageMake-lightgreen?style=flat)<br>![OS](https://img.shields.io/badge/OS-Windows%20%7C%20Ubuntu-green)

本tag版本的模型文件与 ***icraft3.30.0*** 版本适配，部署时对应使用 ***24102404*** 版本位流。

# 0. 文件结构说明

## 1. 模型原始文件

1. 模型原始工程文件直接存放于`MobileSAM_icraft`文件夹下，来源如下：

   - code：https://github.com/ChaoningZhang/MobileSAM

   - branch：master

   - commit_id：21d7850


2. 权重文件根据原模型工程要求存放，若无特别要求，则存放在`MobileSAM_icraft/weights`文件夹下，文件来源：

   https://github.com/ChaoningZhang/MobileSAM/tree/master/weights/mobile_sam.pt



## 2. AI部署所需文件

AI部署模型所需文件均存放于下`MobileSAM_icraft`文件夹下，具体内容如下：

- `1_scripts`：若干脚本，用于保存Icraft编译器需要的模型等功能
- `2_compile`：Icraft编译器编译模型时所需要的文件
- `3_deploy`：将Icraft编译器编译出的模型仿真&部署到硬件时需要的python/c++工程



# 1. 保存框架模型

**目的**：将模型保存成可以被Icraft编译器编译的形态

`MobileSAM_icraft/1_scripts`下提供用于保存模型并验证其正确性的脚本：

- `0_infer.py`：使用模型原始权重推理一张图并得到最终结果

- `1_save.py`：保存模型，`MobileSAM_icraft/2_compile/fmodel`下已提供对应权重文件的框架模型，可根据需求修改脚本内配置后另行保存

  **环境要求**：Icraft编译器对**导出框架模型时**使用的**框架版本**有要求，即导出模型的脚本必须在要求的框架版本下执行，要求的版本：

  - **pytorch**：支持pytorch1.9.0、pytorch2.0.1两个版本的原生网络模型文件（.pt格式），以及pytorch框架保存为onnx（opset=11/14/17）格式的模型文件（.onnx格式）
  - **paddle**：仅支持PaddlePaddle框架保存为onnx（opset=11/14/17）格式的模型文件（.onnx格式），不支持框架原生网络模型文件
  - **tensorflow**：仅支持TensorFlow框架保存为onnx（opset=11/14/17）格式的模型文件（.onnx格式），不支持框架原生网络模型文件

  <div style="background-color: #FFFFCC; color: #000000; padding: 10px; border-left: 5px solid #FFA500;">

  保存模型时的修改点：<br>

    1. 将原模型声明的LayerNorm替换为icraft3.30兼容的LayerNorm<br>
    2. 将权重文件的键替换为经过1更改后的键<br>

  </div><br>

- `2_save_infer.py`：用修改后保存的模型做前向推理，验证保存的模型与原模型是否一致



进入`MobileSAM_icraft/1_scripts`后，即可执行上述脚本：

- 如果已安装uv，可跳过此步，否则请先使用以下命令安装（更多uv的安装和基础使用说明可参考[1.1.2 Python环境管理工具uv的安装和使用](https://gitee.com/mxh-spiger/introduction/blob/master/%E4%BE%BF%E4%BA%8E%E5%BC%80%E5%8F%91%E7%9A%84%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE/Icraft%E5%BC%80%E5%8F%91%E6%B5%81%E7%A8%8B%E7%9B%B8%E5%85%B3.md#12-python%E7%8E%AF%E5%A2%83%E7%AE%A1%E7%90%86%E5%B7%A5%E5%85%B7uv%E7%9A%84%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%BF%E7%94%A8)）：

  ```shell
  # 推荐使用官网源码安装
  powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
  # 也可pip安装
  pip install uv
  ```

- 运行脚本：*（首次在项目目录下使用uv命令运行脚本时，会自动加载配置项目环境，用时可能稍长）*

  ```shell
  # 在此模型根目录
  cd MobileSAM_icraft/1_scripts
  uv run 1_save.py
  ```



# 2. 使用Icraft编译器编译模型

**目的**：使用[Icraft编译器](https://gitee.com/mxh-spiger/icraft-introduction.git)将上一步保存好的**框架模型**转化为**硬件可部署模型**

## 1. 相关命名说明

- **fmodel**：frame model         			**>** 用于Icraft编译器的框架模型
- **imodel**：icraft model				   **>** 用Icraft编译器编译出的模型
- **qtset**：Quantitative Calibration Set	  **>** Icraft编译器所需的量化校准集



## 2. 确认已安装正确的icraft版本

参考[4. Icraft安装](https://gitee.com/mxh-spiger/introduction/blob/master/%E4%BE%BF%E4%BA%8E%E5%BC%80%E5%8F%91%E7%9A%84%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE/%E5%85%B6%E4%BB%96%E6%8E%A8%E8%8D%90%E8%BD%AF%E4%BB%B6%E5%8F%8A%E7%8E%AF%E5%A2%83%E5%87%86%E5%A4%87.md#4icraft%E5%AE%89%E8%A3%85)，根据系统架构选择相应的Icraft安装包，安装并检查：打开cmd运行：`icraft --version`

若已正常安装则会显示当前icraft版本，例如：

```shell
Icraft 版本:
 * 3.30.0

CLI 版本:
3.30.0.0-4be6386(2503281652)
```



## 3. 准备量化集

`MobileSAM_icraft/2_compile/qtset`中已提供量化集及对应列表文件，如需使用其它文件，请根据使用文件名修改列表文件内容。



## 4. 配置toml

toml 即 `MobileSAM_icraft/2_compile/config/TARGET/xxmodel.toml`，可根据需要修改该文件中的参数。

此处仅介绍一些参数配置，如需更详细深入的介绍，请参考 *`icraft docs`*（在终端中输入`icraft docs`打开）。

- `parse`步

  - `net_name`：网络名称，编译时按此设置生成模型文件（如：配置为`MobileSAM`，生成文件为`MobileSAM_parsed.json`&`MobileSAM_parsed.raw`）；
  - `network`：用于编译的fmodel文件存放路径；
  - `inputs`：对应`network`模型的输入尺寸；
  - `jr_path`：模型`parse`编译后生成文件的存放路径；
  - `target`：运行模型时所用的后端，已配置为对应文件路径中`TARGET`的参数；
  - 其它参数：若对模型预处理有其它需求可相应修改，否则无需更改。

- `quantize`步

  - `bits`/`qdtype`：量化精度，已配置为对应文件路径中`TARGET`的参数；
  - `saturation`：量化饱和方式，已配置为最优方式；
  - `per`：按`tensor`或`channel`为单位量化，已配置为最优方式；
  - `forward_dir`：量化集的存放路径，已对应`MobileSAM_icraft/2_compile/qtset`中提供的数据；
  - `forward_list`：量化集列表的文件路径，已对应`MobileSAM_icraft/2_compile/qtset`中提供的数据；
  - `json`：`quantize`前一步即`optimize`步编译生成的json文件路径；
  - `raw`：`quantize`前一步即`optimize`步编译生成的raw文件路径；
  - `jr_path`：模型`quantize`编译后生成文件的存放路径。

- `optimize`/`adapt`/`generate`步：

  其`json`、`raw`、`jr_path`参数配置均类似`quantize`步，前两者（`json`、`raw`）为上一步编译生成的模型文件路径，末者（`jr_path`）为当前步编译后生成文件的存放路径。



## 5. 执行编译

**在 `MobileSAM_icraft/2_compile`目录下执行编译：**

```shell
icraft compile config/BY/MobileSAM.toml
```

如果过程顺利，将得到 icraft model（以 `.json` （graph）`.raw`（param）的格式保存）

其中包括编译各阶段产生的中间结果模型和最终用于片上部署的BY/ZG模型，（若未修改toml中`jr_path`参数配置）直接被保存到:  `MobileSAM_icraft/3_deploy/imodel`



# 3. 运行模型

**目的**：使用运行时程序加载上一步编译所得的模型文件，**<u>仿真</u>** 或 **<u>在AI硬件上</u>** 执行模型前向推理。

<div style="background-color: #FFFFCC; color: #000000; padding: 10px; border-left: 5px solid #FFA500;">

***注***：<br>

1. 如需 **<u>在AI硬件上</u>** 执行模型前向推理，请先参考[3. 上板环境](https://gitee.com/mxh-spiger/introduction/blob/master/%E4%BE%BF%E4%BA%8E%E5%BC%80%E5%8F%91%E7%9A%84%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE/%E5%85%B6%E4%BB%96%E6%8E%A8%E8%8D%90%E8%BD%AF%E4%BB%B6%E5%8F%8A%E7%8E%AF%E5%A2%83%E5%87%86%E5%A4%87.md#3-%E4%B8%8A%E6%9D%BF%E7%8E%AF%E5%A2%83)和[4.2 Icraft安装-Ubuntu20.04-aarch64](https://gitee.com/mxh-spiger/introduction/blob/master/%E4%BE%BF%E4%BA%8E%E5%BC%80%E5%8F%91%E7%9A%84%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE/%E5%85%B6%E4%BB%96%E6%8E%A8%E8%8D%90%E8%BD%AF%E4%BB%B6%E5%8F%8A%E7%8E%AF%E5%A2%83%E5%87%86%E5%A4%87.md#%E5%AE%89%E8%A3%85-1)准备AI硬件并安装Icraft。<br>
2. 在AI硬件上的运行模式说明：<br>
   - **axi**模式：使用串口或ssh连接AI硬件，将运行时所需文件均复制到AI硬件上后，使用PSoC方式进行推理。<br>
   - **socket**模式：以上位机作为主控操作系统（下文示例中上位机操作系统为Windows），使用网口连接AI硬件，运行时输入数据会通过上位机经由网口传到AI硬件上进行推理。<br>

</div><br>



## 1. 准备运行时程序

- 普通测试：使用`MobileSAM_icraft/3_deploy/pyrt/MobileSAM_psin.py`

- 精度测试：使用`MobileSAM_icraft/3_deploy/pyrt/MobileSAM_psin.py`



### python  runtime

- python版本：**3.8**（否则**无法**使用icraft的python API）



## 2. 准备测试数据

- `MobileSAM_icraft/3_deploy/io`中已提供工程运行所需的示例测试数据

- 精度测试数据集下载：[None](None)，精度测试使用数据集的Val部分。



## 3. 修改配置文件

运行时需要配置一些模型路径，输入数据，后处理参数等，其配置文件在 `MobileSAM_icraft/3_deploy/cfg`，可修改：

* `imodel`中参数：
  * `dir`：测试所用模型文件所在目录路径
  * `stage`：测试所用模型文件的编译阶段
  * `run_backend`：运行所用后端
    * `host`：Host，用于 **仿真** 运行
    * `buyi`：布衣后端 ***（若设为`buyi`，则不论`stage`为何配置，运行时均使用`BY`阶段模型文件）***
    * `zg330`：诸葛后端 ***（若设为`zg330`，则不论`stage`为何配置，运行时均使用`ZG`阶段模型文件）***
  * `cudamode`：是否使用Cuda进行仿真
  * `mmuMode`：是否在模型编译的`generate`步配置了合并算子和内存优化 *（**仅当`run_backend`配置为`buyi`时，该参数配置生效**，默认为`true`）*
  * `speedmode`：是否在运行时合并算子 *（**仅当模型编译时未配置合并算子和内存优化时，，该参数配置生效**，默认为`false`）*
  * `compressFtmp`：是否在运行时进行内存优化 *（**仅当模型编译时未配置合并算子和内存优化时，，该参数配置生效**，默认为`false`）*
  * `ocm_option`：OCM分配方案 *（**仅当`run_backend`配置为`zg330`时，该参数配置生效**，默认为`4`，支持`0`/`1`/`2`/`3`/`4`）*
  * `ip`：所用板子ip ***（若仿真运行，可忽略此配置）***
  * `show`：是否显示测试结果
  * `save`：是否保存测试结果
  * `dump_output`：是否dump网络的输出特征图 *（与`icraft run`命令参数相同）*
  * `dump_format`：dump特征图使用的格式，支持`SFB`/`SFT`/`SQB`/`SQT`/`HQB`/`HQT`等 *（与`icraft run`命令参数相同）*
  * `log_path`：dump特征图文件存放路径（保存文件名与**输出顺序**相同，即：`0.ftmp`, `1.ftmp`, `2.ftmp`……）
* `dataset`中参数：
  * `dir`：测试数据存放路径
  * `list`：测试数据列表的文件路径
  * `res`：测试结果保存路径
* `param`中参数：如果模型没有重训，则无需更改，若重训则需要修改对应部分参数。

根据不同测试需求，可使用不同的配置文件：

- 普通测试：使用`MobileSAM.yaml`，其中`dataset`参数配置已对应`MobileSAM_icraft/3_deploy/io`中提供的示例测试数据

- 精度测试：使用`MobileSAM.yaml`，精度测试数据实际存放位置需与其中`dataset`参数配置相匹配。



## 4. 执行程序

如果运行 **<u>socket模式</u>** ，需先在AI硬件上开启server：

```shell
# 以root账户在任意路径下运行：
icraft-serve
```

开启成功后会显示：

```shell
root@U:~# icraft-serve
[02/22/24 02:02:00.388] [I] Using port : 9981
[02/22/24 02:02:00.388] [I] synchronous mode
[02/22/24 02:02:00.388] [I] [irpc::port::tcp::_waitNewConn] wait for new connection
```



### python  runtime

- **<u>仿真</u>** 或 **<u>socket模式</u>**：

  在`MobileSAM_icraft/3_deploy/pyrt`目录下运行：

  ```shell
  uv run ./MobileSAM_psin.py ../cfg/MobileSAM.yaml
  ```
  
  若在配置文件中配置`save`为`true`，则可在其对应`res`配置的目录下查看输出。



# 4. 计算精度指标

运行精度测试命令`uv run ./MobileSAM_psin.py ../cfg/MobileSAM.yaml`后，**使用metrics测试脚本**，根据保存的测试结果计算出精度指标。

- metrics测试脚本存放于：`MobileSAM_icraft/3_deploy/metrics/evaluate`，使用与配置方法请详见目录下内容；

- 使用`uv run`替代`python`命令运行测试脚本；

- 精度指标结果保存在`MobileSAM_icraft/3_deploy/metrics/logs`目录下。


# 5. 模型性能记录

| MobileSAM | input shape | hard time | post time | qt_strategy | Dice | IoU |
| ----- | ----------- | --------- | --------- | ----------- | ---- | --- |
| float | [1, 3, 1024, 1024] | - | - | - | None | None |
| BY_int8 | [1, 3, 1024, 1024] | 398.3928ms | 1ms | kld-pc | None | None |
| BY_int16 | [1, 3, 1024, 1024] | 731.5614ms | 1ms | kld-pc | None | None |
