2015-10-28 14:17:20 baimafujinji 阅读数 11370
  • 机器学习入门30天实战

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 系列课程包含Python机器学习库,机器学习经典算法原理推导,基于真实数据集案例实战3大模块。从入门开始进行机器学习原理推导,以通俗易懂为基础形象解读晦涩难懂的机器学习算法工作原理,案例实战中使用Python工具库从数据预处理开始一步步完成整个建模工作!具体内容涉及Python必备机器学习库、线性回归算法原理推导、Python实现逻辑回归与梯度下降、案例实战,信用卡欺诈检测、决策树与集成算法、支持向量机原理推导、SVM实例与贝叶斯算法、机器学习常规套路与Xgboost算法、神经网络。

    7609 人正在学习 去看看 唐宇迪

全文目录请见

图像处理中的数学原理详解(Part1 总纲)

http://blog.csdn.net/baimafujinji/article/details/48467225


1.3.3 方向导数与梯度






我的“图像处理中的数学原理”专栏中之系列文章由“清华大学出版社”结集出版。欢迎关注我的新书《图像处理中的数学修炼》(Applied Mathematics in Digital Image Processing)——详细介绍图像处理中的数学原理,为你打开一道通往图像世界的数学之门,详细内容及目录请见 http://blog.csdn.net/baimafujinji/article/details/48467225



2019-07-21 17:07:09 weixin_43348604 阅读数 45
  • 机器学习入门30天实战

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 系列课程包含Python机器学习库,机器学习经典算法原理推导,基于真实数据集案例实战3大模块。从入门开始进行机器学习原理推导,以通俗易懂为基础形象解读晦涩难懂的机器学习算法工作原理,案例实战中使用Python工具库从数据预处理开始一步步完成整个建模工作!具体内容涉及Python必备机器学习库、线性回归算法原理推导、Python实现逻辑回归与梯度下降、案例实战,信用卡欺诈检测、决策树与集成算法、支持向量机原理推导、SVM实例与贝叶斯算法、机器学习常规套路与Xgboost算法、神经网络。

    7609 人正在学习 去看看 唐宇迪

核磁共振图像在采集过程中由于设备的抖动或者患者身体的轻微活动都会造成图像的磁场分布不均,这样的数据对于基于机器学习的模型的训练影响是很大的。解决这个问题常用的方法是磁场梯度校正。原理参考文章 N4ITK: Improved N3 Bias Correction

上代码:
以下为调用部分的程序

def n4itk_norm(path,output_fn, n_dims=3, n_iters='[20,20,10,5]'):
        '''
        INPUT:  (1) filepath 'path': path to mha T1 or T1c file
                (2) directory 'parent_dir': parent directory to mha file
        OUTPUT: writes n4itk normalized image to parent_dir under orig_filename_n.mha
        '''
        # self.output_fn = output_fn
        # output_fn = '/media/ycs/f_n4.png'
        # run n4_bias_correction.py path n_dim n_iters output_fn
        subprocess.call('python N4BiasCorrection.py ' + path + ' ' + str(n_dims) + ' ' + n_iters + ' ' + output_fn, shell = True)

N4BiasCorrection.py 的主程序如下:

from nipype.interfaces.ants import N4BiasFieldCorrection
import sys
import os
import ast

if len(sys.argv) < 2:
    print("INPUT from ipython: run n4_bias_correction input_image dimension n_iterations(optional, form:[n_1,n_2,n_3,n_4]) output_image(optional)")
    sys.exit(1)

# if output_image is given
if len(sys.argv) > 3:
    n4 = N4BiasFieldCorrection(output_image=sys.argv[4])
else:
	n4 = N4BiasFieldCorrection()

# dimension of input image, input image
n4.inputs.dimension = int(sys.argv[2])
n4.inputs.input_image = sys.argv[1]

# if n_dinesions arg given
if len(sys.argv) > 2:
    n4.inputs.n_iterations = ast.literal_eval(sys.argv[3])

n4.run()

本文来自本人课题项目总结,并非最好之方案和代码。如有错误,欢迎指正与赐教!

