> ## Documentation Index
> Fetch the complete documentation index at: https://imsdkdocs.qualcomm.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Pose Estimation

> QIM SDK supported models for Pose Estimation

***

<Tabs>
  <Tab title="TFLite Runtime">
    <div style={{overflowX:"auto",borderRadius:"10px",boxShadow:"0 2px 12px rgba(50,83,220,0.10)",overflow:"hidden"}}>
      <table style={{width:"100%",borderCollapse:"collapse",fontSize:"0.85rem",border:"2px solid #3253DC"}}>
        <colgroup>
          <col style={{width:"40px"}} />

          <col style={{width:"220px"}} />

          <col style={{width:"100%"}} />
        </colgroup>

        <thead>
          <tr>
            <th style={{backgroundColor:"#3253DC",color:"#ffffff",border:"1px solid #000000",padding:"10px 8px",textAlign:"center",letterSpacing:"0.05em",width:"40px"}}>No.</th>
            <th style={{backgroundColor:"#3253DC",color:"#ffffff",border:"1px solid #000000",padding:"10px 8px",textAlign:"center",letterSpacing:"0.05em",width:"220px"}}>Model Name</th>
            <th style={{backgroundColor:"#3253DC",color:"#ffffff",border:"1px solid #000000",padding:"10px 8px",textAlign:"center",letterSpacing:"0.05em"}}>Description</th>
          </tr>
        </thead>

        <tbody>
          <tr>
            <td rowSpan={2} style={{border:"1px solid #e2e8f0",padding:"8px",textAlign:"center",verticalAlign:"middle",width:"40px"}}>1</td>
            <td style={{border:"1px solid #e2e8f0",padding:"8px",textAlign:"left",verticalAlign:"middle",width:"180px"}}><a href="https://aihub.qualcomm.com/iot/models/hrnet_pose?searchTerm=HR" target="_blank" style={{color:"#3253DC",fontWeight:600}}>HRNetPose</a></td>
            <td style={{border:"1px solid #e2e8f0",padding:"8px",color:"#555",fontSize:"0.82rem",verticalAlign:"middle"}}>High-resolution representation network for 2D human pose keypoints.</td>
          </tr>

          <tr>
            <td colSpan={2} style={{border:"1px solid #e2e8f0",padding:"4px",verticalAlign:"top",width:"100%"}}>
              <Accordion title="Steps to Run on QIMSDK">
                <Accordion title="🟢 W8A8 — Model Precision">
                  <Steps>
                    <Step title="Download Required Files">
                      | File                                                                                                                         | Save as                        |
                      | ---------------------------------------------------------------------------------------------------------------------------- | ------------------------------ |
                      | [Person/foot detection model](https://aihub.qualcomm.com/iot/models/hrnet_pose)                                              | `foot_track_net_w8a8.tflite`   |
                      | <a href="../labels/foot_track_net.json" download="foot_track_net.json">foot\_track\_net.json</a>                             | `foot_track_net.json`          |
                      | <a href="../labels/foot_track_net_settings.json" download="foot_track_net_settings.json">foot\_track\_net\_settings.json</a> | `foot_track_net_settings.json` |
                      | [HRNet pose model](https://aihub.qualcomm.com/iot/models/hrnet_pose)                                                         | `hrnet_pose_w8a8.tflite`       |
                      | <a href="../labels/hrnet.json" download="hrnet.json">hrnet.json</a>                                                          | `hrnet.json`                   |
                      | <a href="../labels/hrnet_settings.json" download="hrnet_settings.json">hrnet\_settings.json</a>                              | `hrnet_settings.json`          |
                      | Input video — use an encoded video file containing a single person in frame                                                  | `input_video.mp4`              |

                      <Note>
                        If any downloaded file is a `.zip` archive, extract it on your host machine before copying:
                        `unzip filename.zip`
                      </Note>
                    </Step>

                    <Step title="Copy Files to Device">
                      <CodeGroup>
                        ```bash SCP (SSH) theme={null}
                        # Replace $HOME to the appropriate device path before running the commands.
                        # For QLI:    /root
                        # For Ubuntu: /home/ubuntu
                        # Modify this based on your platform and ensure files are copied to the correct location on the device.

                        ssh <user>@<device-ip> "mkdir -p $HOME/{models,labels,media}"
                        scp foot_track_net_w8a8.tflite       <user>@<device-ip>:$HOME/models/
                        scp foot_track_net.json              <user>@<device-ip>:$HOME/labels/
                        scp foot_track_net_settings.json     <user>@<device-ip>:$HOME/labels/
                        scp hrnet_pose_w8a8.tflite           <user>@<device-ip>:$HOME/models/
                        scp hrnet.json                       <user>@<device-ip>:$HOME/labels/
                        scp hrnet_settings.json              <user>@<device-ip>:$HOME/labels/
                        scp input_video.mp4                  <user>@<device-ip>:$HOME/media/
                        ```
                      </CodeGroup>
                    </Step>

                    <Step title="Connect to device">
                      <CodeGroup>
                        ```bash SCP (SSH) theme={null}
                        # Run from your host machine — replace <user> and <device-ip>
                        ssh <user>@<device-ip>
                        ```
                      </CodeGroup>
                    </Step>

                    <Step title="Set Environment Variables">
                      ```bash Qualcomm Linux theme={null}
                      mkdir -p $HOME/{models,labels,media}
                      export MODEL_NAME_1=foot_track_net_w8a8.tflite
                      export LABELS_NAME_1=foot_track_net.json
                      export LABELS_NAME_2=foot_track_net_settings.json
                      export MODEL_NAME_2=hrnet_pose_w8a8.tflite
                      export LABELS_NAME_3=hrnet.json
                      export LABELS_NAME_4=hrnet_settings.json
                      export SRC_VIDEO_NAME=input_video.mp4
                      ```
                    </Step>

                    <Step title="Run the Pipeline">
                      ```bash theme={null}
                      gst-launch-1.0 -e --gst-debug=2 \
                        qtimlvconverter name=stage_01_preproc mode=image-batch-non-cumulative \
                        qtimltflite name=stage_01_inference delegate=external external-delegate-path=libQnnTFLiteDelegate.so \
                        external-delegate-options="QNNExternalDelegate,backend_type=htp,log_level=(string)1;" \
                        model=$HOME/models/$MODEL_NAME_1 \
                        qtimlpostprocess name=stage_01_postproc results=10 module=qpd labels=$HOME/labels/$LABELS_NAME_1 \
                        settings=$HOME/labels/$LABELS_NAME_2 \
                        qtimlvconverter name=stage_02_preproc mode=roi-batch-cumulative image-disposition=centre \
                        qtimltflite name=stage_02_inference delegate=external external-delegate-path=libQnnTFLiteDelegate.so \
                        external-delegate-options="QNNExternalDelegate,backend_type=htp,htp_performance_mode=(string)2,log_level=(string)1;" \
                        model=$HOME/models/$MODEL_NAME_2 \
                        qtimlpostprocess name=stage_02_postproc results=2 module=hrnet labels=$HOME/labels/$LABELS_NAME_3 \
                        settings=$HOME/labels/$LABELS_NAME_4 \
                        filesrc location=$HOME/media/$SRC_VIDEO_NAME ! qtdemux ! h264parse ! \
                        v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw,format=NV12 ! queue ! \
                        tee name=t_split_1 \
                        t_split_1. ! queue ! stage_01_preproc. stage_01_preproc. ! queue ! stage_01_inference. stage_01_inference. ! queue ! \
                        stage_01_postproc. stage_01_postproc. ! text/x-raw ! queue ! qtimetamux name=metamux_1 \
                        t_split_1. ! queue ! metamux_1. metamux_1. ! queue ! tee name=t_split_2 \
                        t_split_2. ! queue ! stage_02_preproc. stage_02_preproc. ! queue ! stage_02_inference. stage_02_inference. ! queue ! \
                        stage_02_postproc. stage_02_postproc. ! text/x-raw ! queue ! qtimetamux name=metamux_2 \
                        metamux_2. ! queue ! qtivoverlay ! queue ! waylandsink fullscreen=true sync=true \
                        t_split_2. ! queue ! metamux_2.
                      ```
                    </Step>
                  </Steps>
                </Accordion>
              </Accordion>
            </td>
          </tr>
        </tbody>
      </table>
    </div>
  </Tab>
</Tabs>
