
MXNet
AI之路
机器学习,深度学习,计算机视觉算法爱好者
展开
-
MXNet的训练基础脚本:base_module.py
写在前面:在MXNet中有一个很重要的脚本:base_module.py,这个脚本中的BaseModule类定义了和模型实现相关的框架。另外还有一个脚本module.py会在另外一篇博客中讲,这个类继承BaseModule类,并进行了具体的实现,比如forward方法,update_metric方法等。在创建模型的时候用的是mx.mod.Module这个类,比如:model = mx.mod.Mod原创 2017-07-15 09:17:40 · 3037 阅读 · 0 评论 -
SSD算法代码介绍(二):训练算法整体架构
上一篇:MXNet框架的SSD算法代码介绍(一):train.py 主要介绍了训练模型的一些参数配置信息,可以看出在训练脚本train.py中主要是调用train_net.py脚本中的train_net函数进行训练的,因此这一篇博客介绍train_net.py脚本的内容。train_net.py这个脚本一共包含convert_pretrained,get_lr_scheduler,train...原创 2018-02-17 15:29:06 · 22316 阅读 · 35 评论 -
SSD算法代码介绍(五):网络结构细节
上一篇博客:MXNet框架的SSD算法代码介绍(四):symbol_builder.py 介绍了网络主干结构构建、损失函数定义等代码,但是网络的详细构建内容是在common.py脚本中的两个重要函数:multi_layer_feature和multibox_layer进行的,比如基于分类网络新增加的一些层、预测层的定义等,因此接下来这篇博客介绍common.py脚本。common.py这个...原创 2018-02-17 16:36:38 · 8423 阅读 · 0 评论 -
SSD算法代码介绍(六):模型训练的评价函数
这篇博客介绍训练过程中的评价函数,在MXNet框架下都可以通过继承mx.metric.EvalMetric类进行实现。该项目的train文件夹下的metric.py定义了一个类:MultiBoxMetric,该类可以作为训练时候分类和回归损失的计算。import mxnet as mximport numpy as npclass MultiBoxMetric(mx.metric...原创 2018-02-17 16:59:09 · 2358 阅读 · 0 评论 -
SSD算法代码介绍(七):模型测试的评价函数
这篇博客介绍测试过程中的评价函数,在MXNet框架下都可以通过继承mx.metric.EvalMetric类进行实现。该项目的evaluate文件夹下的一个脚本eval_metric.py定义了关于测试过程中的评价函数。这个脚本主要涉及两个类:MApMetric和VOC07MApMetric,后者是继承前者并重写了一些方法得到的,因此MApMetric类是核心。这两者都是用来计算object ...原创 2018-02-17 17:14:57 · 3647 阅读 · 2 评论 -
YOLO v2的算法细节——以李沐的Gluon代码为例
YOLO算法在object detection领域算是比较有意思的一个分支,2017年CVPR上的YOLO v2对原来的YOLO算法进行了升级,论文本身包含较多的算法细节,可以先参考博客:YOLO9000算法详解,这里借助李沐的深度学习公开课中的代码(通过MXNet框架下的Gluon接口实现)来详细了解YOLO v2算法的细节。 参考链接:https://zh.gluon.ai/chapter_...原创 2018-02-25 11:02:26 · 9045 阅读 · 7 评论 -
MXNet源码解读:数据读取基础类—mxnet.io.DataIter
mxnet.io.DataIter是MXNet框架中构造数据迭代器的基础类,在MXNet框架下只要和数据读取相关的接口基本上都继承该类,比如我们常用的图像算法相关的mxnet.io.ImageRecordIter类或mxnet.image.ImageIter类都直接或间接继承mxnet.io.DataIter类进行封装。因此熟悉mxnet.io.DataIter类对于其他high level的数据...原创 2018-03-27 21:59:42 · 3370 阅读 · 1 评论 -
MXNet源码解读:数据读取高级类(1)—mxnet.io.MXDataIter
·mxnet.io.ImageRecordIter接口是MXNet框架中用于图像算法相关的数据读取接口,只需将准备好的record文件(后缀是.rec)作为该接口的输入即可训练模型。mxnet.io.ImageRecordIter接口的源码是mxnet.io.MXDataIter类,该类同样继承自MXNet框架下的数据读取基础类mxnet.io.DataIter并重写了其中的一些方法。在了解了比较...原创 2018-03-27 22:11:25 · 4123 阅读 · 0 评论 -
MXNet源码解读:数据读取高级类(2)— mxnet.image.ImageIter
mxnet.image.ImageIter接口同样继承自MXNet框架下的基础数据迭代器构造类mxnet.io.DataIter,该接口是python代码实现的图像数据迭代器,且既可读取.rec文件,也可以以图像+.lst方式来读取数据,这是和mxnet.io.ImageRecordIter接口不同的地方。由于mxnet.image.ImageIter接口在以原图像+.lst文件形式读取数据时是基...原创 2018-03-28 22:38:39 · 3405 阅读 · 2 评论 -
Faster RCNN代码详解(一):算法整体结构
本系列博客介绍Faster RCNN算法的细节,以MXNet框架的代码为例。希望可以通过该系列博客让更多同学了解Faster RCNN算法中关于RPN网络的构建、损失函数的定义、正负样本的定义等细节,这样对于理解Faster RCNN后续的延伸版本(比如R-FCN、Mask RCNN)以及其他object detection算法也有一定的帮助。接下来的讲解基本上按照训练代码的顺序进行。项目地址...原创 2018-05-13 21:30:37 · 17130 阅读 · 9 评论 -
Faster RCNN代码详解(二):网络结构构建
在上一篇博客中介绍了Faster RCNN算法的整体结构:Faster RCNN代码详解(一):算法整体结构,在该结构中最主要的两部分是网络结构的构建和数据的读取,因此这篇博客就来介绍下Faster RCNN算法的网络结构构建细节。因为其中特征提取网络选择多样,所以这里以常用的ResNet为例来介绍。网络结构的构造通过get_resnet_train函数进行,该函数所在脚本:~mx-rcnn/...原创 2018-05-13 22:37:22 · 23614 阅读 · 4 评论 -
Faster RCNN代码详解(三):数据处理的整体结构
在上一篇博客中介绍了Faster RCNN网络结构的构建:Faster RCNN代码详解(二):网络结构构建。网络结构是Faster RCNN算法中最重要两部分之一,这篇博客将介绍非常重要的另一部分:数据读取。数据读取是通过AnchorLoader类实现的,该类所在脚本:~mx-rcnn/rcnn/core/loader.py,该类实现了数据读取和处理的整体架构,是比较宏观的。细节方面是通过ass...原创 2018-05-20 08:31:18 · 7524 阅读 · 2 评论 -
Faster RCNN代码详解(四):关于anchor的前世今生
在上一篇博客中介绍了数据处理的整体结构:Faster RCNN代码详解(三):数据处理的整体结构。这一篇博客介绍数据处理的细节,在该项目代码中关于数据处理的细节主要是通过assign_anchor函数来实现的,该函数所在脚本:~/mx-rcnn/rcnn/io/rpn.py,该函数涉及详细的anchor生成、anchor标签设定、anchor的回归目标和分类目标等。这一部分也是你想要深入了解Fas...原创 2018-05-20 09:10:38 · 15306 阅读 · 4 评论 -
Faster RCNN代码详解(五):关于检测网络(Fast RCNN)的proposal
在系列(二)中介绍了Faster RCNN算法的网络结构,其中有一个用于生成ROI proposal target的自定义层,该自定义层的输出作为检测网络(Fast RCNN)的输入,这篇博客就来介绍这个自定义层的内容。该自定义层的实现所在脚本~/mx-rcnn/rcnn/symbol/proposal_target.py,该层返回的group列表包含4个值,分别是rois,label,bbox_...原创 2018-05-20 11:02:45 · 7615 阅读 · 5 评论 -
Faster RCNN代码详解(六):自定义评价函数
在前面几篇博文中基本上将Faster RCNN的算法细节都介绍完了,这一篇博客主要来介绍评价函数。自定义评价函数有助于我们灵活观察模型训练过程中的变量变化情况,比如RPN网络中的分类和回归损失在每次迭代过程中的变化情况,或者检测网络的分类和回归损失在每次迭代过程中的变化情况等。当然你还可以自定义mAP的计算函数等,跟下面要介绍的例子在结构上都是一样的。自定义的评价函数类的具体实现所在脚本:~m...原创 2018-05-20 12:43:15 · 6441 阅读 · 2 评论 -
SSD算法代码介绍(三):网络结构参数配置
上一篇博客:MXNet框架的SSD算法代码介绍(二):train_net.py 介绍了几乎所有的训练代码,在训练代码中比较重要的步骤应该就是网络结构的搭建,这也是SSD算法的核心。因此接下来介绍的symbol_factory.py就是网络结构搭建的起始脚本,主要包含网络的一些配置信息。该脚本主要包含get_config,get_symbol_train,get_symbol三个函数,后面两个...原创 2018-02-17 15:48:35 · 6308 阅读 · 0 评论 -
SSD算法代码介绍(四):网络结构初探
上一篇博客:MXNet框架的SSD算法代码介绍(三):symbol_factory.py 主要涉及网络结构构建时候的一些参数设置,最终是通过调用symbol_builder.py脚本的get_symbol_train函数完成网络的主干结构构建和损失函数的定义,因此接下来介绍symbol_builder.py脚本。symbol_builder.py这个脚本主要包括import_module,ge...原创 2018-02-17 16:13:50 · 6717 阅读 · 1 评论 -
MXNet如何用mxnet.image.ImageIter直接导入图像
MXNet的图像数据导入模块主要有mxnet.io.ImageRecordIter和mxnet.image.ImageIter两个类,前者主要用来读取.rec格式的数据,后者既可以读.rec格式文件,也可以读原图像数据。这里先介绍mxnet.image.ImageIter这个类,image是个package,脚本image.py可以在~/mxnet/python/mxnet/image.py找到,里原创 2017-07-09 21:07:45 · 9026 阅读 · 2 评论 -
MXNet的预训练:fine-tune.py源码详解
在MXNet框架下,如果要在一个预训练的模型上用你的数据fine-tune一个模型(或者叫迁移学习,即你的模型的参数的初始化不再是随机初始化,而是用别人的在大数据集上训练过的模型的参数来初始化你的模型参数),可以采用MXNet项目自带的fine-tune.py脚本,路径是~/mxnet/example/image-classification/fine-tune.py,这里的mxnet就是你从mxn原创 2017-06-28 22:01:31 · 5873 阅读 · 2 评论 -
MXNet的数据读取:data.py源码详解
这篇博文介绍MXNet里面比较重要的一个脚本data.py,路径:~/mxnet/example/image-classification/common/data.py。也是在fine-tune.py脚本中用到的数据读入脚本(参考MXNet的fine-tune.py源码详解)。数据读取在深度学习模型训练中算是比较重要的一块,MXNet官网中主要介绍的是.rec格式的数据的读取,不过这个格式比较占磁盘原创 2017-06-29 22:36:06 · 3769 阅读 · 0 评论 -
MXNet的训练入口:fit.py源码详解
fit.py是MXNet的fine-tune.py(参看博文:MXNet的fine-tune.py源码详解)中启动训练的入口,非常值得读一读源码。总的来讲,这个fit.py脚本包含训练的一些配置,导入模型,训练模型和保存模型这几步,接下来详细阐述。建议从最后的主函数fit()开始看起。import mxnet as mximport loggingimport osimport time#原创 2017-06-29 22:27:17 · 7347 阅读 · 14 评论 -
MXNet的数据预处理:mxnet.image.CreateAugmenter源码详解
这篇博文要介绍的mxnet.image.CreateAugmenter是承接前面一篇博文:MXNet如何用mxnet.image.ImageIter直接导入图像,在那篇博文中介绍了如何用ImageIter类导入图像,如下代码(修改后的data.py脚本):train = mx.image.ImageIter( batch_size = args.batch_si原创 2017-07-09 22:12:43 · 5086 阅读 · 0 评论 -
MXNet的训练实现脚本:module.py
前面一篇博客:MXNet的训练基础脚本:base_module.py提到MXNet中很重要的一个脚本base_module.py,这里面定义了基本的BaseModule类,而本篇博客提到的module.py脚本中的Module类则是继承BaseModule类,然后进行了具体的实现,比如forward方法,update_metric方法等。在创建模型的时候用的是mx.mod.Module这个类,比如:原创 2017-07-15 09:26:22 · 6593 阅读 · 0 评论 -
MxNet使用总览
写这篇博文的初衷是希望能整理下自己在使用MxNet过程中对这个框架的理解。详细的介绍都给出了链接,这篇相当于一个概括,希望能对这个框架有一个总的认识,内容会不断补充,有疑问的欢迎交流,谢谢。1、下载MxNet并编译 MxNet的官方网址:http://mxnet.io/get_started/install.html 我这里选择如下安装方式:然后按照 Build the MXNet core s原创 2017-08-17 08:06:23 · 10535 阅读 · 2 评论 -
MXNet框架的resize操作
MXNet框架的图像预处理操作基本上都在/mxnet/python/mxnet/image.py脚本中,这里的/mxnet指的是官方github的mxnet项目。这篇博客介绍在image.py脚本中的resize操作,主要包含两个类:mxnet.image.ResizeAug和mxnet.image.ForceResizeAug。mxnet.image.ResizeAug(size,interp=2原创 2017-10-13 08:12:31 · 3721 阅读 · 0 评论 -
MXNet框架如何自定义evaluation metric
使用深度学习框架训练模型的时候都需要用到评价标准,比如准确率等,那么在MXNet框架下,这些评价标准(Evaluation Metric)是怎么实现的呢?如果我们要自定义一个不一样的评价标准要怎么做?一起来了解下吧。首先来看看在MXNet框架下关于evaluation metric的最基本的类和脚本。mxnet.metric.EvalMetric是MXNet框架中计算评价标准(evaluation原创 2017-10-22 17:01:45 · 8335 阅读 · 2 评论 -
FCIS算法的MXNet实现
论文:Fully Convolutional Instance-aware Semantic Segmentation github地址:https://github.com/msracver/FCISFCIS(Fully Convolutional Instance-aware Semantic Segmentation)算法是COCO2016分割的冠军,接下来是自己记录的跑该算法demo和训练原创 2017-09-16 21:34:35 · 5585 阅读 · 26 评论 -
MTCNN算法及代码笔记
论文:Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks 论文链接:https://arxiv.org/abs/1604.02878 官方代码链接:https://github.com/kpzhang93/MTCNN_face_detection_alignment 其他代码实现原创 2017-12-26 21:48:33 · 60781 阅读 · 38 评论 -
MXNet如何生成.lst文件和.rec文件
MXNet框架用于做图像相关的项目时,读取图像主要有两种方式:第一种是读.rec格式的文件,类似Caffe框架中LMDB,优点是.rec文件比较稳定,移植到别的电脑上也能复现,缺点是占空间(.rec文件的大小基本上和图像的存储大小差不多),而且增删数据不大灵活。第二种是.lst和图像结合的方式,首先在前面生成.rec文件的过程中也会生成.lst文件,这个.lst文件就是图像路径和标签的对应列表,也原创 2017-10-19 08:07:47 · 13939 阅读 · 27 评论 -
SSD算法的MXNet实现
前段时间看到一个SSD(SSD:single shot multibox detector )算法的MXNet实现,代码风格不错,特来分享。 SSD算法的介绍可以参看博客:SSD(single shot multibox detector)算法及Caffe代码详解github地址:https://github.com/zhreshold/mxnet-ssd接下来结合亲自实验列一下如何跑这原创 2017-10-12 20:46:11 · 8144 阅读 · 25 评论 -
SSD算法代码介绍(一):训练参数配置
SSD算法是object detection领域比较经典的算法,github上有一个写得比较好的MXNet版本的实现代码,项目地址:https://github.com/zhreshold/mxnet-ssd,想要本地实现可以参考项目地址中README.md的介绍或者参考博客:SSD算法的MXNet实现。接下来这一系列博客想介绍该代码中关于实现SSD算法的一些细节,也会涉及部分Python语言...原创 2018-02-17 15:14:26 · 24247 阅读 · 40 评论 -
我的第一本书《MXNet深度学习实战》
这篇博客介绍下我即将出版的第一本书:《MXNet深度学习实战》,欢迎大家多多支持。为什么写这本书2018年3月,华章图书的杨老师在博客上联系我,问我是否有出书意向,内容是深度学习框架方面的实战教学。当时的我使用MXNet和PyTorch框架也有一段时间了,虽然说不上精通,但是用起来还算熟悉,再加上我本人一直以来都喜欢和他人交流算法,并且想完善下自己在深度学习框架方面的知识体系,于是经过一段时间...原创 2018-11-26 21:19:10 · 12942 阅读 · 40 评论