Experience / Project

Pixi RISC-V 支持验证与计算机视觉应用

上海苦芽科技有限公司 · 线上实习 · 2026.07.15 起

项目简介

项目在 QEMU 模拟的 RISC-V 64 位环境中验证 Pixi 和计算机视觉任务。

工作内容

我配置 Ubuntu 24.04 虚拟机,测试 Pixi 0.73.0 的安装和基本命令,并编写任务文件组织数据预处理、训练、评估、光流和 ONNX 推理。当时 conda-forge 缺少 RISC-V 版 Python、NumPy 和 OpenCV 软件包,项目依赖通过 APT 安装,Pixi 负责任务编排。

项目背景

RISC-V 是开放指令集架构,相关软硬件生态仍在发展。对机器学习和计算机视觉项目而言,工具能否安装是一方面,常用依赖包是否可获得、工作流程能否复现也同样重要。项目围绕这些问题检查 Pixi 在 RISC-V 环境中的运行情况。

Pixi 提供项目清单、依赖管理与任务执行功能。本实验关注其 RISC-V 安装、基本命令、软件包来源和任务编排,并通过光流、ONNX 推理以及多阶段机器学习流程观察视觉任务的运行情况。

实验环境与安装

实验在 QEMU 模拟的 RISC-V 64 位虚拟机中进行,系统为 Ubuntu 24.04,配置四个虚拟核心和 4 GB 内存。Pixi 使用 0.73.0 版本;Python、NumPy、OpenCV、scikit-learn 等依赖通过 Ubuntu APT 安装。性能数据对应这一模拟环境和具体实验配置。

安装验证包括 Pixi 二进制文件启动、项目初始化、平台信息查询、任务列表与任务执行。测试时,linux-riscv64 平台缺少部分 conda-forge 依赖,因而采用系统包提供 Python 库,并用 Pixi 管理可重复执行的任务入口。

任务编排与视觉示例

项目通过 pixi.toml 定义预处理、训练、评估、光流、推理和基准测试任务。多阶段示例将预处理、训练和评估串联:加载手写数字数据集并划分训练与测试数据,训练 SVM 分类器,再加载模型生成分类报告与混淆矩阵。

光流示例生成 120 帧、分辨率为 640×480 的合成视频,在首帧检测角点后,使用 Lucas–Kanade 方法跟踪其后续位置。受控的合成序列用于检查光流管线和记录逐帧耗时。

ONNX 示例构建轻量卷积网络,使用 OpenCV DNN 加载模型并运行推理。模型为随机初始化,输入为 28×28 灰度图像;实验重点是确认模型加载和算子执行流程,并记录预热后的推理耗时。

多阶段机器学习示例使用 scikit-learn 手写数字数据集,包含 1797 个样本。预处理阶段进行像素归一化并划分数据,训练阶段使用 RBF 核 SVM 和网格搜索,评估阶段读取训练结果并生成分类报告。各阶段可以单独运行,也可以通过依赖链按顺序执行。

该数据集由 8×8 灰度图像组成,覆盖十个数字类别。预处理保存训练与测试数据,训练阶段搜索 SVM 的参数组合并保存模型,评估阶段生成逐类指标和混淆矩阵。任务配置把各步骤的顺序写入项目清单,便于复现完整流程,也便于单独检查某一步的输出。

光流示例在首帧选取 12 个角点,随后跟踪连续帧中的位置变化;ONNX 示例使用约 9100 个参数的两层卷积网络。两项任务选择了不同的视觉处理流程,以检查模拟平台上的传统视觉计算与神经网络推理。

项目还提供基准测试入口,用于记录光流逐帧耗时、ONNX 推理延迟和不同矩阵尺寸下的计算表现。实验将运行脚本、任务配置与结果放在同一项目中,使用者可以依据虚拟机环境重新运行并核对记录。

结果与进展

Pixi 安装与任务编排验证完成。Lucas–Kanade 光流实验使用 120 帧合成视频,平均耗时 3.39 毫秒/帧;随机初始化的轻量 CNN 在 ONNX 推理示例中达到 1.08 毫秒的稳态中位耗时。实验代码、任务配置和结果记录已整理至 GitHub。

实验表明,Pixi 的初始化、信息查询和任务运行等功能可在所用的 RISC-V 虚拟机中执行;任务依赖链也能够组织预处理、模型训练与评估。依赖来源和任务执行分别记录,便于复现这一混合环境。

光流与推理数据对应合成输入、轻量模型和 QEMU 环境。真实视频、训练后的模型以及不同 RISC-V 硬件可能呈现不同表现。项目仓库保留脚本、配置、实验报告与基准记录。

测试中的软件包可用性反映当时的仓库状态。复现时需要根据实际平台检查可用包和版本;项目将系统包安装与 Pixi 任务配置分别列出,运行记录也保留了具体版本和实验参数。

相关链接