2017-03-22 12:54:44 u014274339 阅读数 1195
  • 机器学习入门30天实战

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 系列课程包含Python机器学习库,机器学习经典算法原理推导,基于真实数据集案例实战3大模块。从入门开始进行机器学习原理推导,以通俗易懂为基础形象解读晦涩难懂的机器学习算法工作原理,案例实战中使用Python工具库从数据预处理开始一步步完成整个建模工作!具体内容涉及Python必备机器学习库、线性回归算法原理推导、Python实现逻辑回归与梯度下降、案例实战,信用卡欺诈检测、决策树与集成算法、支持向量机原理推导、SVM实例与贝叶斯算法、机器学习常规套路与Xgboost算法、神经网络。

    7609 人正在学习 去看看 唐宇迪

图像处理的一些相关知识

logistic transform

一般的logistic function

IQA算法中使用的扩展的logistic function

  • 公式1
    f(x)=τ1τ21+exp(xτ3τ4)+τ2

    τ1,τ2,τ3,τ4使DMOSMOSMSE
  • 公式2
    f(x)=β1(1211+exp(β2(xβ3)))+β4x+β5

    β1,β2,β3,β4,β5使DMOSMOSMSE
  • matlab realization

梯度下降、最小二乘法

资料
最小二乘法和梯度下降法的关系
相同
  1. 本质相同:两种方法都是在给定已知数据(independent & dependent variables)的前提下对dependent variables算出出一个一般性的估值函数。然后对给定新数据的dependent variables进行估算。
  2. 目标相同:都是在已知数据的框架内,使得估算值与实际值的总平方差尽量更小(事实上未必一定要使用平方),估算值与实际值的总平方差的公式为:
不同
  1. 实现方法和结果不同:最小二乘法是直接对求导找出全局最小,是非迭代法。而梯度下降法是一种迭代法,先给定一个,然后向下降最快的方向调整,在若干次迭代之后找到局部最小。梯度下降法的缺点是到最小点的时候收敛速度变慢,并且对初始点的选择极为敏感,其改进大多是在这两方面下功夫。

性能评估

皮尔森相关系数(Pearson correlation coefficient)
  • 统计相关系数(1)——Pearson(皮尔逊)相关系数及MATLAB实现
  • X、Y的皮尔森相关系数的含义
    1. 当相关系数为0时,X和Y两变量无关系。
    2. 当X的值增大(减小),Y值增大(减小),两个变量为正相关,相关系数在0.00与1.00之间。
    3. 当X的值增大(减小),Y值减小(增大),两个变量为负相关,相关系数在-1.00与0.00之间。
  • 公式
  • 试用范围
  • matlab 实现
    1. matlab函数 corr()
    2. 自写函数
斯皮尔曼秩相关系数(SROOC)
肯德尔等级相关系数

可操纵金字塔变换(steerable pyramid transforms)


广义高斯概率分布

基本概念

fX(x:μ,σ,γ)=ae[b|xμ|]γ

μ,σ2,γγ=2γ=1
这里写图片描述
这里写图片描述

参数拟合与估计

这里写图片描述


朴素贝叶斯模型

文献

箱状图

箱形图于1977年由美国著名统计学家约翰·图基(John Tukey)发明。它能显示出一组数据的最大值、最小值、中位数、下四分位数及上四分位数。

举例

  • 这组数据显示出:
    • 最小值(minimum)=5
    • 下四分位数(Q1)=7
    • 中位数(Med)=8.5
    • 上四分位数(Q3)=9
    • 最大值(maximum )=10
    • 平均值=8
  • 最大值与最小值产生于这个区间。区间外的值被视为outlier显示在图上.
    • mild outlier = 3.5
    • extreme outlier = 0.5

离散余弦变换 DCT

一维DCT变换

一维DCT变换时二维DCT变换的基础,所以我们先来讨论下一维DCT变换。一维DCT变换共有8种形式,其中最常用的是第二种形式,由于其运算简单、适用范围广。我们在这里只讨论这种形式,其表达式如下:

其中,f(i)为原始的信号,F(u)是DCT变换后的系数,N为原始信号的点数,c(u)可以认为是一个补偿系数,可以使DCT变换矩阵为正交矩阵。

二维DCT变换

Alt text

二维DCT反变换

这里写图片描述

分块DCT变换

