Generated banner for Matlab Integrate Pytorch Vision
Generated logo for Matlab Integrate Pytorch Vision

Matlab Integrate Pytorch Vision

MathWorksOfficialCreated by MathWorks

  • Skill
  • Tool integration
  • Software development
  • BSD-2-Clause
  • Low risk

From the author

Creates MATLAB interfaces to Python image processing and computer vision models from GitHub repositories or pip-installable packages using MPyReq. Use when asked to interface MATLAB with a Python CV/image model (segmentation, depth estimation, object detection, image generation, super-resolution, etc.), given a GitHub repo URL for an image/vision model, or asked to create an MPyReq demo for a deep-learning vision pipeline. Do NOT use for general-purpose Python-MATLAB interfacing, non-vision models (NLP, tabular, audio), model deployment/serving, or MATLAB-only image processing workflows.
— the description by MathWorks

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

This skill provides a structured workflow for integrating Python-based computer vision and image processing models into MATLAB environments. It leverages the MPyReq framework to manage Python dependencies, model weights, and environment setup. The skill guides users through analyzing repository requirements, generating automated setup scripts, and implementing inference interfaces that handle data conversion between MATLAB and PyTorch, ensuring proper tensor reordering and image handling.

What it does

  • Analyzes Python vision model repositories to determine dependency and installation requirements.
  • Generates MATLAB scripts to automate Python environment setup and package installation via MPyReq.
  • Provides patterns for handling various model types, including pip packages, git repositories, and torch.hub models.
  • Facilitates data conversion between MATLAB image formats and PyTorch NCHW tensor structures.
  • Offers guidance on mapping model outputs, such as bounding boxes and segmentation masks, back to MATLAB-compatible formats.
  • Includes testing procedures to verify model loading and inference within the MATLAB environment.

When to use it

  • When you need to call a Python-based computer vision or image processing model from within MATLAB.
  • When you have a GitHub repository URL for a vision model and want to create a functional MATLAB demo.
  • When you need to manage complex Python dependencies for deep learning models inside a MATLAB project.
  • When you are tasked with creating an MPyReq wrapper for a specific vision pipeline.

Advantages

  • Automates the complex process of setting up Python environments for MATLAB users.
  • Ensures consistent handling of image data conversions between MATLAB and PyTorch.
  • Provides standardized patterns for common integration scenarios, reducing manual configuration errors.
  • Includes built-in verification steps to ensure the environment and model are correctly configured.

Usage examples

“Create a MATLAB interface for the SAM2 model from its GitHub repository.”
The agent will analyze the SAM2 repository, generate an MPyReq setup script, and provide a MATLAB demo script for running inference.
“How do I use a PyTorch-based image segmentation model in MATLAB?”
The agent will guide you through installing the model using MPyReq and provide code to convert MATLAB images to the required NCHW tensor format.

Install

  1. Download the skill as a ZIP:

    https://mp-staging.autogineer.com/agent-skills/matlab/matlab-integrate-pytorch-vision/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip matlab-integrate-pytorch-vision.zip -d .agents/skills

Documentation by MathWorks

MPyReq MATLAB Interface Builder

Build a MATLAB interface to a Python/PyTorch model repository using the MPyReq framework.

When to Use

  • User asks to interface MATLAB with a Python image processing or computer vision model (segmentation, depth estimation, object detection, image generation, super-resolution, pose estimation, optical flow, salient object detection, etc.)

  • User provides a GitHub repository URL for a vision/image model and wants to call it from MATLAB

  • User asks to "create an MPyReq wrapper" or "MPyReq demo" for an image/CV model

  • User wants to run a pip-installable vision model library (e.g., Cellpose, SAM2, Depth-Pro, BiRefNet, StarDist) from MATLAB

When Not to Use

  • General-purpose Python-MATLAB interfacing (no vision/image model involved)

  • Non-vision models: NLP, audio, tabular, reinforcement learning, time-series

  • Model deployment, containerization, or inference servers

  • Pure MATLAB image processing workflows with no Python dependency

  • Creating Python code (this skill creates MATLAB code that calls Python)

Prerequisites: MPyReq on the MATLAB Path

Before generating any demo script, verify that MPyReq is available. Run which MPyReq via the MATLAB MCP server (if available) or ask the user to confirm.

