图片加噪声

图片加噪声 图像噪声分类 1.加性噪声 f(x,y)=g(x,y)+n(x,y) 一般是图像传输信道噪声和CCD摄像机图像数字化过程中产生 2.乘性噪声 f(x,y)=g(x,y)*n(x,y) 一般由 胶片中颗粒 飞点扫描图像噪声 电视扫描光栅等原因造成 3.量化噪声 模拟到数字产生的差异 量化中的误差 图像噪声模型 1.高斯噪声 (Gaussian noise) 最广泛。传感器非正常环境下产生,电子电路中噪声。 高斯分布 2.脉冲噪声 (Impulsive noise) 双极脉冲:椒盐脉冲,尖峰噪声 散粒噪声 盐噪声:随机的白色像素点 胡椒噪声:随机黑色像素点 3.瑞利噪声 (Rayleigh noise) 4.伽马(爱尔兰)噪声 (Gamma noise) 5.指数噪声(Exponential noise) 6.均匀噪声(Uniform noise) 去噪效果评价算法 1.SNR [信噪比] 计算图像自身的信噪比 输入为一幅图片 2.PSNR [峰值信噪比] 计算两个图像之间的相似度 去噪后的图片和原图做比较 3.SSIM [结构相似性] 衡量两幅图像相似度 Code import numpy as np import copy import cv2 import random import skimage.metrics import matplotlib.pyplot as plt def GaussianNoise(srcImg,percent,sigma,means=0,greyscale=256): """ 为灰度图像添加 高斯噪声 :param srcImg: 源图像 :param percent: 噪声百分比 :param sigma: 高斯的标准差 :param means=0: 高斯的均值 默认为0 :param greyscale=256: 灰度图像的度 默认为256 """ (h,w)= srcImg....

March 26, 2021 · wuyangzz

稀疏表示和字典学习

1、什么是稀疏表示 官方的说法:任意一个信号都可以在一个过完备字典上稀疏线性表出。这样,一个信号被分解为有限个信号的线形组合的形式我们称之为稀疏表示。 $$y = Dα s.t.||α||0 < σ$$ 其中y就表示任意信号,D表示过完备字典,α表示系数矩阵,Dα就是二者的点乘,s.t.表示subject to的缩写,我们所说的稀疏就是α中非零系数的数量很少,即绝大部分α中的系数都为0,如何用数学公式约束呢?就是||α||0 < σ,其中小于符号前一部分是α的第0范数,所谓范数就是距离的一种,现实中的A到B的距离就是第二范数,α的第0范数指的是α中非零元数的数量,整体来说就是α中非零元素的数量之和小于一个约定好的数σ。 1.1、稀疏 首先我们说到中国古典四大名著之一的《红楼梦》,全篇120回,一共用了731,017个汉字。新华字典是我们每个人小学都人手必备的工具书,共收录了11,200个汉字,虽然二者字数相差了将近70倍,但我们每个人都知道,《红楼梦》中出现的每一个汉字都能从《新华字典》里找到,并且如果大家仔细想想的话,《红楼梦》一定没有用完一本《新华字典》中收录的每一个汉字,综上我们可以说:一套《红楼梦》中所有的汉字都能在《新华字典》中找到,并且《新华字典》中一定有《红楼梦》没用到的汉字。 基于这个例子我们把“能找到”翻译成线性表示,把“一定有没用过的字”翻译成稀疏,这样的话是不是对我们文章开始所提到的定义有一点理解。 你怎么能从人群中认出你最好的朋友,你怎么能在很多年不见之后一眼就认出你的年轻时候的朋友?这时候有的朋友可能会说啦,“因为他下巴这有颗痣”,“因为他鼻子特别大”,“因为他秃啦”,等等。这些都对,我们可总结一下,我们只需要记住特定的几个专属于朋友的特征就能认出你的朋友,因为一张脸上有无数的东西可以记住,用掉书袋的话说,脸是连续的,有无数个特征,但你只需要记住很少的特征你就能认出你的朋友。那么这样的问题我们同样用上面的话总结一下:只需要从脸上找到有限个标志特征就能识别出一个人。同样的我们将“识别出人”看作是线形表出,“有限个”说成稀疏,这也是我们一开始提到的那句话一种理解。 这一次我们加深一步,我们将上一句话换个说法:人脸在面部特征识别的空间中是稀疏的。说白了也是同一个意思,面部特征识别空间就是我要认出一个人,也就是说我想认出一个人只需要有限个特征,而这有限个特征相较于拥有无限特征的脸来说,是稀疏的。这样将第一个例子扩张,也就变成了:任意一本中文书在《新华字典》的收录汉字空间中是稀疏的。然后我们自然推广(高中数学知识),假设存在这样一个信号的字典,它也像《新华字典》一样收录了各种基本信号,那么我们也能说:任意一个信号都是这个信号字典中基本信号组合而成,并且任意一个信号不会用到其中的每一个基信号。抑或是:信号在信号字典的特征空间内是稀疏的。这就是本文一开始提到的定义的通俗理解。 1.2、过完备 过完备的意思就是字典中信号的个数要远远大于信号的长度。其实过完备和稀疏是相辅相成的,只有m足够大,才能实现只用极少的原子表示一个信号。

