AI

AI 开发框架

Pytorch TensorFlow

Posted by LXG on March 22, 2025

深度学习框架

主流人工智能开发框架

框架 编程语言 应用领域 特点与优势
TensorFlow Python, C++ 深度学习、计算机视觉、NLP 强大的社区支持、灵活性、高度优化的计算图、跨平台支持、适用于大规模生产环境。
PyTorch Python 深度学习、计算机视觉、NLP 动态计算图、直观易用、强大的GPU加速支持、广泛的研究和社区支持。
Keras Python 深度学习、计算机视觉、NLP 简洁的API、高度封装,适合快速开发和原型设计,现已整合进TensorFlow。
Apache MXNet Python, C++ 深度学习、大数据、分布式训练 高效的多语言支持,出色的分布式训练能力,支持GPU加速。
Caffe C++, Python 计算机视觉、图像处理 高效、快速,特别适用于图像分类和语义分割等计算机视觉任务,支持GPU计算。
Theano Python 数学运算、深度学习 高效的数学运算优化,支持GPU加速,适用于定制化深度学习算法。
CNTK C++, Python 深度学习、大规模训练、并行计算 强大的分布式训练能力,适用于大规模数据和神经网络训练,优化了计算性能。
DL4J Java, Scala 深度学习、分布式计算 支持大数据和分布式计算,与Hadoop、Spark兼容,适合Java开发者使用。
Scikit-learn Python 传统机器学习(分类、回归、聚类) 易于使用,丰富的算法支持(如决策树、SVM、KNN等),与NumPy、SciPy等兼容性好。
Fastai Python 深度学习、计算机视觉、NLP 基于PyTorch,简化深度学习的使用,快速原型开发,适合快速实验与部署。
Hugging Face Transformers Python 自然语言处理(NLP) 提供预训练的Transformer模型,支持BERT、GPT等,简化NLP模型的使用和部署。
OpenCV C++, Python 计算机视觉、图像处理、视频分析 提供丰富的图像、视频处理功能,支持多平台,广泛应用于计算机视觉任务。

PyTorch VS TensorFlow

对比项 PyTorch TensorFlow
开发者 Facebook AI Research (FAIR) Google Brain
发布时间 2016 年 2015 年
计算图 动态计算图(Eager Execution) 静态计算图(TF 1.x)+ 动态计算图(TF 2.0)
易用性 代码简洁,类似 Python 代码风格,学习曲线较低 早期 API 复杂,TF 2.0 后简化但仍相对复杂
调试 直接使用 Python 调试工具,如 pdb 需要 TensorBoard 或 tf.print
性能 适用于小规模模型,动态图调试方便,训练速度略慢 适用于大规模分布式训练,优化更成熟
部署 支持 TorchServe,适用于小型部署 TensorFlow Serving / TensorFlow Lite,工业级部署更完善
移动端支持 PyTorch Mobile,支持 iOS 和 Android TensorFlow Lite,优化更成熟
社区支持 研究界更流行,论文实现多使用 PyTorch 工业界更流行,企业级支持更丰富
分布式训练 torch.distributed,易用性较好 TensorFlow 提供更强大的分布式训练支持
生产环境 逐步完善,TorchScript 可优化推理 更成熟,适用于企业级生产环境
流行度 研究领域占优 企业应用更广泛

国产深度学习框架

框架名称 开发单位 编程语言 应用领域 特点与优势
PaddlePaddle 百度 Python, C++ 计算机视觉、NLP、推荐系统 产业级应用广泛,支持大规模分布式训练,自研芯片兼容性强
MindSpore 华为 Python, C++ 计算机视觉、NLP、AI for Science 适配昇腾芯片,支持端、边、云协同,自动并行优化
OneFlow OneFlow.ai Python, C++ 计算机视觉、大规模分布式训练 高效计算图优化,支持 GPU/TPU 训练,分布式性能强
MegEngine 旷视(Megvii) Python, C++ 计算机视觉、AI 工业应用 轻量级、高效计算优化,适用于边缘端部署
Tengine OPEN AI LAB C, C++ 移动端、嵌入式 AI 低功耗 AI 计算,适用于 IoT 和移动设备
MNN 阿里巴巴 C++, Python 端侧 AI(移动端、IoT) 轻量级,适配多种端侧设备,低功耗
TensorLayer 清华大学 & 智源研究院 Python 学术研究、工业应用 高层封装 TensorFlow,易用性强

PyTorch 需要的知识储备

类别 具体知识点
数学 线性代数、概率论、微积分
Python Numpy、Matplotlib、Pandas
PyTorch Tensor、Autograd、优化器
深度学习 神经网络、CNN、RNN、Transformer
数据处理 归一化、特征工程、数据增强
实战项目 图像分类、NLP、GAN、强化学习

PyTorch Android

PyTorch Android Demo


public class MainActivity extends AppCompatActivity implements Runnable {


