自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(177)
  • 收藏
  • 关注

原创 hmm解码:维特比

维特比

2022-10-12 15:13:01 215 1

原创 全排列demo

全排列demo

2022-10-08 20:21:45 159

原创 python列表self append无限嵌套的原理

示例一:self append 形成无限嵌套原理:变量a指向一个列表,列表的第一个元素为0;执行了append操作后,第二个元素又反过来指向a,即指向了a所指向的列表,因此形成了一个无限嵌套的循环:[0, [0, [0, [0, …]]]]。如下图所示:虽然a是无限嵌套的列表,但a.append(a)的操作,并不会递归遍历其中的每一个元素。它只是扩充了原列表的第二个元素,并将其指向a,因此不会出现stack overflow的问题,自然不会报错。但是判断两个自嵌套列表是否相等时,需要遍历

2021-12-09 20:43:02 2158

原创 Python中的浅拷贝(shallow copy)和深度拷贝(deep copy)区别

先上结论:①浅拷贝,是指重新分配一块内存,创建一个新的对象。里面的元素是原对象中子对象的引用。因此,如果原对象中的元素不可变,那倒无所谓;但如果元素可变,浅拷贝通常会带来一些"联动"。②深度拷贝,是指重新分配一块内存,创建一个新的对象,并且将原对象中的元素,以递归的方式,通过创建新的子对象拷贝到新对象中。因此,新对象和原对象没有任何关联。一句话结论:浅拷贝是对原对象中子对象的引用,而深拷贝对位子对象间无任何关联。例子:浅拷贝l1 = [[1, 2], (30, 40)]l2 =

2021-12-08 17:09:26 346

原创 轨迹平滑python

sg滤波:# =============================================================================# Savitzky-Golay滤波拟合法# =============================================================================def optimizePoints(inPoint): """ 5点1阶段轨迹平滑算法 i

2021-08-18 15:47:35 1087

原创 图像矢量化

python将图像目标区域转换为LineString、Polygon数据格式。import osimport numpy as npimport cv2from PIL import Imageimport matplotlib.pyplot as pltfrom tqdm import tqdmimport sknwfrom skimage.morphology import skeletonize, medial_axisimport pandas as pdimport geo

2021-08-06 16:46:03 873

原创 LineString、Polygon矢量坐标读取

