如果你的gdal版本是3.2.2及以上,那么只能:
from osgeo import gdal
ds = gdal.Open(data)
rows = ds.RasterYSize
cols = ds.RasterXSize
bandnum = ds.RasterCount
transform = ds.GetGeoTransform()
ds是一个对象,rows是影像的行,也是Y轴长度。对应的,cols则是影像的列,X轴的长度。bandnum代表影像的波段数。
transform是一个list,存储着栅格数据集的地理坐标信息。
#transform[0] /* top left x 左上角x坐标(经度)*/
#transform[1] /* w--e pixel resolution 东西方向上的像素分辨率*/
#transform[2] /* rotation, 0 if image is "north up" 如果北边朝上,地图的旋转角度*/
#transform[3] /* top left y 左上角y坐标(纬度)*/
#transform[4] ...
程序员的世界里有一种非常神奇的生物——进度条。
它像是一个努力奔跑的小人,不断告诉你:“我在工作,我没有卡死,你放心。” 然而现实是: 许多进度条,其实根本不知道自己跑到了哪里。
没错,它们是假的。
01. 我遇到过真正的“纯假进度条”有一次我用 Java 调用同事写的 DLL(C++ 写的底层处理模块)。 需求很简单:
“要一个进度条,看着舒服点。”
问题来了——我根本拿不到 C++ 里循环的实时进度。
DLL 是个黑盒子。你只知道它开始了,但不知道它在哪个阶段、完成了多少、是不是卡了、是不是要挂了。
理论上可以让同事加一个回调函数,从 C++ 里主动往 Java 里推进度,但:
同事嫌麻烦
DLL 老代码不敢改
发布周期赶
风险大
所以最终我就只能……假装一切尽在掌控。
于是,Java 里写了一个“陪伴型进度条”:
DLL 开始 → 进度条从 0% 平滑升到 95%
DLL 返回结果 → 进度条从 95% 快速跳到 100%
DLL 卡住 → 条条继续动,程序假装没事
DLL 崩掉 → 用户最后只看到“哎呀,失败了”
进度条根本不知道 DLL 在干嘛,它只是尽到了一 ...
最近写遥感的东西比较少,今天写一写如何将wgs84影像直接转换为cgcs2000影像,我们直接上代码就好了。
说白了这东西没什么技术含量,都是调用gdal写好的接口,以后我们再讨论一下wgs84的tif和cgcs2000的tif本质上有什么区别,这块我后面再好好研究一下。
至于wgs84影像直接转换为cgcs2000影像的代码,我直接放后面。此外,我还想再唠上一唠。
诸如遥感数据处理的东西,其实是没有技术含量的,本质上都是调用gdal的东西,你把gdal的各个接口弄明白了就掌握这个数据处理的技能,唯手熟尔。真正有难度的是算法、加速处理速度。我其实很久不做数据数据处理的东西了,因为我有足够的代码积累,我建立了一个代码库,需要哪个模块,我直接搜索。
当然,这些代码库,随着这两年的公众号的文章更新,早已被我耗尽。不然我去年不可能做到高强度的更新。
我自认为部分的技术文章还是写的有一点水平的,哈哈我这种黄婆卖瓜自卖自夸行为真不要脸。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2025/10/26 21:30
# @Fil ...
在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],相对于图像宽度) ...
这个问题是关于在无conda、无网络的Linux机器上使用打包的conda环境压缩包(假设是tar.gz格式),以避免重新安装Python库,并用于后续模型训练。直接解压是否可运行取决于打包方式:如果使用conda-pack工具打包的,那么是的,可以直接解压并激活环境运行;如果只是简单压缩了conda环境目录(例如/path/to/envs/myenv),则可能不行,因为conda环境通常包含绝对路径依赖,解压后路径变化会导致问题(如Python解释器或库无法加载)。
以下是一个可行的完整方案,基于标准的最佳实践(推荐使用conda-pack,因为它专门设计用于环境移植,包括处理路径重定位和二进制兼容)。如果你的压缩包已经是conda-pack生成的,直接跳到目标机器步骤;否则,需要在源机器重新打包。
1. 在源机器(有conda和网络的机器)上打包环境
确保源机器和目标机器的架构相同(例如都是x86_64 Linux),否则二进制不兼容。
安装conda-pack(如果未安装):conda install -c conda-forge conda-pack。
打包指定环境(假设环境名 ...
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)
训练目标改 ...




