项目开发过程中,Eclipse中Project Explorer和Package Explorer字体太小,看着费劲,那就修改吧。网上的有许多改法,都没成功,最后经过自己的研究,修改成功,先分享如下:
第一步、找e4_default_win7.css或e4-dark_win.css
在eclipse中的plugins\org.eclipse.ui.themes_1.2.1.v20170809-1435\css目录
第二步、修改字号
用EditPlus打开e4-dark_win.css ,有查找功能找到“CTabFolder Tree, CTabFolder Canvas”
在 CTabFolder Tree, CTabFolder Canvas {
background-color: #2F2F2F;
color: #CCC;
}修改成
CTabFolder Tree, CTabFolder Canvas {
background-color: #2F2F2F;
color: #CCC;
font-size:16px;
}
保存。
第三步、重启eclipse即可。
这个修改方法经过测试验证是可行的。
本次改进主要是针对水下图像的亮度矫正,但改进后有些图像中出现红色小点点
慢慢来吧,万里长征第二步如下:
Game over
为了方便大家相互交流 我建立了一个QQ群 557569924
做数据可视化时,Echarts是很好用的。这里来一个学习笔记系列。
官网:http://echarts.baidu.com/
一、引用echarts Echarts可以用npm进行安装,也可以直接导入到web项目进行引用,博主采用了引用方式直接分析它的使用。
下载Echarts:http://echarts.baidu.com/download.html
导入相关js:
body里的内容如下:
结果图:
二、echarts柱状图分析 1,init渲染 首先echarts通过js找到id为main的div,通过init(document.getElementById(‘main’))对该框进行渲染。到这一步是没有任何显示的。
真正起作用的事setOption方法。
让我们来看下init 的api:
(dom: HTMLDivElement|HTMLCanvasElement, theme?: Object|string, opts?: { devicePixelRatio?: number renderer?: string width?: number|string height? number|string }) => ECharts dom就是指一个dom对象,像document.getElementById(‘main’));
theme的话可以设置主题,比如增加一个theme属性:echarts.init(document.getElementById(‘main’),’dark’),界面变为:
对于theme而言,dark和light一般是有的,其他的主题就得找一找咯
opts和theme一样是可选的,用来显示指定实例相关属性。
2,setOption setOption是这段代码的核心,设置图表实例的配置项以及数据,万能接口,所有参数和数据的修改都可以通过setOption完成。ECharts 会合并新的参数和数据,然后刷新图表。如果开启动画的话,ECharts 找到两组数据之间的差异然后通过合适的动画去表现数据的变化。
调用setOption方法:
chart.setOption(option, { notMerge: ..., lazyUpdate: ..., silent: ... }); option:图表的配置项和数据;notMerge:可选,是否不跟之前设置的option进行合并,默认为false,即合并。;lazyUpdate:可选,在设置完option后是否不立即更新图表,默认为false,即立即更新。silent:可选,阻止调用 setOption 时抛出事件,默认为false,即抛出事件。
像代码中的xAxis: {type: ‘category’}, 这些部分,都属于opts的部分,还有dataset也属于option的内容。
配置项API:http://echarts.baidu.com/option.html#xAxis
(1)title 以title为例,如果在option选项中加入 :
title:{text:[
‘bars1′,’bars2′,’bars3’
]},
则会在页面上显示标题:
(2)xAxis 这个属性是用来设置x轴的
重点看一下type这个属性:
'value' 数值轴,适用于连续数据。
美颜是个常见的话题,暗藏了一个基础性的问题,什么是美,也就是人像之审美。
中国人审美的标准:
1,面部轮廓——“三庭五眼”;
2,人脸正中垂直轴上——“四高三低”;
3,人脸正中水平轴上——“丰”;
4,五官精致
符合上述三个条件,即中国人眼中的美貌了。
下面我们来具体分析:
①三庭五眼
世界各国普遍认为“瓜子脸、鹅蛋脸”是最美的脸形,从标准脸形的美学标准来看,面部长度与宽度的比例为1.618∶1,也就是黄金分割比例。
我们中国人所谓的三庭五眼,是人的脸长与脸宽的一般标准比例,从额头顶端发际线到眉毛、从眉毛到鼻子、从鼻子到下巴,各占1/3,这就是“三庭”;脸的宽度以眼睛的宽度为测量标准,分成5个等份,这就是“五眼”,具体如下图所示:
②四高三低
所谓“四高”是指:
第一高点,额部;
第二个高点,鼻尖;
第三高点,唇珠;
第四高点,下巴尖;
所谓“三低”是指:
第一低,两个眼睛之间,鼻额交界处必须是凹陷的;
第二低,在唇珠的上方,人中沟是凹陷的,美女的人中沟都很深,人中脊明显;
第三低,在下嘴唇唇的下方,有一个小小的凹陷;
“四高三低”在头侧面相上最明确,如下图所示:
③“丰”字审美
“丰”是指人脸正中横轴上符合“丰”字审美准则。在人的面部上画上一个“丰”字,来判断美丑。先作面部的中轴线,再通过太阳穴(颞部)作一条水平线,通过两侧颧骨最高点作一条平行线,再通过口角到下颌角作一条平行线。形成一个“丰”字。在“丰”字的三横上面,颞部不能太凹陷,也不能太突起;如下图所示:
④五官精致
五官精致包含一下几个方面:
1、眼睛美:
双眼对称,眼窝深浅适中
2、鼻子美:
鼻根与双眼皮位置等高
3、耳廓美:
双耳对称,大小及形态相同
4、口唇美:
上唇下1/3部微向前翘
5、牙齿美:
静止状态时上前牙覆盖下前牙形1/3;正中上前牙与面形相同,牙齿整齐,洁白;微笑时露出双侧尖牙;
上面这些就是我们东方人所认为的貌美审美观,也是本人根据网络资源所做的一些总结。当然这只是一种大众认可,而并非所有人。对于真正的美女,不单单是这些内容,还要有形体与身材的审美等。
本文这里给大家普及的内容,主要是作为美颜算法研究的知识储备,所谓知己知彼,只有我们更了解什么是美,那么,我们的美颜算法才能更上一层楼!
零、目标 Deep Dream是谷歌推出的一个有意思的技术。在训练好的CNN上,设定几个参数就可以生成一张图象。具体目标是:
了解Deep Dream基本原理 掌握实现生成Deep Dream 模型 一、技术原理 在卷积网络中,通常输入的是一张图象,经过若干层的卷积运算,最终输出图像的类别。这期间使用到了图片计算梯度,网络根据梯度不断的调整和学习最佳的参数。但是卷积层究竟学习到了什么,卷积层的参数代表了什么,浅层卷积和深层卷积学习到的内容有哪些区别,这些问题Deep Dream可以解答。
假设输入网络的图像为X,网络输出的各个类别的概率为t(t是一个多维向量,代表了多种类别的概率)。设定t[N]为优化目标,不断的让神经网络去调整输入图像X的像素值,让输出t[N]尽可能的大,最后极大化第N类别的概率得到图片。
关于卷积层究竟学到了什么,只需要最大化卷积层的某一个通道数据就可以了。折输入的图像为X,中间某个卷积层的输出是Y,Y的形状是hwc,其中h为Y的高度,w为Y的宽度,c为通道数。卷积的一个通道就可以代表一种学习到的信息。以某一个通道的平均值作为优化目标,就可以弄清楚这个通道究竟学习到了什么,这也是Deep Dream的基本原理。
二、在TensorFlow中使用 导入Inception模型
原始的Deep Dream 模型只需要优化ImageNet 模型卷积层某个通道的激活值就可以。因此,应该先导入ImageNet图像识别模型,这里以 Inception 为例。创建 load_inception.py 文件,输入如下代码: # 导入基本模块 import numpy as np import tensorflow as tf # 创建图和会话 graph = tf.Graph() sess = tf.InteractiveSession(graph=graph) # 导入Inception模型 # tensorflow_inception_graph.pb 文件存储了inception的网络结构和对应的数据 model_fn = 'tensorflow_inception_graph.pb' with tf.gfile.FastGFile(model_fn, 'rb') as f: graph_def = tf.GraphDef() graph_def.ParseFromString(f.read()) # 导入的时候需要给网络制定一个输入图像,因此定义一个t_input作为占位符 # 需要注意的是,使用的图像数据通常的格式为:(height,width,channel), # 其中height为图像的像素高度,width为图像的像素宽度,chaneel为图像的通道数,一般使用RGB图像,所以通道数为3 t_input = tf.placeholder(np.float32, name='input') imagenet_mean = 117.
PCANet:一种简单的图像分类的深度学习基线 \quad\quad
这篇文章主要对论文《PCANet: A Simple Deep Learning Baseline forImage Classification?》进行中文翻译,翻译的中加入了自己的理解,如果有不恰当的地方,欢迎大家提出。
\quad\quad
论文大体可以分为五部分,摘要,引言,方法(级联线性网络结构(PCANet),实验,结论。
论文作者;Tsung-Han Chan, Member, IEEE, Kui Jia, Shenghua Gao, Jiwen Lu, Senior Member, IEEE,
Zinan Zeng, and Yi Ma, Fellow, IEEE
论文来源:IEEE TRANSACTIONS ON IMAGE PROCESSING, VOL. 24, NO. 12, DECEMBER 2015
论文链接:http://arxiv.org/abs/1404.3606
论文下载地址:https://arxiv.org/pdf/1404.3606v1.pdf
摘要 \quad\quad
在本文中,我们提出了一个非常简单的深层次基于非常的图像分类学习网络基本数据处理组件:1)级联主成分
分析(PCA); 2)二进制散列; 3)块状直方图。在提出的架构中,PCA被用于学习多级滤波器组。接下来是简单的二进制文件用于索引和汇集的散列和块直方图。这个因此,架构称为PCA网络(PCANet)和可以非常容易和有效地设计和学习。为了比较并提供更好的理解,我们还介绍和研究了PCANet的两个简单变体:1)RandNet和2)LDANet。它们共享相同的拓扑结构PCANet,但它们的级联滤波器是随机选择的或从线性判别分析中学习。我们有广泛的在许多基准可视化数据集上测试了这些基本网络适用于不同的任务,包括野外标记面(LFW)用于面部验证; MultiPIE,扩展耶鲁B,AR,面部护理用于人脸识别的识别技术(FERET)数据集;MNIST用于手写数字识别。令人惊讶的是所有任务,这种看似天真的PCANet模型都与之相提并论最先进的功能,无论是前缀,高度手工制作,或[通过深度神经网络(DNN)]仔细学习。更令人惊讶的是,该模型为许多分类设定了新记录扩展的耶鲁B,AR和FERET数据集和关于MNIST的变化。其他公众的其他实验数据集还证明了PCANet作为个整体的潜力简单但竞争激烈的纹理分类基线和对象识别。
关键词 – 卷积神经网络,深度学习,PCA网络,随机网络,LDA网络,人脸识别,手写数字识别,对象分类。
引言 \quad\quad
基于视觉视觉语义的图像分类是非常的挑战性的任务,主要是因为通常有很大的不同照明产生的类内变异量条件,包括光照变化、不匹配不对齐、形变因素、遮挡因素等。学者们已经做出了许多努力提出各种各样的特征来应对这些变化。代表性示例是用于纹理和面部分类的Gabor特征和局部二元模式(LBP)以及用于对象识别的SIFT和HOG特征。虽然这些手选的底层特征能够很好的应对特定情况下的数据处理任务,但是这些特征的泛化能力有限,对待新问题往往需要构建新的特征。从数据中学习得到感兴趣的特征被认为是克服手选特征局限性的一个好的方法。这种方法的一个例子是通过深度神经网络(DNN)进行学习,这种网络最近引起了人们的极大关注[1]。深度学习的基本思想是通过构建多层网络,对目标进行多层表示,以期通过多层的高层次特征来表示数据的抽象语义信息,获得更好的特征鲁棒性。图像分类中深度学习成功的一个关键的框架是卷积网络框架的使用[3] – [10]。卷积深度神经网络(ConvNet)框架[3] – [5],[8],[9]由多个可训练的阶段组成,这些阶段彼此叠加,然后是监督分类器。每个阶段通常由“三层”组成 – 卷积层、非线性处理层以及下采样层。通常,这种网络通常使用梯度下降(SGD)方法来对其进行训练。尽管已经针对不同的视觉任务提出了许多深度卷积网络的变化,并且取得了显著成效。一个典型的例子就是小波散射模型(ScatNet),其通过将卷积核改为小波核来避免算法学习的步骤。然而就是这一简单改动,使其居然能够在手写数字识别和文本识别等方面超过相同层次的卷积网络和深度神经网络,不过由于
难以应对光照变化和遮挡影响,它在人脸识别方面表现不佳。
A动机和目的 \quad\quad
我们研究的最初动机是希望解决卷积网络(ConvNet)和小波网络(ScatNet)之间的某些明显差异。我们希望实现两个简单的目标:首先,我们希望设计一个简单的深度学习网络,该网络应该非常容易,甚至是微不足道的,以便训练和适应不同的数据和任务。其次,其次,希望能为深度学习的深入研究和应用提供一个基本的参考基准。解决方案:,我们使用最基本的PCA滤波器作为卷积层滤波器,在非线性层使用二值化哈希编码处理,在重采样层使用分块扩展直方图并辅以二值哈希编码,将重采样层的输出作为整个PCANet网络最终的特征提取结果,考虑到以上的因素,我们将这种简洁的深度学习结构命名PCANet。作为示例,图1示出了两阶段PCANet如何从输入图像中提取特征。
(图1)
安装环境: 惠普暗影精灵4 1050Ti Win10
cpu的安装极其容易,pip或者conda均可
gpu的安装:
pip安装极其缓慢。采用清华大学的镜像文件,倒是光速下载,但是在引入包的时候遇到ddl缺失的问题,在tensorflow官网上没有找到合适的解决办法,但是问题被列出来了。。详见https://github.com/tensorflow/tensorflow/issues/22794。。
决定改用conda安装。基本思想参考了这位大佬https://www.pugetsystems.com/labs/hpc/The-Best-Way-to-Install-TensorFlow-with-GPU-Support-on-Windows-10-Without-Installing-CUDA-1187/。。conda安装不需要单独安装cuda和cudnn。甚至于这篇博文都有些落伍了。现在几乎一条指令完事。
conda install tensorflow-gpu 会根据你的python版本自动下载相应的tensorflow,cuda和cudnn。
cuda和cudnn无需手动安装,无疑是太方便了。基本原理是通过conda创造了一个虚拟环境,conda自动在则会个环境里帮你解决了包的依赖问题。
环境配置Eureka-server
application.properties配置:
server.port=8761 eureka.instance.hostname=localhost #代表不向注册中心注册自己 eureka.client.register-with-eureka=false #维护服务实例,不需要检索服务 eureka.client.fetch-registry=false eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka pom.xml文件
4.0.0 com.unistrong eureka-servser 0.0.1-SNAPSHOT jar eureka-servser Demo project for Spring Boot UTF-8 UTF-8 1.8 org.springframework.boot spring-boot-starter-parent 2.0.5.RELEASE org.springframework.cloud spring-cloud-starter-netflix-eureka-server org.springframework.boot spring-boot-starter-test test org.springframework.cloud spring-cloud-dependencies Finchley.RELEASE pom import org.springframework.boot spring-boot-maven-plugin spring-milestones Spring Milestones https://repo.spring.io/milestone false 类配置:
@SpringBootApplication @EnableEurekaServer public class EurekaServserApplication { public static void main(String[] args) { SpringApplication.run(EurekaServserApplication.class, args); } } Eureka-client:
application.properties配置:
spring.application.name=eureka-server eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka pom.xml
4.0.0 com.unistrong eureka-client 0.
[](https://gitee.com/xxssyyyyssxx/websocket-springboot-starter/stargazers)
最近开发中需要实现服务端的推送,经过一段时间的资料查询最终锁定使用websocket来实现。JavaEE本身就支持WebSocket。我们只需要开发一个EndPoint来处理连接、消息等即可。但是WebSocket的session管理是开发中的重中之重和难点,因为你需要知道推送给谁,就需要保存代表其连接的Session。
1.首先设计管理WebSocket的session的接口WebSocketManager。
/** * 管理websocket的session,可以使用Map * @author xiongshiyan at 2018/10/10 , contact me with email [email protected] or phone 15208384257 */ public interface WebSocketManager { /** * 在容器中的名字 */ String WEBSOCKET_MANAGER_NAME = "webSocketManager"; /** * 根据标识获取websocket session * @param identifier 标识 * @return WebSocket */ WebSocket get(String identifier); /** * 放入一个 websocket session * @param identifier 标识 * @param webSocket websocket */ void put(String identifier , WebSocket webSocket); /** * 删除 * @param identifier 标识 */ void remove(String identifier); /** * 获取当前机器上的保存的WebSocket * @return WebSocket Map */ Map localWebSocketMap(); /** * 统计所有在线人数 * @return 所有在线人数 */ default int size(){ return localWebSocketMap().
一、sync idea 官网说明
功能是:
Synchronizing Changes in Gradle Project and IntelliJ IDEA Project
即同步 gradle 项目和 idea 项目
点击 as 的 help/Show Log in Finder(windows 可能略有不同)
点击 sync 后,查看 log:
2018-10-13 12:04:31,930 [e-1024-b01] INFO - e.project.sync.GradleSyncState - Started sync with Gradle for project 'JitpackTest'. 2018-10-13 12:04:43,183 [d thread 3] INFO - ild.invoker.GradleBuildInvoker - About to execute Gradle tasks: [:app:generateDebugSources] 可看出,同步后,执行了 :app:generateDebugSources task。
二、make 查看 as 的 log(部分):
2018-10-13 13:49:51,668 [e-1024-b01] INFO - ild.