March 19, 2021 · wuyangzz

SVD分解

1、特征值分解(EVD) $ a \ne 0 $ 实对称矩阵 在理角奇异值分解之前,需要先回顾一下特征值分解,如果矩阵A是一个 $ m\times m $的实对称矩阵$ A = A^T $ 那么它可以被分解成如下的形式 $$A = Q\Sigma Q^T= Q\left[ \begin{matrix} \lambda_1 & \cdots & \cdots & \cdots\\ \cdots & \lambda_2 & \cdots & \cdots\\ \cdots & \cdots & \ddots & \cdots\\ \cdots & \cdots & \cdots & \lambda_m\\ \end{matrix} \right]Q^T $$ 2、奇异值分解(SVD) 2.1 奇异值分解定义 有一个m×n的实数矩阵A,我们想要把它分解成如下的形式: $$ A = U\Sigma V^T $$ 其中U和V均为单位正交阵,即有 $ A = A^T$ 和$VV^T=I$,U称为左奇异矩阵,V称为右奇异矩阵,Σ仅在主对角线上有值,我们称它为奇异值,其它元素均为0。上面矩阵的维度分别为 $$ U \in R^{m\times m},\ \Sigma \in R^{m\times n},\ V \in R^{n\times n} $$...

March 19, 2021 · wuyangzz

Ubuntu新增用户和一键ssh免密登录脚本

一键创建用户脚本 此脚本用户一键创建具有sudo权限的账户 并且可以免密使用sudo id openpai &>/dev/null #验证用户是否存在 if [ $? -eq 0 ];then echo "用户已经创建了" else echo "用户即将开始创建" useradd -m -s /bin/bash openpai echo "用户创建成功" echo "正在设置密码" echo "openpai:openpai" | sudo chpasswd #给用户设置密码 echo "密码设置成功" echo "openpai" fi echo "正在设置sudo权限" mkdir /etc/sudoers.d/ echo openpai | sudo -S sh -c "echo 'openpai ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers.d/user-openpai" sudo chmod 440 /etc/sudoers.d/user-openpai 批量ssh免密登录脚本 #!/usr/bin/bash shell_dir=$(dirname "$0") SHELL_DIR_ABSOLUTE=$(cd "$shell_dir"; pwd) EXIST_DOWN_HOST="NO" SSH_HOME_DIR="/root" if !...

March 12, 2021 · wuyangzz

Ubuntu装计算卡

背景 实验室台式机电脑本身有intel的集成显卡,但是在装ubuntu桌面版的时候,安装好专业卡K20C(无输出端口)的驱动后 无法进入桌面。 但是进入恢复模式卸载 NVIDIA显卡驱动后便可以正常进入系统。 解决方案 强制重启时进入UBUNTU高级选项(advanced options) 选择root模式进入 设置默认显卡为intel sudo prime-select query # 查看当前显卡 sudo prime-select intel # 设置Intel显卡 sudo prime-select nvidia # 设置NVIDIA显卡 重启 开启nvidia显卡 正常重启后可以进入系统,但是还是没有调用NVIDIA显卡 可以直接在终端输入命令(前提是你已经安装好了NVIDIA的驱动): nvidia-settings

March 11, 2021 · wuyangzz

Ubuntu设置vnc

安装配置软件 VNC的安装与配置 安装之前先输入(获取最新套件的信息) apt-get update 输入以下命令安装VNC,安装过程中需要输入Y来确认 apt-get install vnc4server 启动VNC(第一次启动需要设置密码) vncserver 设置vncservgnome 桌面环境安装与配置(可直接跳至第3步) 安装x-windows的基础 sudo apt-get install x-window-system-core 安装登录管理器 sudo apt-get install gdm 安装Ubuntu的桌面 sudo apt-get install ubuntu-desktop 安装gnome配套软件 sudo apt-get install gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal 修改VNC配置文件 sudo vim ~/.vnc/xstartup 修改为: #!/bin/sh # Uncomment the following two lines for normal desktop: export XKL_XMODMAP_DISABLE=1 unset SESSION_MANAGER # exec /etc/X11/xinit/xinitrc unset DBUS_SESSION_BUS_ADDRESS gnome-panel & gnmoe-settings-daemon & metacity & nautilus & gnome-terminal & 杀掉原桌面进程,输入命令(其中的:1是桌面号):...

