# Get started

Source: [https://docs.qualcomm.com/doc/80-70017-54/topic/getting-started.html](https://docs.qualcomm.com/doc/80-70017-54/topic/getting-started.html)

This guide explains how to run LiteRT models on the Qualcomm Linux Development
        Kit.

Before you get started, do the following:

1. Set up the Qualcomm Linux Development Kit. For instructions, see the following:
    - QCS6490/QCS5430: [RB3 Gen 2 Quick Start Guide](bundle/publicresource/topics/80-70017-253)
    - QCS9075: [Qualcomm IQ-9 Beta Evaluation Kit Quick
                            Start Guide](https://docs.qualcomm.com/bundle/80-70015-263/resource/80-70015-263_REV_AE_Qualcomm_IQ-9_Beta_Evaluation_Kit_Quick_Start_Guide.pdf)
    - QCS8275: [Qualcomm IQ-8 Beta Evaluation Kit Quick
                            Start Guide](https://docs.qualcomm.com/bundle/80-70017-263/resource/80-70017-263_REV_AA_Qualcomm_IQ-8_Beta_Evaluation_KitQuick_Start_Guide.pdf)

Note: The QCS9075 and QCS8275 quick start guides are
                    available for authorized users only. To upgrade your access, go to [www.qualcomm.com/support/working-with-qualcomm](https://www.qualcomm.com/support/working-with-qualcomm).
2. Connect the Qualcomm Linux Development Kit to a monitor using HDMI.
3. Upgrade the Qualcomm Linux Development Kit to the latest software release available
                on [CodeLinaro Artifactory Service](https://artifacts.codelinaro.org/ui/native/qli-ci/flashable-binaries/).
4. Flash the image to the device. For instructions, see [Flash images](https://docs.qualcomm.com/bundle/publicresource/topics/80-70017-254/flash_images.html).

## Run a LiteRT model using the Gstreamer-based IM SDK

Source: [https://docs.qualcomm.com/doc/80-70017-54/topic/getting-started.html](https://docs.qualcomm.com/doc/80-70017-54/topic/getting-started.html)

The Qualcomm Linux Development Kit comes with precompiled LiteRT sample applications
        to run sample LiteRT models.

The gst-ai-classification sample application uses the IM SDK plug-ins to run a LiteRT
            classification model on the Qualcomm Linux Development Kit with hardware acceleration
            using LiteRT delegates.

Figure : Workflow to run a LiteRT model using IM SDK
            
            <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by Microsoft Visio, SVG Export workflow-to-run-tflite-model-using-qualcomm-im-sdk.svg Page-1 -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="12.8802in" height="4.20833in" viewbox="0 0 927.375 303" xml:space="preserve" color-interpolation-filters="sRGB" class="st14"><v:documentproperties v:langid="1033" v:viewmarkup="false">	<v:userdefs>		<v:ud v:nameu="msvNoAutoConnect" v:val="VT0(1):26"></v:ud>	</v:userdefs></v:documentproperties>
<style>.svg-1 .st1 { fill: #f7f8fa; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-1 .st2 { fill: none; marker-end: url("#mrkr5-8"); marker-start: url("#mrkr5-6"); stroke: #3253dc; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-1 .st3 { fill: #3253dc; fill-opacity: 1; stroke: #3253dc; stroke-opacity: 1; stroke-width: 0.28409090909091 }
.svg-1 .st4 { fill: none; stroke: #3253dc; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-1 .st5 { fill: #000000; font-family: Arial; font-size: 0.75em }
.svg-1 .st6 { font-size: 1em }
.svg-1 .st7 { fill: #3253dc; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 6.375 }
.svg-1 .st8 { fill: #3253dc; fill-opacity: 1; stroke: #3253dc; stroke-opacity: 1; stroke-width: 0.71669477234401 }
.svg-1 .st9 { marker-end: url("#mrkr5-52"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-1 .st10 { fill: #000000; fill-opacity: 1; stroke: #000000; stroke-opacity: 1; stroke-width: 0.28409090909091 }
.svg-1 .st11 { fill: none; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-1 .st12 { marker-end: url("#mrkr5-52"); marker-start: url("#mrkr5-104"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-1 .st13 { stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-1 .st14 { fill: none; fill-rule: evenodd; font-size: 12px; overflow: visible; stroke-linecap: square; stroke-miterlimit: 3 }</style>
<defs id="Markers">	<g id="lend5">		<path d="M 2 1 L 0 0 L 1.98117 -0.993387 C 1.67173 -0.364515 1.67301 0.372641 1.98465 1.00043 " style="stroke:none"></path>	</g>	<marker id="mrkr5-6" class="st3" v:arrowtype="5" v:arrowsize="2" v:setback="6.16" refx="6.16" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend5" transform="scale(3.52) "></use>	</marker>	<marker id="mrkr5-8" class="st3" v:arrowtype="5" v:arrowsize="2" v:setback="6.16" refx="-6.16" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend5" transform="scale(-3.52,-3.52) "></use>	</marker>	<marker id="mrkr5-46" class="st8" v:arrowtype="5" v:arrowsize="2" v:setback="2.44176" refx="-2.4417647058824" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend5" transform="scale(-1.3952941176471,-1.3952941176471) "></use>	</marker>	<marker id="mrkr5-52" class="st10" v:arrowtype="5" v:arrowsize="2" v:setback="6.16" refx="-6.16" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend5" transform="scale(-3.52,-3.52) "></use>	</marker>	<marker id="mrkr5-104" class="st10" v:arrowtype="5" v:arrowsize="2" v:setback="5.8" refx="5.8" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend5" transform="scale(3.52) "></use>	</marker></defs><g v:mid="0" v:index="1" v:groupcontext="foregroundPage">	<title>Page-1</title>	<v:pageproperties v:drawingscale="1" v:pagescale="1" v:drawingunits="19" v:shadowoffsetx="9" v:shadowoffsety="-9"></v:pageproperties>	<v:layer v:name="Connector" v:index="0"></v:layer>	<g id="shape1002-1" v:mid="1002" v:groupcontext="shape" transform="translate(18.2813,-18)">		<title></title>		<rect x="0" y="36" width="891.094" height="267" class="st1"></rect>	</g>	<g id="shape1000-3" v:mid="1000" v:groupcontext="shape" transform="translate(306.562,-26.0619)">		<title></title>		<rect x="0" y="82.5" width="139.5" height="220.5" class="st2"></rect>	</g>	<g id="shape1-9" v:mid="1" v:groupcontext="shape" transform="translate(323.812,-179.437)">		<title></title>		<desc>LiteRT inferencing</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="49.5" cy="280.5" width="99" height="45"></v:textrect>		<rect x="0" y="258" width="99" height="45" class="st4"></rect>		<text x="12.98" y="283.2" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>LiteRT inferencing</text>		</g>	<g id="shape3-12" v:mid="3" v:groupcontext="shape" transform="translate(323.812,-107.437)">		<title></title>		<desc>Delegate (CPU, GPU, external)</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="49.5" cy="280.5" width="99" height="45"></v:textrect>		<rect x="0" y="258" width="99" height="45" class="st4"></rect>		<text x="31.49" y="277.8" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Delegate<v:lf></v:lf><tspan x="6.24" dy="1.2em" class="st6">(CPU, GPU, external)</tspan></text>		</g>	<g id="shape4-16" v:mid="4" v:groupcontext="shape" transform="translate(323.812,-35.4369)">		<title></title>		<desc>External: Qualcomm Hexagon Tensor Processor</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="49.5" cy="280.5" width="99" height="45"></v:textrect>		<rect x="0" y="258" width="99" height="45" class="st4"></rect>		<text x="31.74" y="272.4" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>External: <v:lf></v:lf><tspan x="8.48" dy="1.2em" class="st6">Qualcomm Hexagon </tspan><tspan x="13.99" dy="1.2em" class="st6">Tensor Processor</tspan></text>		</g>	<g id="shape5-21" v:mid="5" v:groupcontext="shape" transform="translate(205.687,-179.437)">		<title></title>		<desc>Preprocessing</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="40.5" cy="280.5" width="81" height="45"></v:textrect>		<rect x="0" y="258" width="81" height="45" class="st4"></rect>		<text x="11.74" y="283.2" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Preprocessing</text>		</g>	<g id="shape6-24" v:mid="6" v:groupcontext="shape" transform="translate(205.687,-35.4369)">		<title></title>		<desc>LiteRT model</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="40.5" cy="280.5" width="81" height="45"></v:textrect>		<rect x="0" y="258" width="81" height="45" class="st4"></rect>		<text x="13.74" y="283.2" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>LiteRT model</text>		</g>	<g id="shape7-27" v:mid="7" v:groupcontext="shape" transform="translate(97.6875,-179.437)">		<title></title>		<desc>Camera source</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="40.5" cy="280.5" width="81" height="45"></v:textrect>		<rect x="0" y="258" width="81" height="45" class="st4"></rect>		<text x="9.74" y="283.2" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Camera source</text>		</g>	<g id="shape8-30" v:mid="8" v:groupcontext="shape" transform="translate(458.812,-179.437)">		<title></title>		<desc>Postprocessing</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="40.5" cy="280.5" width="81" height="45"></v:textrect>		<rect x="0" y="258" width="81" height="45" class="st4"></rect>		<text x="9.73" y="283.2" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Postprocessing</text>		</g>	<g id="shape9-33" v:mid="9" v:groupcontext="shape" transform="translate(618.562,-152.437)">		<title></title>		<desc>qtivcomposer (Layer composition)</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="45.5625" cy="258" width="91.13" height="90"></v:textrect>		<rect x="0" y="213" width="91.125" height="90" class="st4"></rect>		<text x="18.8" y="255.3" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>qtivcomposer<v:lf></v:lf><tspan x="6.05" dy="1.2em" class="st6">(Layer composition)</tspan></text>		</g>	<g id="group19-37" transform="translate(61.6875,-184.462) scale(-1,1)" v:mid="19" v:groupcontext="group">		<title>Security Camera</title>		<g id="shape20-38" v:mid="20" v:groupcontext="shape">			<title></title>			<path d="M37.83 282.18 L26.73 290.92 L17.99 287.32 L17.99 288.1 C17.99 292.05 14.75 295.29 10.79 295.29 L3.08 295.29						 L3.08 303 L0 303 L0 268.05 L3.08 268.05 L3.08 292.21 L10.79 292.21 C13.05 292.21 14.9 290.36 14.9 288.1						 L14.9 286.09 L5.6 282.18 L10.33 270.77 L37.83 282.18 ZM16.45 283.47 C17.58 283.47 18.5 282.54 18.5 281.41						 C18.5 280.28 17.58 279.36 16.45 279.36 C15.32 279.36 14.39 280.28 14.39 281.41 C14.39 282.54 15.32 283.47						 16.45 283.47 Z" class="st7"></path>		</g>		<g id="shape21-40" v:mid="21" v:groupcontext="shape" transform="translate(32.1739,-12.1808)">			<title></title>			<path d="M4.57 297.86 L8.33 299.4 L3.75 303 L0 301.46 L4.57 297.86 Z" class="st7"></path>		</g>	</g>	<g id="group22-42" transform="translate(862.875,-181.463)" v:mid="22" v:groupcontext="group">		<title>Monitor</title>		<g id="shape23-43" v:mid="23" v:groupcontext="shape" transform="translate(0,-2.77538)">			<title></title>			<path d="M38.48 268.05 C39.59 268.05 40.5 268.98 40.5 270.11 L40.5 294.78 C40.5 295.91 39.59 296.83 38.48 296.83						 L24.3 296.83 L24.3 299.92 L29.36 299.92 L29.36 303 L11.14 303 L11.14 299.92 L16.2 299.92 L16.2 296.83						 L2.03 296.83 C0.91 296.83 0 295.91 0 294.78 L0 270.11 C0 268.98 0.91 268.05 2.03 268.05 L38.48 268.05						 ZM37.46 293.75 L37.46 271.13 L3.04 271.13 L3.04 293.75 L37.46 293.75 Z" class="st7"></path>		</g>	</g>	<g id="shape26-47" v:mid="26" v:groupcontext="shape" transform="translate(61.6875,-201.937)">		<title></title>		<path d="M0 303 L29.84 303" class="st9"></path>	</g>	<g id="shape27-53" v:mid="27" v:groupcontext="shape" v:layermember="0" transform="translate(178.688,-192.188)">		<title>Dynamic connector</title>		<path d="M0 294 L20.84 294" class="st9"></path>	</g>	<g id="shape29-58" v:mid="29" v:groupcontext="shape" v:layermember="0" transform="translate(422.812,-192.937)">		<title>Dynamic connector.29</title>		<path d="M0 294 L29.84 294" class="st9"></path>	</g>	<g id="shape30-63" v:mid="30" v:groupcontext="shape" v:layermember="0" transform="translate(539.812,-192.937)">		<title>Dynamic connector.30</title>		<path d="M0 294 L72.59 294" class="st9"></path>	</g>	<g id="shape31-68" v:mid="31" v:groupcontext="shape" transform="translate(543.187,-201.937)">		<title></title>		<desc>Classification</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="36" cy="296.25" width="72" height="13.5"></v:textrect>		<rect x="0" y="289.5" width="72" height="13.5" class="st11"></rect>		<text x="9.49" y="298.95" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Classification</text>		</g>	<g id="shape33-71" v:mid="33" v:groupcontext="shape" transform="translate(536.437,-185.25)">		<title></title>		<desc>Metadata</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="36" cy="296.25" width="72" height="13.5"></v:textrect>		<rect x="0" y="289.5" width="72" height="13.5" class="st11"></rect>		<text x="17.24" y="298.95" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Metadata</text>		</g>	<g id="shape34-74" v:mid="34" v:groupcontext="shape" transform="translate(736.687,-152.437)">		<title></title>		<desc>Waylandsink (Display rendering)</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="45.5625" cy="258" width="91.13" height="90"></v:textrect>		<rect x="0" y="213" width="91.125" height="90" class="st4"></rect>		<text x="20.05" y="255.3" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Waylandsink<v:lf></v:lf><tspan x="7.55" dy="1.2em" class="st6">(Display rendering)</tspan></text>		</g>	<g id="shape36-78" v:mid="36" v:groupcontext="shape" transform="translate(286.687,-201.937)">		<title></title>		<path d="M0 303 L30.96 303" class="st9"></path>	</g>	<g id="shape37-83" v:mid="37" v:groupcontext="shape" transform="translate(286.687,-57.9369)">		<title></title>		<path d="M0 303 L30.96 303" class="st9"></path>	</g>	<g id="shape39-88" v:mid="39" v:groupcontext="shape" transform="translate(709.687,-201.937)">		<title></title>		<path d="M0 303 L18 303 L20.84 303" class="st9"></path>	</g>	<g id="shape40-93" v:mid="40" v:groupcontext="shape" transform="translate(827.812,-201.937)">		<title></title>		<path d="M0 303 L29.5 303" class="st9"></path>	</g>	<g id="shape41-98" v:mid="41" v:groupcontext="shape" transform="translate(675.187,195.563) rotate(90)">		<title></title>		<path d="M5.8 303 L6.16 303 L20.84 303" class="st12"></path>	</g>	<g id="shape42-106" v:mid="42" v:groupcontext="shape" transform="translate(675.187,123.563) rotate(90)">		<title></title>		<path d="M5.8 303 L6.16 303 L20.84 303" class="st12"></path>	</g>	<g id="shape43-113" v:mid="43" v:groupcontext="shape" transform="translate(102.187,-225.75)">		<title></title>		<desc>qtiqmmfsrc</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="36" cy="296.25" width="72" height="13.5"></v:textrect>		<rect x="0" y="289.5" width="72" height="13.5" class="st11"></rect>		<text x="14" y="298.95" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>qtiqmmfsrc</text>		</g>	<g id="shape44-116" v:mid="44" v:groupcontext="shape" transform="translate(210.187,-225.75)">		<title></title>		<desc>qtimlvconverter</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="36" cy="296.25" width="72" height="13.5"></v:textrect>		<rect x="0" y="289.5" width="72" height="13.5" class="st11"></rect>		<text x="5.49" y="298.95" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>qtimlvconverter</text>		</g>	<g id="shape45-119" v:mid="45" v:groupcontext="shape" transform="translate(337.312,-225.75)">		<title></title>		<desc>qtimltflite</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="36" cy="296.25" width="72" height="13.5"></v:textrect>		<rect x="0" y="289.5" width="72" height="13.5" class="st11"></rect>		<text x="18.25" y="298.95" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>qtimltflite</text>		</g>	<g id="shape46-122" v:mid="46" v:groupcontext="shape" transform="translate(452.625,-225.75)">		<title></title>		<desc>qtiqmlvclassification</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="45.5625" cy="296.25" width="91.13" height="13.5"></v:textrect>		<rect x="0" y="289.5" width="91.125" height="13.5" class="st11"></rect>		<text x="5.8" y="298.95" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>qtiqmlvclassification</text>		</g>	<g id="shape47-125" v:mid="47" v:groupcontext="shape" v:layermember="0" transform="translate(190.385,-201.937)">		<title>Dynamic connector.47</title>		<path d="M0 303 L0 240 L483.3 240" class="st13"></path>	</g>	<g id="shape48-128" v:mid="48" v:groupcontext="shape" v:layermember="0" transform="translate(664.687,-264.937)">		<title>Dynamic connector.48</title>		<path d="M9 303 L9 319.34" class="st9"></path>	</g>	<g id="shape50-133" v:mid="50" v:groupcontext="shape" transform="translate(405,-266.25)">		<title></title>		<desc>Live stream</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="36" cy="296.25" width="72" height="13.5"></v:textrect>		<rect x="0" y="289.5" width="72" height="13.5" class="st11"></rect>		<text x="12.74" y="298.95" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Live stream</text>		</g></g>
</svg>

The gst-ai-classification sample application does the following:

1. Opens the IMX577 camera on the Qualcomm Linux Development Kit with a specific
                resolution and frame rate; for example, 1080p at 30 fps
2. Preprocesses each camera frame to provide the input data to a classification
                    model
    For example, the gst-ai-classification sample application:

    1. Downscales a 1080p frame to a 224 x 224 resolution
    2. Normalizes the input frame based on the model requirements
3. The qtimltflite IM SDK plug-in, built on top of the LiteRT C++ API, does the
                    following:
    1. Loads the sample LiteRT classification model
    2. Performs inference on the model using hardware acceleration
4. Postprocesses the output from the inference, that is, extracts the label with the
                highest predicted probability within the output tensor
5. Overlays the inference result on the original camera input image and displays it on
                the connected monitor

### Download and copy a sample model

To download and copy a model and a label file to the device, do the following:

1. Go to [Qualcomm^®^ AI Hub](https://aihub.qualcomm.com/iot/models/inception_v3_quantized?searchTerm=inception) and
                    download the Inception-v3-Quantized model. ![](data:image/png;base64,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)
Note: The
                        gst-ai-classification sample application is demonstrated for
                    QCS6490.
2. To download the corresponding label file, run the following
                        command:

        wget https://github.com/quic/ai-hub-models/blob/main/qai_hub_models/labels/imagenet_labels.txtCopy to clipboard

Note: The model is hosted on Qualcomm AI Hub and the
                        corresponding label file is hosted on QUIC GitHub.
3. To copy the models and label files to the device using the secure copy protocol
                    (SCP), run the following
                        commands:

        # For SCP, run the following command:
        ssh root@[ip-addr]
        mount -o remount,rw /
        exitCopy to clipboard

        # Copy files securely
        scp imagenet_labels.txt root@[ip-addr]:/opt/
        scp inception_v3_quantized.tflite root@[ip-addr]:/opt/
        Copy to clipboard

Note: To get the IP address of the
                        Qualcomm Linux Development Kit, run the following
                        command:

        ifconfig wlan0Copy to clipboard

Note: When prompted for a password, enter
                            <var class="keyword varname">oelinux123</var>.

### Execute a LiteRT model with a sample application

1. To run inference using
                        LiteRT:

        ssh root@[ip-addr]Copy to clipboard

        # Setup Wayland Display environment
        export XDG_RUNTIME_DIR=/dev/socket/weston && export WAYLAND_DISPLAY=wayland-1Copy to clipboard

    1. Modify the config\_classification.json file in the
                                opt folder, as follows:

            {
              "file-path": "/opt/video.mp4",
              "ml-framework": "tflite",
              "model": "/opt/inception_v3_quantized.tflite",
              "labels": "/opt/imagenet_labels.txt",
              "constants": "Mobilenet,q-offsets=<38.0>,q-scales=<0.15008972585201263>;"
            }Copy to clipboard

Note: You must push the video.mp4
                                file to the opt folder.
    2. Run the classification sample
                            application:

            gst-ai-classification --config-file=/opt/config_classification.jsonCopy to clipboard
2. To run the sample application using a custom classification model and labels
                    file, use the following arguments:
    - `--model`
    - `--labels`

    1. Modify the config\_classification.json file in the
                                opt folder, as follows:

            {
              "file-path": "/opt/video.mp4",
              "model":"/opt/custom_model.tflite",
              "ml-framework": "tflite",
              "labels": "/opt/custom_labels.txt"
            }Copy to clipboard
    2. Run the classification sample
                            application:

            gst-ai-classification --config-file=/opt/config_classification.jsonCopy to clipboard
3. To stop the sample application, press CTRL+C.

When the sample application is running, it displays the camera stream on the
                connected monitor with inference results overlaid on the frame.

## Run a LiteRT model using a native LiteRT sample application

Source: [https://docs.qualcomm.com/doc/80-70017-54/topic/getting-started.html](https://docs.qualcomm.com/doc/80-70017-54/topic/getting-started.html)

You can run LiteRT models using a sample LiteRT application called label\_image, which
        is a part of the TensorFlow repository.

The label\_image sample application and the LiteRT library are cross-compiled with
            Qualcomm Linux and installed on the target device.

The label\_image sample application does the following:

1. Loads a classification LiteRT model
2. Performs inference on an image using a delegate to accelerate the model on Qualcomm
                hardware

To run a model using the label\_image sample application, do the following:

1. Download the sample model, corresponding labels, and an example image:
    - BMP file from [here](https://github.com/sourcecode369/tensorflow-1/tree/master/tensorflow/lite/examples/label_image/testdata/)
    - MobileNet LiteRT model from [here](https://github.com/emgucv/models/blob/master/mobilenet_v1_1.0_224_float_2017_11_08/mobilenet_v1_1.0_224.tflite)
2. Run the following commands on the host
                machine:

        wget http://download.tensorflow.org/models/mobilenet_v1_2018_08_02/mobilenet_v1_1.0_224_quant.tgzCopy to clipboard

        tar -xvf mobilenet_v1_1.0_224_quant.tgzCopy to clipboard

        wget https://storage.googleapis.com/download.tensorflow.org/models/mobilenet_v1_1.0_224_frozen.tgzCopy to clipboard

        tar -xvf mobilenet_v1_1.0_224_frozen.tgzCopy to clipboard

        # For SCP, run the following command:
        ssh root@[ip-addr]
        mount -o remount,rw /
        exitCopy to clipboard

        scp mobilenet_v1_1.0_224_quant.tflite root@[ip-addr]:/opt/
        scp grace_hopper.bmp root@[ip-addr]:/opt/
        scp mobilenet_v1_1.0_224/labels.txt root@[ip-addr]:/opt/
        scp mobilenet_v1_1.0_224.tflite root@[ip-addr]:/opt/
        Copy to clipboard
3. To run an inference using one of the following delegates, do the following:
    - To run the model on the Arm^®^ CPU using the XNNPACK
                        delegate:

            label_image -l /opt/labels.txt -i /opt/grace_hopper.bmp -m /opt/mobilenet_v1_1.0_224_quant.tflite -c 10 -p 1 --xnnpack_delegate 1Copy to clipboard
    - To run the model on the Qualcomm^®^ Adreno™ GPU using the GPU
                        delegate:

            label_image -l /opt/labels.txt -i /opt/grace_hopper.bmp -m /opt/mobilenet_v1_1.0_224.tflite -c 10 -p 1 --gl_backend 1Copy to clipboard

Last Published: Jan 06, 2025

[Previous Topic
Overview](https://docs.qualcomm.com/bundle/publicresource/80-70017-54/topics/tflite-landing-page.md) [Next Topic
LiteRT architecture](https://docs.qualcomm.com/bundle/publicresource/80-70017-54/topics/arch.md)