If MPyReq is NOT on the MATLAB path:
  1. Download MPyReq from the MATLAB File Exchange: https://mathworks.com/matlabcentral/fileexchange/182230-matlab-based-python-requirements-manager

  2. Install it — either:

    • Open the downloaded .mltbx file in MATLAB (double-click), which installs it as a MATLAB Add-On automatically, or

    • Extract the files and add the folder containing MPyReq.m to the MATLAB path:

      addpath("/path/to/mpyreq");
      savepath; % persist across sessions
  3. Verify by running which MPyReq in MATLAB — it should return the path to MPyReq.m.

Do not proceed with demo generation until MPyReq is confirmed on the path.

Input

Ask the user for:

  1. GitHub repository URL — the Python model repository to interface with

  2. What the model does (optional) — to help identify the right inference example

Step 1: Analyze the Repository

Fetch and analyze the GitHub repository to determine:

  • Python version requirement — check setup.py, setup.cfg, pyproject.toml, or README for the required Python version. Default to "3.12" if not specified. Use "3.11" if the project needs older compatibility.

  • Installation method — determine how the project is installed:

    • If it uses torch.hub.load(): only need torch and torchvision as pip packages (model downloads automatically)

    • If it's a pip-installable package: use MPyReq.pipPackage()

    • If it's a non-packaged git repo: use MPyReq.gitrepo() + MPyReq.requirementTextFile() if a requirements.txt exists

    • If it needs pip install git+<url>: use MPyReq.pipPackage("git+<url>", Name="<ProjectName>")

  • Additional dependencies — any extra pip packages needed (e.g., torch, torchvision, etc.)

  • Model weights — determine how weights are loaded:

    • torch.hub.load() — weights download automatically, no MPyReq.weights() needed

    • Direct URL download — use MPyReq.weights() with the checkpoint URL

    • HuggingFace .from_pretrained() — weights download automatically via the library

  • Inference example — locate the primary inference/prediction code in the README or example scripts

  • Preprocessing requirements — check if the model requires specific input normalization (e.g., ImageNet mean/std), resizing, or center cropping

Step 2: Generate the MPyReq Setup Script

Create a MATLAB .m file that sets up the Python environment. Follow these patterns from the demo files:

MANDATORY: Installation folder setup

Every generated script MUST begin with MPyReq.setInstallFolder(). This tells MPyReq where to download Python, packages, and model weights. Without this, MPyReq will show a GUI dialog which blocks non-interactive execution. Also include MPyReq.autoAcceptDownloadPrompts(true) to avoid interactive confirmation prompts.

% Set installation folder (SSD recommended, ~15+ GB free space)
% Change this path to a suitable location on your machine
MPyReq.setInstallFolder(fullfile(tempdir, "MPyReq"));
MPyReq.autoAcceptDownloadPrompts(true);
Pattern A: Simple pip package (like Cellpose)
MPyReq.setInstallFolder(fullfile(tempdir, "MPyReq"));
MPyReq.autoAcceptDownloadPrompts(true);
MPyReq.python("3.12");
MPyReq.pipPackage("<package_name>");
Pattern B: Git repo as pip package (like SAM2)
MPyReq.setInstallFolder(fullfile(tempdir, "MPyReq"));
MPyReq.autoAcceptDownloadPrompts(true);
MPyReq.python("3.12");
MPyReq.pipPackage("git+https://github.com/<org>/<repo>.git", Name="<RepoName>");
Pattern C: Git repo + requirements.txt (like VGGT, BiRefNet)
MPyReq.setInstallFolder(fullfile(tempdir, "MPyReq"));
MPyReq.autoAcceptDownloadPrompts(true);
MPyReq.python("3.11");
MPyReq.gitrepo("https://github.com/<org>/<repo>.git");
reqTxt = MPyReq.pathTo("<repo>") + filesep + "requirements.txt";
MPyReq.requirementTextFile(reqTxt, Name="<repo>Packages");
Pattern D: torch.hub model (like DINOv2, ResNet, etc.)

When the model uses torch.hub.load(), no git clone or weights download is needed — just install torch/torchvision:

MPyReq.setInstallFolder(fullfile(tempdir, "MPyReq"));
MPyReq.autoAcceptDownloadPrompts(true);
MPyReq.python("3.12");
MPyReq.pipPackage("torch");
MPyReq.pipPackage("torchvision");
% Model loads automatically via torch.hub:
model = py.torch.hub.load('org/repo', 'model_name');
Weights download pattern

Only needed when weights are NOT handled by torch.hub.load() or .from_pretrained():

MPyReq.weights("<weights_url>", DownloadTo=MPyReq.pathTo("<RepoName>") + filesep + "checkpoints");

