自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

阳光玻璃杯

记录学习的点点滴滴

  • 博客(116)
  • 资源 (19)
  • 收藏
  • 关注

原创 YbFace:完全开源的人脸检测算法

最近看了些yolov3和ssd的水文,感觉有些收获,所以基于自己的理解搭建了个人脸检测的模型,在winderface数据集上进行尝试性训练.有一点效果,但还有很大的训练和改进空间.这里把工程share出来,希望有相同爱好的可以一起优化,训练出一个state of art的人脸检测模型.源码地址(github):face_detect如果对你有帮助,给他star鼓励下,谢谢!!!我的模型说明:基于resnet,Bottleneck是一个resnet单元.在三个特征map上检测人

2020-05-10 15:41:23 746 2

原创 基于pytorch的无需分割字符的车牌识别

传统车牌识别传统的车牌识别需要先检测出车牌,检测出车牌后通过“像素映射”或者“联通区查找”的方法分割出单个的文字,然后单独识别每个文字。传统的车牌识别不仅繁琐,而且切割文字的效果也很难令人满意。因此,能不能绕开字符分割的问题,直接识别车牌中的字符呢?当然可以的。有两种方法:crnn+ctc 卷积onlycrnn+ctc是自然场景下ocr比较通用的方法,用来识别车牌当然可以的,但是难免有...

2020-01-18 17:10:34 5863 27

原创 基于yolo的人脸检测与人脸对齐

前言YOLO(You Only Look Once)是一种基于深度神经网络的对象识别和定位算法,yolo将对象定位作为回归问题求解,在one-stage中实现对象定位与识别,其最大的特点就是快!快!快!既然yolo本来就是通过回归的方法对对象定位,并与此同时对对象进行分类。那我们很容易想到yolo在做对象定位的同时可以对对象的特征点进行回归,最常见的用例是人脸检测与人脸对齐同步完成。将...

2019-10-04 22:05:24 3541 4

原创 使用c++和cuda写深度学习框架:Grape简介

