# Tải xuống mã nguồn để phát triển

Bạn cần thiết lập eSDK (SDK có thể mở rộng) để phát triển mã ứng dụng/plugin. Hãy xem [Hướng dẫn bắt đầu nhanh cho Bộ công cụ phát triển phần mềm Qualcomm Intelligent Multimedia (IM SDK)](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-51/introduction.html) để biết hướng dẫn về cách thiết lập eSDK cũng như cách tải xuống và biên dịch mã nguồn.

<?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 develop-own-app-imsdk-plugins.svg develop-own-app -->
<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="16.1806in" height="8.06944in" viewbox="0 0 1165 581" xml:space="preserve" color-interpolation-filters="sRGB" class="st11" aria-label="../_images/develop-own-app-imsdk-plugins.svg" svgdefaultwidth="1164"><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: #ffffff; stroke: #ffffff; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-1 .st2 { fill: #ffffff; stroke: #7f7f7f; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-1 .st3 { fill: #2a2aea; font-family: Roboto; font-size: 1.33333em; font-weight: bold }
.svg-1 .st4 { fill: #2a2aea; stroke: #2a2aea; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2 }
.svg-1 .st5 { fill: #ffffff; font-family: Roboto; font-size: 1.5em; font-weight: bold }
.svg-1 .st6 { font-size: 1em; font-weight: normal }
.svg-1 .st7 { marker-end: url("#mrkr13-44"); stroke: #000000; stroke-linecap: butt; stroke-width: 2 }
.svg-1 .st8 { fill: #000000; fill-opacity: 1; stroke: #000000; stroke-opacity: 1; stroke-width: 0.52631578947368 }
.svg-1 .st9 { marker-end: url("#mrkr4-50"); stroke: #000000; stroke-linecap: butt; stroke-width: 2 }
.svg-1 .st10 { fill: #ffffff; font-family: Roboto; font-size: 1.5em; font-weight: bold; letter-spacing: -0.00555556em }
.svg-1 .st11 { fill: none; fill-rule: evenodd; font-size: 12px; overflow: visible; stroke-linecap: square; stroke-miterlimit: 3 }</style>
<defs id="Markers">	<g id="lend13">		<path d="M 3 1 L 0 0 L 3 -1 L 3 1 " style="stroke:none"></path>	</g>	<marker id="mrkr13-44" class="st8" v:arrowtype="13" v:arrowsize="1" v:setback="5.7" refx="-5.7" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend13" transform="scale(-1.9,-1.9) "></use>	</marker>	<g id="lend4">		<path d="M 2 1 L 0 0 L 2 -1 L 2 1 " style="stroke:none"></path>	</g>	<marker id="mrkr4-50" class="st8" v:arrowtype="4" v:arrowsize="1" v:setback="3.8" refx="-3.8" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend4" transform="scale(-1.9,-1.9) "></use>	</marker></defs><g v:mid="5" v:index="1" v:groupcontext="foregroundPage">	<title>develop-own-app</title>	<v:pageproperties v:drawingscale="0.0138889" v:pagescale="0.0138889" v:drawingunits="29" v:shadowoffsetx="9" v:shadowoffsety="-9"></v:pageproperties>	<v:layer v:name="Connector" v:index="0"></v:layer>	<g id="shape2-1" v:mid="2" v:groupcontext="shape" transform="translate(18.5,-18.5)">		<title>Sheet.2</title>		<rect x="0" y="37" width="1128" height="544" rx="8" ry="8" class="st1"></rect>	</g>	<g id="shape14-3" v:mid="14" v:groupcontext="shape" transform="translate(29,-390.5)">		<title>Sheet.14</title>		<desc>Preprocessing</desc>		<v:textblock v:margins="rect(8,8,8,8)" v:verticalalign="0"></v:textblock>		<v:textrect cx="165" cy="502" width="330.01" height="158"></v:textrect>		<rect x="0" y="423" width="330" height="158" rx="4" ry="4" class="st2"></rect>		<text x="8" y="445.4" class="st3" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>Preprocessing</text>		</g>	<g id="shape1-6" v:mid="1" v:groupcontext="shape" transform="translate(47.4397,-406.817)">		<title>Sheet.1</title>		<desc>qtimlvconverter</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="144.609" cy="545.317" width="289.22" height="71.3667"></v:textrect>		<rect x="0" y="509.633" width="289.219" height="71.3667" rx="4" ry="4" class="st4"></rect>		<text x="80.66" y="550.72" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>qtimlvconverter</text>		</g>	<g id="shape3-9" v:mid="3" v:groupcontext="shape" transform="translate(421,-210.5)">		<title>Sheet.3</title>		<desc>ML inference plugins</desc>		<v:textblock v:margins="rect(8,8,8,8)" v:verticalalign="0"></v:textblock>		<v:textrect cx="162.5" cy="411.25" width="325" height="339.5"></v:textrect>		<rect x="0" y="241.5" width="325" height="339.5" rx="4" ry="4" class="st2"></rect>		<text x="8" y="267.5" class="st3" v:langid="1033"><v:paragraph v:spline="-1.5"></v:paragraph><v:tablist></v:tablist>ML inference plugins</text>		</g>	<g id="shape4-12" v:mid="4" v:groupcontext="shape" transform="translate(808.451,-29)">		<title>Sheet.4</title>		<desc>Qualcomm IM SDK postprocessing plugins</desc>		<v:textblock v:margins="rect(8,8,8,8)" v:verticalalign="0"></v:textblock>		<v:textrect cx="162.5" cy="321.105" width="325" height="519.79"></v:textrect>		<rect x="0" y="61.2096" width="325" height="519.79" rx="4" ry="4" class="st2"></rect>		<text x="8" y="87.21" class="st3" v:langid="1033"><v:paragraph v:spline="-1.5"></v:paragraph><v:tablist></v:tablist>Qualcomm IM SDK postprocessing plugins  </text>		</g>	<g id="shape5-15" v:mid="5" v:groupcontext="shape" transform="translate(439.391,-225.817)">		<title>Sheet.5</title>		<desc>Qtimlqnn Used by BIN models</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="144.609" cy="545.317" width="289.22" height="71.3667"></v:textrect>		<rect x="0" y="509.633" width="289.219" height="71.3667" rx="4" ry="4" class="st4"></rect>		<text x="107.63" y="538.57" class="st5" v:langid="1033"><v:paragraph v:spline="-1.5" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Qtimlqnn<v:newlinechar></v:newlinechar><tspan x="64.14" dy="1.5em" class="st6">Used by BIN models</tspan></text>		</g>	<g id="shape6-19" v:mid="6" v:groupcontext="shape" transform="translate(439.391,-315.817)">		<title>Sheet.6</title>		<desc>Qtimlsnpe Used by DLC models</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="144.609" cy="545.317" width="289.22" height="71.3667"></v:textrect>		<rect x="0" y="509.633" width="289.219" height="71.3667" rx="4" ry="4" class="st4"></rect>		<text x="103.19" y="538.57" class="st5" v:langid="1033"><v:paragraph v:spline="-1.5" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Qtimlsnpe<v:newlinechar></v:newlinechar><tspan x="62.01" dy="1.5em" class="st6">Used by DLC models</tspan></text>		</g>	<g id="shape7-23" v:mid="7" v:groupcontext="shape" transform="translate(439.391,-406.817)">		<title>Sheet.7</title>		<desc>qtimltflite Used by TFLite models</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="144.609" cy="545.317" width="289.22" height="71.3667"></v:textrect>		<rect x="0" y="509.633" width="289.219" height="71.3667" rx="4" ry="4" class="st4"></rect>		<text x="104.98" y="538.57" class="st5" v:langid="1033"><v:paragraph v:spline="-1.5" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>qtimltflite<v:newlinechar></v:newlinechar><tspan x="53.53" dy="1.5em" class="st6">Used by TFLite models</tspan></text>		</g>	<g id="shape8-27" v:mid="8" v:groupcontext="shape" transform="translate(827.391,-225.817)">		<title>Sheet.8</title>		<desc>qtimlvsegmentation</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="144.609" cy="545.317" width="289.22" height="71.3667"></v:textrect>		<rect x="0" y="509.633" width="289.219" height="71.3667" rx="4" ry="4" class="st4"></rect>		<text x="63.62" y="550.72" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>qtimlvsegmentation</text>		</g>	<g id="shape9-30" v:mid="9" v:groupcontext="shape" transform="translate(827.391,-315.817)">		<title>Sheet.9</title>		<desc>qtimlvdetection</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="144.609" cy="545.317" width="289.22" height="71.3667"></v:textrect>		<rect x="0" y="509.633" width="289.219" height="71.3667" rx="4" ry="4" class="st4"></rect>		<text x="81.28" y="550.72" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>qtimlvdetection</text>		</g>	<g id="shape10-33" v:mid="10" v:groupcontext="shape" transform="translate(827.391,-406.817)">		<title>Sheet.10</title>		<desc>qtimlvclassification</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="144.609" cy="545.317" width="289.22" height="71.3667"></v:textrect>		<rect x="0" y="509.633" width="289.219" height="71.3667" rx="4" ry="4" class="st4"></rect>		<text x="65.14" y="550.72" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>qtimlvclassification</text>		</g>	<g id="shape11-36" v:mid="11" v:groupcontext="shape" transform="translate(827.391,-135.817)">		<title>Sheet.11</title>		<desc>qtimlvpose</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="144.609" cy="545.317" width="289.22" height="71.3667"></v:textrect>		<rect x="0" y="509.633" width="289.219" height="71.3667" rx="4" ry="4" class="st4"></rect>		<text x="99.72" y="550.72" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>qtimlvpose</text>		</g>	<g id="shape24-39" v:mid="24" v:groupcontext="shape" v:layermember="0" transform="translate(359,-430)">		<title>Dynamic connector</title>		<path d="M0 568.5 L50.6 568.5" class="st7"></path>	</g>	<g id="shape26-45" v:mid="26" v:groupcontext="shape" transform="translate(746,-442.5)">		<title>Sheet.26</title>		<path d="M0 581 L54.4 581" class="st9"></path>	</g>	<g id="shape27-51" v:mid="27" v:groupcontext="shape" transform="translate(827.391,-45.8166)">		<title>Sheet.27</title>		<desc>qtimlvsuperresolution</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="144.609" cy="545.317" width="289.22" height="71.3667"></v:textrect>		<rect x="0" y="509.633" width="289.219" height="71.3667" rx="4" ry="4" class="st4"></rect>		<text x="56.7" y="550.72" class="st10" v:langid="1033"><v:paragraph v:spbefore="2.95" v:horizalign="1" v:bulletsize="0.166667"></v:paragraph><v:tablist></v:tablist>qtimlvsuperresolution</text>		</g></g>
</svg>

Các plugin ML tiền/hậu xử lý sau đây có sẵn với Qualcomm IM SDK. Hãy dùng những plugin này để phát triển ứng dụng của riêng bạn.

| **Plugin** | **Chức năng** |
| --- | --- |
| qtimlvconverter | Chuyển đổi video buffer đầu vào thành tensor mạng nơ-ron trong khi thực hiện chuyển đổi định dạng và thay đổi kích thước theo yêu cầu. |
| qtimlvclassification | Thực hiện hậu xử lý tensor đầu ra cho các trường hợp sử dụng phân loại. |
| qtimlvdetection | Thực hiện hậu xử lý tensor đầu ra cho các trường hợp sử dụng phát hiện. |
| qtimlvsegmentation | Thực hiện hậu xử lý tensor đầu ra cho các trường hợp sử dụng ở cấp độ pixel, như segmentation, depth-map, v.v. |
| qtimlvpose | Thực hiện hậu xử lý tensor đầu ra cho các trường hợp sử dụng pose estimation. |
| qtimlvsuperresolution | Thực hiện hậu xử lý tensor đầu ra cho các trường hợp sử dụng super resolution. |

Qualcomm IM SDK hỗ trợ các trường hợp sử dụng và mô hình liên quan sau.

| **Các trường hợp sử dụng được Qualcomm IM SDK hỗ trợ** | **Mô hình được hỗ trợ** |
| --- | --- |
| Phân loại | Mô hình giống như Mobilenet. Qualcomm AI Hub hiện hỗ trợ 11 mô hình phân loại. Các mô hình mới sẽ tiếp tục được thêm vào AI Hub. |
| Phát hiện | Các mô hình như ssd-mobilenet, yolov5, yolo-nas và yolov8 |
| Segmentation | Các mô hình như deeplabv3\_resnet và ffnet |
| Pose detection | Các mô hình như posenet\_mobilenet |
| Super resolution | Các mô hình như QuickSRNet, XLSR, v.v. |

Ghi chú

Danh sách các mô hình đã được xác minh từ Qualcomm AI Hub có trong [Tích hợp mô hình AI Hub trong ứng dụng](https://docs.qualcomm.com/doc/80-70018-15BV/topic/integrate-ai-hub-models.html).

Bạn có thể sử dụng nhiều mô hình khác có yêu cầu hậu xử lý tương tự, tuy nhiên, bạn nên xác minh khả năng hỗ trợ hậu xử lý trong các plugin Qualcomm IM SDK có liên quan trước khi tích hợp mô hình của riêng bạn.

Last Published: Oct 22, 2025

[Previous Topic
Phát triển ứng dụng AI/ML của riêng bạn bằng Qualcomm IM SDK](https://docs.qualcomm.com/bundle/publicresource/80-70018-15BV/topics/develop-your-own-application-im-sdk.md) [Next Topic
Tích hợp mô hình AI tùy chỉnh trong ứng dụng](https://docs.qualcomm.com/bundle/publicresource/80-70018-15BV/topics/integrate-custom-model.md)