Step 3: Create the MATLAB Inference Interface

Translate the Python inference example to MATLAB. Refer to these resource files for conversion rules and patterns:

Step 4: Assemble the Final Script

Create a single demo<ModelName>.m file with clear sections:

%% Setup Python Environment
% Start with clean state (only if switching projects)
% terminate(pyenv); clear MPyReq

% Set installation folder (SSD recommended, ~15+ GB free space)
% Change this path to a suitable location on your machine
MPyReq.setInstallFolder(fullfile(tempdir, "MPyReq"));
MPyReq.autoAcceptDownloadPrompts(true);
MPyReq.python("<version>");
% ... package installation calls ...

%% Reference Python Code
%{
<paste the original Python inference code as a comment block>
%}

%% Load Model
% ... model loading code ...

%% Run Inference
% ... load input, run model, extract results ...

%% Visualize Results
% ... display/plot results ...

Step 5: Test with MATLAB MCP Server

Check if a MATLAB MCP server tool is available in the current session (look for MCP tools like matlabRunCode, matlab_run, or similar).

If MATLAB MCP server IS available:
  1. Run the setup section — execute the MPyReq.python() and package installation calls through the MATLAB MCP server to verify the Python environment installs correctly.

  2. Run the inference section — execute the model loading and inference code to verify end-to-end functionality.

  3. Iterate on errors — if any step fails, read the error output, fix the generated code, and re-run.

Attempt Limit and Graceful Fallback

Track each fix-and-retry cycle as one attempt. Stop after a maximum of 5 attempts (combined across setup and inference). If the code is not fully working after 5 attempts:

  1. Stop iterating. Do not continue retrying the same or similar approaches.

  2. Save the best version of demo<ModelName>.m — the version that got furthest (e.g., setup succeeded but inference failed, or partial inference ran).

  3. Return the script to the user with a structured handoff:

## What Works
- <list sections/steps that executed successfully>

## What Needs Attention
- <describe the remaining failure: error message, which line/section fails>
- <root cause hypothesis if known>

## Recommended Next Steps
1. <most likely fix — e.g., "Try Python 3.11 instead of 3.12 due to package compatibility">
2. <alternative approach — e.g., "Install system dependency X before running">
3. <manual verification — e.g., "Run `pip install <pkg>` in the MPyReq venv directly to check build logs">

## Environment Details
- Python version attempted: <version>
- Platform: <OS>
- Errors encountered: <brief summary of distinct errors across attempts>
  1. Mark clearly in the script which sections are verified vs. unverified using comments:

%% Setup Python Environment — VERIFIED
% ... (code that ran successfully) ...

%% Run Inference — NEEDS MANUAL VERIFICATION
% The following section encountered errors during automated testing.
% See recommended next steps above.
% ... (best-effort code) ...
Early exit conditions (stop before 5 attempts):
  • Same error repeats 2+ times with no new information — stop immediately

  • Environment/platform issue outside MATLAB's control (e.g., missing system library, network block, GPU driver mismatch) — stop and report

  • Package build failure requiring system-level intervention (e.g., C compiler missing, CUDA version mismatch) — stop and report

If MATLAB MCP server is NOT available:
  1. Return the generated demo<ModelName>.m file to the user.

  2. Provide setup instructions summarizing:

    • Prerequisites (MATLAB version, MPyReq on path)

    • The MPyReq commands that will run and what they install

    • Expected first-run behavior (downloads Python, packages — may take several minutes)

    • How to run: open the script in MATLAB and run section-by-section (Ctrl+Enter)

  3. Note any platform-specific considerations (e.g., Windows CUDA setup, UV_EXTRA_INDEX_URL).