前言看过我之前的博客就知道,我曾经用java写了一个深度神经网络[CupDnn](https://github.com/sunnythree/CupDnn),但是,java写的深度神经网络真的非常慢。由于这个原因,我打算使用c++和cuda重写一个深度学习框架。有了写CupDnn的经验,结合最近阅读darknet、caffe、tiny_dnn源码的心得,新写的[Grape](https://g...

2019-09-01 10:32:02 4574 3

原创 CupCnn 添加rnn的实现

github地址:CupDnn地址(给个小星星呗^~^)RNN的原理?。。。。嗯。。。不想多说,很多介绍其原理的文章,所以这里就不啰嗦了。为什么推荐CupDnn中实现的rnn?足够简单,可能是最简单的实现吧,很容易学习。有例子吗?有的。给的例子是计算两个数相加。比如1+1=2 , 0.5+0.5=1。。。。额????这需要用深度学习?不需要,但是用rnn来实现别有一...

2019-04-14 17:53:06 639 1

原创 CupCnn的最近的一些更新情况

CupCnn是一个用java写的卷积神经网络。支持L1、L2正则化正则化的理论非常复杂,推导过程也比较繁琐,但是实现确实异常的容易,主要体现在权重的衰减。通俗的讲,就是我们每次在更新权重w的时候,可以的让他比应该的大小减小一点。 // TODO Auto-generated method stub float[] wData = w.getData(); float[] grad...

2019-02-21 16:34:50 542 7

原创 计算图(graph)的遍历

很久没有写博客了,忙并不是借口,懒才是理由。一直想重构CupCnn,写成一个通用的计算图,能随意搭建各种神经网络(CupCnn只能搭建一个但链路的有序的神经网络),然后把名字也改了,叫CupDnn好了。所以,今天先写着试下遍历一个计算图吧。先随便构造一个简单的计算图,如下:关于这个图的说明:假设每一个Unit都执行一些计算,把计算结果推送给与他相连接的Unit,下一个Unit对输入再做计...

2019-01-05 15:25:07 1432

原创 caffe lstm训练mnist手写数字

我们可以把深度学习能做的事情分为两类:时间无关的事情和时间相关的事情。时间无关的话,比如人脸识别,给神经网络一张照片,神经网络就能告诉你这是谁,这是和时间无关的。时间相关的话,比如,我要知道一段视频里的人实在吃饭还是在打哈欠,这个可能通过一张照片是无法判别的,但是通过多张连续的图片,构成一段视频,我们就可以判别这个人是在打哈欠还是在吃饭了。可是,手写数字命名是一张张无时间关系的静态图片啊?我们怎...

2018-09-20 21:12:02 1246 7

原创 Android neon 学习笔记

首先新建一个包含native代码的项目: 然后在gradle中添加对neon的支持: externalNativeBuild { cmake { cppFlags "-std=c++14" arguments "-DANDROID_ARM_NEON=TRUE" }...

2018-09-07 17:25:44 3624 2

原创 vmware 虚拟机损坏后的修复办法

为了给虚拟机调整分区的大小,使用fdisk命令新建了一个分区,还没搞明白问题出在了什么地方,总之,fdisk把原来的文件系统给搞坏了。重启之后,虚拟机无法启动了,进入了grub rescure模式。里面还有很多种要的文件啊,最近一段时间的工作成果全在里面,这可怎么办呀? 因为是文件系统损坏,所以在grub rescure模式下,虽然可以通过ls命令看到分区信息,但是当你insmod normal...

2018-08-29 10:18:07 53241 11

原创 使用卷积神经网络(CupCnn)训练人脸检测模型

结果展示最近尝试做了下人脸检测,先上两张效果图吧: 这已经是跳出来的效果比较好的图片了,表现的确是有点差。 我用了4000(19*19)多张人脸图片和8000(19*19)多张非人脸图片训练出了这个卷积模型。这个数据量确实有点少,所以效果不太好也是可以理解的。主要还是分享做人脸检测的经历。但是,我还是相信只要给我充分的数据,我也可以训练出高质量的模型。FaceDetector...

2018-03-12 16:44:15 4853 25

原创 自己制作机器学习训练和测试使用的二进制数据集(C++)

本文主要分享笔者仿照Cifar-10二进制数据库的格式,自己制作机器学习使用的二进制数据库。经过封装后,非常方便使用。代码可用Github下载:BinaryDataset关于Cifar-10CIFAR-10数据集由10个类的60000个32x32彩色图像组成,每个类有6000个图像。 有50000个训练图像和10000个测试图像: 其数据在文件中的存贮格式如下:<1...

2018-03-10 14:39:03 1952 3

原创 java写卷积神经网络---卷积神经网络(CupCnn)的数据结构

前言我在写CupCnn的时候,一个困扰我很久的问题,就是如何组织卷积神经网络的数据结构。尤其是卷积层和全连接层之间的衔接问题。卷积层至少需要四维的数据结构(batch+channel+height+width),而全连接层则只需一个二维的数据即可(batch+数据)。 CupCnn是我用java实现的一个卷积神经网络,它的源码可以从github下载: 点击下载CupCnn卷积神经...

2018-02-24 10:02:39 3542 2

原创 java写卷积神经网络---CupCnn简介

前言在机器学习中,卷积神经网络是一种深度前馈人工神经网络,已成功地应用于图像识别。目前,很多的车牌识号识别,人脸识别等都采用卷积神经网络,可以说卷积神经网络在图像识别方面取得了巨大的成功。当前开源的深度学习框架有很多了,比如caffe,tensorflow,torch等,这些深度学习框架包含了完善的卷积神经网络的实现,那么,为什么我们还要自己写卷积神经网络?直接用这些开源的深度学习框架多好,又...

2018-02-04 17:53:22 12543 4

原创 python 计算并绘制灰度直方图

其灰度直方图为: 其灰度直方图为: 代码如下:def calHistogram(img): if(len(img.shape) != 2): print("img size error") return None histogram = {} for i1 in range(img.shape[0]): for i2 in

2017-12-12 16:21:50 6854 4

原创 python 使用Id3算法实现决策树

依然是学习《统计学习方法》一书所做的简单实验,写代码的过程参考了大量其他的博客,本人在此深表感谢。代码实现的依然是书上的例子: import numpy as npimport mathimport operatordef CreateDataSet(): dataset = [ [1, 0,0,0,'no'], [1, 0,0,1,'no'],

2017-12-05 16:20:16 2296 1

原创 python KNN算法的简单实现

这里依然是学习《统计学习方法》一书中,K近邻算法的一个实验尝试。具体理论可参考该输,这里简单贴出K近邻算法的思想及实现步骤: 结果展示如下: 大的红点是传入的测试点,k传入的是5,也就是说大红点的周围5个点决定大红点的类别。 上图便是判定大红点属于红色类别的判别过程。也就是说,他周围最近邻的k个点进行投票表决,多数决定其类别。import numpy as npfrom matplotl

2017-12-01 19:29:34 1019

原创 python 朴素贝叶斯

这里的代码应该是学习《统计学习方法》的实验练习吧。代码实现的是《统计学习方法》中第四章朴素贝叶斯法的一个实例,实例如下: 、实现的步骤也是按照书中的步骤,如有问题,谢谢指正。 import numpy as npimport pickleimport osdef creatDataAndLebels(): Xa = [1,1,1,1,1, 2,2,2,2,2, 3,3,3,3,3

2017-12-01 16:02:13 648

原创 python K-Means聚类算法的实现

K-Means 简介聚类算法有很多种(几十种),K-Means是聚类算法中的最常用的一种,算法最大的特点是简单,好理解,运算速度快,但是只能应用于连续型的数据,并且一定要在聚类前需要手工指定要分成几类。 具体实现步骤如下: 给定n个训练样本{x1,x2,x3,…,xn}  kmeans算法过程描述如下所示:  1.创建k个点作为起始质心点,c1,c2,…,ck   2.重复以下过程直到收敛

2017-11-29 19:22:09 5534 1

原创 python adaboost的简单实现

初学adaboost,自己尝试着写了下adaboost的实现,这个实现以几个简单的数字作为训练样本,当然,这些数字是带标签的。然后尝试着使用adaboost对其分类。对于10个带标签的数字,分类他们只需要3个左右的弱分类器级联,组成一个强分类器就可以完全正确的分类。如果代码本身没有bug的话,adaboost的表现的确惊艳。 另外,pathon也是初学,很多的编程思路和c,c++类似,总之,各方面

2017-11-10 17:35:58 1605

原创 python 计算积分图和haar特征

import cv2import numpy as npimport matplotlib.pyplot as pltdef integral(img): integ_graph = np.zeros((img.shape[0],img.shape[1]),dtype = np.int32) for x in range(img.shape[0]): sum_cl

2017-11-09 17:19:40 5157 9

原创 计算联通区域

对于这样的图片: 抠出其中的黑色区域,效果如下: import cv2import numpy as npimport matplotlib.pyplot as pltimport timedef findUnicomArea(img): #先二值化 ret,threshold = cv2.threshold(img,128,255,cv2.THRESH_BINARY)

2017-11-06 20:31:00 4726 2

原创 TimePicker和DatePicker修改文字颜色

使用TimePicker和DatePicker的时候,发现不能设置二者的文字颜色,颜色总是黑色,找来找去也找到设置文字颜色的接口,最终google到了结果,发现很好使,特做记录。 <TimePicker android:theme="@style/MyTimePicker" android:id="@+id/sys

2017-10-25 10:56:49 5734

原创 opencv_traincascade训练人脸检测

生成样本: opencv_createsamples -vec F:\work\ml\apple-rec\data\pos.vec -info F:\work\ml\apple-rec\data\pos\pos.txt -bg F:\work\ml\apple-rec\data\neg\neg.txt -w 80 -h 80 -num 38 训练 opencv_traincascade -

2017-09-14 18:10:02 800

原创 Android息屏与亮屏

最近的项目要求apk能在空闲一会后让屏幕熄灭,检测到有用户到来(距离传感器触发)后点亮屏幕。百度了一大堆发现很多都不靠谱,google了一会才勉强找到一种能满足需求的方法,说勉强是因为这种方法需要到系统设置中给该app设备管理的权限,这使得熄屏与亮屏这样看似简单的功能显得繁琐了起来。 废话不多说,实现起来还是蛮简单的,源码可在github上直接下载: AndroidScreenOnAndOff...

2017-09-03 15:06:22 20909 3

原创 Android自定义TitleBar/ActionBar

一开始我便很困惑,TitleBar和ActionBar是什么关系? 我们知道: ActionBar是在android3.3之后推出使用的android:theme="@android:style/Theme.NoTitleBar.Fullscreen"android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen"

2017-08-16 11:37:37 1528

原创 Android 自定义View-旋转小按钮

呃,什么是旋转小按钮?上图: 自定义这个View的原因是我需要一个能点击一下就能旋转显示正在刷新的小按钮,等刷新结束后在使它停止旋转并恢复到初始状态,并且这个View的字体大小,字体颜色,进度条的颜色等都可以自由配置。 自定义View包含以下几步: 1、自定义View的属性 2、在XML布局文件中使用自定义属性 2、在View的构造方法中获得我们配置的属性 3、重写onMesure

2017-08-12 17:28:50 1618 3

原创 使用cmake构建工程

之前在linux下做项目的时候,都要自己手动的写Makefile来编译项目。后来,做Android jni开发后,发现Android studio默认的c/c++编译的工具是cmake,一开始对语法丝毫不动,查了一下资料后慢慢有了一些认识,这才发现cmake确实比写Makefile要方便多了。cmake需要较少的信息,就能为项目生成非常完成的Makefile系统,省去了大量需要手工编写脚本的工作。最

2017-08-09 18:53:49 2434

原创 深度学习五:tensorboard使用记录(windows)

TensorBoard 的可视化工具,可以用来展现你的 TensorFlow 图像,绘制图像生成的定量指标图以及附加数据。 tensorBoard的使用设计如下几个函数:第一、创建一个事件文件summary_waiter = tf.summary.FileWriter("log",tf.get_default_graph())log是事件文件所在的目录,这里是工程目录下的log目录。第二个参数是

2017-07-01 18:17:05 4933

原创 深度学习四:tensorflow-使用卷积神经网络识别手写数字

当你安装了tensorflow后,tensorflow自带的教程演示了如何使用卷积神经网络来识别手写数字。代码路径为tensorflow-master\tensorflow\examples\tutorials\mnist\mnist_deep.py。 为了快速测试该程序,我提前将需要的mnist手写数字库下载到了工程目录(我在pycharm中新建了工程,并把mnist_deep.py中的代码拷贝

2017-06-30 19:10:44 8598 3

原创 深度学习三:tensorflow,训练一个神经元

初学tensorflow,我做了一个无聊的尝试。构建一个只有两个输入,一个输出的升经网络,然后训练它。我的目标是,我给他指定一个输入,比如x1=x2=1,我期望y能输出0,所以我不断的输入x1=x2=1,然后不断的训练它,等训练一万次以后,y的输出应该非常接近0。然后我可以调整期望,比如期望y能输出0.3,然后再训练一万次,y的输入应该能非常接近0.3才行。下面是程序和实验结果:

2017-06-27 15:25:23 3042

原创 深度学习二:自己写java代码,识别手写数字

上一节我们自己写代码训练了只有一个神经元的反相器,它虽然只有一点点代码,但却让我们加深了梯度下降算法和反向传播算法的理解。只要勇敢的迈出这一步后,我们就可以勇敢的尝试它:深度学习中的hello wold–识别手写数字。只有自己写过的代码,才能完全的理解它的用意,不管它多烂,多糟糕,它确是完全属于你的东西。在训练处反相器以后,我开始大胆的尝试自己写一个全连接的神经网络,来训练手写数字。这并不难,

2017-06-27 15:21:03 7172 5

原创 深度学习一:自己写java代码,训练一个神经元

神经网络与深度学习这本书是我学习深度学习的启蒙教材,感兴趣可以到链接出下载。通过一段时间的学习,感觉基本理解了梯度下降算法和反向传播算法,于是尝试着自己写代码来实现神经网络。一开始总是很难的,所以我设计了个非常简单的目标,训练一个神经元。比如我给他输入1,我期望它输出0,这就是一个反相器。我希望它能做到这一点,所以我对他进行训练。 训练一个神经元能简化梯度下降算法和反向传播算法的实现,也能帮助我...

2017-06-27 14:41:15 11939 3

原创 图像处理-神奇的卷积核

关于卷积的理论这里就不啰嗦了。最近初步学习图像图例,使用java写点个对图像进项卷积操作的代码,实验的过程中感觉颇为惊奇,原来觉得高深的图像的锐化、浮雕、边缘检测等技术,原来用简单的卷积就可以轻松实现。 我首先将一副彩色的图像使用photoshop将其转换为灰度的raw格式,这简化了程序。转化后的图像如图所示: 接下来要对该图像做卷积操作,下面的类中只有一个静态方法,它能对raw格式灰度图像数据

2017-06-02 21:46:26 22379 6

原创 Android.mk引入第三方jar包和so库文件

以SystemUI为例,如果需要在SystemUI中引入第三方jar包以及so库,可作如下处理: 首先,在frameworks\base\packages\SystemUI下新建libs目录: 将需要引入的jar包放置到libs目录下。然后修改Android.mk文件: 也就说引入jar包主要依赖的是LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES和LOCAL_ST

2017-05-25 17:50:48 21757

原创 Android 禁止状态栏下拉

如果你有这样的需求:用户进入你的app以后,所有的操作都是你的app中设定的,用户不可以拥有系统设置等行为的能力。然后,android系统,可以通过从顶部往下拉,从而得到一个通知和快速系统设置的页面: 因此,现在你想禁止它弹出,怎么办呢? 我不知道在app中怎么做,但是如果你们的处境像我一样:Android系统是一个针对特殊平台定制的,它一旦启动就进入特定的功能页面,并且不允许用户有进入系统

2017-05-18 18:33:28 38784 12

原创 Android sqlite数据库操作笔记

这篇博客记录了一个app中,建立日志数据库需要的操作。应用场景如下: app有个登录系统,每一次登录,都需要记录一条日志信息,信息中记录登录的用户名,时间等信息。数据总共只能保存最近50次登陆的记录,超过50次以后,就会删除最前面的记录。保证数据库的行数维持在50行不变。 对数据库的操作使用的是sql语句的方式。 由于本人对sql语句不太熟练,所以将其记录下来,供以后再次使用sql数据库的时候

2017-05-06 16:28:16 622

原创 Android 编码摄像头数据为h.264格式

之前自学了下ffmpeg,使用ffmpeg在ubuntu下编解码比较方便,但是到了Android,发现使用比较多的编解码类是MediaCodec,在工作之余,抽点时间,学习下这个类的使用,做点记录,以供后续查阅。 MediaCodec类可用于访问Android底层的媒体编解码器,它是Android为多媒体支持提供的底层接口的一部分(通常与MediaExtractor, MediaSync, Med

2017-04-01 15:04:46 7749 10

原创 Android Socket通信--通过jni用c++实现客户端

讲比较重要的代码放到native层是比较好的做法。如果你有需求需要把socket通信的部分封装的jni中实现,那么本文可做参考。代码思路1.总共实现三个native方法: public native void initSocket(String ip,int port); public native void closeSocket(); public native void

2017-03-04 18:02:06 9176 4

原创 Android studio将jar包置于sdk中的android.jar之前(跳坑记)

但我们自己的包中的包或者类和sdk中android.jar的包或者类相同时,android studio默认使用的时android.jar中的内容,而如果我们想使用自己的包中的内容的话,就必须把优先级放到android studio之前。这是这样一个简单的需求,我折腾了一个上午来搞定,本来时非常简单的事情,因为跳的坑太多,浪费了很多时间。 经过一些尝试后,发现下面的说法比较靠谱。 这里写链接内容

2017-02-28 16:33:25 6094 8

Android 自定义View-旋转小按钮(修复bug)

自定义这个View的原因是我需要一个能点击一下就能旋转显示正在刷新的小按钮,等刷新结束后在使它停止旋转并恢复到初始状态,并且这个View的字体大小,字体颜色,进度条的颜色等都可以自由配置。

2017-08-12

mnist-java

自己用java代码写的识别手写数字的全连接的神经网络

2017-06-27

DeepLearningTest

使用梯度下降算法和反向传播算法训练一个神经元的java代码

2017-06-27

神经网络与深度学习pdf

神经⽹络是有史以来发明的最优美的编程范式之⼀。在传统的编程⽅法中,我们告诉计算机 做什么,把⼤问题分成许多⼩的、精确定义的任务,计算机可以很容易地执⾏。相⽐之下,在神 经⽹络中,我们不告诉计算机如何解决我们的问题。相反,它从观测数据中学习,找出它⾃⼰ 的解决问题的⽅法。

2017-06-27

root_explorer

电脑端的RE浏览器,可以查看、删除手机上的任意文件(手机必须有root权限)

2017-04-17

AndroidJniSocket.zip

使用jni将socket通信封装在c++的类中实现,c++中读取服务端发送货来的数据后会调用java层的方法来传递处理的结果。

2017-03-04

android应用程序访问linux驱动

资源包含了我尝试使用android应用程序访问linux驱动的所有源码,具体使用方法可参考我的博客:http://blog.csdn.net/u011913612/article/details/52516303

2016-09-17

Android上传多文件到服务器

代码实现了上传一个或者多个文件到apache服务器。

2016-06-29

aidl-android-studio1.3.1

第一次成功尝试使用aidl进行activity进程和service进程之间的通信,第一次尝试的可以参考下。

2016-01-21

jni-android-studio1.3.1

第一个android-studio下的Jni程序,第一次尝试android-studio做jni开发的可以看看。

2016-01-20

网页遥控器

这是一个简单的网页遥控器程序,就是用网页绘制一个遥控器,然后点击遥控上的按钮,电视就会执行和真实遥控器相同的行为。

2015-12-23

串行12864launchpad

穿行12864的launcpad程序。反复测试成功,由于是在linux下开发,因此没有IAR工程文件,下载者可自行建立工程,接好引脚后即可使用。

2015-04-23

launchpad_24l01

msp430g2553,即launchpad下的nrf24l01无线通信的程序。反复测试成功,下载后可直接使用,不用修改,注意连接对引脚就好。

2015-04-23

serial_console

使用mini2440开发板,在lcd上实时显示PC串口输入的信息。用定时器实现了光标的闪烁,pc上按回车键可换行,可以接受PC段的命令,命令格式为:以此输入'C'':''d'或者‘C’或者‘1’‘2’‘3’‘4’,具体功能源码中有注释。 有想要mini2440 x35 lcd驱动程序的可以下载此文件。 有想在mini2440 开发裸板程序,包括串口,lcd,定时器,nand flash,sdram,按键中断,lcd上字符显示等的可以下载此源码。

2015-04-23

AY-LDC1000-MSP430F5529-DEMO-Code.zip

TI的LDC1000电感信号转电信号传感器,全球首款电感信号转电信号传感器。

2014-08-09

make-3.81.tar.bz2

make工具3.81版本,在linux下编译一些软件有时候需要低版本的make工具才行。

2014-04-23

lrzsz-0.12.20.tar.gz

可以在通过串口在windows和arm开发板上的linux之间进行文件的传输,使用非常方便。

2014-04-23

freetype的分析和理解

文档简单的介绍了本人在使用freetype时的一点点理解,对用freetype显示矢量字体的初学者做点参考。

2014-03-13

arm链接文件规则

介绍了arm架构中使用的链接脚本的使用规则,比如代码段放置在存储单元的什么地方,数据段放在存储单元的什么地方等,以及语法规则。

2014-03-13

空空如也

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

TA关注的人

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