今天读到一篇2017年的综述文章,虽然至今有7年之久,但这篇文章的一些内容值得参考、思考。
一、查看cuda版本
在命令行中输入nvidia-smi
nvidia-smi
得到cuda版本为12.4,主要关注该版本是否大于10.2即可。
二、安装torch、torchvision、torchaudio三个组件
以python3.11为例,当然其他版本也适用。
经验:
安装cuda12.4(又写作cu124)版本对应的三个组件,是比较稳妥的
国内源容易在安装时自动替换为cpu版本,因此从pytorch官网下载较稳妥
建议使用pip安装,conda安装很可能会安装为cpu版本
下面为具体步骤:
(1)打开网址:https://download.pytorch.org/whl/
首先选择torch,ctrl + F 搜索 [cu124-cp311-cp311-win] 这里cu124 是我们下载的 CUDA 12.4 版本,cp311-cp311 是说我们的 Python 版本是 3.11。如果要安装python3.12那将cp3.11改为cp3.12即可。
单击即可下载。
我们继续查找该版本对应的torchvision 和torchaudio版本。
在之前的网址 ...
SAM2(Segment Anything 2)是 Meta 推出的一款新模型,旨在分割图像中的任何内容,而不局限于特定的类别或领域。该模型的独特之处在于其训练数据规模:1100 万张图像和 110 亿个掩码。这种广泛的训练使 SAM2 成为训练新图像分割任务的强大起点。
您可能会问,如果 SAM 可以分割任何东西,为什么我们还需要重新训练它?答案是 SAM 非常擅长处理常见物体,但在罕见或特定领域的任务上表现不佳。但是,即使在 SAM 给出的结果不足的情况下,仍然可以通过在新数据上对其进行微调来显著提高模型的能力。在许多情况下,这将比从头开始训练模型需要更少的训练数据并获得更好的结果。本教程演示了如何在仅 60 行代码(不包括注释和导入)中对新数据上的 SAM2 进行微调。
完整的训练脚本可以在以下位置找到:
https://github.com/sagieppel/fine-tune-train_segment_anything_2_in_60_lines_of_code/blob/main/TRAIN.py?source=post_page-----928dd29a63b3--- ...
https://readmedium.com/zh/create-geo-spatial-visualization-using-manim-2d179b2c21b9
使用 Manim 创建动态地理空间可视化开始之前,我们需要安装两个主要软件包。以下是软件包名称和安装文件:
Manim
Geopandas
现在,让我们收集一些数据来进行可视化,我将以 2017 年美国各州人口数据为例,但你也可以使用任何数据。
import geopandas as gpd
import matplotlib.pyplot as plt
from manim import *
us_population_2017 = gpd.read_file("https://services.arcgis.com/P3ePLMYs2RVChkJx/arcgis/rest/services/USA_States_Generalized/FeatureServer/0/query?outFields=*&where=1%3D1&f=geojson")
us_population_2017.head() ...
最新的SAM2分割大模型(Segment Anything Model 2)是由Meta开发的一个先进的图像和视频分割模型。相比于第一代SAM模型,SAM2在多个方面实现了显著的改进。
下面记录一下我是怎么安装sam的,在这个过程中遇到的问题及解决方案。我已经安装好了conda。
要求系统安装有 Python ≥ 3.10、PyTorch ≥ 2.3.1 和与PyTorch 安装相匹配的torchvision。
步骤下载sam2的文件,要么是git下载,要么在github下载zip
我是直接在github下载的,因为这台电脑没有安装git,也懒得安装。
下载好之后,对这个压缩进行解压,激活项目环境。
使用conda建立一个python版本大于3.10的虚拟环境。sam2要求python版本大于等于3.10.0
不然会报错:
ERROR: Package 'sam-2' requires a different Python: 3.9.19 not in '>=3.10.0'
所以我们建立一个3.11版本的python虚拟环境就好。
conda create --name sam ...
对于大的遥感影像文件,在QGIS或ArcGIS中,都可以通过建金字塔的方式,提供其加载速度。通常情况,将遥感影像加载到ArcGIS中,软件会提示是否构建金字塔,同意构建金字塔后,影像的对应文件夹下会生成一个ovr类型的影像金字塔文件,提高影像加载速度。
什么是遥感影像金字塔文件呢?如何通过代码建立金字塔文件呢?
什么是影像金字塔在GDAL中,金字塔(Pyramids)是一种用于栅格数据的方法,它通过创建原始影像数据的缩略图来加快显示和分析速度。每个金字塔层级都是原始影像的一个较小版本,具有更少的像素和较低的分辨率。
金字塔的主要用途包括:
快速浏览:在查看大尺寸影像时,金字塔允许用户快速浏览而不需要加载整个高分辨率影像。
地理空间分析:在进行某些地理空间分析时,可能不需要最高分辨率的数据,金字塔可以提供足够用的数据而减少计算量。
改善性能:使用金字塔可以改善地图渲染和地理信息系统(GIS)软件的性能。
对于未经压缩的栅格数据,.ovr 文件大小约为原始栅格数据集大小的 8%。
实现可以用GDAL中的gdaladdo方法,内建金字塔,或者建外部金字塔。
内建金字塔gdaladdo ...
之前写过分块进行16位转8位的程序。今天使用一景大影像进行处理,发现程序报错了。
原因是,影像太大了,numpy一下子不能读取到矩阵的百分之二最小值和百分之98最大值。报错的代码如下:
global_min = np.percentile(array_data, 2)
global_max = np.percentile(array_data, 98)
改进numpy.percentile() 是一个非常通用且强大的函数,但它可能不是性能最优的选择,尤其是在处理大数据集时。
使用 numpy.partition() 代替,numpy.percentile()
def fast_percentile(arr, percentile):
# 将百分位转换为索引位置
k = int((percentile / 100.0) * arr.size)
# 使用 partition 函数来找到第k小的元素
part = np.partition(arr.flatten(), k)[:k]
return part[-1]
chunk_array = nump ...
一开始使用以下语句打包:
pyinstaller -F simplify.py
运行打包后的exe闪退,报错信息如下:
Traceback (most recent call last):
File "vector_simplify.py", line 673, in <module>
vector2simplify(a, b, c)
File "vector_simplify.py", line 643, in vector2simplify
find_intersections(shape_path, common_line)
File "vector_simplify.py", line 145, in find_intersections
gdf = gpd.read_file(shp_path)
File "geopandas\io\file.py", line 255, in _read_file
File "geopandas\io\file.py", line 114, in _check_engine
Impor ...
记录一下如何进行2000坐标系转化为wgs84坐标系的过程。
在处理矢量数据转换的过程中,有几个关键步骤确保了数据的有效性和可用性。
首先,在转换之前,通过检查并创建目标保存目录,保证了正确的目录结构,这对于避免转换失败或产生错误输出至关重要。
接着,通过osr.SpatialReference对象定义目标坐标系,并使用ImportFromEPSG()方法设置EPSG代码,确保了转换后的数据能够在地理信息系统中正确显示。
此外,通过selectFields参数可以选择性地保留某些字段,而geometryType参数则定义了输出文件中的几何类型,这些选项使用户可以根据具体需求定制输出文件。
重投影选项reproject=True指示GDAL/OGR进行坐标系转换,这对于整合不同坐标系下的数据至关重要。
最后,通过dim参数可以控制输出数据的维度,例如仅保留X和Y坐标,这对于某些特定应用场景是必要的。这些步骤共同构成了一个完整的矢量数据转换流程,确保了数据的准确性和实用性。
具体代码如下:
from osgeo import ogr, gdal
from osgeo import osr ...
本文主要介绍图像特征点匹配众多方法中的sift算法。这是几年前写的代码,现在再回看发现很多内容我不记得了,记忆被删除了一样。但是,当时记录好了,也把代码、数据备份了,现在一边运行、一边查资料,很快就把这段代码捡起来了。话不多说,直接进入今天主题。
航片拼接、点云生成、SFM不可绕过的是特征点匹配。而特征点匹配中最经典、有效、稳定的方法是sift算法。我们有必要去学习一下这个sift算法。
下面是一个利用python语言调用opencv中的算法的示例。
输入图像1:
输入图像2:
具体代码如下:
# -*- coding: utf-8 -*-
# @Time : 2021/3/10 20:11
import numpy as np
import cv2
'''
sift practice code 1
'''
class SIFT():
def img_sift(self, file1, file2):
sift = cv2.xfeatures2d.SIFT_create()
img1 = cv2.imread(file1)
...