Important Notes

  • NEVER modify the cloned repository's source code (e.g., editing config files, patching Python modules) without explicitly asking the user for permission first. If a workaround requires source edits, describe the change and let the user decide.

  • NEVER use Python dunder methods (__enter__, __exit__, __init__, etc.) in MATLAB — double underscores are invalid MATLAB syntax. For context managers like torch.no_grad() or torch.inference_mode(), use the equivalent functional API (e.g., py.torch.set_grad_enabled(false/true)) instead of the with statement pattern.

  • Always permute outputs back to MATLAB dimension ordering — PyTorch uses NCHW (batch first, channels second). MATLAB expects batch last and channels second-to-last (H x W x C x B). Use permute to reorder, then squeeze to remove singleton batch dims.

  • Convert bounding boxes to MATLAB format — Python models typically return [x1, y1, x2, y2] (corner pairs). MATLAB expects M x 4 as [startX, startY, width, height]. Convert with: boxes(:,3) - boxes(:,1) for width, boxes(:,4) - boxes(:,2) for height.

  • Always use imread for loading images — never use Python image libraries (PIL, OpenCV, etc.). Keep image I/O on the MATLAB side and convert to tensors for Python.

  • Always include the original Python inference code as a %{ %} comment block for reference

  • Use py.importlib.import_module() when direct py.module.submodule doesn't work (deep nesting)

  • For Windows GPU/CUDA support, note that UV_EXTRA_INDEX_URL may need to be set

  • If the repo requires cd to a specific directory (e.g., for relative config paths), use cd(MPyReq.pathTo("<Name>"))

  • Test that the generated code handles both GPU and CPU paths where applicable

  • Keep the MATLAB interface idiomatic — use MATLAB image types, display functions, and data structures

For additional gotchas (class ID mapping, opencv-python issues, insertObjectAnnotation tips), see references/common_gotchas.md.

Reference Files

The following reference files are bundled with this skill. Read them from the skill's references/ directory:

Demo examples (expected output format)
Conversion guides
MPyReq documentation

The MPyReq class is in the project's mpyreq/MPyReq.m.

Skill Feedback

If this skill's guidance was wrong, incomplete, or didn't work, emit a plain-text feedback marker in your response, then continue with the task.

Format: IPCV-SKILL-FEEDBACK [matlab-integrate-pytorch-vision] [category]: what failed; what you did instead Categories: wrong-command (incorrect/outdated), missing-guidance (omitted step), discovery-failure (suggested approach didn't work), platform-issue (environment-specific)


Copyright 2026 The MathWorks, Inc.


Files

references/demo-depthpro.md

Demo: DepthPro (Git Repo + pip Install with Weights)

Pattern: C variant — git clone + pip install from git URL + explicit weights download.

Setup

terminate(pyenv); clear MPyReq

MPyReq.setInstallFolder(fullfile(tempdir, "MPyReq"));
MPyReq.autoAcceptDownloadPrompts(true);
MPyReq.python("3.9");
MPyReq.gitrepo("https://github.com/apple/ml-depth-pro", Name="DepthPro");
MPyReq.pipPackage("git+https://github.com/apple/ml-depth-pro", Name="DepthProPackages");
MPyReq.weights("https://ml-site.cdn-apple.com/models/depth-pro/depth_pro.pt", ...
    DownloadTo=MPyReq.pathTo("DepthPro") + filesep + "checkpoints");

Reference Python Code

from PIL import Image
import depth_pro

model, transform = depth_pro.create_model_and_transforms()
model.eval()

image, _, f_px = depth_pro.load_rgb(image_path)
image = transform(image)

prediction = model.infer(image, f_px=f_px)
depth = prediction["depth"]
focallength_px = prediction["focallength_px"]

Inference

% Expects ./checkpoints folder so cd to right folder
cd(MPyReq.pathTo("DepthPro"))

mt = py.depth_pro.create_model_and_transforms();
model = mt{1}; transform = mt{2};
model.eval();

im = imread('peacock.jpg');
pim = transform(im);

pres = model.infer(pim);

mres = struct(pres);
flen = double(mres.focallength_px.numpy());
depth = double(mres.depth.numpy());

imageshow(im)
imageshow(rescale(depth))

Notes

  • Requires cd(MPyReq.pathTo("DepthPro")) because the model loads config files via relative paths.

  • Uses both gitrepo (for the source tree) and pipPackage (for installing the package) — needed when the model code references local files but also needs to be importable.

  • Python dict output is converted via struct(pres) then field access.

  • Depth output is a 2D matrix — use rescale for visualization.


Copyright 2026 The MathWorks, Inc.


Requirements and compatibility

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Needs: Needs an MCP server, Needs Python

Security

What our scanner noticed· Low risk

  • Instructions that use the network

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Created by
MathWorks
Publisher
MathWorks (Official)
Source
matlab/matlab-agentic-toolkit · skills-catalog/image-processing-and-computer-vision/matlab-integrate-pytorch-vision · commit 2a7f215
Licence
BSD 2-Clause License (redistribution allowed)
  • LICENSE (added by AutoGineer from LICENSE.md)
  • ATTRIBUTION.md (written by AutoGineer)
Synced

AutoGineer is not affiliated with or endorsed by MathWorks.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download matlab-integrate-pytorch-vision.zip