在实际的图像处理中,DCT变换的复杂度其实是比较高的,所以通常的做法是,将图像进行分块,然后在每一块中对图像进行DCT变换和反变换,在合并分块,从而提升变换的效率。具体的分块过程中,随着子块的变大,算法复杂度急速上升,但是采用较大的分块会明显减少图像分块效应,所以,这里面需要做一个折中,在通常使用时,大都采用的是8*8的分块。
这里写图片描述


离散小波变换 DWT

一维

一维DWT阶层架构图

二维

二维DWT阶层框架图

实际范例

2D DWT的结果

2018-11-29 01:20:48 ercong_kang 阅读数 810
  • 机器学习入门30天实战

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 系列课程包含Python机器学习库,机器学习经典算法原理推导,基于真实数据集案例实战3大模块。从入门开始进行机器学习原理推导,以通俗易懂为基础形象解读晦涩难懂的机器学习算法工作原理,案例实战中使用Python工具库从数据预处理开始一步步完成整个建模工作!具体内容涉及Python必备机器学习库、线性回归算法原理推导、Python实现逻辑回归与梯度下降、案例实战,信用卡欺诈检测、决策树与集成算法、支持向量机原理推导、SVM实例与贝叶斯算法、机器学习常规套路与Xgboost算法、神经网络。

    7609 人正在学习 去看看 唐宇迪

关于图像处理——运用CNN实现数字手写体识别的调研

电子科技大学 格拉斯哥学院 2017级 余尔聪

前言

关于图像处理

当下的21世纪是一个充满信息的时代,图像作为人类感知世界的视觉基础,是人类获取信息、表达信息和传递信息的重要手段。数字图像处理技术,即用计算机对图像进行处理的技术,在当下被广泛地运用到医学,教育,军事等多个领域。受学校以图像处理为主题的新生研讨课的启发,在参加完深度学习课程后,希望通过此例对图像识别有更深入的了解。

关于CNN

卷积神经网络(Convolutional Neural Networks,CNN)是一类包含卷积或相关计算且具有深度结构的前馈神经网络(Feedforward Neural Networks),是深度学习(deep learning)的代表算法之一 。由于卷积神经网络能够进行平移不变分类(shift-invariant classification),因此在文献中也被称为“平移不变人工神经网络(Shift-Invariant Artificial Neural Networks, SIANN)” 。
对卷积神经网络的研究始于二十世纪80至90年代,时间延迟网络和LeNet-5是最早被证实有效的卷积神经网络算法;在二十一世纪后,随着数值计算设备的改进,卷积神经网络得到了快速发展,并被大量应用于计算机视觉、自然语言处理等领域 。
FROM 百度百科-卷积神经网络

本例将以CNN的学习规则为基础结合BP算法,参考数据库中的原始MNIST数据,实现简单的数字手写体的识别。

正文

程序架构
大程序框架
以CNN为基础的程序框架主要分为特征提取(Feature Extractor)和分类器(Multi-classifier)两个部分。通过训练数据的前向(Forward Algorithm)输入运算和误差的后向传播(BP Algorithm)运算,多轮训练获得合适的权值,使得输出逐步靠近真实输出。

数据处理

  • 训练数据用0-1编码,以便进行矩阵运算。本例中单个输入样本为28×28矩阵。
  • 输出结果采用单热编码(e.g. ‘1’=[1 0 0 0 0 0 0 0 0 0],仅用于分类区分),以便于网络设计与统计。

特征提取(Feature Extractor)

这一部分分为卷积层和池化层两部分。通过设置滤波器,我们用卷积层提取图像中的特征。(值得注意的是,用大量数据训练提取出的图像特征大部分十分抽象而与人类肉眼判断的相差很大。)随后通过池化层池化降维以便于之后的运算(本例运用取平均值的方法降维)。
特征提取

  • 卷积层设计

    卷积层采用20个9×9的滤波器,滤波结果选取valid部分。其后运用ReLU作为激活函数,传入池化层。
  • 池化层设计

    池化层输入为20个20×20的矩阵。本例池化层采用2×2平均池化,即每四个输出为一个单元,取这四个数的均值为新的输出。最后的池化结果为20个10×10的矩阵。

分类器(Multi-classifier)

