主流人工智能开发框架

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
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 安装

选择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、技术创业 |
0
次点赞