# Tích hợp mô hình AI tùy chỉnh trong ứng dụng

Phần này mô tả các lộ trình có sẵn để bạn triển khai mô hình tùy chỉnh bằng Qualcomm SDK.

Để dùng mô hình tùy chỉnh trong ứng dụng AI, bạn có thể dùng Qualcomm Intelligent Multimedia SDK hoặc Qualcomm AI Runtime 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 integrate-custom-model-in-app.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="14.2222in" height="10.6667in" viewbox="0 0 1024 768" xml:space="preserve" color-interpolation-filters="sRGB" class="st18" aria-label="../_images/integrate-custom-model-in-app.svg" svgdefaultwidth="1023"><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: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-1 .st2 { fill: #d2d7e1; stroke: #d2d7e1; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2 }
.svg-1 .st3 { fill: #000000; font-family: Roboto; font-size: 1.33333em }
.svg-1 .st4 { font-size: 1em }
.svg-1 .st5 { fill: #2a2aea; stroke: #2a2aea; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2 }
.svg-1 .st6 { fill: #ffffff; font-family: Roboto; font-size: 1.33333em }
.svg-1 .st7 { fill: #000000; stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2 }
.svg-1 .st8 { fill: none; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-1 .st9 { font-size: 1em; font-weight: bold }
.svg-1 .st10 { font-size: 1em; font-style: italic }
.svg-1 .st11 { stroke: #000000; stroke-width: 2 }
.svg-1 .st12 { stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2 }
.svg-1 .st13 { marker-end: url("#mrkr4-64"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2 }
.svg-1 .st14 { fill: #000000; fill-opacity: 1; stroke: #000000; stroke-opacity: 1; stroke-width: 0.52631578947368 }
.svg-1 .st15 { fill: #000000; font-family: Symbol; font-size: 1.33333em }
.svg-1 .st16 { font-family: Roboto; font-size: 1em }
.svg-1 .st17 { font-family: Roboto; font-size: 1em; font-weight: bold }
.svg-1 .st18 { fill: none; fill-rule: evenodd; font-size: 12px; overflow: visible; stroke-linecap: square; stroke-miterlimit: 3 }</style>
<defs id="Markers">	<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-64" class="st14" 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="shape62-1" v:mid="62" v:groupcontext="shape" transform="translate(8,-144)">		<title>Sheet.62</title>		<rect x="0" y="152" width="1008" height="616" class="st1"></rect>	</g>	<g id="shape14-3" v:mid="14" v:groupcontext="shape" transform="translate(440,-666)">		<title>Sheet.14</title>		<desc>Developer’s model</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="70" cy="733" width="140" height="70"></v:textrect>		<rect x="0" y="698" width="140" height="70" rx="8" ry="8" class="st2"></rect>		<text x="28.74" y="728.2" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Developer’s <v:lf></v:lf><tspan x="47.73" dy="1.2em" class="st4">model</tspan></text>		</g>	<g id="shape27-7" v:mid="27" v:groupcontext="shape" transform="translate(84,-528.644)">		<title>Sheet.27</title>		<desc>IMSDK</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="70" cy="733" width="140" height="70"></v:textrect>		<rect x="0" y="698" width="140" height="70" rx="8" ry="8" class="st5"></rect>		<text x="45.83" y="737.8" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>IMSDK</text>		</g>	<g id="shape28-10" v:mid="28" v:groupcontext="shape" transform="translate(322,-527.144)">		<title>Sheet.28</title>		<desc>IMSDK</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="70" cy="733" width="140" height="70"></v:textrect>		<rect x="0" y="698" width="140" height="70" rx="8" ry="8" class="st5"></rect>		<text x="45.83" y="737.8" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>IMSDK</text>		</g>	<g id="shape29-13" v:mid="29" v:groupcontext="shape" transform="translate(562,-528.644)">		<title>Sheet.29</title>		<desc>IMSDK</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="70" cy="733" width="140" height="70"></v:textrect>		<rect x="0" y="698" width="140" height="70" rx="8" ry="8" class="st5"></rect>		<text x="45.83" y="737.8" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>IMSDK</text>		</g>	<g id="shape30-16" v:mid="30" v:groupcontext="shape" transform="translate(802,-528.644)">		<title>Sheet.30</title>		<desc>SNPE/QNN Native C/C++ application</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="70" cy="733" width="140" height="70"></v:textrect>		<rect x="0" y="698" width="140" height="70" rx="8" ry="8" class="st7"></rect>		<text x="5.05" y="728.2" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>SNPE/QNN Native <v:lf></v:lf><tspan x="5.96" dy="1.2em" class="st4">C/C++ application</tspan></text>		</g>	<g id="shape34-20" v:mid="34" v:groupcontext="shape" transform="translate(84,-381.572)">		<title>Sheet.34</title>		<desc>Use case supported Model supported ~15 minutes</desc>		<v:textblock v:margins="rect(4,4,4,4)" v:verticalalign="0"></v:textblock>		<v:textrect cx="70" cy="698" width="140" height="140"></v:textrect>		<rect x="0" y="628" width="140" height="140" class="st8"></rect>		<text x="4" y="650" class="st3" v:langid="1033"><v:paragraph v:spline="-1.5"></v:paragraph><v:tablist></v:tablist>Use case <tspan x="4" dy="1.5em" class="st4">supported<v:newlinechar></v:newlinechar></tspan><tspan x="4" dy="1.5em" class="st4">Model supported<v:newlinechar></v:newlinechar></tspan><tspan x="4" dy="1.5em" class="st4">~15 minutes</tspan></text>		</g>	<g id="shape35-26" v:mid="35" v:groupcontext="shape" transform="translate(323,-380.572)">		<title>Sheet.35</title>		<desc>Use case supported Model NOT supported ~ 2 days*</desc>		<v:textblock v:margins="rect(4,4,4,4)" v:verticalalign="0"></v:textblock>		<v:textrect cx="70" cy="698" width="140" height="140"></v:textrect>		<rect x="0" y="628" width="140" height="140" class="st8"></rect>		<text x="4" y="650" class="st3" v:langid="1033"><v:paragraph v:spline="-1.5"></v:paragraph><v:tablist></v:tablist>Use case <tspan x="4" dy="1.5em" class="st4">supported<v:newlinechar></v:newlinechar></tspan><tspan x="4" dy="1.5em" class="st4">Model </tspan><tspan class="st9">NOT </tspan><tspan x="4" dy="1.5em" class="st4">supported<v:newlinechar></v:newlinechar></tspan><tspan x="4" dy="1.5em" class="st4">~ 2 days</tspan><tspan class="st10">*</tspan></text>		</g>	<g id="shape36-35" v:mid="36" v:groupcontext="shape" transform="translate(564,-384.572)">		<title>Sheet.36</title>		<desc>Use case NOT supported Model NOT supported ~ 2 weeks*</desc>		<v:textblock v:margins="rect(4,4,4,4)" v:verticalalign="0"></v:textblock>		<v:textrect cx="70" cy="698" width="140" height="140"></v:textrect>		<rect x="0" y="628" width="140" height="140" class="st8"></rect>		<text x="4" y="650" class="st3" v:langid="1033"><v:paragraph v:spline="-1.5"></v:paragraph><v:tablist></v:tablist>Use case <tspan class="st9">NOT</tspan> <tspan x="4" dy="1.5em" class="st4">supported <v:newlinechar></v:newlinechar></tspan><tspan x="4" dy="1.5em" class="st4">Model </tspan><tspan class="st9">NOT </tspan><tspan x="4" dy="1.5em" class="st4">supported<v:newlinechar></v:newlinechar></tspan><tspan x="4" dy="1.5em" class="st4">~ 2 weeks</tspan><tspan class="st10">*</tspan></text>		</g>	<g id="shape37-45" v:mid="37" v:groupcontext="shape" transform="translate(802,-382.428)">		<title>Sheet.37</title>		<desc>No constraints ~ 1 week*</desc>		<v:textblock v:margins="rect(4,4,4,4)" v:verticalalign="0"></v:textblock>		<v:textrect cx="70" cy="698" width="140" height="140"></v:textrect>		<rect x="0" y="628" width="140" height="140" class="st8"></rect>		<text x="4" y="650" class="st3" v:langid="1033"><v:paragraph v:spline="-1.5"></v:paragraph><v:tablist></v:tablist>No constraints <v:newlinechar></v:newlinechar><tspan x="4" dy="1.5em" class="st4">~ 1 week</tspan><tspan class="st10">*</tspan></text>		</g>	<g id="shape44-50" v:mid="44" v:groupcontext="shape" transform="translate(1280,104) rotate(90)">		<title>Sheet.44</title>		<path d="M0 768 L32.86 768" class="st11"></path>	</g>	<g id="shape46-53" v:mid="46" v:groupcontext="shape" transform="translate(509.407,904.856) rotate(180)">		<title>Sheet.46</title>		<path d="M0 768 L351.41 768" class="st12"></path>	</g>	<g id="shape47-56" v:mid="47" v:groupcontext="shape" transform="translate(509,-631.144) rotate(4.74434E-06)">		<title>Sheet.47</title>		<path d="M0 768 L364 768" class="st12"></path>	</g>	<g id="shape48-59" v:mid="48" v:groupcontext="shape" transform="translate(926,136.856) rotate(90)">		<title>Sheet.48</title>		<path d="M0 768 L23.04 768" class="st13"></path>	</g>	<g id="shape49-65" v:mid="49" v:groupcontext="shape" transform="translate(1161,136.43) rotate(90)">		<title>Sheet.49</title>		<path d="M0 768 L25.04 768" class="st13"></path>	</g>	<g id="shape50-70" v:mid="50" v:groupcontext="shape" transform="translate(1400,136.856) rotate(90)">		<title>Sheet.50</title>		<path d="M0 768 L23.04 768" class="st13"></path>	</g>	<g id="shape51-75" v:mid="51" v:groupcontext="shape" transform="translate(1641,136.856) rotate(90)">		<title>Sheet.51</title>		<path d="M0 768 L23.04 768" class="st13"></path>	</g>	<g id="shape52-80" v:mid="52" v:groupcontext="shape" transform="translate(84,-330.534)">		<title>Sheet.52</title>		<desc>Compile application, IMSDK with eSDK</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="308.5" cy="748.553" width="617.01" height="38.8938"></v:textrect>		<rect x="0" y="729.106" width="617" height="38.8938" rx="8" ry="8" class="st2"></rect>		<text x="171.95" y="753.35" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Compile application, IMSDK with eSDK</text>		</g>	<g id="shape55-83" v:mid="55" v:groupcontext="shape" transform="translate(84,-245)">		<title>Sheet.55</title>		<desc>11 + 5 – AI Hub models</desc>		<v:textblock v:margins="rect(4,4,4,4)" v:verticalalign="0"></v:textblock>		<v:textrect cx="70" cy="733" width="140" height="70"></v:textrect>		<rect x="0" y="698" width="140" height="70" class="st8"></rect>		<text x="4" y="720" class="st3" v:langid="1033"><v:paragraph v:spline="-1.5"></v:paragraph><v:tablist></v:tablist>11 + 5 – AI Hub <tspan x="4" dy="1.5em" class="st4">models</tspan></text>		</g>	<g id="shape56-87" v:mid="56" v:groupcontext="shape" transform="translate(322,-245)">		<title>Sheet.56</title>		<desc>03 – AI Hub models</desc>		<v:textblock v:margins="rect(4,4,4,4)" v:verticalalign="0"></v:textblock>		<v:textrect cx="70" cy="733" width="140" height="70"></v:textrect>		<rect x="0" y="698" width="140" height="70" class="st8"></rect>		<text x="4" y="720" class="st3" v:langid="1033"><v:paragraph v:spline="-1.5"></v:paragraph><v:tablist></v:tablist>03 – AI Hub <tspan x="4" dy="1.5em" class="st4">models</tspan></text>		</g>	<g id="shape58-91" v:mid="58" v:groupcontext="shape" transform="translate(562,-245)">		<title>Sheet.58</title>		<desc>05 – AI Hub models</desc>		<v:textblock v:margins="rect(4,4,4,4)" v:verticalalign="0"></v:textblock>		<v:textrect cx="70" cy="733" width="140" height="70"></v:textrect>		<rect x="0" y="698" width="140" height="70" class="st8"></rect>		<text x="4" y="720" class="st3" v:langid="1033"><v:paragraph v:spline="-1.5"></v:paragraph><v:tablist></v:tablist>05 – AI Hub <tspan x="4" dy="1.5em" class="st4">models</tspan></text>		</g>	<g id="shape59-95" v:mid="59" v:groupcontext="shape" transform="translate(84,-173)">		<title>Sheet.59</title>		<desc>Developers should be able to replicate our deliverables in ~ ...</desc>		<v:textblock v:margins="rect(4,4,4,4)" v:verticalalign="0"></v:textblock>		<v:textrect cx="306" cy="736.5" width="612" height="63"></v:textrect>		<rect x="0" y="705" width="612" height="63" class="st8"></rect>		<text x="4" y="723.58" class="st15" v:langid="1033"><v:paragraph v:indentfirst="-18" v:indentleft="18" v:bullet="1"></v:paragraph><v:tablist></v:tablist><tspan class="st4" v:isbullet="true">·</tspan> <tspan class="st16">Developers should be able to replicate our deliverables in ~ 2 hours.<v:newlinechar></v:newlinechar></tspan><tspan x="4" dy="1.215em" class="st4" v:isbullet="true">·</tspan> <tspan class="st16">The times above are the times for developers to write a </tspan><tspan class="st17">new app of their own<v:newlinechar></v:newlinechar></tspan><tspan x="4" dy="1.215em" class="st4" v:isbullet="true">·</tspan> <tspan class="st16">Refer to Qualcomm AI Hub for the latest available models</tspan></text>		</g></g>
</svg>

**Dùng mô hình của riêng bạn: Thời gian triển khai mô hình**

Dùng Qualcomm IM SDK

| Trường hợp sử dụng được SDK hỗ trợ? | Mô hình được SDK hỗ trợ? | Số lượng mô hình AI Hub có sẵn | Thời gian dự kiến để tích hợp mô hình vào ứng dụng |
| --- | --- | --- | --- |
| Có | Có | 16 | 15 phút |
| Có | Không | 3 | 2 ngày |
| Không | Không | 5 | ~ 2 tuần<br><br><br>Đây là trường hợp sử dụng nâng cao. |

Dùng Qualcomm AI Runtime SDK (SNPE/QNN)

| Trường hợp sử dụng được SDK hỗ trợ? | Mô hình được SDK hỗ trợ? | Số lượng mô hình AI Hub có sẵn | Thời gian dự kiến để tích hợp mô hình vào ứng dụng |
| --- | --- | --- | --- |
| Không có quy tắc ràng buộc | Không có quy tắc ràng buộc | 0 | ~ 1 tuần<br><br><br>Đây là trường hợp sử dụng nâng cao. |

Ghi chú

Các lộ trình trung bình và nâng cao yêu cầu nhà phát triển hiểu [các nguyên tắc cơ bản của GStreamer](https://gstreamer.freedesktop.org/documentation/tutorials/index.html), hiểu [GStreamer pipelines](https://gstreamer.freedesktop.org/documentation/gstreamer/gstpipeline.html?gi-language=c), có chuyên môn về C/C++ và [môi trường build Yocto](https://docs.yoctoproject.org/2.1/yocto-project-qs/yocto-project-qs.html).

Last Published: Oct 22, 2025

[Previous Topic
Tải xuống mã nguồn để phát triển](https://docs.qualcomm.com/bundle/publicresource/80-70018-15BV/topics/download-source-code.md) [Next Topic
Tích hợp mô hình AI Hub trong ứng dụng](https://docs.qualcomm.com/bundle/publicresource/80-70018-15BV/topics/integrate-ai-hub-models.md)