pytorch-lightning使用心得
前言
这是啥?从未见过,甚至一来还屡出Bug,我差点就想把这个模块完全给删了。
真是不用不知道,一用吓一跳,好吧,原来这个东西竟然是基于torch构建的一个顶层/分布式/工作流/工具集的究极糅合框架,极大方便了用户的使用,可以说是赛博炼丹师的必学框架。
你最好是真的方便了使用
本框架的核心工作流是从yaml文件不经过显式的模型构建,直接将配置文件实例化得到待训练网络,分离网络构建和数据预处理,然后使用Trainer.fit(model, data)完成隐式的网络训练主流程,对新手不是很友好,因为直接通过Type checker往往不能定位到函数的地址。
使用体验
初次上手这个玩意,我感觉极难用。
再一次接触它时,我似乎多了一些感觉,它确实有存在的意义。
一些说明
本框架作为对Pytorch的上层封装,确实在一定程度上方便了用户的使用,在2021年以前主流的版本是pytorch-lightning 1.4版本,包括latent-diffusion在内的大模型框架都使用的是1.4版本,而在2021年8月后,pytorch-lightning迎来了一波大的更新,直接将版本号从1.4更新 ...
24年7月进展
第一篇文献
Diffusion Models for Implicit Image Segmentation Ensembles
解决的问题
本文是将扩散模型应用于高层次视觉任务——分割的一次有益尝试,使用了非常简单的训练框架,即可将扩散模型的生成能力应用于医学图像分割任务中。
主要内容
文章其实并没有在框架、算法上有所创新,其使用了非常简单的一种处理方式,将分割模板与待分割的灰度图像直接按通道拼接在一起,然后送入噪声估计器中,直接对模板估计噪声,而图像保持不变。算法上如下式:
{Xt←b⊙xb,txb,t←1αˉt[xb,t−1−αt1−αˉtϵθ(Xt,t)]+σtz\left\{\begin{aligned}
X_t &\leftarrow b\odot x_{b,t}\\
x_{b,t} &\leftarrow \frac{1}{\sqrt{\bar{\alpha}_t}}\left[x_{b,t}-\frac{1-\alpha_t}{\sqrt{1-\bar{\alpha}_t}}\epsilon_\theta\left(X_t,t\right)\right] ...
vscode远程误删除恢复
写在前面
惊险一刻!今天在调试项目的时候,不经意间把一个非常重要的文件夹lunar_crater给误删除了。
里面装的是我整整一个学期的成果啊!!!!!!
非常要命,当时就感觉天塌了。赶紧用远程桌面,怀着最后的一点希望查看回收站……,空空如也。
然后再怀着心如死灰的希望去查看了~/.Trash和~/.local/share/Trash,发现都找不到这两个文件夹,好吧这下完蛋了。
万念俱灰之际,幸好有网友指导,得以找回误删除的文件。
数据记录位置
经此一役才发现,其实在vscode上编辑过的全部文件,都会在其服务器端有备份,该备份就是恢复误删除文件的依据,通常该备份的目录位于:
1~/.vscode-server/data/User/History
里面的文件夹命名、文件命名都是杂乱无章的,直接找是找不回来的,惟一的方法只能是全部恢复,然后再凭着记忆去一点点对比,查找最新的版本。可在该目录下,使用find命令,将全部查找结果写入至本地文件中,以便于批量恢复:
12cd ~/.vscode-server/data/User/Historyfind . lunar_crater > ...
自动化数据采集与标注
前言
仿真数据集的产生需要有大量的重复工作,包括两类:一类是与仿真环境交互、获取准物理真实信息(数据采集),另一类是根据准物理真实信息、生成用于训练和测试的数据集(数据标注),两个工作都是相当繁琐的且不可能手工重复操作的,因此有必要开发自动化的数据采集插件或者程序。基于以上分析,这里简要记录利用Gazebo和ROS开发的自动化数据采集插件以及基于Python开发的自动化数据标注程序的主要流程,以供后来者参考。
自动化数据采集插件
本部分介绍使用C++调用gazebo接口完成对传感器信号的自动化采集。
中间因为遥感图像预处理的问题,耽搁了快两个月,不过最近花了一个周把它彻底解决了,具体体现在,完成了三维仿真环境的搭建和无人机轨迹规划、传感器数据自动采集以及GT数据的生成,一整套下来踩了很多个坑,好好记录一下。
插件功能
关于插件,最重要的功能是自动化获取无人机设备全局坐标与全局姿态,通过Mavlink协议获取无人机载相机和事件相机时刻拍摄得到的照片和事件流信息,以此可以在离线情况下完成包括GT图像生成、姿态确定和陨石坑编码等一系列工作,主要是工程上的问题。
插件代码
在catkin_w ...
vscode配置cmake和gdb调试C/C++项目程序
开始学习C++
实习让我熟悉了python语言,但是在处理底层源码的时候,总是囿于自己有限的C/C++能力,看不懂代码,就不能深入到底层学习,况且无论怎么样,python程序总是不能有高效的运行,除了深度学习,也找不出第二个它特别适合的应用场景了。(转码也需要了解C++)综上所述,开始学习之。
按我的使用习惯,用惯了vscode再想换其他的编辑器实在有些困难,不如就在vscode上完成这一切吧,于是需要解决的一个重要问题就是,如何使用命令行与vscode自己debugger,对一个较大的C工程文件进行联调,经过一天的摸索,总算实现了。
配置gdb和vscode进行命令行调试
gdb是经典的C/C++调试器,vscode有着美观的断点和调试界面,二者合二为一可以兼得其优点,以便于进行优雅地debug。完成这一切,需要首先安装必需的插件和软件。
前置文件安装
安装MinGW组件:MinGW是为windows系统定制的gcc,g++以及make组件,方便用户在windows系统上完成对C项目的构建与调试,安装可以参考如下链接,建议下载在线下载器(直接下载可执行文件的,可能版本过于老旧,会出 ...
月球表面三维环境构建
本文主要从两个方向介绍,一种是基于射影变换的月球表面环境构建;另一种是基于高度图的三维仿真环境构建,目前两种方式都已经实现。本文将引导读者从获取数据集开始完成对月球表面的三维环境构建仿真。
构建仿真文件
在构建三维表面环境的配置中,需要加入一系列的模型文件、配置文件以及发布文件,整个过程对于ROS新手而言是非常晦涩的,我反正一开始就弄糊涂了,不知道文件与文件之间的层级关系。在这里首先给一个大概的概念。ROS的发布文件.launch是相当于可执行文件一样的存在,即是可以直接运行的程序,类比于Linux系统下的.sh文件。发布文件中将包含一系列的配置文件以及配置参数,相当于.sh中的一系列参数与函数,因此配置文件相当于不完整的.sh文件,而模型文件只存在于配置文件的调用中,通常不通过发布文件直接调用它。
获取原始数据
无论是三维仿真环境抑或是二维的射影变换仿真,都需要获取较高精度的月球表面遥感图像,目前能够获取到的、开源且较为完整的月球表面数据集是NASA的月球表面数字高程图和月球表面去除阴影的地形照片,分别从对应的路径下载即可,推荐使用IDM或者XDM等并发下载器下载,源文件较大,单点下 ...
24年6月进展
第一篇文献
MetaEarth: A Generative Foundation Model for Global-scale Remote Sensing Image Generation
解决的问题
本文是将扩散模型用于遥感领域的超分辨率解决方案,专门解决遥感图像领域数据集不足、下游任务训练难以拟合的问题。
主要内容
本文在DDPM的工作框架基础上,增加了两点修改方案以改善遥感图像生成所要求的连续性和有意义性质:
基于DDPM的扩散生成框架通常只对时间变量ttt作编码embedding,本文将这一步扩展至对分辨率作编码;
为了保证生成的遥感图像在空间上连续,本文将前一位置生成的图像作为条件控制量,将其拆分为两部分(从左和从右),分别作图像生成,并根据相同部分拼接在一起,实现无缝图像生成;
。其工作数据流如下所示:
本文主要使用了超分辨率的方法,其中值得注意的一点是,超分是先作一次上采样后加入高斯噪声作条件生成。超分前后,生成图像在像素级别上平滑。
文章仅使用了8块4090完成数据并行训练,共计训练2000GPU小时(约5天)。
方法评价
本文算是将扩散模型应用至遥感图像数据集 ...
条件扩散模型
前言
扩散模型再怎么牛,也只能在同一个数据集下生成类似的图像,不可能随心所欲地命令其生成想要的图像。但是实际上文生图早已实现,而且不是什么难事,这是怎么做到的呢?这便是条件扩散模型的功劳,是它实现了文本等语义信息的编码嵌入,控制扩散模型生成指定内容的图像,以条件扩散模型为基础,衍生出了一系列的控制模型如ControlNet等,能够更加精细地控制生成图像的内容,这才给扩散模型强大的生成能力插上了任意飞翔的翅膀。掌握在扩散模型内加入条件的设计思想,才是真正掌握了扩散模型的精髓。
条件扩散模型
扩散模型的雏形最早于2018年就已经被提出,集大成版本DDPM于2020年提出、实用版本DDIM于2020年底提出,但是真正火起来的时间在2021年前后,中间的时间差,都在等它!
条件扩散模型为扩散模型的火爆奠定了数学基础!
术语解释
条件扩散模型在扩散模型的采样步骤上进行修改,采样是指,从已知的概率分布模型(或确定性模型中)抽取一个图像样本的过程。例如,对于DDPM而言,逆过程中每一步都是从一个已知的分布N\mathcal{N}N;而对于DDIM而言,它的逆过程不是随机的,是从已知的上一步样本直接 ...
基于gazebo的无人机事件相机探测
仿真配置
仿真环境基于Gazebo引擎,在ROS系统下配置,使用PX4飞控拓展和XTDrone无人机,首先请参照以下方式完成环境构建:
环境安装
与ros安装与使用心得相同,安装ROS和PX4,然后安装Gazebo。推荐在docker容器中安装以保护系统环境,可参考XTDrone博客。然后在构建容器前,注意为容器开启GPU的支持和图形界面支持,请仔细参考上述博客尤其是XTDrone博客以完成gazebo和ros的协同安装。这里提供一个拉取自ros官方的镜像ros:noetic,使用其构建了一个自定义的镜像,如下所示:
12345678910111213141516171819202122232425FROM ros:noeticRUN echo "deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse" > /etc/apt/sources.listRUN echo "deb https://mirrors.tuna.tsin ...
ros安装与使用心得
前言
希望通过本博客,记录本人搭建的完全过程,减少后来者的搭建成本,以此避免反复造轮子,在本文中,沿用了博客的一贯配置,即使用Docker搭建Ubuntu20.04,并完成后续系列操作,本博客算是系列章节的第一章。
安装ROS
此处走过很多的弯路,不过到头来发现,官方给出的安装流程,才是最正确最有效的,首先在这里给出ROS安装帮助说明和PX4的官方链接,我们照着路径一步步来,能够完成一个从入门到入土精通的安装配置。
生成Docker容器
本节可以参考自博客,在此不再赘述,安装完成后使用nvidia-smi验证安装结果。
安装ROS
在容器内,使用以下命令逐个完成ROS的安装,首先是获取适合当前版本的源,这一步可以使用对应的镜像,例如在使用清华源的情况下,可以使用如下命令:
1sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sourc ...