March 9, 2021 · wuyangzz

GPU租用手册

一、服务器简介 概述 实验室利用两台ESC 4000G2 服务器 4张3090显卡搭建GPU服务器。但是因为3090非专业显卡。不支持vGPU功能。如果大家都直接操作宿主主机,直接在宿主主机上配置自己的开发环境将会发生不可避免的冲突。最后经过实际考虑,利用Docker进行合理的系统资源的搭配。使用 Docker 把服务器容器化,每个人都直接登录自己的容器,所有开发都在自己的容器内完成,这样就避免了冲突。并且,Docker 容器的额外开销小得可以忽略不计,所以也不会影响服务器性能。 一个docker镜像就可以看作是一个操作系统。在docker上面进行的操作不会影响主机本生的环境。 虚拟容器采用docker方式实现,为了能在docker中可以使用GPU。采用nvidia-docker进行gpu的加载。nvidia-docker 是专门为需要访问显卡资源的容器量身定制的,它对原始的 Docker 命令作了封装,只要使用 nvidia-docker run 命令运行容器,容器就可以访问主机显卡设备(只要主机安装了显卡驱动)。 如果要在docker中使用显卡。现在NVIDIA给出的解决方案中必须使用linux系统。 可以在docker中加载基础的镜像,然后将22端口映射出来。就可以直接使用主机ip加映射的端口来访问和使用docker容器。 可以使用web界面如Shipyard等来对docker进行GUI管理 NVIDIA有官方的Docker目录网站NGC,NGC为AI,机器学习和HPC提供了GPU加速容器的综合中心,这些容器已优化,测试并可以在本地和云中受支持的NVIDIA GPU上运行。此外,它提供了可以轻松集成到现有工作流程中的预训练模型,模型脚本和行业解决方案。 NGC网站镜像中包含很多包,例如TensorFlow,PyTorch,MXNet,NVIDIA TensorRT™,RAPIDS等,并且有各个版本的组合可以下载。更新也非常快。 服务器基本配置 备注 HPC1 HPC2 CPU Intel(R) Xeon(R) CPU E5-2620 2.00GHz Intel(R) Xeon(R) CPU E5-2620 2.00GHz 内存 64 G (8*8G) 硬盘 3T 2T 显卡 技嘉RTX 3090 Turbo*2 技嘉RTX 3090 Turbo*2 IP 172....

February 22, 2021 · wuyangzz

实验室GPU服务器操作细则

实验室GPU服务器操作细则 实验室GPU简介 系统 ubuntu18.04 IP:172.23.253.* 172.23.253.15* 双路3090显卡 docker docker 简介 ​ docker镜像可以看作是一个以及配置好了很多环境的操作系统,docker与虚拟机类似,但是两者在原理上有很大的不同。docker是讲操作系统的底层虚拟化,而虚拟机是将硬件虚拟化,因此docker具有更高的便携性和跟高效的利用服务器的性能。同时由于docker的标准化,它可以无视任何基础设施的标志,可以很简单的部署到任何的一个地方,另外docker重要的优点就是可以提供良好的隔离兼容。 ​ 其主要概念中最重要的就是为images container Images 是一个只读的模版,可以用来创建container,可以直接下载已经构建好的image,也可以自己通过Dockerfile来创建。 container 是image的可运行实例,其可以通过API和CLI(命令行)进行操作。 NGC ​ NGC是NVIDIA官方提供的容器,其主要的作用是为用户提供一个简单、高效、安全的镜像,方便用户可以最轻松的使用NVIDIA GPU。 使用Docker CLI从NGC容器注册表中提取容器 打开NGC网站,其中可以浏览自己所需要的容器 自己根据自己的基础环境 如Tensorflow Pytorch进行搜索。并进入其中。里面有该容器的参考文档。只需要将其Pull记住。 我们一般会提供一个使用jupyter的8888端口一个使用xshell和xftp的22端口。并且将用户名和密码告知。 docker命令 dockers ps -a 查看容器 docker images 查看镜像 docker start 容器id 启动容器 docker attach 容器id 进入容器 docker stop 容器id 停止容器 docker rm 容器id 删除容器 docker image rm 镜像id 删除镜像id...

January 10, 2021 · wuyangzz

实验室GPU基本介绍

