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 等平台。