python 中 shapely.geometry库常用linestring、polygon、point等矢量数据结构,在多坐标系转换过程中需要提取每个数据结构单点坐标,提取方式如下:def get_linestring_coords(linestring): return linestring.coords[:]def get_polygon_coords(polygon): return shapely.wkt.loads(polygon.wkt.replace("POLYGO

2021-08-06 16:34:14 3176

原创 按颜色提取图像区域

import cv2import numpy as npdef split_color(path): img = cv2.imread(path) hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) # range of red lower_red = np.array([160, 60, 60]) upper_red = np.array([180, 255, 255]) lower_red2 = np.array.

2021-08-06 16:25:30 289

原创 centos 环境安装 open3d-python

(需要获取centos服务器的root权限)一、conda新建虚拟环境 1.conda create -n py37 python=3.7二、安装步骤 1.进入虚拟环境:source activate py37 2.安装open3d-python库:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple open3d-python 3.安装libgl.so依赖:yum whatprovideslibGL...

2021-05-18 11:45:27 1014

原创 ubuntu安装python-pcl点云库、open3d库

pcl点云库在C++中经常使用,而在python python-pcl集成了pcl库中的一部分功能,本文给出python-pcl库在Ubuntu16.04中的安装教程0.系统准备申请Ubuntu系统开发机,anaconda配置教程如前述文章 https://blog.csdn.net/qq_38742161/article/details/110921649 1.pcl安装sudo apt-get install libpcl-dev pcl-tools2.python-pcl安..

2021-01-07 16:51:06 676 2

原创 python 常用的世界坐标系互相转化

from coord_convert.transform import wgs2gcj, wgs2bd, gcj2wgs, gcj2bd, bd2wgs, bd2gcj"""1.coord-convert库,pip install coord-convert2.wgs2gcj : convert WGS-84 to GCJ-02wgs2bd : convert WGS-84 to DB-09gcj2wgs : convert GCJ-02 to WGS-84gcj2bd : conv.

2020-12-09 21:27:02 1668

原创 python list转geojson

本篇介绍如何将列表转化正geojson,在qgis上进行可视化。代码:import pandas as pdfrom shapely.wkt import dumps, loadsimport geopandas as gpdfrom shapely.geometry import LineString# geoDataFrame对象写入geojson文件def geoDataframe2geojson(data, geojson_path): data.to_file..

2020-12-09 21:22:45 838

原创 linux开发环境配置之:安装anaconda并配置jupyter

在公司新申请一台服务器,需要配置python开发的一系列环境。下面展示anaconda的安装和jupyter的配置过程。一、熟悉资源查看物理内存#shellcd /df -h熟悉资源后,我们挑选一块磁盘data2,将安装anaconda安装在其中(避免安装在home下,导致服务器资源占满后崩溃)。shell中输入pwd,保存安装路径备后续使用。二、安装anaconda1.在安装路径下下载anaconda.sh文件: Anaconda3镜像:https:/...

2020-12-09 14:46:03 804

原创 经纬度与墨卡托坐标转化

处理经纬度数据时,经常需要计算欧式空间下的若干特征,比如长度、距离、角度等。本文介绍经纬度与墨卡托坐标系下的两两转换。import math#经纬度转墨卡托坐标def ls(lng,lat): # list=ll_wl.split(',') lat=float(lat) lng=float(lng) x = lng* 20037508.34 / 180 y = math.log(math.tan((90 + lat) * math.pi / 360)).

2020-12-06 17:20:44 5072 1

原创 mac pycharm2019.3版本Matplotlib弹窗显示

pycharm从2017.3版之后,Matplotlib默认内嵌显示,相比弹窗显示的风格,内嵌显示有诸多功能缺失,比如在画布中随鼠标移动显示像素位置,以及三维图像的旋转等操作。本教程展示如何更改plot的默认内嵌至弹窗显示。一、pycharm版本确认:2019.03,其它版本的设置请随个人版本相应更改即可。二、设置步骤PyCharm | Preferences | Tools | Python Scientific |界面下:Show plots in tool window 选.

2020-11-23 14:28:40 547

原创 leetcode 2. 两数相加

给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807# Definition for singly-..

2020-11-20 20:34:44 136

原创 python中的print信息写入文件

调试code中,在循环体经常需要将当前epoch的信息print出来进行校验。当epoch过多时难以查阅,因此我们将print内容输出到文件中保存。一、demo练习sys.out对象默认为当前屏幕输出,可以通过变量改为文件写入,同样也可以重新指定回当前屏幕,代码如下。"""write the infos of print to filesauthor:huangrui"""import sysprint("hello, i come first!")__console = .

2020-11-19 11:48:48 5121

原创 多进程编程demo

在服务器资源丰富的情况下,可以启用多进程加速大规模数据的处理过程。本节以demo展示,输入1000个数组成的列表,以列表的形式对应输出其平方结果。定义基础func功能函数:输入一个数,输出其平方结果。开启10个进程,每个进程执行一遍func函数。设置1000次循环,每次循环调用一个进程,执行一步func功能。import multiprocessing as mpdef func(x): return x**2def generate_data(size): .

2020-11-18 20:18:56 186

原创 mac下python anaconda根据项目建立虚拟环境

1. 新建虚拟环境创建环境conda create -n linenet python=3.5进入环境source activate linenetconda activate linenet退出环境source deactivateconda deactivate列出环境conda env listconda info --envconda info -e删除环境conda remove -n linenet --all安装模块conda install lx

2020-10-26 15:37:44 626 1

原创 一分钟学会labelme的安装与使用

深度学习需要海量的数据量,在人工标注时常用的软件有labelme 和 lableImg,分别对应着语义分割和目标检测的标注。本文已极简的教程对labelme进行安装和使用教学。一、安装 terminal(python环境下):pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -U labelme二、使用terminal(python环境下):labelme打开labelme:”open“ 图片路径,.

2020-10-21 14:35:38 913 3

原创 spark+scala 编程基础知识学习总结

// import import Utils.SparkUtilimport breeze.linalg.DenseMatriximport org.locationtech.jts.simplify.DouglasPeuckerSimplifierimport com.sankuai.roadfusion.algorithms.MaximalNearestSublineimport com.sankuai.roadfusion.utils.CoordinateTransformUtilimp.

2020-09-30 15:50:59 789 1

原创 High-frequency Component Helps Explain the Generalization of Convolutional Neural Networks CNN泛华论文解读

通常情况下,CNN表现特征和肉眼可理解的特征存在一定的出入,在CNN泛化能力上难以理解。本文以CMU 的汪浩瀚、邢波等人《High-frequency Component Helps Explain the Generalization of Convolutional Neural Network》中进行阐述。参考 https://zhuanlan.zhihu.com/p/248068207?utm_source=wechat_session&utm_medium=social&u..

2020-09-16 17:09:11 1129

原创 孪生网络入门Siamese Network

学习一个模型之前我们先了解一下该模型的作用,孪生网络解决的问题:对于两个图片或者其他数据源,进行change detection、验证等。模型思路:每次需要输入两个样本作为一个样本对计算距离。将输入映射为一个特征向量,使用两个向量之间的“距离”(L2 Norm)来表示输入之间的差异(图像语义上的差距)。孪生网络可以用以判断两个样本之间的相似度。孪生网络特点:一类包含两个或更多个相同子网络的神经网络架构。 这里相同是指它们具有相同的配置即具有相同的参数和权重。 参数更新在两个子网上共同进行。子.

2020-07-20 16:31:02 3510

原创 GAN生成对抗网络入门理解

有兴趣阅读GAN鼻祖之作的给出链接: 2014年NIPS Generative Adversarial Net原理解释GAN核心思想:生成器G与判别器D,双方博弈。生成器G的输入是手工样本/噪声/随机数之类,通过模型学习(包装)成一个逼真的样本进行输出。这里所谓逼真指的是逼近真实的样本。目的:使得自己造样本的能力尽可能强,强到什么程度呢,你判别网络没法判断我是真样本还是假样本。 判别器D的输入是生成器的输出,二分类模型判断该输入是否是真实样本。目的:判别出来属于的一张图来自真实样本集还是假样.

2020-07-17 21:23:20 338 1

原创 卫星图变化检测论文研读:Transferred Deep Learning-Based Change Detection in Remote Sensing Images 2019

期刊:IEEE TRANSACTIONS ON GEOSCIENCE AND REMOTE SENSING ,ieee trans 中等刊目的:同一位置不同时间的卫星图变化检测。亮点:①设置多任务网络,一个任务是change二值化识别(训练集,有change标签),一个是规则差分识别(测试集,无change标签,规则生成差分标签)。两个任务底层参数共享,文称该结构可降低训练集和测试集直接数据分布的差异(持怀疑态度,这个逻辑是真滴.... 不怎么样)。②迁移学习,第①部分为预训练,第二部分进行fi

2020-07-17 19:51:36 1016

原创 python调用terminal命令(os.system/os.popen)及踩坑

自动化流程中常常需要用python调用terminal命令实现全流程自动化运行本文介绍常用的两个函数:os.system/os.popenos.system用法: if os.path.exists(saved_root): print("del old and mkdir new {} !".format(saved_root)) os.system("rm -rf "+saved_root)os.system("mv dftile_sampl.

2020-06-24 12:36:19 3731

原创 deconvolution/transposed conv 理解

卷积层使用卷积核逐块计算会使图像变小,下采样pooling也可以。而上采样还是使用卷积核计算的吗?本文介绍对反卷积操作的理解。矩阵角度理解:我们先回顾下卷积的操作, 对于一个 4x4的输入图像,用3x3卷积核,padding=0,stride=1,进行卷积,能得到2x2的输出图像。把输入及输出分别展开成为一维向量,记为 i 及 o 。则卷积可以看做是矩阵运算 o = ci ,其中c的表达式如下:反卷积过程,对于2x2的输入图像,希望能得到4x4的输出图像。同样把输入及输出分别展开成为一维.

2020-06-08 13:10:24 276

原创 cnn网络架构的演进简述

最近要准备cnn科普的ppt,本文对cnn的网络架构的演进进行简述,概述cnn发展历程与重要结点。在cv领域,cnn的网络框架可谓是大红大紫。随着模型的迭代,网络越来越深,架构越来越复杂,解决反向传播时梯度消失的方法也越来越巧妙。1.开山之作:LeNet 90年代卷积神经网络的祖师爷LeCun在1998年提出,定义了cnn基本组件:卷积、池化、全连接。LeNet-5,包含两层卷积三层全连接共五层,用以识别手写体数字10分类。2.第二春:AlexNet 2012 ImageNet冠军.

2020-05-11 20:54:25 564

原创 轨迹生成路网论文研读:Learning to Generate Maps from Trajectories

本文入选AAAI 2020传统路网生成的方法分为三类:聚类/轨迹顺序扫描合并/密度。前两者基于点生成的line,在低采样频率时出现“伪捷径”,且无法处理平行道路。第三类基于点云,可以处理低采样频率,但是无法区分平行道路。本文提出deepMG模型生成路网,可以处理不同频率的轨迹点,且在拓扑中区分平行道路。deepMG包含两个部分:1.几何转换:T2RNet,提取两类轨迹特征作为输入,...

2020-04-28 20:50:36 2015 1

原创 骨架矢量化sknw源码研读

路网分割后得到region,提取骨架得到centerline,之后需要进行矢量化得到结点和边,进而转化成geojson格式进行生产。本文对矢量化函数库sknw源码进行研读,并改进源码使结点和边之间紧密连接。一、骨架提取并矢量化demofrom skimage.morphology import skeletonizefrom skimage import dataimport...

2020-04-28 20:33:36 1531 3

原创 道路分割论文研读之D-LinkNet :LinkNet with Pretrained Encoder and Dilated Convolution for High Resolution Sate

本人最近在研究路网生成算法,遇到瓶颈,借鉴卫星图识别的经典算法。1.Introduction:道路提取可视为二值语义分割任务,像素级二分类。卫星图路网分割的挑战:1. 输入的图像是高分辨率的,因此网络应该有大的接收范围,可以覆盖整个图像。2. 卫星图像中的道路往往细长复杂,覆盖了整个图像的一小部分。在这种情况下,保存详细的空间信息非常重要。3. 道路具有天然的连通性和较大的跨度...

2020-04-28 19:04:00 2515

原创 tensorflow2.1 输出中间层结果

炼丹时经常需要可视化中间层的结果进行分析,本文采用tensorflow2.1版本,进行代码展示def show_middle(test_dataset_list, model, checkpoint_dir): tf.keras.backend.clear_session() #读取测试集 test_dataset = load_dataset_test() ...

2020-04-26 20:36:13 4761 3

原创 python pyplot 可视化之绘制柱状图

可视化操作是工程师必备技能。在算法开发中,可视化能够辅助调试。本文对pyplot绘制柱形图做记录。今天我欲对se_net中权重的学习情况进行可视化研究,从而判断出哪个通道/特征占据主导因素。其中使用pyplot进行可视化。jupyter notebook代码如下:%matplotlib inline%config InlineBackend.figure_format = 'svg...

2020-04-26 14:53:13 8016

原创 简述cpu/gpu/tpu的区别和工作原理

在深度学习的训练中,我们经常会考虑到效率问题,那么通常所说的cpu/gpu/tpu为什么会有着逐级加速的功能呢,本文进行简单介绍。机器之心pro有篇文章,介绍的很详细,参考链接:https://baijiahao.baidu.com/s?id=1610560990129941099&wfr=spider&for=pc ,本文对其进行概述。0.神经网络计算的本质以fc...

2020-04-21 10:49:14 4473

原创 反向传播中的pooling层

pooling层是如何作用在反向传播的过程中?曾经面试被问过这个问题,当时的回答是pooling不参与反向传播,但是也没深究是怎么个不参与法。本文进行简析。pooling通常分两种:max和mean。由于pooling层会改变feature的尺寸,因此有如下假设成立: 假设经过pooling后有n个梯度,那么pooling层的前一层梯度个数为4n,使得反向传播时梯度无法一...

2020-04-20 19:29:27 655

原创 tensorflow-gpu OOM的参数调整

今天训练网络时出现OOM的error,现总结几点调整方式OOM 是由GPU内存不够导致的溢出error,解决方法有以下几点:1. 降低batch,但是有些网络对batch有一定的要求,当batch=1时,BN失效。一般情况下,batch尽可能大一些,加速训练的同时可以获得较好的性能。2.降低filter数量3.降低buffer缓存,如下图所示,dataset.shuffle中的...

2020-04-08 11:43:33 718

原创 optimal stopping 最优停止理论计算最适结婚年龄

前言:许久不更新博客,在找工作、准备毕设之后,再放缓脚步,欣赏风景,思考人生。所谓最优停止理论,应用在如何找到事情的平衡点,以做出最好的决策。最优停止理论适用于信息不对等的情况下,即无法获取全部样本的情况。举例说明,在一线城市租房,需求大于供给,我们必须在看房期间作出决定,期间总是会担心两个事情:担心看过的好房子被别人抢走,还有其他好房子还没看到。这就要求我们必须在继续挑选和立刻下手之间...

2019-12-04 19:28:34 1103

原创 海量数据去重

法一:hash,通过哈希映射构建原始数据与hash值之间的关系。若哈希值相同则存在相同的数据,剔除即可。缺点:需要存储该数据与映射关系。法二:bitmap,位图法,对于去重的问题,我们只需要标记该数据有没有出现过,并不需要去存储该数据。从这方面入手,便有了bitmap。这里我们假设待处理的数据是int型数据,占32位。则数值区间为2^32,一共需要2^32位来标识所有的数值,那么我们只需要含...

2019-09-10 23:17:42 1435

原创 leetcode 1162. 地图分析

你现在手里有一份大小为N x N 的『地图』(网格)grid,上面的每个『区域』(单元格)都用0和1标记好了。其中0代表海洋,1代表陆地,你知道距离陆地区域最远的海洋区域是是哪一个吗?请返回该海洋区域到离它最近的陆地区域的距离。我们这里说的距离是『曼哈顿距离』(Manhattan Distance):(x0, y0) 和(x1, y1)这两个区域之间的距离是|x0 ...

2019-09-09 23:30:37 345

原创 方格取数问题

首先介绍最简单的取数问题:leetcode64. 最小路径和https://leetcode-cn.com/problems/minimum-path-sum/给定一个包含非负整数的 mxn网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[[1,3,1], [1,5,1], [4,2,...

2019-09-06 11:06:55 891

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除