机器视觉
文章平均质量分 96
yuanlulu
做过嵌入式Linux开发、深度学习平台开发。擅长c++和python。
展开
-
这就是神经网络 19:深度学习-人脸检测-S3FD
概述本文介绍1篇人脸检测方面的工作,这是2017年的工作。S3FD是SSD类的检测器,为人脸检测做了相应优化和修改。即使放在今年(2019),这个工作的结果也都是SOTA级的存在。前段时间写了文章总结FaceBoxes,那篇文章和本文的主角S3FD是同一个实验室出品的,都来自中国,并且在榜单中都取得了当时最好的成绩。动机论文一般都要先写出当前存在的问题,然后才好展开具体的方法。本文的动机就...原创 2019-06-24 18:21:10 · 2147 阅读 · 0 评论 -
这就是神经网络 12:深度学习-语义分割-DeepLabV1、V2、V3和V3+
概述说到语义分割,谷歌的DeepLab系列都是一个无法绕过的话题。目前这个系列共出了4个版本:V1、V2、V3和V3+。DeepLab是全景分割,也有DeeperLab原班人马在里面参与。本文主要关注DeepLabV3+和DeepLab。V1、V2作为前作,有一定的参考价值,但是我精力有限,这两篇主要从其它总结材料里学习而不是原论文,V3和V3+才是我的重点。一个系列看下来,感觉好漫长,半辈...原创 2019-03-31 16:31:20 · 4253 阅读 · 0 评论 -
rk3399上opencv使用gstreamer访问mipi摄像头
环境硬件:友善之臂NanoPC T4rk3399:Big.Little 架构:双核Cortex-A72 + 四核 Cortex-A53 架构,64位CPU主频超过1.8GHz软件:rk3399-eflasher-friendlydesktop-bionic-4.4-arm64-20181219.img这是友善之臂定制的一个基于ubuntu18.04的64位操作系统。探索思路自己...原创 2019-03-30 19:35:46 · 11682 阅读 · 9 评论 -
这就是神经网络 11:深度学习-语义分割-DFN、BiSeNet、ExFuse
前言本篇介绍三篇旷视在2018年的CVPR及ECCV上的文章。旷视做宣传做的很好,出的论文解读文章很赞,省去了我从头开始理解的痛苦,结合论文基本能很快了解全貌。语义分割任务同时需要 Spatial Context 和 Spatial Detail ,也就是分类的语义信息和形状的空间信息。不同的网络从不同的角度解决这两个问题,做不同的妥协。DFN这是在CVPR2018上被接收的文章。DFN...原创 2019-03-24 20:24:29 · 7680 阅读 · 1 评论 -
这就是神经网络 10:深度学习-语义分割-RefineNet、PSPNet 、GCN
前言看论文写总结不易。喜欢就点个赞或者关注下。RefineNet这是16年底的论文,看完PSPNet和DeepLabV3+再回来看此论文,感觉乏善可陈。RefineNet给我的感觉就是一个resnet思想改造的U-Net,参数和计算量都大了很多。作者的一些trick没有很充分的对比实验来说明非此不可,我只能说本网络效果不错,但是谈不上多大的创新,也没耳目一新的见解,论文写的还不是很充分。说...原创 2019-03-15 21:21:43 · 4616 阅读 · 4 评论 -
人脸解析(Face Parsing)和人体解析Human Parsing:方法、数据集和论文
人脸解析人脸解析(Face Parsing)即把人脸的各个部分分割出来。下图左侧是原图,中间是标注,右侧是我输出的结果:这方面网上资料不多,论文也不火,很少看到商用的。目前看到华为有提供这个功能。华为人脸解析地址:https://developer.huawei.com/consumer/cn/hiai/engine/face-parsing人脸解析可预见的应用场景就是虚拟试妆,或者电...原创 2019-03-15 18:21:20 · 25351 阅读 · 5 评论 -
rk3399+ubuntu:基于深度学习框架ncnn对比clang和gcc性能
编译方式修改toolchains/aarch64-linux-gnu.toolchain.cmake,内容如下:# set cross-compiled system type, it's better not use the type which cmake cannot recognized.SET ( CMAKE_SYSTEM_NAME Linux )SET ( CMAKE_SYST...原创 2019-02-26 22:09:05 · 5346 阅读 · 8 评论 -
这就是神经网络 9:深度学习-语义分割-FCN、U-Net、SegNet
FCN简介FCN全称是‘Fully Convolutional Networks’,也就是全卷积网络。这个网络去掉了全连接层,网络结构里只有卷积(池化和反卷积)操作。本文的FCN特指这个语义分割网络,而非广义的全卷积网络。作者在论文里说,这是第一个可以端到端训练、输出像素级预测(pixels-to-pixels)语义分割网络,它可以处理任意大小的图片输入。本网络使用上采样层进行预测,使用降采...原创 2019-03-02 21:36:00 · 10453 阅读 · 0 评论 -
这就是神经网络 8:深度学习-目标检测-SSD和DSSD
前言最近有一篇综述目标检测的论文《Deep Learning for Generic Object Detection: A Survey》,来自首尔国立大学的 Lee hoseong 在近期开源了「deep learning object detection」GitHub 项目,正是参考该论文开发的。该项目集合了从 2013 年 11 月提出的 R-CNN 至在近期发表的 M2Det 等几十篇...原创 2019-02-24 17:55:20 · 2925 阅读 · 1 评论 -
这就是神经网络 7:深度学习-目标检测-超详细图解Faster R-CNN
本文动机说实话,介绍Faster R-CNN的文章我看了很多,论文的英文原文和翻译都看过,我知道two-statge和anchor的主要思想,可是我脑子里始终没法建立一个完整的Faster R-CNN的框架,有太多的细节没有搞清楚,每个步骤的tensor是什么维度?这些维度是什么含义?第二阶段的坐标回归和第一阶段一样吗?有太多的细节让我疑惑不已。别人的文章讲的都是别人建立了整体概念以后的细节分解...原创 2019-02-06 21:43:28 · 7010 阅读 · 1 评论 -
这就是神经网络 13:语义分割loss函数和评价指标
序最近刚刚完成自己规划的语义分割部分论文阅读,算是一个小结吧。语义分割的LOSS函数语义分割对像素的分类,可以用交叉熵作为loss函数。但是语义分割也有自己的特殊性,整个环面中前景物体有时会有较小的占比(比如医学图像中的病灶),这时需要加大前景(或缝隙)的权重,使训练过程更容易学到有用的特征。比如WBE Loss是U-Net引入的,对边界像素对应的loss加大权重,使之对边界更敏感。fo...原创 2019-04-02 21:04:27 · 4318 阅读 · 0 评论 -
这就是神经网络 14:深度学习-目标检测-YOLOv1、YOLOv2、YOLOv3
YOLOYOLO是与SSD齐名的one_stage目标检测算法代表。SSD系列有比较多的变体,大部分都不是SSD作者做的工作。而YOLO目前已经进化到V3,据我所知都是yolo作者自己做的工作。网络结构由于yolo属于one_stage的目标检测算法,所以网络结构比较简单。固定输入448x448大小的图片,最后输出7x7x30大小的特征图。作者的主干网络受GoogLeNet的启发,共有...原创 2019-04-15 20:21:28 · 8367 阅读 · 1 评论 -
视频安防“上帝视角“的畅想
畅想目前的视频安防手段主要还是记录不同角度的二维画面,实时(比如闯红灯抓拍)或事后分析处理。由于安防摄像头数量众多,安装角度和安装地点分散,很难对存量的巨大数量的视频录像做有效分析。目前很多安防视频平台正在利用深度学习的能力不断增强对视频解读的能力,但是效果基本就是类似去数据库里查某些字段,对普通一线的使用人员来说,这些视频分析手段存在一定的门槛,很难有一个简单的手段把大量的视频画面整合成一个整...原创 2019-06-17 22:40:25 · 1017 阅读 · 1 评论 -
这就是神经网络 18:深度学习-文字识别OCR-CRNN
概述在之前项目中用过CRNN做OCR,我在这里记录一下我对这个算法的理解,我没有对比代码去看,主要结合别人的博客略读论文。声明一下,主要参考了文末的《一文读懂CRNN+CTC文字识别》这篇文章,基本讲的非常易懂。另外,本算法的难点在于CTC的理解, 基本上参考文末的《Sequence ModelingWith CTC》这篇文章能够比较好的有个理解,参考资料里的另一篇博客《CTC算法详解》基本...原创 2019-05-15 21:34:42 · 12624 阅读 · 4 评论 -
项目实践中对语义分割网络DeepLabV3+的改进
概述最近用deepv3+做了一些语义分割的工作,从github上下载了别人实现的tensorflow实现。发现速度不能满足需求,所以本人对deepv3+做了一些改进。原始的网络结构下图左侧是DeepLabV3的结构,中间是U-Net风格的编解码结构,最右侧就是DeepLabV3+的结构。和V3相比,V3+融合了一次底层特征图(主干网络也换了,但是这里体现不出来)。改进方向替换backb...原创 2019-05-15 21:20:32 · 11253 阅读 · 15 评论 -
基于语义分割的身份证部件解析和文字检测
概述这个工作主要是利用人脸解析项目的算法,探索一下语义分割的功能。安排实习生利用合成的身份证照片进行了语义分割的标注。我的目的有两个:1.检测身份证上的信息是否齐全;2.确定身份证各文字信息的位置,把文字抠出来给OCR程序。基于opencv的算法之前写过一篇文章《python_opencv–身份证文字区域检测》,利用opencv的接口进行二值化,然后找出所有的阴影对应的外接矩形。这个方法...原创 2019-05-10 18:09:42 · 4985 阅读 · 9 评论 -
这就是神经网络 17:深度学习-评价指标_ROC_mAP
概述本文主要讲述目标检测指标mAP。主要也是自己做这块有段时间,但是这个指标一直没弄的特别清楚。而且网上很多博客写的并不准确,会给人不少舞蹈,希望自己的文章能帮到别人。基础知识true positive, false positive, true negative, false negative本段参考《目标检测的评价指标》,链接见最下方。首先解释一下上面四个词:分类正确的两类:t...原创 2019-05-08 20:45:46 · 9401 阅读 · 2 评论 -
仿射变换与投影变换
仿射变换在图形中的变换包括:平移、缩放、旋转、斜切及它们的组合形式。这些变换的特点是:平行关系和线段的长度比例保持不变。投影变化具有其明确的意义:共面点成像。参考资料仿射变换与投影变换...原创 2019-04-29 18:52:28 · 2326 阅读 · 0 评论 -
自制人脸分割/解析数据集:helen_small4seg(附网盘下载地址)
概述我用原始的helen数据,挑选了部分标注比较好的图片,生成了一个规模较小的人脸解析/分割数据集,放在网盘上供大家下载。原始helen数据集介绍关于helen数据集的介绍,请参考我之前的博客:《人脸解析(Face Parsing)和人体解析Human Parsing:方法、数据集和论文》。helen数据集有2330张图片,每个图片有11个分类: Label 00: backgroun...原创 2019-05-03 17:58:16 · 7942 阅读 · 17 评论 -
目标检测中的检测框合并策略:NMS和Soft-NMS
概述目标检测中的Region Proposal动辄上千,会形成大量有重合的检测框,需要使用某些算法对检测框去重。常用的两种算法是NMS和Soft-NMS。NMS全称‘非极大值抑制(non maximum suppression)’.算法思想很简单,按照分类概率排序,概率最高的框作为候选框,其它所有与它的IOU高于一个阈值(这是人工指定的超参)的框其概率被置为0。然后在剩余的框里寻找概率第...原创 2019-05-02 17:00:40 · 6581 阅读 · 0 评论 -
这就是神经网络 16:深度学习-人脸检测-FaceBoxes
概述FaceBoxes是SSD类的检测器,为人脸检测做了相应优化和修改。即使放在今年(2019)也是SOTA级的存在。(本来打算把SSH、S3FD也一起总结了,但是最近时间比较紧张,先放FaceBoxes,另外两个后续再补)借用《人脸检测背景介绍和发展现状》里的一张图:FaceBoxesFaceBoxes是一个快速的人脸检测器。论文里贴的速度是VGA分辨率(640×480)在CPU上2...原创 2019-05-01 18:58:06 · 2159 阅读 · 0 评论 -
这就是神经网络 6:SqueezeNet和Xception
概述之前也写博客介绍过轻量化神经网络架构:《集异璧-神经网络结构 5:轻量化神经网络–MobileNet V1、MobileNet V2、ShuffleNet V1、ShuffleNet V2》。但是那篇文章没有包含SqueezeNet和Xception。这次把这两个网络补上。SqueezeNet (2017)SqueezeNet 由伯克利&斯坦福的研究人员合作发表于 ICLR-2...原创 2019-01-28 22:01:16 · 2474 阅读 · 0 评论 -
python_opencv--身份证文字区域检测
概述本文基于opencv的形态学滤波检测身份证上的文字位置。如果是自然场景的文字检测可以用CTPN或者EAST。我这里是身份证合成照片,没有多余背景,也没有复杂光照,所以就用最简单的办法。代码import sysimport numpy as npimport cv2def test_detect (img_path): # 参考:https://blog.csdn.n...原创 2019-01-16 20:43:51 · 6387 阅读 · 7 评论 -
MTCNN人脸及特征点检测--基于树莓派3B+及ncnn架构
概述本文尝试在树莓派3B+上用ncnn框架测试MTCNN。ncnn的基本编译和使用请参考《在树莓派3B+上编译ncnn并用benchmark和mobilenet_yolo测试》。本文在这个博客基础上进行操作。操作步骤下载mtcnn从mtcn-ncnn项目中下载mtcnn子目录,把这个目录放在最新的ncnn源码目录下添加对mtcnn的支持修改ncnn最顶层的CMakeList.txt,...原创 2019-01-15 20:39:23 · 8259 阅读 · 10 评论 -
tensorflow 10: sofmax回归识别mnist手写数字图片
Softmax回归介绍为了得到一张给定图片属于某个特定数字类的证据(evidence),我们对图片像素值进行加权求和。如果这个像素具有很强的证据说明这张图片不属于该类,那么相应的权值为负数,相反如果这个像素拥有有利的证据支持这张图片属于这个类,那么权值是正数。我们也需要加入一个额外的偏置量(bias),因为输入往往会带有一些无关的干扰量。下面的图片显示了一个模型学习到的图片上每个像素对于特定数...原创 2018-10-05 15:44:44 · 2317 阅读 · 0 评论 -
人脸检测和dlib关键点检测的一些加速思路
概述在项目间隙,思考下如何把经常使用的人脸检测方法加速快一些。我平常主要是用opencv和dlib这两个库做人脸相关的功能。我自己没有从零开始写算法库的机会,所以很多思路只是了解一下,没有机会实践。于仕琪人脸检测加速的思路于仕琪是深圳大学的老师,写了一个很快很准的人脸检测算法库,以二进制形式免费发布,地址在:https://github.com/ShiqiYu/libfacedetecti...原创 2018-09-26 22:18:11 · 7931 阅读 · 1 评论 -
基于opencv和dlib的活体识别功能小结
概述项目过去几个月了,为了防止自己忘记,做简要概述。基本要求就是针对一段视频,里面的人判断是否完成了随机指定的某个动作(左转、右转、抬头、点头、张嘴、眨眼)。这属于非静默的活体识别,需要用户配合。基本方案使用dlib的人脸检测和关键点检测算法,获得人脸的基本姿态信息。但是dlib的68点信息无法直接用于头部姿态估计。我自己设计了一种简单高效的算法,把68点信息抽象为为一个4维向...原创 2018-09-07 11:50:23 · 6380 阅读 · 3 评论 -
改进opencv的VJ人脸检测器(LBP特征)
概述opencv实现的人脸检测器基本原理来自大名鼎鼎的VJ,但是opencv提供的训练模型功能非常羸弱。VJ以来,很多数码相机和手机都实现了人脸检测功能。可是哪些商业软件并不会开源,导致opencv里的人脸检测器一直没有长进。而且随着深度的风靡,研究人员没有动力去改进opencv人脸检测了。有三位作者看不下去了,在opencv框架的基础上做了很多改进。原始论文题目叫《ImprovingOp...原创 2018-09-17 23:48:42 · 2503 阅读 · 0 评论 -
dlib物体检测开源项目
转自:https://mp.weixin.qq.com/s/QkjMY-qEqn2cGfYbFEmv5w在刚刚结束的PyImageConf2018会议上,大名鼎鼎的Dlib库的创建者Davis King做了一个关于目标检测的报告,并举办了关于Dlib的含有40个新的开源Demo的各种计算机视觉与机器学习技术演示的WorkShop。展示了Dlib的强大锐利,是学习Dlib使用的绝佳资料,作者已将...转载 2018-09-02 15:41:23 · 3679 阅读 · 0 评论 -
机器视觉:基于特征的图像对齐(使用opencv和python)
概述本文主要内容来自参考资料《mage Alignment (Feature Based) using OpenCV (C++/Python)》本文讲述使用opencv中基于特征的的图像对齐方法。这里将会把手机拍摄的表单和与表单的模板对齐。这里用到的技术被称为基于特征的图像对齐,因为在这种技术中,要在一个图像中检测到一组特征点,并与另一张图像中的特征点相匹配。然后根据这些匹配的特征...翻译 2018-08-30 15:23:53 · 33670 阅读 · 6 评论 -
物体检测之选择性搜索(Selective Search)
概述本文牵涉的概念是候选区域(Region Proposal ),用于物体检测算法的输入。无论是机器学习算法还是深度学习算法,候选区域都有用武之地。本文的来源是翻译参考资料里的《Selective Search for Object Detection (C++ / Python)》,这是国外一个大神的博客,讲的是择性搜索(Selective Search)这一种产生候选区域的算法。这个算...翻译 2018-08-29 01:55:50 · 30343 阅读 · 6 评论 -
机器视觉特征提取介绍:HOG、SIFT、SURF、ORB、LBP、HAAR
一. 概述这里主要记录自己的一些感悟,不是很系统。想要详细系统的理论,请参考文末的《图像处理之特征提取》。个人不是专业cv工程师,很多细节没有深究,描述可能不严谨。 在总结物体检测算法之前先把基础的特征点理论整理一下。二. HOG求取前先灰度化然后Gamma校正,降低图像局部的阴影和光照变化所造成的影响,同时可以抑制噪音的干扰。HOG主要捕获轮廓信息。统计每个cell的梯...原创 2018-08-28 15:15:14 · 48892 阅读 · 6 评论 -
tensorflow 11:双隐层+softmax回归实现mnist图片识别
概述上篇文章讲到的sofmax回归,除了输入层,只有线性层+sofmax,这两者合起来可以被称为输出层。没有中间的隐藏层。本文介绍在sofmax回归基础上增加两层隐藏层的方法。本文的主要参考来自参考资料里的《TensorFlow运作方式入门》和《TensorFlow实现双隐层SoftMax Regression分类器》。主要代码来自tensorflow源码目录下的例程mnist.py。借...原创 2018-10-06 17:18:54 · 3027 阅读 · 0 评论 -
tensorflow 12:双隐层+softmax回归实现mnist图片识别之二
概述tensorflow的自带例程用两个文件演示了“全连接层+softmax回归”实现mnist图片识别的功能。一个文件是mnist.py,在之前一篇文章《tensorflow 11:双隐层+softmax回归实现mnist图片识别》已经介绍过了。不过mnist.py侧重搭建计算图,没有调用过程。本文讲解fully_connected_feed.py这个文件,主要讲解调用过程相关的知识点。f...原创 2018-10-07 00:44:23 · 2464 阅读 · 0 评论 -
在树莓派3B+上编译ncnn并用benchmark和mobilenet_yolo测试
步骤安装git和cmake$ sudo apt-get install git$ sudo apt-get install cmake安装protocobuf和其它依赖项这段命令参考自《树莓派3B完成ncnn框架测试》sudo apt-get install -y gfortransudo apt-get install -y libprotobuf-dev libleveldb-...原创 2019-01-09 18:07:44 · 5901 阅读 · 8 评论 -
英特尔OpenVINO深度学习框架--ubuntu16.04上的安装手记
概述OpenVINO是intel的深度学习工具框架,本质是一个支持intel各种硬件(CPU、集显、FPGA和Movidius VPU)的推理机。这个工具本身不做训练,但是可以把其它深度学习框架(如 Caffe, TensorFlow, MXNet)训练的模型文件转化为自己支持的格式。所以OpenVINO分为两部分(github上源码也分为这么两个目录):Inference Engine...原创 2019-01-23 23:06:19 · 9605 阅读 · 2 评论 -
磁盘图片到numpy的两种方法:一次意外的优化
概述在优化代码时意外将图片读取的效率提升了60倍。主要就是在python下把磁盘图片变为numpy数组。低效方法:PIL和numpy组合import numpy as npfrom PIL import Imagedef load_image_into_numpy_array(image): (im_width, im_height) = image.size ret...原创 2018-12-31 14:43:48 · 585 阅读 · 2 评论 -
这就是神经网络 3:NIN,Inception-V1,Inception-V2,Inception-V3, Inception-V4
NIN (2014)NIN全称是‘Network In Network’。这篇论文主要有两个改进思路:MLPconv和全局平均池化。MLPconv全称是multilayer perceptron convolution layer(直译为:多层感知机卷积层),也就是普通卷积层+1x1卷积+ReLU激活函数。NIN中的MLPconv是对conv+relu的改进,conv+relu构建的是一个一...原创 2018-12-03 21:18:22 · 4717 阅读 · 0 评论 -
tensorflow 20:搭网络、导出模型、运行模型
概述以前自己都利用别人搭好的工程,修改过来用,很少把模型搭建、导出模型、加载模型运行走一遍,搞了一遍才知道这个事情也不是那么简单的。搭建模型和导出模型参考《TensorFlow固化模型》,导出固化的模型有两种方式.方式1:导出pb图结构和ckpt文件,然后用 freeze_graph 工具冻结生成一个pb(包含结构和参数)在我的代码里测试了生成pb图结构和ckpt文件,但是没接着往下走,...原创 2018-12-12 19:59:04 · 4905 阅读 · 0 评论 -
这就是神经网络 2:VGG论文翻译(大部分)
概述非常喜欢VGG这篇论文,内容写的层层递进,逻辑严密。对多尺度及深度的探讨很经典。奈何别人的翻译十分拗口,总是感觉理解不透。只好自己反复阅读,把最精彩的多尺度及实验部分翻译一下。翻译过程尽量使用国人能懂的方式,宁愿以中国人的思维重写也不使用机器翻译的结果,过程中反复推敲,修改了部分啰嗦的定语和不易懂的表达方式。不喜欢‘我亲爱的老伙计‘、’你这该死的’这种假翻译。翻译就应该让人感觉不出这是翻...原创 2018-11-23 19:53:02 · 3260 阅读 · 1 评论