- 博客(84)
- 收藏
- 关注
原创 caffe 之 proto 理解
caffe 所有层的参数全部定义在一个caffe.proto 的文件里面,里面有每个参数的详细解释,点击打开链接 在protocol buffers的官网的教程中,看到了一些基本的语法和编译使用,为了我们更好的理解caffe自定义一个.proto文件其实是很简单,如下所示syntax = "proto2";package tutorial;message Person {
2017-10-07 15:41:09
878
原创 LeetCode 64. Minimum Path Sum
最大值最小值问题,dp矩阵型问题,保存每一步的状态, 首先初始化第一行和第一列,然后填充中间的值,dp[i][j] = grid[i][j]+min(dp[i-1][j],dp[i][j-1])class Solution {public: int minPathSum(vector>& grid) { int col = grid[0].size();
2017-10-02 12:07:40
298
原创 LeetCode 494. Target Sum
使用递归方法class Solution {public: int findTargetSumWays(vector& nums, int S) { int res=0; find(nums,S,0,res); return res; } void find(vector& nums, int S, int start,
2017-10-02 10:58:41
379
原创 编程珠玑之快速排序
我们将需要划分的目标区间定位[l, u]。首先给定目标值t = x[l]。我们需要重新组织x[l...u],使得所有小于t的元素都在m的一端,所有大于t的元素在m的另一端。初始时m = l,我们将i从l+1一直遍历到u,代码在检测第i个元素时必须考虑两种情况。如果x[i]>=t,那么一切正常,不变式为真;如果x[i]void q_sort_ori(int *a, int low, in
2017-09-07 15:15:08
370
原创 编程珠玑之二分搜索
问题:使用二分搜索返回找到元素的位置,找到第一次出现的位置,找到最后一次出现的位置,分别使用循环和递归编写代码原始的二分搜索int bs(int *a, int low, int high, int target){ while(low < high){ if(a[low] == target) return low; int mid = (low+high)/2; if
2017-09-06 14:37:39
240
原创 服务器看图详解 XManager VNC imgcat
由于长期在服务器上工作,没有图形化界面全是命令行, 加上是做图像识别的,免不了整天看图,这里总结一下服务器看图的一些方法,配置好之后,可以使你的工作效率提升数倍,从每次把图片通过FileZilla 下载到本地打开看,数秒或者数分钟缩减至 输入一行命令的时间。1、mac 用户针对mac用户,一般都是通过iterm2 ssh 连接到远程服务器,由于iterm2 本身就很强大,支持看图,所以在服
2017-07-10 12:29:50
2196
原创 caffe 均值文件binaryproto 转mat
需要使用caffe 的matlab 接口测试分类,所以需要将之前的均值文件转换成.matcaffe 根目录下,matlab/+caffe 目录下有io.m, 里面写好了一个fuction read_mean() .如下所示。调用方法, 直接在caffe 的根目录下, 进入matlab,命令行,>>addpath('./matlab')>>mean_file = 'path/to/*
2017-07-06 11:48:23
1129
1
原创 人脸属性年龄性别标注工具
为了提升人脸属性性别和年龄的准确率,需要标注大量人脸图片数据,于是写了一个Qt工具,实现的功能是针对一张图片,标注男性还是女性,标注8个年龄段中的一个,这8个年龄段的选定是通过Adience 数据集标注的段选定的。界面如下:
2017-07-05 13:24:57
2255
1
原创 ImageNet2017 周记之第四周
距离截止日期还剩下一周,baseline还没有,但是已经找到问题所在。我把之前的VOC的prototxt换成coco的,然后使用class-aware的方式,训练。这样原先bbox输出的8个点,就变成了现在的804点,rfcn的8*7*7变为804*7*7,计算量无疑变大,训练速度自然也就变慢。由之前的1s2.5轮,变为现在1s1 轮。而batch是1,两块卡是2,也就是1s能够过两张图片,两个半
2017-07-05 11:38:54
462
原创 ImageNet2017 周记之第三周
因为使用RFCN直接训练ImageNet的baselinemAP只有24%左右,太低,打乱自己的计划,之前那种网络结构都没有机会去在ImageNet上使用,先找这个问题。花了一周时间,从重新写imagenet.py,处理ImageNet的数据,到训练完,得到结果,花了四天,还是这么高。说明之前训练RFCN的ImageNet数据处理是没有问题的,但是为何如此低,难道是因为ImageNet的目标检测比
2017-07-05 11:38:04
759
原创 ImageNet2017 周记之第二周
因为跑一次ImageNet需要2天多的时间,所以一开始是在VOC上做修改网络结构的实验。在网络结构上主要尝试了以下实验:第一种,就是直接使用RFCN+ Resnet101 结构跑VOC,什么改动都没有,结果作为baseline。第二种,在RFCN的ps-roipooling层,加入pad_ratio,之所以要加pad_ratio,相当于起到增大了proposal对应原图的尺寸,比如pad_
2017-07-05 11:37:12
616
原创 ImageNet2017 周记之第一周
首先,是调研,自己之前使用CNN做的都是分类任务,对检测了解一些,但是了解的不多,所以看了许多论文和一些博客。按照CNN 做目标检测的时间发展顺序介绍。RCNN,首先使用selectivesearch得到许多候选框,然后将这些候选框resize到一个固定相同的大小,使用CNN 预训练的网络提取特征,每个特征都对应一个SVM 分类器,判别该类属于类别,使用一个线性脊回归器进行精修框的位置。特点是
2017-07-05 11:35:28
702
原创 tensorflow 1.0 安装
教程在tensorflow 的官网上,我是用的源码编译https://www.tensorflow.org/install/install_sources首先安装 Bazel也是源码编译https://bazel.build/versions/master/docs/install-compile-source.html在编译bazel之前把PATH加上JDK的二进制路径比如$
2017-05-09 16:52:56
1232
原创 LeetCode98. Validate Binary Search Tree Add to List
解题思路:根据二叉查找树的定义,中序遍历二叉树得到的序列应该是一个增序列,所以使用中序遍历/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : va
2017-04-11 00:18:39
380
原创 Latex 之BibTeX 管理文献(以 IEEE模板为例)
之所以使用Latex 是因为它对文献格式的管理比word要简单的多,这里介绍BibTex 管理文献的使用方法.自己在网上搜了好多,讲的大多是bib文件格式,bibtex 编译, 其实当按照我上一篇博客配置好sublime和Latex之后,无需再去想编译的事情, 直接Ctrl+B即可,所以我下面主要介绍从.bib文件的产生到引用.在你的.tex 文件的目录下,创建一个mylib.bib文件,
2017-04-10 22:39:42
17076
原创 mac 下配置Latex 搭配sublime2 skim
最近,要写论文,之前使用过Latex生成简历, 但是并没有用其写论文,而且Latex在国际上的会议和期刊都有许多模板,排版也更简单,所以花一下时间配置一下,边写论文边学习.1.MacTex的下载, 官网,按提示安装即可,挺大的.2.sublime2的配置, 因为自己之前一直用sublime,所以sublime配好了,大家不会的话可以单独搜一下sublime怎么配置,也很简单.3.ski
2017-04-10 22:23:11
834
原创 数据分析--iris dataset
数据分析–iris dataset%matplotlib inlinefrom matplotlib import pyplot as pltfrom matplotlib import pylabfrom pylab import figure, subplot, hist, xlim, showfrom sklearn.datasets import load_irisdata = l
2017-04-08 13:18:36
1138
原创 ipython web server 配置
最近深度学习训模型的时候, 需要画图看一下参数的变化,使用plt句柄, 服务器上没有图形化句柄,图片只能保存下来看,十分不方便, 所以配置了一下ipython web 服务器.默认服务器上已经装好ipythonIn [1]: from IPython.lib import passwdIn [2]: passwd()Enter password:Verify password:
2017-04-07 23:06:34
639
原创 Leetcode 537. Complex Number Multiplication
解题思路:主要是对字符分割class Solution {public: string complexNumberMultiply(string a, string b) { pair av = parse(a); pair bv = parse(b); int ra = av.first * bv.first - av.second
2017-04-05 10:36:35
379
原创 Mac 配置安装MySQL MySQLdb
1.mac 下安装mysql 步骤首先到官网上下载dmg按照步骤一步步做, 之后将 /usr/local/mysql/bin 加入到~/.zshrc 中source ~/.zshrc2.登录mysqlsudo sucd /usr/local/mysql/bin/./mysqld_safe --skip-grant-tables &之后mysql会自动重启(偏好设置中
2017-03-22 09:54:40
267
原创 python 之多线程编程
今天,看了python 核心编程的第四章,多线程编程,记录一下要点。1、进程和线程进程是一个执行中的程序,每个进程都有自己的地址空间、内存、数据栈以及其他用于跟踪执行的辅助数据.。线程,实在同一个进程下执行的,共享相同的上下文,一个进程中的各个线程与主线程共享一片数据空间,线程之间的信息共享和通信会更加容易。2、使用多线程python 中有thread 模块和 threadin
2017-03-20 11:14:18
548
原创 python 之 socket 通信
今天看了python 核心编程的第二章,讲了关于python socket 模块的通信, 记录要点如下:套接字:1、AF_UNIX AF_INET套接字地址:主机-端口对面向连接的套接字:在通信之前必须建立一个连接,比如使用电话给朋友打电话,实现这种连接类型的主要协议是传输控制协议(TCP)创建TCP套接字,必须使用SOCK_STREAM作为套接字的类型无连接的套接字:无须建
2017-03-19 16:39:01
425
原创 LeetCode 321. Create Maximum Number
由于k的大小不定,所以有三种可能,第一种是当k为0时,两个数组中都不取数;第二种是当k不大于其中一个数组的长度时,有可能只从一个数组中取数;第三种情况是k大于其中一个数组的长度,则需要从两个数组中分别取数,至于每个数组中取几个,每种情况都要考虑到,然后每次更结果即可。对于分别从两个数组中取数字的情况,我们需要将两个取出的小数组混合排序成一个数组,小数组中各自的数字之间的相对顺序不变。我们还需要一个
2017-03-18 17:20:50
398
原创 50 行 PyTorch 代码搞定 GAN
最近,一篇非常火的报道,使用pytorch 加 50 行核心代码模拟 GAN 对抗神经网络,自己尝试走了一遍,并对源码提出自己的理解。原文链接如下 https://medium.com/@devnag/generative-adversarial-networks-gans-in-50-lines-of-code-pytorch-e81b79659e3f#.nr3akui9z cod
2017-02-21 18:11:19
4229
2
原创 安装torch7 深度学习框架
在centos7 上安装torch7,首先在github上下载, git clone https://github.com/torch/distro.git ~/torch --recursive 获取安装LuaJIT(C语言编写的Lua的解释器)和Torch所必需的依赖包然后,进入torch文件夹,打开并执行install-deps中的命令,因为我之前已经在服务器上配置好了caffe
2017-02-20 16:57:59
2487
原创 python 关键字之yield、next
包含yield 关键字的函数成为一个迭代器,yield跟return的位置一样,只不过每次返回结果后,并没有退出,而是等待下一次迭代,下一次迭代开始后从yield后的语句开始执行,直到再次遇到yield,返回新一次的结果。可以看成是一个List, 但是和list的不同的是占用内存少。def subimage_generator(img, stride, patch_size, nb_hr_im
2017-02-19 00:00:01
2567
原创 python 关键字之super
class C(B): def method(self, arg): super(C, self).method(arg)子类C重写了父类B中同名方法method,在重写的实现中通过super实例化的代理对象调用父类的同名方法。举例如下class BaseSuperResolutionModel(object): def __init__(self, mod
2017-02-18 23:47:49
821
原创 Keras 切换GPU
https://keras.io/getting-started/faq/ 查看Keras 官方文档If you are running on the TensorFlow backend, your code will automatically run on GPU if any available GPU is detected.If you are running on the
2017-02-18 14:46:17
2393
原创 Swift3 基本语法
import Foundationprint("Hello, World!")var a = 5var b = 10let c = a+bprint(c,terminator:" ")var s = "hello xjc"s = "\(s) \(100)"print(s)var arr = ["hello":"xjc","he":"world"]print(arr["hell
2017-02-09 22:37:49
449
原创 数据结构之链表
#ifndef NODE_H#define NODE_Hclass Node{public: int data; Node *next; void printNode(); };#endif#include "Node.h"#include using namespace std;void Node::printNode(){ cout<<data<<endl;
2017-02-09 22:32:56
268
原创 数据结构之二叉树 使用数组实现
二叉树可以使用数组简单的实现,其原理就是左右子节点和父节点的关系, 2*index + 1 为左节点,2*index + 2 为右节点class Tree{public: Tree(int size,int *pRoot); ~ Tree(); int *SearchNode(int nodeIndex); bool AddNdode(int nodeIndex, int d
2017-02-09 22:30:45
684
原创 数据结构之二叉树
最近做leetcode 上有好多题目是关于链表和二叉树的相关操作,于是回顾了一下数据结构,实现了链表和二叉树相应的操作.#ifndef NODE_H#define NODE_Hclass Node{public: Node(); Node *SearchNode(int nodeIndex); void DeleteNode(); void PreorderTraversal
2017-02-09 22:24:55
205
原创 JNI c代码回调java空方法
首先在class JNI中定义public class JNI { static { System.loadLibrary("hello");//需要加载的so文件的名称 } //传递两个int类型的变量给C public native void callbackvoidmethod(); public void helloFromJ
2017-02-05 22:41:17
407
原创 LeetCode 155. Min Stack
解题思路:利用stack 重写 MinStack()class MinStack {public: /** initialize your data structure here. */ stackres; stackmin; void push(int x) { res.push(x); if(min.empty()
2017-02-05 13:54:17
243
原创 JNI修改Native方法数组参数中数组里面的元素值
JNIEXPORT jintArray JNICALL Java_com_example_feisou_a02_1helloworld_JNI_arrElementsIncrease (JNIEnv *env, jobject thiz, jintArray jarray){ jsize length = (*env)->GetArrayLength(env,jarray
2017-02-05 00:02:02
1094
原创 JNI开发之c代码中LOG打印调试信息
首先,在头文件中包括然后声明几个宏定义#include #define LOG_TAG "Syste.out"#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG , LOG_TAG, __VA_ARGS__)#define LOGI(...) __android_log_print(ANDROID_LOG_INFO
2017-02-04 23:23:11
463
原创 LeetCode 204. Count Primes
解题思路:维基百科中 https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes Input: an integer n > 1. Let A be an array of Boolean values, indexed by integers 2 to n, initially all set to true. for i =
2017-02-03 22:05:24
250
原创 LeetCode 69. Sqrt(x)
解题思路: 牛顿迭代法, https://en.wikipedia.org/wiki/Integer_square_root#Using_only_integer_division点击打开链接class Solution {public: int mySqrt(int x) { long long r = x; while (r*r > x)
2017-02-03 21:34:04
342
原创 LeetCode 58. Length of Last Word
解题思路:使用 istringstreamclass Solution {public: int lengthOfLastWord(string s) { istringstream ss(s); string result; while(ss>>result){ } return result.leng
2017-02-03 21:08:51
345
原创 LeetCode 88. Merge Sorted Array
解题思路: 比较两个数组的每个数的大小,从后往前比较,大的保存在nums1的最后,遍历.class Solution {public: void merge(vector& nums1, int m, vector& nums2, int n) { while(m>0 && n>0){ if(nums2[n-1]>nums1[m-1]){
2017-02-03 20:36:05
338
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人