精华内容
下载资源
问答
  • CNN 架构创新分为七个不同的类别综述 深度卷积神经...CNN 在各种视觉相关任务上的性能 本综述将最近 的 CNN 架构创新分为七个不同的类别分别基于空间利用深度多路径宽度特征 图利用通道提升和注意力 引言 通过 1989 年
  • 然后对缩减后的变量作因子分析,提取主成分,随之,按照各区域的主成分值进行聚类,确定各区域所属类别,并采用判别分析方法,对各区域所属类别进行检验、调整。结果显示:第一类地区主要包括海南在内的经济发展较为落后、...
  • 获得合适的价格对于成功推出新产品至关重要。 准确估计消费者的支付意愿... 与直觉相反,我们还发现,创新者、对产品类别有良好了解的消费者或认为新产品具有高度创新性的消费者的支付意愿声明相对更偏颇,应谨慎解读。
  • 使用平行轴图显示鸢尾花(iris)的四个特征数据;

    也是扯淡,创新实验室纳个新还要出题考试。

    出题就出题吧,还出得这么难。

    再难也得做啊。。。

    先上题:

    1.数学建模
    1)使用平行轴图显示鸢尾花(iris)的四个特征数据;
    2)尝试使用其他方法优化呈现(可文字叙述,选作);

    。。。。。。。


    啥是鸢尾花

    Iris数据集是常用的分类实验数据集,由Fisher, 1936收集整理。

    iris以鸢尾花的特征作为数据来源,常用在分类操作中。该数据集由3种不同类型的鸢尾花的50个样本数据构成。其中的一个种类与另外两个种类是线性可分离的,后两个种类是非线性可分离的。
    该数据集包含了5个属性:
    & Sepal.Length(花萼长度),单位是cm;
    & Sepal.Width(花萼宽度),单位是cm;
    & Petal.Length(花瓣长度),单位是cm;
    & Petal.Width(花瓣宽度),单位是cm;
    & 种类:Iris Setosa(山鸢尾)、Iris Versicolour(杂色鸢尾),以及Iris Virginica(维吉尼亚鸢尾)。

    我也是醉了。。。

    这玩意上哪儿找啊?难不成matlab自带?



    too young...


    只好下载了一个,2k的文件居然还要我1积分,真是世风日下,人心不古啊。。。





    下载下来打开看看:



    这堆东西是个啥?arrf又是啥?

    我去。。。我的第一个stackoverflow居然就献给这个东西了。。。

    http://stackoverflow.com/questions/6952315/how-to-load-arff-format-file-to-matlab

    Is there any package to load .arff format file into matlab?The .arff format is used in Weka for running machine learning algorithm.

    Yes, there are a few MATLAB interfaces for WEKA files on MATLAB File Exchange, I normally use this one: http://www.mathworks.com/matlabcentral/fileexchange/21204-matlab-weka-interface where you have a saveARFF() and a loadARFF() functions.

     
    any examples on how it is used? –  mike_x_ Oct 4 '14 at 15:01
     
    If you unzip the fileexchange files into your working directory you can use loadARFF in this way: data = loadARFF('myfile.arf'). –  Matteo De Felice Oct 6 '14 at 7:14
     
    I get an error but i ll check again. I have unzipped it and added the folder with subfolders in the path, by clicking the button "set path". Is it correct? Do i have to do anything else so as to import the toolkit?


    把这个下载下来看看:

    http://www.mathworks.com/matlabcentral/fileexchange/21204-matlab-weka-interface





    嗯,看着挺靠谱的。

    添加路径:







    Error: File: loadARFF.m Line: 9 Column: 12
    Arguments to IMPORT must either end with ".*" or else specify a fully qualified class name:
    "weka.core.converters.ArffLoader" fails this test.

    。。。。。。。

    还得下这个开发环境。。。

    http://www.cs.waikato.ac.nz/ml/weka/downloading.html

    我的java版本不够,果断下载第一个。





    安装完之后还报错。。。。。。。

    saber大牛文章指教:

    http://blog.csdn.net/xywlpo/article/details/6531025

    ——————————————————————————————————————

    不要以为下载下来就能用,你会在如下地方报错:

    if(~wekaPathCheck),wekaOBJ = []; return,end

    import weka.core.converters.ArffLoader;

    import java.io.File;

    Tricky的事情就是得把weka.jar加入到matlab的classpath.txt列表。classpath.txt在哪儿?到matlab的command窗口敲:

    >> which classpath.txt

    /Applications/MATLAB_R2010b.app/toolbox/local/classpath.txt

    这个是在mac下的结果,windows估计也有类似的文件结构。然后就是到classpath.txt里加入一行,weka.jar的绝对路径,例如:

    /Applications/weka-3-6-4.app/Contents/Resources/Java/weka.jar

    好了,matlab的借口就配置好了。

    这里还有个问题,保存的ARFF中类别信息(class)是numrical型,不是枚举型,至少调用LibSVM会报错。

    得手工修改(我的数据有7类):

    @attribute class numeric => @attribute class {1,2,3,4,5,6,7}

    OK,matlab这边这下没问题了。


    ——————————————————————————————————————————————

    同时参考了以下文章:

    http://blog.sina.com.cn/s/blog_890c6aa30101av9x.html

    ——————————————————————————————————————————————
    # 配置MATLAB调用Weka
    1. 下载weka
    2. 安装weka
    3. 在环境变量的系统变量中的Path中加入jre6(或者其他的)中bin文件夹的绝对路径,如:
          C:\ProgramFiles\Java\jre6\bin;
    4. 查找MATLAB配置文件classpath.txt
        which classpath.txt%使用这个命令可以查找classpath.txt的位置
    5. 修改配置文件classpath.txt
        edit classpath.txt
        在classpath.txt配置文件中将weka安装目录下的weka.jar的绝对安装路径填入,如:
        C:\ProgramFiles\Weka-3-6/weka.jar
    6. 重启MATLAB
    7. 运行如下命令:
        attributes =javaObject('weka.core.FastVector'); 
        %如果MATLAB没有报错,就说明配置成功了

    ——————————————————————————————————————————————

    java还得添加环境变量,当真麻烦。。。



    添加java路径:
    还得把反斜杠换成斜杠。。。
    D:\000\tools\Weka-3-6\weka.jar

    又报错了 。。。



    把arff文件复制到当前路径下,解决:



    下面用格式转换命令:

    [mdata,featureNames,targetNDX,stringVals,relationName] =weka2matlab(data);




    ====================================我是分割线========================================================





    把mdata保存一下,这样,鸢尾花(iris)数据集就可以直接使用了。
    ————————————————————————————————————————————

    我已经将txt格式的鸢尾花数据集上传到我的资源,在matlab下可以一句话加载。

    资源:http://download.csdn.net/detail/u013657981/9241121

    matlab命令:load('iris.txt')


    ————————————————————————————————————————————
    我们要用mdata矩阵画平行轴图
    啥又是平行轴图?



    看来大概是这么个东西:


    看看这个东西是怎么画出来的:


    用Matlab 画出鸢尾花图,可以用下列语句来实现。
    subplot(4,4, 1) %分区绘图
    plot(x1,y1,'o') %绘制散点图
    你有数据的话,可以传至我的邮箱,可以帮你试一下。


    嗯,思路大概是,用

    subplot(4,4, 1)
    分成16个区


    以下四个变量:

    sepallength  
    sepalwidth    
    petallength    
    petalwidth   


    分别为

    x1,x2,x3,x4

    再来一遍

    y1,y2,y3,y4


    Iris-setosa,Iris-versicolor,Iris-virginica 是三类,用不同的颜色和形状表示。


    iris矩阵是150*5


    思路呢,是这么个思路:


    每一行是一个数据点(样本),每个样本第五个元素(第五列)是类别标签。


    那就把0,1,2三类挑出来,

    就是iris(第五列为0的行,的所有列)

    然后自己跟自己对应着画图就可以了。

    subplot排版略麻烦:


    代码是这样的:


    Iris_setosa=iris(iris(:,5)==0,:);
    Iris_versicolor=iris(iris(:,5)==1,:);
    Iris_virginica=iris(iris(:,5)==2,:);
    subplot(4,4,1);
    %第一列的所有行,第四列的所有行
    scatter(Iris_setosa(:,1),Iris_setosa(:,4),'red');
    hold on
    scatter(Iris_versicolor(:,1),Iris_versicolor(:,4),'g','+');
    hold on
    scatter(Iris_virginica(:,1),Iris_virginica(:,4),'b','*');
    
    subplot(4,4,5);
    
    scatter(Iris_setosa(:,1),Iris_setosa(:,3),'red');
    hold on
    scatter(Iris_versicolor(:,1),Iris_versicolor(:,3),'g','+');
    hold on
    scatter(Iris_virginica(:,1),Iris_virginica(:,3),'b','*');
    
    subplot(4,4,9);
    
    scatter(Iris_setosa(:,1),Iris_setosa(:,2),'red');
    hold on
    scatter(Iris_versicolor(:,1),Iris_versicolor(:,2),'g','+');
    hold on
    scatter(Iris_virginica(:,1),Iris_virginica(:,2),'b','*');
    
    subplot(4,4,13);
    
    subplot(4,4,2);
    %第一列的所有行,第四列的所有行
    scatter(Iris_setosa(:,2),Iris_setosa(:,4),'red');
    hold on
    scatter(Iris_versicolor(:,2),Iris_versicolor(:,4),'g','+');
    hold on
    scatter(Iris_virginica(:,2),Iris_virginica(:,4),'b','*');
    
    subplot(4,4,6);
    
    scatter(Iris_setosa(:,2),Iris_setosa(:,3),'red');
    hold on
    scatter(Iris_versicolor(:,2),Iris_versicolor(:,3),'g','+');
    hold on
    scatter(Iris_virginica(:,2),Iris_virginica(:,3),'b','*');
    
    subplot(4,4,10);
    
    subplot(4,4,14);
    
    scatter(Iris_setosa(:,2),Iris_setosa(:,1),'red');
    hold on
    scatter(Iris_versicolor(:,2),Iris_versicolor(:,1),'g','+');
    hold on
    scatter(Iris_virginica(:,2),Iris_virginica(:,1),'b','*');
    
    
    subplot(4,4,3);
    %第一列的所有行,第四列的所有行
    scatter(Iris_setosa(:,3),Iris_setosa(:,4),'red');
    hold on
    scatter(Iris_versicolor(:,3),Iris_versicolor(:,4),'g','+');
    hold on
    scatter(Iris_virginica(:,3),Iris_virginica(:,4),'b','*');
    
    subplot(4,4,7);
    
    
    subplot(4,4,11);
    
    scatter(Iris_setosa(:,3),Iris_setosa(:,2),'red');
    hold on
    scatter(Iris_versicolor(:,3),Iris_versicolor(:,2),'g','+');
    hold on
    scatter(Iris_virginica(:,3),Iris_virginica(:,2),'b','*');
    
    subplot(4,4,15);
    
    scatter(Iris_setosa(:,3),Iris_setosa(:,1),'red');
    hold on
    scatter(Iris_versicolor(:,3),Iris_versicolor(:,1),'g','+');
    hold on
    scatter(Iris_virginica(:,3),Iris_virginica(:,1),'b','*');
    
    subplot(4,4,4);
    
    subplot(4,4,8);
    %第一列的所有行,第四列的所有行
    scatter(Iris_setosa(:,4),Iris_setosa(:,3),'red');
    hold on
    scatter(Iris_versicolor(:,4),Iris_versicolor(:,3),'g','+');
    hold on
    scatter(Iris_virginica(:,4),Iris_virginica(:,3),'b','*');
    
    subplot(4,4,12);
    
    scatter(Iris_setosa(:,4),Iris_setosa(:,2),'red');
    hold on
    scatter(Iris_versicolor(:,4),Iris_versicolor(:,2),'g','+');
    hold on
    scatter(Iris_virginica(:,4),Iris_virginica(:,3),'b','*');
    
    subplot(4,4,16);
    
    scatter(Iris_setosa(:,4),Iris_setosa(:,1),'red');
    hold on
    scatter(Iris_versicolor(:,4),Iris_versicolor(:,1),'g','+');
    hold on
    scatter(Iris_virginica(:,4),Iris_virginica(:,1),'b','*');
    
    
    

    结果是这样的:




    展开全文
  • 煤炭行业现存问题的广泛横向关联性和深度纵向交叉性,决定了煤炭行业协同创新呈现参与主体和协同模式多样化的"全要素"特征,使得影响煤炭行业协同创新的因素类别增多,因此,影响因素的类别遴选和作用机理分析显得至关...
  • OCR 文字特征提取

    千次阅读 2017-03-08 17:58:55
    作为OCR系统的第一步,特征提取是希望找出图像中候选的文字区域特征,以便我们在第二步进行文字定位和第三步进行识别. 在这部分内容中,我们集中精力模仿肉眼对图像与汉字的处理过程,在图像的处理和汉字的定位方面...

    作为OCR系统的第一步,特征提取是希望找出图像中候选的文字区域特征,以便我们在第二步进行文字定位和第三步进行识别. 在这部分内容中,我们集中精力模仿肉眼对图像与汉字的处理过程,在图像的处理和汉字的定位方面走了一条创新的道路. 这部分工作是整个OCR系统最核心的部分,也是我们工作中最核心的部分.

    传统的文本分割思路大多数是“边缘检测 + 腐蚀膨胀 + 联通区域检测”,如论文[1]. 然而,在复杂背景的图像下进行边缘检测会导致背景部分的边缘过多(即噪音增加),同时文字部分的边缘信息则容易被忽略,从而导致效果变差. 如果在此时进行腐蚀或膨胀,那么将会使得背景区域跟文字区域粘合,效果进一步恶化.(事实上,我们在这条路上已经走得足够远了,我们甚至自己写过边缘检测函数来做这个事情,经过很多测试,最终我们决定放弃这种思路。)

    因此,在本文中,我们放弃了边缘检测和腐蚀膨胀,通过聚类、分割、去噪、池化等步骤,得到了比较良好的文字部分的特征,整个流程大致如图2,这些特征甚至可以直接输入到文字识别模型中进行识别,而不用做额外的处理.由于我们每一部分结果都有相应的理论基础作为支撑,因此能够模型的可靠性得到保证.

    特征提取大概流程.png
    图2:特征提取大概流程

    在这部分的实验中,我们以图3来演示我们的效果. 这个图像的特点是尺寸中等,背景较炫,色彩较为丰富,并且文字跟图片混合排版,排版格式不固定,是比较典型的电商类宣传图片. 可以看到,处理这张图片的要点就是如何识别图片区域和文字区域,识别并剔除右端的电饭锅,只保留文字区域.

    小米电饭锅.jpg
    图3:小米电饭锅介绍图

    图像的预处理

    首先,我们将原始图片以灰度图像的形式读入,得到一个 m×n m×n的灰度矩阵 M M,其中 m,n m,n是图像的长、宽. 这样读入比直接读入RGB彩色图像维度更低,同时没有明显损失文字信息. 转换为灰度图事实上就是将原来的RGB图像的三个通道以下面的公式整合为一个通道:

    Y=0.299R+0.587G+0.114B(1) (1)Y=0.299R+0.587G+0.114B

    图3的灰度图如下图.
    灰度图像.png

    图像本身的尺寸不大,如果直接处理,则会导致文字笔画过小,容易被当成噪音处理掉,因此为了保证文字的笔画有一定的厚度,可以先将图片进行放大. 在我们的实验中,一般将图像放大为原来的两倍就有比较好的效果了.

    不过,图像放大之后,文字与背景之间的区分度降低了. 这是因为图片放大时会使用插值算法来填补空缺部分的像素. 这时候需要相应地增大区分度. 经过测试,在大多数图片中,使用次数为2的“幂次变换”效果较好. 幂次变换为

    xxr(2) (2)x↦xr

    其中 x x代表矩阵 M M中的元素, r r为次数,在这里我们选取为2. 然后需要将结果映射到 [0,255] [0,255]区间:
    xxMminMmaxMmin×255(3) (3)x↦x−MminMmax−Mmin×255

    其中 Mmax,Mmin Mmax,Mmin是矩阵 M M的最大值和最小值. 经过这样处理后,图像如下图.
    幂次变换.png

    灰度聚类

    接着我们就对图像的色彩进行聚类. 聚类的有两个事实依据:

    1.  灰度分辨率 肉眼的灰度分辨率大概为40,因此对于像素值254和255,在我们肉眼看来都只是白色;
    2.  设计原则 根据我们一般的审美原则,在考虑海报设计、服装搭配等搭配的时候,一般要求在服装、海报等颜色搭配不超过三种颜色.

    更通俗地说,虽然灰度图片色阶范围是 [0,255] [0,255],但我们能感觉到的整体的色调一般不多,因此,可以将相近的色阶归为一类,从而减少颜色分布,有效地降低噪音.

    事实上,聚类是根据图像的特点自适应地进行多值化的过程,避免了传统的简单二值化所带来的信息损失. 由于我们需要自动地确定聚类数目,因此传统的KMeans等聚类方法被我们抛弃了,而且经过我们测试,诸如MeanShift等可行的聚类方法又存在速度较慢等缺陷. 因此,我们自行设计了聚类方法,使用的是“核概率密度估计”的思路,通过求颜色密度极值的方式来聚类.

    核密度估计

    经过预处理的图像,我们可以对每个色阶的出现次数进行统计,得到如图5的频率分布直方图:

    对预处理后的图像进行灰色阶统计.png
    图5:对预处理后的图像进行灰色阶统计

    可以看到,色阶的分布形成了几个比较突出的峰,换言之,存在一定的聚类趋势. 然而,直方图的统计结果是不连续的,一个平滑的结果更便于我们分析研究,结果也更有说服力. 将统计结果平滑化的方法,就是核密度估计(kernel density estimation).

    核密度估计方法是一种非参数估计方法,由Rosenblatt和Parzen提出,在统计学理论和应用领域均受到高度的重视[2]. 当然,也可以简单地将它看成一种函数平滑方式. 我们根据大量的数据来估计某个值出现的概率(密度)时,事实上做的是如下估算:

    p^(x)=1nhi=1nK(xxih)(4) (4)p^(x)=1nh∑i=1nK(x−xih)

    其中 K(x) K(x)称为核函数. 当 h h取为1,且 K(x) K(x)
    K(x)={1,x=00,x0(5) (5)K(x)={1,x=00,x≠0

    时,就是我们上述的直方图估计.  K(x) K(x)这一项的含义很简单,它就是告诉我们在范围 h h内的 xi xi都算入到 x x中去,至于怎么算,由 K(xxih) K(x−xih)给出. 可见, h h的选择对结果的影响很大, h h我们称之为带宽(bandwidth),它主要影响结果的平滑性.

    如果 K(x) K(x)是离散的,得到的结果还是离散的,但如果 K(x) K(x)是光滑的,得到的结果也是比较光滑的. 一个常用的光滑函数核是高斯核:

    K(x)=12πex2/2(6) (6)K(x)=12πe−x2/2

    所得到的估计也叫高斯核密度估计. 在这里,我们使用scott规则自适应地选取 h h,但需要手动指定一个平滑因子,在本文中,我们选取为0.2.对于示例图片,我们得到如图6的红色曲线的结果.

    频率分布的高斯核密度估计.png
    图6:频率分布的高斯核密度估计

    极大极小值分割

    从图6中我们进一步可以看出,图像确实存在着聚类趋势. 这表现为它有几个明显的极大值和极小值点,这里的极大值点位于 x=10,57,97,123,154 x=10,57,97,123,154,极小值点位于 25,71,121,142 25,71,121,142.

    因此,一个很自然的聚类方法是:有多少个极大值点,就聚为多少类,并且以极小值点作为类别之间的边界. 也就是说,对于图3,可以将图像分层5层,逐层处理. 分层之后,每一层的形状如下图,其中白色是1,黑色是0.

    图层1.png 图层2.png
    图层3.png 图层4.png
    图层5.png
    通过聚类将图像分为5个图层

    可见,由于“对比度”和“渐变性”假设,通过聚类确实可以将文字图层通过核密度估计的聚类方法分离开来. 而且,通过聚类分层的思路,无需对文字颜色作任何假定,即便是文字颜色跟背景颜色一致时,也可以获得有效检测.


    转载到请包括本文地址: http://spaces.ac.cn/archives/3785/

    如果您觉得本文还不错,欢迎点击下面的按钮对博主进行打赏。打赏并非要从中获得收益,而是希望知道有多少人曾在科学空间驻足。当然,如果你无视它,也不会影响你的阅读。再次表示欢迎和感谢!
    展开全文
  • 它在不同的国家或地区表现出不同的特征。 2006年,中国提出了建设创新型国家的国家战略,随后批准了该国60多个试点城市。 对中国创新型城市评估体系的研究也在不断增加。 本文在前人的基础上,以创新环节为基础,...
  • Atitit 工程师程序员技术级别对应表与主要特征 P1--p6 说明 类别 职称 对应技术标志 P5 高级工程师 工程师类 ...

    Atitit 工程师程序员技术级别对应表与主要特征

     

     

     

    P1--p6

    说明

    类别

    职称

    对应技术标志

    P5

    高级工程师

    工程师类

     

    一般四五年

    P6

    资深开发

    工程师类

     

    78年经历

    P7

    P7 一般是技术专家

    专家类

     

    89年经历

    P8

    高级专家

    专家类

    中级

    对开发过程进行一定的归纳10年内不过时

    专家级别,十年一个专家,一万小时定律

     

    P9

    资深专家

    专家类

    高级

    出版自己的书籍

    在组织组织重要角色

    有着重大创新

    P10

    研究员

     

    资深

    可以发明自己的语言,比如java sql aql之父

    自己制造重大中间件数据库等
    开发模式效率大创新(类似结构化,oo等)

    自然语言的创新

    P11

     

     

     

    对开发过程进行强有力的归纳 xxx原理定律提出

    对开发过程哲学上的抽象归纳,可以保证万年不变的思想

    P12

     

     

     

    多本著作,不限于it业界,法学教育医学文艺等跨领域思想与成果

     

     

     

    普通 中高级  资深

     

    P6是公司干活的骨干、独立的执行者,他们需独立完成自己的工作。P6和P5的区别是,P6是需能培养人和项目管理能力,P5则没有该要求;

    P6=资深,研究生1到2年工作经验,或者优秀应届研究生,应届博士起点,或者本科3年工作经验,干活主力。

     

    P7 (---)

      通常需正规本科毕业,需相关专业教育教育或相关从业经验;

      公司内部培养周期较长;

      对自己所从事的职业具备一定前瞻性了解,在某个方面独到,对公司关于此方面的技术或管理产生影响;

      对复杂问题的解决有自己的见解,对问题的识别、优先级分配见解尤其有影响力,善于寻求资源解决问题;

      可独立领导跨部门的项目,能够培训或指导新进员工;

      是技术或相关管理岗位的资深人士;

    P7对应的Title是xx专家,需在某方面能独当一面,是行业顾问,能对该行业发展做出相对准确的判断;

    P7和P6的重要区别是,P7能跨部门领导项目,P6需在一定指导下才能跨部门领导项目;

    P8 (---)

      本职级员工对公司内外业务及业界的相关资源及水平比较了解;

      参与公司相关战略制定,可影响部门管理层的对某个领域的判断;

      通过自己的分析对公司复杂问题解决产生影响;

    P8是高级专家,是行业的创新者,能自主创新;

    P8与P7的区别体现在对行业理解的深度不同;

     

    展开全文
  • Context Prior for Scene Segmentation-设计注意力机制模块加入上下文先验信息–关键创新点代码复现-tensorflow2.x、keras。 论文:Context Prior for Scene Segmentation 代码github:暂未开源 最近在研究注意力...

    Context Prior for Scene Segmentation-设计注意力机制模块加入上下文先验信息–关键创新点代码复现-tensorflow2.x、keras。

    论文Context Prior for Scene Segmentation
    代码github暂未开源
    最近在研究注意力机制与先验信息,查阅到这篇论文,但是暂未开源代码,便根据对论文内容的理解复现论文方法,使用TensorFlow2.x版本,基于Keras编写代码

    论文介绍

    摘要

    最近的语义分割工作广泛探索了上下文相关性,以实现更准确的细分结果。但是,大多数方法很少区分不同类型的上下文依赖项,这可能会有损场景理解。在这项工作中,我们直接监督特征聚合以清楚地区分类内和类间上下文信息。具体来说,我们在Affinity Loss监督下开发出上下文先验。 给定输入图像和相应的gt,Affinity Loss将构建理想的类似的特征图,以监督上下文先验的学习。 所学习的上下文先验提取属于同一类别的像素,而相反的先验则专注于不同类别的像素。 通过嵌入到传统的深度CNN中,提出的上下文先验层可以选择性地捕获类内和类间上下文相关性,从而实现可靠的特征表示。 为了验证有效性,我们设计了有效的上下文先验网络(CPNet)。大量的定量和定性评估表明,所提出的模型与最新的语义分割方法相比具有良好的表现。 更具体地说,我们的算法在ADE20K上达到46.3%的mIoU,在PASCAL-Context上达到53.9%的mIoU,在Cityscapes上达到81.3%的mIoU【参考博客

    关键点

    CPlayer
    提出以上模块,说的是通过生成的Ideal Affinity Map向网络中加入像素值的先验信息去监督网络对类内和内间学习(我的理解就是相当于把原标签转为另一种表达方式与网络的某一层输出的特征图求损失,其实相比于其他分割网络最后输入的损失计算,换汤不换药!!!)。该模块可加在任意主干网络后,用于对主干网络生成的特征图进行再一次的特征提取。

    开整代码

    导入依赖包

    from tensorflow import keras
    from tensorflow.keras import layers
    import tensorflow.keras.backend as K
    from CoordConv2 import Coord_Conv2d
    import tensorflow as tf
    

    Aggregation模块

    在这里插入图片描述
    把3X3的卷积核分成3X1和1X3两个,效果相似,参数计算大量减少。

    
    def Aggregation(x, num_classes):
        x = layers.Conv2D(filters=num_classes, kernel_size=3, padding='same')(x)
        x = layers.BatchNormalization()(x)
        x = layers.Activation('relu')(x)
        x1 = layers.DepthwiseConv2D(kernel_size=(1, 3), padding='same')(x)
        x1 = layers.DepthwiseConv2D(kernel_size=(3, 1), padding='same')(x1)
        x2 = layers.DepthwiseConv2D(kernel_size=(3, 1), padding='same')(x)
        x2 = layers.DepthwiseConv2D(kernel_size=(1, 3), padding='same')(x2)
        x = layers.Add()([x1, x2])
        x = layers.BatchNormalization()(x)
        x = layers.Activation('relu')(x)
        return x
    

    CP过程

    在这里插入图片描述

    def CP(x):
        B, H, W, C = x.shape
        x_origon = x
        x_origon = tf.reshape(x_origon, [-1, H*W, C])
        x = layers.Conv2D(filters=H*W, kernel_size=1, padding='same')(x)
        x = layers.BatchNormalization()(x)
        x = layers.Activation('sigmoid')(x)
        x = tf.reshape(x, [-1, H*W, H*W], name='out1') #  论文中P,Context Prior Map
        x1 = tf.matmul(x, x_origon)
        x1 = tf.reshape(x1, [-1, H, W, C])
        x2 = tf.matmul(tf.ones_like(x)-x, x_origon) 
        x2 = tf.reshape(x2, [-1, H, W, C])
        return x, x1, x2
    

    CPModule

    在这里插入图片描述

    def CPModule(x, num_classes):
        x1 = Aggregation(x, num_classes)
        x2, x3, x4 = CP(x1)
        output = layers.Concatenate()([x, x3, x4])
        return x2, output
    

    x2用于论文提出的AffinityLoss计算,output用于普通的softmax损失计算

    Affinity Loss

    loss_1

    在这里插入图片描述

    loss_binary = keras.losses.binary_crossentropy(Ideal_Affinity_Map, Context_Prior_Map)
    

    loss_2

    在这里插入图片描述

    Tp = K.log(K.sum(tf.multiply(Ideal_Affinity_Map, Context_Prior_Map), axis=1) / (K.sum(Context_Prior_Map, axis=1)+K.epsilon())+K.epsilon())
    Tr = K.log(K.sum(tf.multiply(Ideal_Affinity_Map, Context_Prior_Map), axis=1) / (K.sum(Ideal_Affinity_Map,
                                                                                             axis=1)+K.epsilon()) + K.epsilon())
    Tj = K.log((K.sum((1.0-Ideal_Affinity_Map)*(1.0-Context_Prior_Map), axis=1)+K.epsilon())/(K.sum(1.0-Ideal_Affinity_Map, axis=1)+K.epsilon())+K.epsilon())
    loss = -K.mean(T1+T2+T3)
    

    总损失

    在这里插入图片描述

    loss+loss_binary
    

    代码汇总

    在这里插入图片描述
    Ideal Affinity Map的生成论文中是这样描述的
    在这里插入图片描述
    对于DownSample操作并没有清除的说明用的是什么方法,因此我这儿采用的是多次最大值池化,由于我的标签本就是ONE-HOT标签,所以就不存在论文中提及的one-hot encoding操作。具体标签制作详见我的另一篇博客
    由于我的主干网络输出的特征图是32X32大小,直接将标签降到特征图大小会丢掉很多目标特征(所以对原论文说的把标签图下采样到特征图尺寸是否保留目标的特征信息持怀疑态度,或者作者使用了巧妙的下采样方式就另说了),经试验证明,在我使用的标签图中,下采样到128X128大小,目标的特征信息不会损失。但是实验使用cpu做的,[128X128, 128X128]与[128X128, 128X128]的矩阵运算算不了,所以实验采用的是把标签下采样到64X64大小。原标签尺寸为512X512
    使用tf.image中的resize函数下采样可避免特征丢失问题!!

    def Affinity_loss(y_true, y_pred):
        y_true_down = tf.image.resize(y_true, (256, 256), methord=tf.image.ResizeMethord.NEAREST_NEIGHBOR)
        y_true_down = y_true_down = tf.image.resize(y_true_down , (128, 128), methord=tf.image.ResizeMethord.NEAREST_NEIGHBOR)
        y_true_down = y_true_down = tf.image.resize(y_true_down , (64, 64), methord=tf.image.ResizeMethord.NEAREST_NEIGHBOR)
        y_true_down = y_true_down = tf.image.resize(y_true_down , (32, 32), methord=tf.image.ResizeMethord.NEAREST_NEIGHBOR)
        B_down, H_down, W_down, C_down = y_true_down.shape
        y_true_down = tf.reshape(y_true_down, [-1, H_down*W_down, C_down])
        Ideal_Affinity_Map = tf.matmul(y_true_down, tf.transpose(y_true_down, [0, 2, 1]))
        Ideal_Affinity_Map = tf.cast(Ideal_Affinity_Map, dtype=tf.float32)
        Context_Prior_Map = tf.cast(y_pred, dtype=tf.float32)
        loss_binary = keras.losses.binary_crossentropy(Ideal_Affinity_Map, Context_Prior_Map)
        T1 = K.log(K.sum(tf.multiply(Ideal_Affinity_Map, Context_Prior_Map), axis=1) / (K.sum(Context_Prior_Map, axis=1)+K.epsilon())+K.epsilon())
        T2 = K.log(K.sum(tf.multiply(Ideal_Affinity_Map, Context_Prior_Map), axis=1) / (K.sum(Ideal_Affinity_Map,
                                                                                             axis=1)+K.epsilon()) + K.epsilon())
        T3 = K.log((K.sum((1.0-Ideal_Affinity_Map)*(1.0-Context_Prior_Map), axis=1)+K.epsilon())/(K.sum(1.0-Ideal_Affinity_Map, axis=1)+K.epsilon())+K.epsilon())
        loss = -K.mean(T1+T2+T3)
    
        return loss+loss_binary
    

    Context_Prior_Map 和 Ideal_Affinity_Map

    Context_Prior_Map Context_Prior_Map

    Ideal_Affinity_Map

    Ideal_Affinity_Map

    总结

    总的来说,对上下文先验矩阵Ideal_Affinity_Map的预测还是比较接近论文贴出的结果

    在这里插入图片描述

    展开全文
  • 本综述将最近的 CNN 架构创新分为七个不同的类别,分别基于空间利用、深度、多路径、宽度、特征图利用、通道提升和注意力。 深度卷积神经网络(CNN)是一种特殊类型的神经网络,在各种竞赛基准上表现出了当前最优...
  • 引言众所周知,数据挖掘中大约有80%的时间被...但是一些回归算法却需要将每一个输入特征都转变成数值类型的特征。而且在现实生活中,我们需要解决的分类或者预测问题的数据集中,充满了类别属性,比如:ZIP码,SIC,I
  • 无处不在的数字化是在众多产品和服务类别中进行创新的主要动力之一。 为了为来自不同领域的学者创建一个初步的论坛,并建立一个初步的理论框架以指导未来的数字创新学术研究,我们于10月18日组织了一次跨学科的研究...
  • 创新创业基础答案李家华金利杰

    万次阅读 多人点赞 2021-04-17 15:58:35
    创新创业课程的目标及核心 1【单选题】创业学习最核心是下面哪一项? A、创业知识 B、创业能力 C、创业方法 D、创业精神 我的答案:D 2【多选题】通过创新创业课程学生需要掌握下面哪几项? A、基础知识 B、基本理论...
  • 特征选择, 经典三刀

    千次阅读 2016-12-02 10:25:21
    特约作者:史春奇 数据应用学院 特征选择(Feature Selection,FS)和特征抽取(Feature...FS仅仅对特征进行排序(Ranking)和选择, FE更为复杂,需要重新认识事物, 挖掘新的角度, 创新性的创立新的属性, 而目
  • 分类中常见的类别不平衡问题解决方法

    万次阅读 多人点赞 2017-08-29 11:01:32
    常见的类别不平衡问题解决方法 通常的分类学习方法中都有一个共同的假设,即不同类别的训练样例数目相同。如果不同类别的训练样例数目稍有差别,通常对分类影响不大,但是若差别很大,则会对学习造成影响,测试结果...
  • 据了解,当时智能感知警务系统识别通过AI识别技术“发现”一名与在逃的盗窃嫌疑人于某体貌特征相似 的嫌疑男子 , 正在驾驶摩托车,随后便“通知”周围警力 立即 上前 追踪盘查, 最终 在体育场附近成功将其抓获。 ...
  • 罗杰斯的创新扩散模型

    千次阅读 2016-08-29 21:48:43
    什么是创新扩散模型?  创新扩散模型是对创新采用的各类人群进行研究归类的一种模型, 它的理论指导思想是在创新面前,部分人会比另一部分人思想更开放,更愿意采纳创新。 这个模型也被称之为创新扩散理论...
  •   在很多机器学习任务中,训练集中可能会存在某个或某些类别下的样本数远大于另一些类别下的样本数目。即类别不平衡,为了使得学习达到更好的效果,因此需要解决该类别不平衡问题。 Jason Brownlee的回答: 原文...
  • 文本特征及分析笔记

    万次阅读 2016-11-17 16:55:02
    文本特征笔记 用于表示文本的基本单位通常称为文本的特征特征项。 特征项必须具备一定的特性:1)特征项要能够确实标识文本内容;2)特征项具有将目标文本与其他文本相区分的能力;3)特征项的个数不能太多;4)特征项...
  • 特征工程之数据预处理1 处理缺失值2 处理异常值2.1 异常值检测2.2异常值处理3 处理类别不平衡问题4 图片数据扩充5 数据的特征表示 数据预处理 首先需要对数据进行预处理,一般常用的两种数据类型: 结构化数据。 ...
  • 文本特征提取方法研究

    千次阅读 2016-10-26 13:32:40
    文本特征提取方法研究
  • 特征工程之数据预处理(下)

    千次阅读 2019-02-13 22:44:12
    机器学习入门系列(2)–如何...上篇文章介绍了如何处理缺失值和图片数据扩充的问题,这篇文章会介绍另外两种情况,处理异常值和类别不平衡的问题。 3.1.3 处理异常值 异常值分析是检验数据是否有录入错误以及含有...
  • 2019年5G创新深度研究报告

    千次阅读 2020-02-09 19:14:42
    来源:中信建投从历史上看,每一轮科技产业创新周期均主要由通信代际升级驱动,历时 5-8 年。我们认为 2017-2019 年为 4G 时代的稳定成熟期,而进入 2020 年,运营商加速投...
  • 数据处理和特征工程

    2020-10-26 20:45:40
    特征工程 特征选择:从给定特征集合中选出相关特征的过程 选择相关特征,抛弃不相关特征特征选择回影响模型的预测能力 若保留尽可能多的特征,模型的性能能提升,但是模型和计算变得复杂 若剔除较多的特征,模型...
  • 以大数据人工智能和Python工具视角,基于常用的特征工程和过程,系统的...算法涵盖了统计和机器学习技术,特征提取包括时域特征、派生特征等,特征选择包括特征分析和特征选择,体现了特征工程过程就成为机器学习过程。
  • 人脸特征点检测:VanillaCNN

    千次阅读 2016-12-10 16:29:42
    《Facial Landmark Detection with Tweaked Convolutional Neural Networks》论文解读论文...概述如我前面所说,人脸特征点检测是一个回归问题,这个问题需要关注两个方面:一是人脸特征表示,二是回归方法。这次解析的
  • 图像局部特征(十八)--BOW

    千次阅读 2016-07-19 10:11:27
    我觉得仅仅只是将类似SIFT、HOG这些局部特征的统计方法从微观扩展到宏观的过程,利用直方图的统计的特性,构造多个词典,利用简单的距离映射,得到每一副图片的BOW的特征,但是这样一个简单的扩展确实最重要的创新点...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,874
精华内容 5,549
关键字:

创新类别的特征