这一部分的程序设计采用包含一个有100个节点的单隐层神经网络结构(输入层+隐层+输出层)。基于梯度下降算法和BP算法,用每一个输入调整层与层之间的权重矩阵达到训练网络的目的。
在这里插入图片描述

  • 输入层设计

  1. 从特征提取网络传入的单组样本为20个10×10的矩阵(因为有20个滤波器,故而每一个输入样本有20组输出),为方便之后的分类训练,我们将其转化为一个2000×1的向量;
  2. 设置第一层权重矩阵大小为100×2000;
  3. 运用ReLU作为第一层的激活函数。
  • 隐层设计

  1. 设置隐层权重矩阵大小为10×100;
  2. 设置激活函数为ReLU。
  • 输出层设计

  1. 设置输出层激活函数为Softmax(用于多分类问题的激活函数);
  2. 最终输出结果为10×1的向量,最大值对应表征为1,其余值表征为0。

后向传播的实现(Backward)

本例中,采用后向传播算法不断更新权值,使得最终输出逐步逼近真实值。而后后向传播的关键在于梯度下降的概念,通过从后往前传导误差,达到训练目的,在此不做赘述。
可参照公式:
梯度下降算法原理
(说明:J为代价函数;w为权重矩阵;e为误差;x为前层输出)

算法实现

主程序部分

% this is my main program for MNIST
% CNN and BP are used to build whole structure
% this is a basic one
% name: 余尔聪
% date: 2018-11-28

load('MNISTData.mat'); 
% import TRAINING and TESTING Data

% initiation of variables
X = X_Train; % training data-input
D = D_Train; % training data-output
W1 = randn(9,9,20); % 9×9 Convolution Matrix
W3 = (2*rand(100,2000)-1)/20; % 1st layer Weight Matrix 
W4 = (2*rand(10,100)-1)/10; % 2nd layer Weight Matrix

% Training for 1 time
    [W1,W3,W4] = CNN(X,D,W1,W3,W4);

% Show Accuracy
acc = ACC(D_Test,X_Test,W1,W3,W4);
fprintf('Accuracy is %f\n', acc);

本例只进行了一轮训练作为示例(也因为样本量足够大-60000个,但实际情况下多数需要多轮训练)。

CNN-训练部分

function [W1,W3,W4] = CNN(X,D,W1,W3,W4)
% this is the training function
% comprised of Feature Extractor and Multi-classifier
% inputs include Training input and output, W1, W2, W3
% aims to find proper W1, W2, W3 as output

    dW1 = zeros(9,9,20); % preallocating for being faster
    alpha = 0.01; % step length
    for k = 1:60000 % one epoch for one sample
        x = X(:,:,k); % initiate one epoch input
        d = D(:,k); % initiate one epoch output

前向传播(Forward)

  • 特征提取(Feature Extractor)
        % Forward Algorithm
        
        % Feature Extractor 
        % comprised of Convolution and Pooling
        for m = 1:20
            V1(:,:,m) = conv2(x,rot90(W1(:,:,m),2),'valid'); % Convolution Algorithm
        end
        Y1 = max(0,V1); % Activation Function-ReLU
        Y2 = (Y1(1:2:end,1:2:end,:)+Y1(2:2:end,1:2:end,:)+Y1(1:2:end,2:2:end,:)+Y1(2:2:end,2:2:end,:))/4; 
        % Pooling by 2×2 Mean
  • 分类器(Multi-classifier)
        % Multi-classifier
        y2 = reshape(Y2,[],1); % reshape Y2 into 2000×1 vector
        v3 = W3*y2; % 1st layer calculation
        y3 = max(0,v3); % ReLU
        v = W4*y3; % 2nd layer calculation
        y = Softmax(v); % Softmax-multiclassification

后向传播(Backward)

  • 分类器(Multi-classifier)
        % BP Algorithm
        % Multi-classifier
        e = d-y; % error of output
        delta = e; % cross_entropy+Softmax
        e3 = W4'*delta; % error of 2nd layer
        delta3 = (v3>0).*e3; % ReLU
        e2 = W3'*delta3; % error of 1st layer

        dW4 = alpha*delta*y3'; % change in W4
        dW3 = alpha*delta3*y2'; % change in W3

        W3 = dW3+W3; % update W3
        W4 = dW4+W4; % update W4
  • 特征提取(Feature Extractor)
        % Feature Extractor
        E2 = reshape(e2,size(Y2)); % reshape e2 into 10×10×20 matrix
        E1 = zeros(size(Y1));E2_4 = E2/4; % backward pooling
        E1(1:2:end,1:2:end,:) = E2_4;
        E1(1:2:end,2:2:end,:) = E2_4;
        E1(2:2:end,1:2:end,:) = E2_4;
        E1(2:2:end,2:2:end,:) = E2_4;
        delta1 = (V1>0).*E1; % ReLU
        for m = 1:20
            dW1(:,:,m) = alpha*conv2(x,rot90(delta1(:,:,m),2),'valid');
            % change in W1
        end
        W1 = W1+dW1; % update W1