    private Module mModule = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        try {
            // 模型加载 默认CPU
            mModule = LiteModuleLoader.load(MainActivity.assetFilePath(getApplicationContext(), "yolov5s.torchscript.ptl"));
            BufferedReader br = new BufferedReader(new InputStreamReader(getAssets().open("classes.txt")));
            String line;
            List<String> classes = new ArrayList<>();
            while ((line = br.readLine()) != null) {
                classes.add(line);
            }
            PrePostProcessor.mClasses = new String[classes.size()];
            classes.toArray(PrePostProcessor.mClasses);
        } catch (IOException e) {
            Log.e("Object Detection", "Error reading assets", e);
            finish();
        }

    }


    @Override
    public void run() {
        Bitmap resizedBitmap = Bitmap.createScaledBitmap(mBitmap, PrePostProcessor.mInputWidth, PrePostProcessor.mInputHeight, true);
        final Tensor inputTensor = TensorImageUtils.bitmapToFloat32Tensor(resizedBitmap, PrePostProcessor.NO_MEAN_RGB, PrePostProcessor.NO_STD_RGB);
        IValue[] outputTuple = mModule.forward(IValue.from(inputTensor)).toTuple();
        final Tensor outputTensor = outputTuple[0].toTensor();
        final float[] outputs = outputTensor.getDataAsFloatArray();
        final ArrayList<Result> results =  PrePostProcessor.outputsToNMSPredictions(outputs, mImgScaleX, mImgScaleY, mIvScaleX, mIvScaleY, mStartX, mStartY);

        runOnUiThread(() -> {
            mButtonDetect.setEnabled(true);
            mButtonDetect.setText(getString(R.string.detect));
            mProgressBar.setVisibility(ProgressBar.INVISIBLE);
            mResultView.setResults(results);
            mResultView.invalidate();
            mResultView.setVisibility(View.VISIBLE);
        });
    }

}

PyTorch 安装

pytorch_install

选择CPU


sudo apt install python3-pip

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu

RK3588 面单识别开发流程

步骤 说明
1. 数据准备 收集并标注快递面单数据集,准备好训练用的图像和标签。
2. 模型设计 使用 PyTorch 设计并实现面单识别的深度学习模型。常见的做法是使用卷积神经网络(CNN)。
3. 模型训练 在 Ubuntu 上使用 PyTorch 进行训练。根据需要使用 GPU 加速。
4. 模型优化 对模型进行优化,如剪枝、量化等,使其适应在安卓设备上运行的要求。
5. 导出模型 使用 PyTorch 的 torchscript 或 ONNX 导出训练好的模型,以便能够在安卓设备上加载。
6. 安卓环境配置 配置安卓设备的开发环境,确保安卓设备上有支持 PyTorch 或其他深度学习库(如 TensorFlow Lite)的运行时。
7. 安卓端应用开发 在安卓设备上开发应用,使用相机捕捉面单图像,调用深度学习模型进行推理。可以使用 PyTorch Android API 或 TensorFlow Lite SDK。
8. 模型部署与测试 将导出的模型加载到安卓应用中,进行推理测试,确保模型准确识别快递面单。
9. 性能优化 在安卓设备上进行性能调优,减少推理延迟并优化内存使用。
10. 部署与发布 完成所有功能开发和测试后,将应用发布到安卓设备上,或者上传到 Google Play 等平台。

yolo 学习流程


📌 第 1 步:准备开发环境(PC)
│
├── 安装 PyTorch、Ultralytics YOLO(推荐 YOLOv8)
│   └─ pip install ultralytics
│
└── 准备数据集(图片 + YOLO 标签)
    └─ 目录结构:images/train、labels/train、data.yaml

📌 第 2 步:训练 YOLO 模型(在 PC 上)
│
├── 使用命令训练:
│   └─ yolo detect train model=yolov8n.pt data=data.yaml
│
└── 得到结果文件:runs/train/exp/weights/best.pt

📌 第 3 步:导出为 ONNX 格式
│
└── 使用命令:
    └─ yolo export model=best.pt format=onnx
        → 输出:best.onnx

📌 第 4 步:安装 RKNN Toolkit Lite2(PC)
│
└── pip install rknn-toolkit-lite2
    → 用于转换 ONNX 为 RKNN 模型

📌 第 5 步:转换模型(ONNX → RKNN)
│
└── Python 脚本:
    └─ load_onnx → build → export_rknn("best.rknn")

📌 第 6 步:部署 RKNN 模型到 RK3588
│
├── 拷贝模型文件(best.rknn)到开发板
│
└── 安装推理运行库:
    └─ rknn_lite_runtime(Python 或 C)

📌 第 7 步:编写推理代码运行模型(RK3588)
│
├── 初始化模型:load_rknn()
├── 输入预处理:图像 → tensor
├── 推理执行:inference(inputs)
└── 后处理:解析输出框,显示检测结果

📌 第 8 步:模型优化(可选)
│
├── 量化(量化模型体积更小)
├── 使用 YOLOv8n → YOLOv8s → v8m 等对比精度
└── 集成摄像头 + 触摸屏实时运行

AI VS 硬件

AI 更难学,周期更长,但未来机会更广;硬件更接近工程,入门可控但发展天花板较低。

维度 转向嵌入式软件 转向硬件设计 转向 AI
入门难度 ⭐⭐(有 C/驱动基础可衔接) ⭐⭐⭐中高(需要电路基础,动手要求高) ⭐⭐⭐⭐(数学/算法/工具复杂)
学习周期 短(3~6 个月可上手) 中长(6~12 个月扎实掌握设计) 长(6~18 个月才有成果)
依赖背景 嵌入式/电路/通信基础 电路原理、模拟数字电路、信号完整性、电磁兼容、材料物理 线性代数/概率论/深度学习/PyTorch
涉及范围 驱动调试、电路验证、板级支持等 从物理层面到PCB工艺 数学模型 + 编程实现 + 数据科学
学习难点 逻辑性强,代码调试复杂 跨学科、多维度、实验复杂 理论抽象,数学量大,需理解黑盒模型
项目机会 驱动调试、电路验证、板级支持等 硬件原理图设计、PCB制作、硬件调试 图像识别、NLP、推荐、边缘 AI、AIGC 等
就业竞争 中等偏低,岗位稳定 稳定,行业门槛高 激烈,但“能干的人太少”
回报空间 中~高(偏工程) 中~高,资深设计师收入可观 高~极高(偏产品/算法)
向上空间 系统架构师、硬件经理 硬件系统架构师、硬件设计负责人 算法科学家、AI 产品经理/CTO、技术创业