自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(78)
  • 收藏
  • 关注

原创 梯度下降法拟合直线

给定300个样本点(x, y)。拟合直线:设直线方程为y = w*x + b其中:x,y是给定的样本点,作为训练集。w和b是待拟合的参数。改问题可以转化为,优化函数 f(w, b) = y - w*x - b使用平方损失,转化为优化:f(w, b) = (y - w*x -b)^2求w的梯度为: grad_w = -x * 2(y - w*x -b)求b的梯度为:grad_b = -1 * 2(y - w*x -b)再使用:w = w - lr * grad_wb = b

2022-04-21 11:29:14 1719

原创 梯度下降法解方程,求函数极值

设要求方程的值:我们采用mse(误差平方和)作为优化函数:上面的问题即可转化为求:的最小值了求该公式的导数/梯度为:我们随机给x初始化一个值,然后使用导数公式来更新x的值,其中lr为学习率/步长:若设置初始值x=10,则更新代码为:x = 10lr = 0.001for i in range(1000): grad = 2 * (x**2 - 5) * (2 * x) x = x - lr * grad print("iteration: {}, gra

2021-03-16 20:16:11 2199

原创 使用飞桨一步步实现多语言OCR文字识别软件

最近熟悉了一下飞浆paddle 2.0,使用过程很方便,整体使用方法和pytorch相差不大。同时PaddleOCR也进行了适配。相关链接:最终的软件:https://github.com/zhangming8/Dango-ocrOCR算法服务:https://github.com/zhangming8/ocr_algo_server整个文章分为2部分:算法篇、软件篇。一、算法篇:a. OCR算法模型算法主要使用PaddleOCR(https://github.com/Pa.

2021-01-06 01:39:29 6770 10

原创 把voc格式的标注文件.xml转为coco格式的.json文件

在训练目标检测模型的时候一般使用labelimg标注的图像生产.xml格式的标注文件。有时候需要用到coco格式的json标注文件,在github找到了一个xml转json的脚本。(https://github.com/CivilNet/Gemfield/blob/master/src/python/pascal_voc_xml2json/pascal_voc_xml2json.py)执行该脚...

2019-05-19 12:58:24 12815 17

原创 18.6使用官方的slim训练模型并finetune微调

本文接着博客18.1,请先参考https://blog.csdn.net/u010397980/article/details/84930880如果嫌自己写网络结构有些麻烦,可以直接从tensorflow的slim包中直接调用模型结构。从tensoflow的github下载slim包,该包中有很多模型也包含在imagenet预训练的权重。详见https://github.com/tensorf...

2019-04-21 21:14:09 2279 16

原创 ubuntu16.04 安装opencv过程

ubuntu16.04 安装opencv过程:从这下载源码 https://opencv.org/releases.html或者链接: https://pan.baidu.com/s/1qwj0cBKNvSVisl8JkuKMZw 提取码: pmeu,这里使用的opencv是3.4.5unzip opencv-3.4.5.zipsudo apt-get ins...

2019-04-21 21:05:25 975

原创 c++调用pytorch模型并使用GPU进行预测

pytorch很好用,但是真实部署还是使用c++较多,因此需要用c++调用训练好的pytorch模型。参考官方示例https://github.com/apachecn/pytorch-doc-zh/blob/master/docs/1.0/cpp_export.md安装libtorch。但是官方示例中并没有使用真实的例子,且使用的是cpu版本的。下面用一个真实的例子并用gpu,本示例的所有程...

2019-04-21 20:38:14 20332 31

原创 【matplotlib】确定某个点是否在4边形内

如何确定某个点的坐标是否在某个4边形范围内的问题。在这里使用一个非常简单的方法。matplotlib.path# -*- coding:utf-8 -*-from matplotlib.path import Pathimport numpy as npimport mathdef cos_dist(a, b): if len(a) != len(b): ...

2019-04-19 11:39:07 888

原创 目标检测数据增强:翻转、旋转90、随机裁剪、对比度等

在目标检测中,常用到数据增强。下面为集中增强方式。每个函数的输入为图像及box框,返回变换后的图像及box框。这里的demo使用voc格式的.xml标注的数据。使用readAnnotations函数读取xml。返回box框,如box: [[404, 30, 500, 374, 222], [386, 83, 479, 374, 222], [272, 65, 415, 374, 222], ...

2019-03-03 14:46:17 12945 10

原创 使用yolov3-tiny训练一个人脸检测器

    春节放假回家时,在北京西乘坐高铁进站时发现,现在出现了很多自助进站验证对pos机器,主要是对身份证和个人的照片进行匹配,判断是不是同一个人,无需人工check了,省时省力。春节在家没事干,想起了人脸识别的事情,感觉挺好玩,就试着先训一个人脸检测模型。这里的识别效果并不会和目前最先进的模型进行对比,只是觉得好玩测试一下流程而已。    一、人脸检测数据的准备我使用的是widerfac...

2019-02-05 17:35:38 11277 25

原创 简单安装cuda:ubuntu16.04安装cuda9.0,cudnn7.4

在网上看了那么多博客,ubuntu安装cuda时要卸载各种什么驱动了,什么旧cuda了,什么旧包了...,搞到最后电脑系统都出问题了,坑,汗。这里介绍一种十分简单地安装cuda的方法,根本不需要卸载任何东西。另外说明一下如果想从cuda8升级到cuda9也不需要卸载cuda8,直接跟着下面的命令走就行了。(https://pan.baidu.com/s/107hc3DLVcgh5UXAxqAg...

2019-01-16 18:40:58 2335

原创 3:pytorch进行分类及预测示例-加载txt文件指定的数据

上一篇博客是利用torch自己的datasets工具加载数据。这里加载.txt文件中的数据,txt内容包括图像的路径及标签,中间用空格分开,如下图所示,这个txt文件用python很容易生成。 完整代码如下:较之前的代码多了一个LoadMyDataset类,该类替换类原来的datasets.ImageFolder。此外,还增加了一种RandomErasing随机擦除的数据增强方法(...

2019-01-13 00:45:05 2856

原创 2:pytorch进行分类及预测示例

官网的分类代码东西太多,很多功能用不上,于是对官网的代码进行了修改。main()函数对训练模型;predict()函数对训练好的模型进行调用预测。训练图像放在sku_train文件夹中,里面有子文件夹,这些子文件夹的名字分别为各个类,每个子文件夹下为各类的图像。验证图像放在sku_val中,文件结构同上。# -*- coding: utf-8 -*-from __future...

2019-01-13 00:25:14 15392 1

原创 1:pytorch进行分类及预测示例

pytorch官网有很好的教程(https://pytorch.org/tutorials/),相信看完后收获很大,有时候官网国内上不去,我把官网的教程保存下来了(链接: https://pan.baidu.com/s/1e6DOTkjCUVojPuedE2fWiQ 提取码: wjix)。官网给的分类代码(https://github.com/pytorch/examples/blob/mas...

2019-01-13 00:14:17 6164 2

原创 18.5使用tensorrt加速tensorflow的预测/前向传播速度

本文接着前面的18.1至18.3博客。nvidia推出的tensorrt可以加速前向传播的速度。本文采用tensorflow训练好的mobilenetv2模型进行测试,按照前面博客我们已经可以把训练好的模型转为.pb的格式了,这里的tensorrt就是对.pb文件进行加速。一、tensorrt安装安装方法参考https://developer.download.nvidia.com/c...

2019-01-12 23:48:57 5789 12

原创 python保存加载.mat文件

#coding:utf-8import scipy.io as sio# save .matname = 'aaa.mat'x = [[1,1,1,2], [1,1,1,3], [1,1,1,4]]y = [5,6,7,8]sio.savemat(name, {'x': x, 'y': y})# load .matname = 'aaa.mat'data = sio.lo...

2019-01-02 11:58:54 5106

原创 使用python的json包保存加载json

import json# save jsonf = open('aa.json', 'w')data1 = {'name':'john', "age":12}data1["num"] = 1data2 = {'name':'merry', "age":13}data = [data1, data2]print(data)json.dump(data, f, ensure_asc...

2018-12-25 15:11:48 268

原创 使用python的matplotlib.pyplot画图

#coding:utf-8import numpy as npimport matplotlib.pyplot as pltx = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,45]y = [5.4, 4.5, 4.32, 4.25, 4.25, 4.18, 4.16,...

2018-12-24 11:24:48 484

原创 目标检测5: faster-rcnn改进版, yolov3, retinanet效果比较

上接前面4篇。下图显示了faster改进版,yolov3,retinnet结果的比较,图来自yolov3论文。    从效果上看:整体上retinanet效果最好,但速度不及yolov3,约为yolov3的3.8倍。yolov3效果不如retinanet的原因可能是:focal loss起作用了;retinanet使用较多的anchor(retinanet每个尺寸的输出使用9个anchor...

2018-12-18 00:25:27 12363

原创 目标检测4: retinanet网络focal loss分析,网络结构原理

    个人理解错误难免,推荐看原文(https://arxiv.org/abs/1708.02002)    作者首先提出了一个问题:在目标检测中,one stage效果较差于two stage的主要原因是:one stage在训练时样本比例不均衡(比如上面的yolov3,在训练时要生成3*13*13 + 3*26*26 + 3*52*52 = 10647个box,但这些box中真正有物体的...

2018-12-18 00:17:09 3386

原创 目标检测3: yolov3结构原理,boundingbox边框回归

注:a.部分图像是从其他博客偷的!!!;b.个人理解,错误难免,推荐看论文(yolov3:https://arxiv.org/abs/1804.02767;yolov2:https://arxiv.org/abs/1612.08242;yolov3:https://arxiv.org/abs/1804.02767)1. 结构图yolov3-tiny结构(darknet的):yolo...

2018-12-17 23:58:12 15637 5

原创 目标检测2: faster rcnn对比fast rcnn,训练流程分析,边框损失函数loss分析

注:个人理解,错误难免,推荐看论文1.结构:faster-rcnn(https://arxiv.org/abs/1506.01497)和fast-rcnn(https://arxiv.org/abs/1504.08083)的结构类似,下面二者结合着分析。下图左边为fast rcnn右边为faster rcnn。fast-rcnn的大致流程:fast rcnn把一张图像用select...

2018-12-17 20:37:02 2363 4

原创 目标检测1: rcnn流程梳理及边框损失函数loss分析

个人理解,有很多错误,推荐看论文。1. rcnn 流程梳理及边框损失函数loss分析论文地址(https://arxiv.org/pdf/1311.2524v3.pdf)预测图像时:对于一张图像,使用select search算法得到大约2000个region proposals(候选区域);resize候选区域为227*227,送入vgg/alexnet网络提取特征(vgg/...

2018-12-14 22:54:40 3816

原创 18.4:tensorflow分类模型mobilenetv2训练-图像转tfrecord格式并读取批量数据进行训练

通过18.1-18.3已经可以训练一个完整的分类模型并对图像进行预测了。之前的是从文件夹直接读取图像文件进行训练,这里介绍如何把图像转为tfrecord格式并读取、训练。一、图像转tfrecord文件如下为jpg_to_tfrecord.py。函数create_label_map()用于创建从图像类别到分类用的label的对应关系,保存在label.txt中,如果自己手动建立(...

2018-12-12 23:22:41 2908 1

原创 18.3:tensorflow分类模型mobilenetv2训练(数据增强,保存模型,衰减学习率,tensorboard),预测图像(单张,批量预测),导出为pb完整示例

三、生成pb文件并预测。他查阅资料发现,生成pb文件需要三个文件,也就是model_save中保存的。如:此外,还需要知道输入节点,输出节点的名称。然而在他的训练的代码中并不好找到哪个是输入节点,在tensorboard的结构图中也没有找到。但他又想了一个方法,从保存的模型中再加载一次模型,并建立一个输入,输出节点,然后再保存。于是他写了这个ckpt_to_pd.py文件:sa...

2018-12-09 22:13:29 3059 3

原创 18.2:tensorflow分类模型mobilenetv2训练(数据增强,保存模型,衰减学习率,tensorboard),预测图像(单张,批量预测),导出为pb完整示例

二、预测经过一段时间的训练后在model_save文件夹下保存了下面的模型:他想使用model.ckpt-250000模型对数据进行预测。他写了个predict.py程序为:#coding:utf-8import os, cv2#os.environ["CUDA_VISIBLE_DEVICES"] = "-1" # use cpuimport numpy as np...

2018-12-09 21:26:25 2652 11

原创 18.1:tensorflow分类模型mobilenetv2训练(数据增强,保存模型,衰减学习率,tensorboard),预测图像(单张,批量预测),导出为pb完整示例

从前有个小孩子在学习tensorflow,于是他买了几本tensorflow书籍,他发现各种书籍里面讲的示例都是使用mnist数据集。由于框架已经封装好了,在使用数据时用一条命令就可以加载数据了,他也不知道这些数据是怎么被读取的。于是乎,他在训练自己的模型时碰到的数据都是一张张图像,仍然无从下手(一脸懵逼)。除此之外,他还想加一些其他功能,如怎么动态调节学习率,怎么使用tensorboar...

2018-12-09 21:12:36 11721 11

原创 17.根据图像路径及label生成txt文件

#coding:utf-8import osimport randomimport globimport numpy as npimport shutilimg_path = "/home/ming/data"# train val img foldertrain_path = img_path + "/sku_train"val_path = img_path + "/sk...

2018-12-08 00:47:48 2546 3

原创 16.tensorflow打印pb文件中的变量名字及尺寸

#coding:utf-8import tensorflow as tffrom tensorflow.python.framework import graph_utiltf.reset_default_graph() # 重置计算图output_graph_path = 'model/model_tfnew.pb'with tf.Session() as sess: ...

2018-12-08 00:42:53 3297

原创 15.tensorflow数据增强

#coding:utf-8import osimport numpy as npimport glob, cv2import shutilimport tensorflow as tfos.environ["CUDA_VISIBLE_DEVICES"] = "0"config = tf.ConfigProto()config.gpu_options.allow_growth ...

2018-12-08 00:38:06 435

原创 python/cv2对长方形图像进行等比例缩放及对周围常数值(0)填充zero padding

#coding:utf-8import osimport cv2import globimport numpy as npdef mkdir(path): if not os.path.exists(path): os.mkdir(path)def process_image(img): size = img.shape h, w = si...

2018-12-08 00:28:45 10212 7

原创 14.tensorflow:搭建分类网络并训练自己的数据

本示例可以实现的功能:1,用tf.contrib.layers搭建分类网络(自己也可以用tf.nn搭建);2,直接通过数据的路径读取批量数据(或者直接给个包含图像路径及标签的txt,在用caffe时经常这样搞),不用转换文件格式;3,学习率衰减;4,用tensorboard观察模型的结构及训练过程中的loss, accuracy, learning rate变化情况,有助于调参;5,保存模型;...

2018-11-29 23:33:28 1748 2

原创 13.tensorflow:训练cifar10,搭建cnn网络,保存模型,tensorboard日志,输出loss,accuracy,学习率衰减

代码中可以保存模型,训练时的log日志,便于观察准确率,损失值等,学习率每隔5000步衰减为原来的0.1倍。其中cifar10_input.py和cifar10.py来源于https://github.com/tensorflow/models/tree/master/tutorials/image/cifar10其中cifar10.py用于下载cifar10的二进制数据集,注意修改53行中的...

2018-11-24 18:40:57 1979

原创 12.numpy把标签进行one_hot编码

假设为6分类,有4个样本的标签为1, 1, 4, 3。利用numpy进行one_hot编码:import numpy as npnp.eye(6)[np.array([1, 1, 4, 3])]one hot后的输出为:array([[0., 1., 0., 0., 0., 0.],       [0., 1., 0., 0., 0., 0.],       [0., 0., ...

2018-11-24 12:24:27 1136

原创 11.利用keras把cifar10的py批次格式数据转为jpg格式,制作

在用cnn进行分类时候,我们经常用到cifar10,但是官网的数据集都是转换格式后的,这里把官网的py版本(http://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz)利用keras自带的dataset工具下载并进行转换为jpg格式。1.安装keraspip install keras -i https://pypi.tuna.tsingh...

2018-11-23 23:28:30 393

原创 10.tensorflow:加载训练后的模型,读取图像路径,进行预测

#coding:utf-8"""https://github.com/zhangming8/resnet-18-tensorflow"""import osimport sysimport globimport cv2import timeimport mathimport numpy as npimport tensorflow as tfimport resnet...

2018-11-23 22:30:03 2602

转载 9.tensorflow:cifar10数据下载,读取,可视化,图像反转,裁剪等

cifar10_input.py# Copyright 2015 The TensorFlow Authors. All Rights Reserved.## Licensed under the Apache License, Version 2.0 (the "License");# you may not use this file except in compliance wi...

2018-11-21 23:57:57 574

原创 8.tensorflow:卷积的填充方式:SAME,VALID区别

#coding:utf-8"""卷积尺寸的变化SAME, VALID的区别:SAME进行填充,卷积核移动步长=1时尺寸不变,移动步长=stride时卷积完毕后尺寸为 输入的尺寸/stride再向上取整VALID不进行填充,卷积后尺寸计算公式为 (输入尺寸 - 核尺寸)/stride + 1 再向下取整数"""import tensorflow as tfimport numpy ...

2018-11-21 16:55:38 5065

转载 7.tensorflow:指定gpu,限制使用量百分比,设置最小使用量

在Python代码中指定GPUimport osos.environ["CUDA_VISIBLE_DEVICES"] = "0" 设置定量的GPU使用量:config = tf.ConfigProto()config.gpu_options.per_process_gpu_memory_fraction = 0.9 # 占用GPU90%的显存session = tf.S...

2018-11-19 18:20:54 6085 3

原创 6.tensorflow:线性逻辑回归进行分类

#coding:utf-8"""生成随机数据进行线性回归"""import tensorflow as tfimport numpy as npimport matplotlib.pyplot as pltfrom sklearn.utils import shuffle# 模拟数据点def generate(sample_size, mean, cov, diff): ...

2018-11-18 22:06:29 276

空空如也

空空如也

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

TA关注的人

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