在AI项目中,训练好模型只是第一步,下一步是部署到其他的环境中! 但PyTorch模型(.pth)在手机/服务器上跑不动?别急!ONNX格式来救场。
为什么必须转ONNX?3大痛点
问题
后果
ONNX解决
框架依赖
PyTorch跑不动TensorFlow环境
跨框架通用,到处跑!
部署慢
手机/边缘设备卡顿
体积小50%,速度快2倍
不稳定
不同硬件报错
标准化,一次转换到处用
除这三点之外,个人认为,我需要pth模型文件转换为ONNX文件的最大需求是:隐藏神经网络模型的细节,不需要把python源代码交付出去,这样做相当于简单伪装,很多事情都是防君子不防小人。
超简单3步转换法Step 1:准备模型# 加载你的.pth模型
model = YourModel() # 替换成你的模型类
checkpoint = torch.load('your_model.pth')
model.load_state_dict(checkpoint) # 加载权重
model.eval() # 评估模式
Step 2:创建假输入# 根据你的输入尺寸创建(比如 ...
普通人买新电脑一定要有一个心理价格预算,选电脑配件就按照这个预算去买。
一台新的台式电脑,最贵的就是显卡。在预算有限的前提下,普通人选显卡买英伟达的5060就够了。
很多东西都是一分钱一分货,显卡更是如此,等级森严。你不能把5060和5090比,毕竟价格不一样。同样的,你不能用2000元的安卓机和6000元的苹果机比,要比也是用6000元的安卓机和6000元的苹果机进行性能对比。
十月初,我趁着放假回老家,自购了一些电脑配件,花几个小时自装电脑。这算是我的第二台 台式电脑。
我不是装机老杆子,我是装机小白,装配新台式机的一大需求是,帮助我处理一些视频任务,并且要求新电脑要稳定,一年不关机的那种。
我的预算是5000元到7000元,我不要颜值,只要求稳定。
实际上,我的总花费不止6284元,因为我加购了一块4T的机械硬盘。
那么,电脑八大件我是怎么选的?
首先是 硬盘,硬盘我是 1tb 固态 + 4tb的机械,这配置够用5年。
内存条是2x16G,暂时够用。内存条是很难坏的,可当传家宝。
散热器稍微选个好点的,200元差不多了。毕竟我要长时间不关机。
而cpu和板子,我选的ADM的9 ...
python
未读方法1:克隆环境并删除旧环境这是最常用且安全的方法,适用于所有Conda版本:
克隆旧环境到新名称:
conda create --name new_name --clone old_name
这会创建一个名为new_name的新环境,内容与old_name环境完全相同
验证新环境:
conda info --envs
删除旧环境:
conda remove --name old_name --all
确保先退出旧环境(conda deactivate)再执行删除操作
方法2:使用conda rename命令从Conda 4.14版本开始,可以使用更简洁的命令:
conda rename -n old_name new_name
这个命令实际上是方法1的简化版,内部仍然使用克隆和删除的组合方式
验证修改结果无论使用哪种方法,修改完成后都应验证:
conda info --envs
以上方法中,方法1(克隆+删除)是最推荐的,因为它安全可靠且适用于所有情况
深度学习图像处理一般分为三个步骤:标签制作、模型训练、推理预测。
现在我准备做是目标检测,使用的框架是yolov8。
使用yolov8并不是代表落后,而是yolov8足够实用,你们当然可以使用最新的yolov26,在这一点上是无所谓的。
由于目标检测的篇幅很长,我打算分块写。所以今天的主题是标签制作。
别急哈,我们一步步来。
那么我们得先知道什么是yolov8标签格式。这时候问下大模型,快速过一哈。
以下是 YOLOv8 标签格式的详细说明:
1. 标签文件格式
文件扩展名:.txt
命名规则:标签文件的名称需要与对应的图像文件名一致(扩展名除外)。例如,图像文件为 image1.jpg,则标签文件为 image1.txt。
文件内容:每行表示图像中的一个目标对象,格式如下:
text
<class_id> <x_center> <y_center> <width> <height>
:目标类别的索引(从 0 开始的整数,基于数据集中的类别顺序)。
:边界框中心点的 x 坐标(归一化,范围 [0, 1],相对于图像宽度) ...
DINOv3是什么?DINOv3解决了遥感中哪些难点?
在计算机视觉领域,预训练模型的发展正快速演进。Meta 最新发布的 DINOv3,成为了自监督视觉模型中的新里程碑。它最大的亮点是:冻结主干(frozen backbone)即可在密集预测任务中达到最先进的效果,让团队能够“少折腾大模型,多专注小任务头(head)”。
为什么 DINOv3 值得关注?
大规模无标签预训练 DINOv3 使用自监督学习(SSL),在两个超大规模数据集上训练:
LVD-1689M(16.89 亿张网络图像)
SAT-493M(4.93 亿张卫星图像) 不依赖人工标注,就能充分利用数十亿张图像。
开箱即用的密集特征 主干冻结后,仅用简单的线性或轻量级 head,就能在分割、深度估计、图像检索等任务中拿到 SOTA 结果。
跨领域的单一主干 一个 DINOv3 主干即可跨越自然图像、卫星遥感、工业检测等领域,性能超过很多专门微调的模型。
生态支持完善 已经登陆 Hugging Face,配备官方 API、模型卡和示例代码,可以即刻上手。
DINOv3 的技术升级(相对 DINOv2)
训练目标改 ...
选择学习哪种编程语言主要取决于你的目标和兴趣。
如果你想开发网站,JavaScript、HTML 和 CSS 是前端开发的首选,Python 、PHP 、go、java则适合后端;
想做数据分析或机器学习,Python 和 R 是不错的选择;
如果目标是移动应用开发,Swift(iOS)或 Kotlin(Android)更合适;
对于系统编程或高性能应用,C++ 或 Rust 是不二之选。
每种语言都有其独特生态和适用场景,明确你的项目需求后,选择一门易上手且社区活跃的语言,能让你事半功倍。
我目前的主力编程语言是 Python,其他语言虽然接触过,但还谈不上熟练。
实际上,最近这两个月,我越来越多地使用自然语言来“写”代码,而不是直接手写编程语言。回想起2024年刚开始接触 GitHub Copilot 的时候,我还不太理解为什么微软把它叫做 “Copilot”。但现在回过头看,不得不佩服老外起名字的精准——AI 编程助手所扮演的角色,确实就是“副驾驶”。
而我是主驾驶,它则辅助我完成整个编程过程。
甚至有时,是倒反天罡,我只管输入和输出,中间过程代码编写,debug等等全程它自己 ...
选择学习哪种编程语言主要取决于你的目标和兴趣。
如果你想开发网站,JavaScript、HTML 和 CSS 是前端开发的首选,Python 、PHP 、go、java则适合后端;
想做数据分析或机器学习,Python 和 R 是不错的选择;
如果目标是移动应用开发,Swift(iOS)或 Kotlin(Android)更合适;
对于系统编程或高性能应用,C++ 或 Rust 是不二之选。
每种语言都有其独特生态和适用场景,明确你的项目需求后,选择一门易上手且社区活跃的语言,能让你事半功倍。
我目前的主力编程语言是 Python,其他语言虽然接触过,但还谈不上熟练。
实际上,最近这两个月,我越来越多地使用自然语言来“写”代码,而不是直接手写编程语言。回想起2024年刚开始接触 GitHub Copilot 的时候,我还不太理解为什么微软把它叫做 “Copilot”。但现在回过头看,不得不佩服老外起名字的精准——AI 编程助手所扮演的角色,确实就是“副驾驶”。
而我是主驾驶,它则辅助我完成整个编程过程。
甚至有时,是倒反天罡,我只管输入和输出,中间过程代码编写,debug等等全程它自己 ...
要将Python 代码打包成 .so 文件,通常使用 Cython 工具,通过编写一个 setup.py 文件来指定需要编译的Python 文件,然后在命令行中使用 python setup.py build_ext --inplace 命令来编译。编译完成后,即可像普通模块一样在Python 中导入并使用生成的 .so 文件。
具体步骤:
安装Cython
如果尚未安装Cython,请先安装它:
pip install cython
根据您的操作系统,可能还需要安装C 语言编译器,例如在Linux 上使用 gcc 和 python-devel。
编写Python 源文件
创建您需要打包的Python 文件,例如 hello.py。
创建 setup.py 文件
在与Python 源文件相同的目录下,创建一个名为 setup.py 的文件。文件内容如下:
from distutils.core import setup
from Cython.Build import cythonize
setup(
ext_modules = cythonize([" ...
很多刚接触编程的朋友都会问:我该学 C++ 还是 Python?
如果把这两种语言比作汽车,C++ 就像一辆老式保时捷,手动挡、手动摇窗器、硬悬挂——跑得快,但开起来并不舒服;Python 则像一辆全自动的家用轿车,带杯架、座椅加热、自动泊车——开起来轻松惬意。
所以问题的关键在于:你喜欢编程的哪一点?
如果你是那种喜欢钻研细节的“汽车发烧友”,愿意花几个小时钻到车底下拆零件,熟悉每颗螺丝的名字,乐于把发动机的最后一匹马力都榨出来,也不介意为了超车而提前做大量准备,那么 C++ 很适合你。
如果你更在意的是车子能不能舒舒服服地带你去目的地,至于引擎如何运转、底盘如何设计并不重要,那么 Python 会更合适。
简单来说:
C++ 是写给那些热爱编程本身的人。
Python 是写给那些想用编程实现东西的人。
一些补充 编程是个很宽的领域,不同背景的人会有完全不同的看法。写游戏、做硬件驱动的人和我这种“用代码做遥感处理”的人,需求完全不同。有人建议每年学一门新的语言。对初学者来说,如果只能选第一门语言,我还是推荐从 Python 开始。因为不用管内存分配、指针、模板这些底层的麻烦 ...







