A Hands-On Coding Tutorial on Qualcomm AI Hub Models for Classification, Object Detection, and Hardware-Aware Deployment Qualcomm AI Hub provides an end-to-end workflow for deploying machine learning models on Qualcomm devices, as demonstrated in a new tutorial that walks through MobileNet-V2 classification and YOLOv7 object detection. The tutorial covers model discovery, local PyTorch inference with input shape conversion, and optional cloud-based compilation and profiling on real Qualcomm hardware using an API token. This hands-on guide enables developers to bridge the gap between PyTorch model development and hardware-aware deployment on Qualcomm platforms. In this tutorial, we work through an end-to-end workflow for Qualcomm AI Hub Models https://github.com/qualcomm/ai-hub-models . We start by setting up the required package, discovering the available model collection, and loading MobileNet-V2 for local PyTorch inference. We also handle an important input-shape issue by converting NHWC image tensors into the NCHW format expected by the model. From there, we run inference on both the model’s built-in sample input and a real image, inspect top predictions, execute the official Qualcomm AI Hub CLI demo, and extend the workflow with a YOLOv7 object detection example. Also, we include an optional cloud-device section where we compile, profile, and run the model on a real Qualcomm device when an API token is available. python import subprocess, sys, os, glob, textwrap, traceback import numpy as np, torch from PIL import Image import matplotlib.pyplot as plt def pip install pkgs : subprocess.run sys.executable, "-m", "pip", "install", "-q", pkgs , check=True pip install "qai hub models" OUT DIR = "/content/qaihm out"; os.makedirs OUT DIR, exist ok=True torch.set grad enabled False def to nchw value : arr = value 0 if isinstance value, list, tuple else value t = torch.from numpy np.asarray arr, dtype=np.float32 if t.ndim == 3: t = t.unsqueeze 0 if t.ndim == 4 and t.shape 1 = 3 and t.shape -1 == 3: t = t.permute 0, 3, 1, 2 .contiguous return t We begin by importing libraries and setting up a helper function to install packages directly inside Colab. We install qai hub models, create an output directory, and disable gradient tracking since we only need inference. We also define the to nchw function to convert any input image tensor to the channel-first format expected by the model. python import pkgutil, qai hub models.models as m model ids = sorted n for , n, p in pkgutil.iter modules m. path if p and not n.startswith " " print f" {len model ids } models available. First 40:\n" print textwrap.fill ", ".join model ids :40 , 100 , "\n" from qai hub models.models.mobilenet v2 import Model as MobileNetV2 model = MobileNetV2.from pretrained .eval spec = model.get input spec input name = list spec.keys 0 print " Input:", input name, spec input name .shape, spec input name .dtype from torchvision.models import MobileNet V2 Weights IMAGENET CLASSES = MobileNet V2 Weights.IMAGENET1K V1.meta "categories" def top5 logits : if logits.ndim == 1: logits = logits.unsqueeze 0 probs = torch.softmax logits, dim=1 0 conf, idx = probs.topk 5 return IMAGENET CLASSES i , float c for c, i in zip conf, idx We discover the available Qualcomm AI Hub model packages and print the first set of model IDs to understand what is accessible. We then load the pretrained MobileNet-V2 model, read its input specification, and identify the correct input name. We also prepare the ImageNet class labels and define a top5 function to convert model logits into readable top-5 predictions. sample = model.sample inputs x = to nchw sample input name print " fed tensor shape:", tuple x.shape print "\n Top-5 for the built-in sample input:" for label, conf in top5 model x : print f" {conf:6.2%} {label}" from torchvision import transforms preprocess = transforms.Compose transforms.Resize 256 , transforms.CenterCrop 224 , transforms.ToTensor , img = None try: import urllib.request p = os.path.join OUT DIR, "input.jpg" urllib.request.urlretrieve "https://raw.githubusercontent.com/pytorch/hub/master/images/dog.jpg", p img = Image.open p .convert "RGB" except Exception as e: print " photo download skipped:", e if img is not None: preds = top5 model preprocess img .unsqueeze 0 print "\n Top-5 for the downloaded photo:" for label, conf in preds: print f" {conf:6.2%} {label}" plt.figure figsize= 5,5 ; plt.imshow img ; plt.axis "off" plt.title f"{preds 0 0 } {preds 0 1 :.1%} " ; plt.show We first run inference using the model’s built-in sample input and use to nchw to fix the tensor shape before passing it to MobileNet-V2. We then download a real image, preprocess it using standard resizing, cropping, and tensor conversion steps, and run another prediction. We finally display the image with the top predicted label to visually connect the model output to the input photo. python def run demo module, extra=None, timeout=900 : cmd = sys.executable, "-m", module, "--eval-mode", "fp", "--output-dir", OUT DIR + extra or print f"\n {' '.join cmd }" try: r = subprocess.run cmd, capture output=True, text=True, timeout=timeout print "\n".join r.stdout + r.stderr .strip .splitlines -25: except Exception as e: print " demo skipped:", e run demo "qai hub models.models.mobilenet v2.demo" try: pip install "qai hub models yolov7 " run demo "qai hub models.models.yolov7.demo" imgs = sorted glob.glob OUT DIR + "/ .png" + glob.glob OUT DIR + "/ .jpg" , key=os.path.getmtime if imgs: plt.figure figsize= 9,9 ; plt.imshow Image.open imgs -1 .convert "RGB" plt.axis "off" ; plt.title "YOLOv7 detections" ; plt.show else: print " no output image found results may have printed instead ." except Exception: print " YOLOv7 section skipped:\n", traceback.format exc We define a reusable run demo function that executes official Qualcomm AI Hub model demos from the command line. We use it to run the MobileNet-V2 demo and then install the YOLOv7 extras for object detection. We run the YOLOv7 demo, search for the generated output image, and visualize the detections if an image is created. python try: import qai hub as hub devices = hub.get devices print f"\n Authenticated. {len devices } cloud devices available." device = hub.Device "Samsung Galaxy S24 Family " sample = model.sample inputs nchw = to nchw sample input name traced = torch.jit.trace model, nchw cloud inputs = {input name: nchw.numpy } cj = hub.submit compile job model=traced, device=device, input specs=model.get input spec , options="--target runtime tflite" target = cj.get target model ; print " compiled:", cj.url pj = hub.submit profile job model=target, device=device ; print " profiling:", pj.url ij = hub.submit inference job model=target, device=device, inputs=cloud inputs out = ij.download output data dev logits = torch.from numpy np.asarray list out.values 0 0 print " Top-5 from the REAL device:" for label, conf in top5 dev logits : print f" {conf:6.2%} {label}" target.download os.path.join OUT DIR, "mobilenet v2.tflite" print " saved compiled .tflite to", OUT DIR except Exception as e: print "\n Cloud on-device section skipped — no API token configured." print " Get one at workbench.aihub.qualcomm.com, then:" print " qai-hub configure --api token YOUR TOKEN" print " detail:", str e .splitlines or type e . name 0 print "\n Tutorial complete. Outputs in:", OUT DIR We include an optional Qualcomm AI Hub cloud workflow that runs only when an API token is configured. We retrieve available cloud devices, trace the PyTorch model, compile it for TFLite, profile it on a Qualcomm device, and submit an inference job. We then download the device output, print the top predictions, save the compiled TFLite model, and finish by showing where all tutorial outputs are stored. In conclusion, we have a complete practical workflow for using Qualcomm AI Hub Models inside Colab. We learned how to load pretrained models, prepare inputs correctly, run local inference, visualize classification and detection results, and use the official demos as reproducible reference points. We also saw how the same model can move beyond local PyTorch execution into Qualcomm’s cloud-device pipeline for compilation, profiling, and real-device inference. It provides a path from simple experimentation to hardware-aware deployment with Qualcomm AI Hub. Check out the Full Codes with Notebook here. Also, feel free to follow us on and don’t forget to join our Twitter https://x.com/intent/follow?screen name=marktechpost and Subscribe to 150k+ ML SubReddit https://www.reddit.com/r/machinelearningnews/ . Wait are you on telegram? our Newsletter https://www.aidevsignals.com/ now you can join us on telegram as well. https://t.me/machinelearningresearchnews Need to partner with us for promoting your GitHub Repo OR Hugging Face Page OR Product Release OR Webinar etc.? Connect with us https://forms.gle/wbash1wF6efRj8G58 Sana Hassan, a consulting intern at Marktechpost and dual-degree student at IIT Madras, is passionate about applying technology and AI to address real-world challenges. With a keen interest in solving practical problems, he brings a fresh perspective to the intersection of AI and real-life solutions. - Sana Hassan - Sana Hassan - Sana Hassan - Sana Hassan