根据https://github.com/xzyun2011/finetune_segment_anything_tutorial 微调SAM模型
代码使用Fine-tuning
Step 0, 下载SAM的权重,可以从segment-anything github repo model checkpoint 直接下载
Step 1, 准备好VOC2007 dataset,直接在 官网 下载。直链是http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
代码里面有个迷你版的VOC2007数据集,在 “data_example”里面,下好了权重可以直接用这个目录文件试跑
Step 2, 开始 fine-tuning
❗ 记得把模型、数据路径换成自己的,gpu id也可以指定 ❗
python3 finetune_sam_voc.py --w weights/sam_vit_b_01ec64.pth --type vit_b --data data_example/VOCdevkit
代 ...
代码片段1#include <iostream>
#include "gdal_priv.h"
using namespace std;
int main()
{
printf("strat!\n");
//注册文件格式
GDALAllRegister();
const char* file = "D:\\img1_1_32.tif";
GDALDataset *ds = (GDALDataset*) GDALOpen (file, GA_ReadOnly);
//A* p则使用:p->play(); 左边是结构指针。
//A p 则使用:p.paly(); 左边是结构变量。
int Xsize = ds->GetRasterXSize();
int Ysize = ds->GetRasterYSize();
printf("Xsize =%d\n" , Xsize);
...
MATLAB 和 Python 的主要区别在于,Python 是一种通用编程语言,而 MATLAB 是一个用于工程和科学应用的计算平台。
Matlab和Python,它们就像 Windows 和 Linux。
Matlab 更加直观,而 Python 可以定制,但需要更多知识。
Matlab 可能在某些特定方面比 Python 做得更好,MATLAB 也是 Simulink 的基础,Simulink 是一个用于模拟复杂多域系统的框图环境。
MATLAB 与 Python 语法Python 将一切视为对象,而 MATLAB 将一切视为数组。根本的技术差异影响了两者之间语法变化的许多其他方面。
例如,MATLAB 的语法非常适合数学建模和线性代数,可以清晰简洁地表达数学概念。相比之下,Python 提供了一种通用方法,凭借其可读性、多功能性和广泛的生态系统,更适合更广泛的应用。
MATLAB 的语法简洁直观
MATLAB 具有简单直观的数据分析和数值计算语法。一个原因是它使用类似于数学符号的脚本语言。Matlab 最擅长矩阵向量。语法就像在纸上书写一样,非常棒。你可以实现很多功能,比 ...
一直想在CLION上写关于GDAL的代码。由于我是一个野生程序员,所以我的CPP功力不深厚,甚至是属于那种,学过但全忘了的状态。
平常的工作中,python足以解决了我遇到80%的问题。
由于我习惯使用pycharm,那自然对clion也有一个较为不错的初印象。
我想在clion编辑器上,重新学习GDAL,重新学习CPP。
于是,拦路虎出现了:怎么在Clion下配置GDAL开发环境。
我查阅了很多中文资料、英文资料。终于解决了这个问题。
所以现在,把这个解决问题的详细的步骤记录下来。
这篇文章分为 行不通的方案,可行的方案。
行不通的方案,是指我走不通的路,但是别人走通的。
可行的方案,是指我走通的路,你们走不走得通,你们都试试才知道。
我是小白,水平有限,CPP太难了。
行不通的方案
在clion上使用vcpkg安装gdal。
这条路,我走了很多次,次次失败。失败原因未知。
你们可以先试一下这条路,是否对你们有用。
可行的方案我会详细地记录这个过程。步骤分为:
1.编译gdal
2.在clion创建一个新项目
3.复制编译好的gdal文件夹到我们的项目文件夹下
4.修改CMakeLi ...
无孔洞
当时是处于什么的情况下才写出这样的代码,我不禁地问自己。
poly = ogr.Geometry(ogr.wkbPolygon)
if len(polygon['coordinates']) > 4:
for hole_coords in polygon['coordinates']:
hole_ring = ogr.Geometry(ogr.wkbLinearRing)
for coord in hole_coords:
hole_ring.AddPoint(coord[0], coord[1])
poly.AddGeometry(hole_ring)
else:
try:
max_i = len(polygon['coordinates'][0])
target_i = 0
for i in range(len(polygon['coordinates'])):
temp_i = len(polygon[ ...
一般看知网的论文,我喜欢看别人的毕业论文。
今天在看《无人机航拍多光谱图像全景拼接显示系统设计》,收获颇多。
现简单地记录一下关于无人机图像校正的部分。
首先是无人机图像校正的方面,论文梳理了各个坐标系的区别与联系。
由此像素坐标系、图像物理坐标系出发,进而介绍图像空间坐标系、相机坐标系、地面直角坐标系。
介绍完了坐标系部分,开始讲解姿态参数:翻滚角 、俯仰角 、航偏角 以及航高 。
基于上述的分析,综合了平面位置几何关系,
得到了无人机综合校正的流程。
之前写了一个关于无人机粗校正的教程,那个教程针对的正射影像,只校正了偏航角,并没有针对翻滚角、俯仰角进行校正。
而今天所看到的论文《无人机航拍多光谱图像全景拼接显示系统设计》,给出了具体方法的实现。其中的具体细节,大家还是去下载这篇论文查看,作者写的很详细。
制作遥感标签样本,可以分为3个步骤:
1.画矢量
2.矢量转栅格
3.分块分割影像
画矢量这个步骤是最耗费时间的、最麻木的一个过程。
一般是在arcgis勾画目标的轮廓。
矢量的格式一般为shp,而深度学习输入数据一般为栅格,如png、bmp等等。
所以需要对矢量进行转换,即下一步。
矢量转栅格我写好了python代码,代码大概50行左右,很短。小白可以参考。
再详细记录这个矢量转栅格的过程。
首先在arcgis新建一个字段叫做ID,字段的名字我是随便起的,你可以起其他的名字,无所谓的。
对这个字段赋值。赋值的大小,由你的需求决定,由你的深度学习预设的标签样本决定。
如果是目标只有一类,我一般赋值为255。
举个例子,底图如下。
我们要勾画植被、建筑物,勾画后的矢量如下:
属性表如下:
from osgeo import gdal, ogr
def shp_to_tiff(shp_file, refore_tif, output_tiff, type='int'):
'''
函数作用:将shp文件转换成tif文件
形参解释:
shp_fil ...
什么是深度学习?
- 45**分钟理解深度神经网络和深度学习**
刘利刚
中国科学技术大学图形与几何计算实验室
http://staff.ustc.edu.cn/~lgliu
【绪言】
近年来,人工智能(Artificial Intelligence, AI)和深度学习(Deep Learning, DL)非常火爆,在各个领域得到了广泛的应用。在笔者所从事的计算机图形学领域,也出现了越来越多的使用深度学习方法来解决各种问题的研究工作。2018年7月初,笔者首次在第七届中国科学技术大学《计算机图形学前沿》暑期课程上讲授和分享了笔者从数学(函数逼近论)的角度来对基于深度神经网络(Deep Neural Network, DNN)的深度学习的进行理解。之后,不断有学生来向笔者进一步询问和交流有关资料和问题。为了使学生们能够更好、更快理解和使用深度神经网络和深度学习,特撰写此文。
本文的目的是帮助非人工智能领域的学生(主要是计算机图形学领域的学生及笔者的学生)来搞懂深度学习(这里指狭义的深度学习,即基于DNN的深度学习)的基本概念和方法。笔者尝试用通俗的语言,从函数逼近论的角度来阐释深度神经网 ...
制作遥感变化检测样本,其他的遥感深度学习样本制作流程,在本质上无大的差别。
比如遥感语义分割的样本coco格式、voc格式,遥感目标检测yolo格式等。
它们的差别只在细节之处。现不展开细说,今天说的是:由遥感影像制作遥感变化检测样本
模仿俗话说,巧妇难为无米之炊。
制作遥感变化检测样本前提是,拥有两张完成配准的遥感影像和一张标签影像。
标签影像可以由矢量文件转换(这个教程最近会做)。
遥感变化检测样本的格式,我们可以参照已有的开源数据集:LEVIR、WHU-CD
我们以LEVIR为例子,下面是LEVIR的数据集文件结构:
A文件夹存放后时相图片,
B文件夹存放前时相图片。
前后时相是相对的,例如A文件夹存放的照片拍照于2019年,B文件夹存放的照片拍照于2024年
label文件夹存放前后时相变化的差值,有变化的地方用白色表示,无变化则用黑色表示。
白色表示,代表计算机中数值255。此时我们的标签文件是8bit。
list文件夹则存放三个txt,分别代表训练集、验证集、测试集。下图是训练集部分的截图。
从图片尺寸大小上,看看LEVIR数据集是怎么定义的。
A、B文件夹中的图片大小 ...