结果检测

运用测试集(除训练集以外的样本)检测训练结果(三个权重矩阵)。

function acc = ACC(D_Test,X_Test,W1,W3,W4)
% This is Used to Show Accuracy
    N = length(D_Test);
    d_comp = zeros(1,N);
    for k = 1:N
        x = X_Test(:,:,k); % initiate one epoch input
        % Feature Extractor 
        % comprised of Convolution and Pooling
        for m = 1:20
            V1(:,:,m) = conv2(x,rot90(W1(:,:,m),2),'valid'); % Convolution Algorithm
        end
        Y1 = max(0,V1); % Activation Function-ReLU
        Y2 = (Y1(1:2:end,1:2:end,:)+Y1(2:2:end,1:2:end,:)+Y1(1:2:end,2:2:end,:)+Y1(2:2:end,2:2:end,:))/4; 
        % Pooling by 2×2 Average
        
        % Multi-classifier
        y2 = reshape(Y2,[],1); % reshape Y2 into 2000×1 vector
        v3 = W3*y2; % 1st layer calculation
        y3 = max(0,v3); % ReLU
        v = W4*y3; % 2nd layer calculation
        y = Softmax(v); % Softmax-multiclassification
        
        % Statistics Accuracy
        [~, i] = max(y);
        d_comp(k) = i;
    end
[~, d_true] = max(D_Test); % real output
correctMsk = (d_comp == d_true); % counting
acc = sum(correctMsk)/N; % rate calculation
end


结语

结果分析

运行时间

正确率

MAINPro
Accuracy is 0.975800

注:正确率会因为权重矩阵初始化的不同而有所差异。

网络优化

本例中的程序框架使用了CNN算法,其耗时283.148s(当然取决于自己的电脑了),正确率为97.58%左右。为了提高收敛速度,可以考虑使用批量算法,动量算法;为了提高正确率,可以考虑加深网络层数,使用Dropout,改变激活函数,代价函数……以改变网络性能。

写在最后
作为第一次写博客的新手、深度学习的初学者,希望大家多多包涵。
如有错误,望指正~

2012-04-09 16:30:33 icemanyandy 阅读数 1208
  • 机器学习入门30天实战

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 系列课程包含Python机器学习库,机器学习经典算法原理推导,基于真实数据集案例实战3大模块。从入门开始进行机器学习原理推导,以通俗易懂为基础形象解读晦涩难懂的机器学习算法工作原理,案例实战中使用Python工具库从数据预处理开始一步步完成整个建模工作!具体内容涉及Python必备机器学习库、线性回归算法原理推导、Python实现逻辑回归与梯度下降、案例实战,信用卡欺诈检测、决策树与集成算法、支持向量机原理推导、SVM实例与贝叶斯算法、机器学习常规套路与Xgboost算法、神经网络。

    7609 人正在学习 去看看 唐宇迪
程序名称    :图片扭扭看
版本    :1.0
网站        :    www.softboy.uqc.cn
简介    :图片扭扭看 是一款非常有趣的图像处理软件,包含强大的bend计算机图像处理算法,实现局部成圆角成梯度平滑放大. 是目前所有手机处理软件没有的滤镜功能,是做有趣独特大头贴必备工具。
用法:点击图片,实现特效处理。clear清除图片;upload 加载手机中图片,save:保存处理的图片。
配置说明: 安卓系统2.2 以上,屏幕分辨率480*800以上且已安装flash插件,否者黑屏并影响体验.
广告语:扭扭你的相片,恶搞你的头像
资费类型    :    免费
开发者信息  :    softboy
官网地址    :    无
支持手机系统:    Android 2.2 以上

关键字    :  图片扭扭 恶搞 图片处理

下载地址:http://www.softboy.uqc.cn



没有更多推荐了,返回首页