背景 ​ 实验室利用ESC 4000G2 服务器 32G内存 3T机械硬盘 4张3090显卡搭建GPU服务器。每一张3090峰值功耗为350w,服务器电源为1650w 在四张显卡不同时最高功率的情况下满足基本你的使用条件。但是因为3090非专业显卡。不支持vGPU功能。如果大家都直接操作宿主主机,直接在宿主主机上配置自己的开发环境的话肯定会发生冲突。所有最后经过实际考虑Docker进行合理的系统资源的搭配。使用 Docker 把服务器容器化,每个人都直接登录自己的容器,所有开发都在自己的容器内完成,这样就避免了冲突。并且,Docker 容器的额外开销小得可以忽略不计,所以也不会影响服务器性能。 解决方案 一个docker镜像就可以看作是一个操作系统。在docker上面进行的操作不会影响主机本生的环境 主机采用ubuntu或者centos作为宿主主机上的系统。 虚拟容器采用docker方式实现,为了能在docker中可以使用GPU。采用nvidia-docker进行gpu的加载。nvidia-docker 是专门为需要访问显卡资源的容器量身定制的,它对原始的 Docker 命令作了封装,只要使用 nvidia-docker run 命令运行容器,容器就可以访问主机显卡设备(只要主机安装了显卡驱动)。nvidia-docker 的使用规则和 Docker 是一致的,只需要把命令里的“docker”替换为“nvidia-docker”就可以了。 如果要在docker中使用显卡。现在NVIDIA给出的解决方案中必须使用linux系统。 可以在docker中加载基础的镜像,然后将22端口映射出来。就可以直接使用主机ip加映射的端口来访问和使用docker容器。 可以使用web界面如Shipyard等来对docker进行GUI管理 NVIDIA有官方的Docker目录网站NGC,NGC为AI,机器学习和HPC提供了GPU加速容器的综合中心,这些容器已优化,测试并可以在本地和云中受支持的NVIDIA GPU上运行。此外,它提供了可以轻松集成到现有工作流程中的预训练模型,模型脚本和行业解决方案。 NGC镜像中包含很多包,例如TensorFlow,PyTorch,MXNet,NVIDIA TensorRT™,RAPIDS等,并且有各个版本的组合可以下载。更新也非常快。 优势 用户可以方便地登录 用户可以自由安装软件 普通用户无法操作宿主主机 用户可以使用 GPU 资源 用户可以调动任意数量的GPU来共同计算。多人操作的时候也可以每个人指定一个GPU使用。 用户之间互不干扰

January 10, 2021 · wuyangzz

实验室GPU基本操作

一、前期准备 1. 下载Xshell、Xftp,并了解如何使用 2. 了解什么是Docker、什么是容器 3. 了解基本的ubuntu使用命令 4. 了解Jupyter lab使用命令 二、寻找自己所需要的基础环境 1. 注册并登录NGC网站 2. 打开NGC网站,其中可以浏览自己所需要的容器 3. 自己根据自己的基础环境 如Tensorflow Pytorch进行搜索。 并进入其中。里面有该容器的参考文档请仔细阅读(参考文档中有基本环境的配置)。只需要将其Pull记住并告诉我。 三、告知需要开放的端口和映射文件夹以及用途 我们一般会提供一个使用jupyter的8888端口和一个使用xshell和xftp的22端口。会将容器中的workspace目录映射到Host主机,以免文件丢失。如果有特殊需求,需要提前告知。 四、连接容器 1. 使用Xshell新建链接 ![image-20210102205318604](https://raw.githubusercontent.com/wyhugo new /posts/GPU租用手册.mdcyz1/blog_image/main/20210102205318.png) 2. 链接配置 IP和端口配置(IP和端口都会告知) 输入账户名和密码(用户名和密码默认为root) 五、启动Jupyter lab nohup jupyter-lab --ip 0.0.0.0 --port 8888 --allow-root > jupyter.log 2>&1 & 六、连接Jupyter lab 当在容器中成功启动Jupyter lab后就可以在浏览器中输入给定的IP和端口对jupyter lab进行连接,连接密码默认为root。 建议使用时,若无特殊要求,请将所有自己的文件放置在workspace目录下,以免丢失。 七、问题咨询 1. 我能解决的问题 - 容器连接不上(操作无误的情况下) - Jupyter端口打开不了 - 需要开放其他额外端口 - 需要几张显卡 - 需要使用时间 - 容器需要重启 2. 需要自己解决的问题 - Ubuntu怎么使用 - Jupyter怎么使用 - 如何选择适合自己的镜像 - 怎么上传、下载文件 - 镜像里面有什么环境(NGC官网里面有详细的指导文档) - 需要更改容器环境

January 10, 2021 · wuyangzz

Test

#include <iostream>using namespace std; int main() { cout << "Hello, world!" << endl; return 0; }

January 9, 2021 · wuyangzz