resnet

Fer2013 表情识别 pytorch (CNN、VGG、Resnet)

╄→гoц情女王★ 提交于 2020-03-30 19:35:39
fer2013数据集 数据集介绍 Fer2013人脸表情数据集由35886张人脸表情图片组成,其中,测试图(Training)28708张,公共验证图(PublicTest)和私有验证图(PrivateTest)各3589张,每张图片是由大小固定为48×48的灰度图像组成,共有7种表情,分别对应于数字标签0-6,具体表情对应的标签和中英文如下:0 anger 生气; 1 disgust 厌恶; 2 fear 恐惧; 3 happy 开心; 4 sad 伤心;5 surprised 惊讶; 6 normal 中性。 数据整理 数据给的是一个csv文件,其中的表情数据并没有直接给图片,而是给了像素值,没关系,整理的时候顺便转换成图片就好 将数据分类顺便转换成图片,这里直接分成训练集和验证集两个文件夹。 import numpy as np import pandas as pd from PIL import Image import os train_path = './data/train/' vaild_path = './data/vaild/' data_path = './icml_face_data.csv' def make_dir(): for i in range(0,7): p1 = os.path.join(train_path,str(i)) p2 = os

Resnet 50 和VGG16 迁移学习fine tuning 的两种方法

白昼怎懂夜的黑 提交于 2020-03-10 05:55:40
修改Resnet 50 和VGG16 FC 层输出进行迁移学习方法仅供参考 Resnet50 方法一: resnet50 = models.resnet50(pretrained=True) print('Before:{%s}\n' % resnet50) for param in resnet50.parameters(): param.requires_grad = False fc_inputs = resnet50.fc.in_features resnet50.fc = nn.Linear(fc_inputs,config.class_number) # config.class_number 目标分类数 ***#注意后面Loss用cross_entropy, cross_entropy 相当于logsoftmax()+NLLloss()*** loss = nn.CrossEntropyLoss() 方法二: resnet50 = models.resnet50(pretrained=True) print('Before:{%s}\n' % resnet50) for param in resnet50.parameters(): param.requires_grad = False num_ftrs = resnet50.fc.in_features

ResNet

随声附和 提交于 2020-03-08 19:17:31
出处: 《Deep Residual Learning for Image Recognition》 背景: 如果 神经网络越来越深 ,这个神经网络可能会出现 退化 (degradation) 的现象。这里说的退化是指网络层级加深后,训练的准确率却可能出现饱和的现象。 通俗来讲,就是在一个浅层的网络模型上进行改造,然后将新的模型与原来的浅层模型相比较,这里有个底线就是, 改造后的模型至少不应该比原来的模型表现要差 。因为新加的层可以让它的结果为 0,这样它就等同于原来的模型了。 这个假设是 ResNet 的出发点 。 ResNet-50 网络结构 : 输入:224*224*3,三通道(0~255)- 对应均值,RGB转BGR 第一阶段:卷积+maxpool 第二阶段:Conv Block + ID Block * 2 第三阶段:Conv Block + ID Block * 3 第四阶段:Conv Block + ID Block * 5 第五阶段:Conv Block + ID Block * 2,输出 2048*7*7 第六阶段:avgpool(7*7)+FC Conv Block: Identity Block: 区别在于快捷连接会不会经过卷积,且三四五阶段的Conv Block会进行下采样,尺度减半。利用1*1卷积核保持尺度不变但减少通道数,3*3卷积核执行下采样。 来源:

tensorflow查看ckpt各节点名称

假装没事ソ 提交于 2020-03-04 16:52:14
from tensorflow.python import pywrap_tensorflow import os checkpoint_path=os.path.join('output/res101/voc_2007_trainval+voc_2012_trainval/default/res101_faster_rcnn_iter_110000.ckpt') reader=pywrap_tensorflow.NewCheckpointReader(checkpoint_path) var_to_shape_map=reader.get_variable_to_shape_map() for key in var_to_shape_map: print ('tensor_name: ',key) ================================================================== tensor_name: resnet_v1_101/rpn_conv/3x3/weights/Momentum tensor_name: resnet_v1_101/rpn_cls_score/weights/Momentum tensor_name: resnet_v1_101/rpn_bbox_pred/weights/Momentum

DL_Notebook 6_BN/ResNet/DenseNet

梦想的初衷 提交于 2020-03-01 04:54:33
批量归一化和残差网络 批量归一化 Batch Normalization 1. 对全连接层做批量归一化 2.对卷积层做批量归⼀化 3.预测时的批量归⼀化 从零实现 基于LeNet的应用 简洁实现 残差网络 ResNet 残差块(Residual Block) ResNet模型 DenseNet 稠密连接网络 稠密块(Dense Block) 过渡层(Transition layer) DenseNet模型 批量归一化 Batch Normalization BN是针对深层CNN的方法之一,有助于有效模型的训练。是对数据的标准化处理。 对输入的标准化(浅层模型) 处理后的任意一个特征在数据集中所有样本上的均值为0、标准差为1。 标准化处理输入数据使各个特征的分布相近(更加容易训练出有效的模型)。但对于深层模型,仅做输入的标准化是不够的,网络太深,靠近输出层还是可能发生数据的剧烈变化。 批量归一化(深度模型) 利用小批量上的均值和标准差,不断调整神经网络中间输出,从而使整个神经网络在各层的中间输出的数值更稳定。 1. 对全连接层做批量归一化 位置:全连接层中的仿射变换和激活函数之间。 关于BN位置的问题: Batch-normalized 应该放在非线性激活层的前面还是后面? 全连接: 输入 u \boldsymbol{u} u ,大小为 batch_size * 输入神经元个数

PaddlePaddle动态图实现Resnet(眼底筛查为例)

余生长醉 提交于 2020-02-27 10:05:24
本案例参考课程:百度架构师手把手教深度学习的内容。 主要目的为练习Resnet动态图的PaddlePaddle实现。 本案例已经在AISTUDIO共享,链接为: https://aistudio.baidu.com/aistudio/projectdetail/244766 数据集: 查看数据集图片 iChallenge-PM中既有病理性近视患者的眼底图片,也有非病理性近视患者的图片,命名规则如下: 病理性近视(PM):文件名以P开头 非病理性近视(non-PM): 高度近似(high myopia):文件名以H开头 正常眼睛(normal):文件名以N开头 我们将病理性患者的图片作为正样本,标签为1; 非病理性患者的图片作为负样本,标签为0。从数据集中选取两张图片,通过LeNet提取特征,构建分类器,对正负样本进行分类,并将图片显示出来。 ResNet ResNet是2015年ImageNet比赛的冠军,将识别错误率降低到了3.6%,这个结果甚至超出了正常人眼识别的精度。 通过前面几个经典模型学习,我们可以发现随着深度学习的不断发展,模型的层数越来越多,网络结构也越来越复杂。那么是否加深网络结构,就一定会得到更好的效果呢?从理论上来说,假设新增加的层都是恒等映射,只要原有的层学出跟原模型一样的参数,那么深模型结构就能达到原模型结构的效果。换句话说,原模型的解只是新模型的解的子空间

动手学深度学习之图像分类案例1-2

心不动则不痛 提交于 2020-02-26 00:11:35
参考伯禹学习平台《动手学深度学习》课程内容内容撰写的学习笔记 原文链接:https://www.boyuai.com/elites/course/cZu18YmweLv10OeV/lesson/ZDRJ8BaRpFmqDwJafJAYGn 感谢伯禹平台,Datawhale,和鲸,AWS给我们提供的免费学习机会!! 总的学习感受:伯禹的课程做的很好,课程非常系统,每个较高级别的课程都会有需要掌握的前续基础知识的介绍,因此很适合本人这种基础较差的同学学习,建议基础较差的同学可以关注伯禹的其他课程: 数学基础:https://www.boyuai.com/elites/course/D91JM0bv72Zop1D3 机器学习基础:https://www.boyuai.com/elites/course/5ICEBwpbHVwwnK3C 引言 图像分类,顾名思义,是一个输入图像,输出对该图像内容分类的描述的问题。它是计算机视觉的核心,实际应用广泛。图像分类的传统方法是特征描述及检测,这类传统方法可能对于一些简单的图像分类是有效的,但由于实际情况非常复杂,传统的分类方法不堪重负。现在,我们不再试图用代码来描述每一个图像类别,决定转而使用机器学习的方法处理图像分类问题。主要任务是给定一个输入图片,将其指派到一个已知的混合类别中的某一个标签。 Kaggle上的图像分类(CIFAR-10) 现在

图像分类(动手学深度学习)

狂风中的少年 提交于 2020-02-23 04:28:15
图像分类 本教程源代码目录在 book/image_classification , 初次使用请参考 PaddlePaddle 安装教程 ,更多内容请参考本教程的 视频课堂 。 背景介绍 图像相比文字能够提供更加生动、容易理解及更具艺术感的信息,是人们转递与交换信息的重要来源。在本教程中,我们专注于图像识别领域的一个重要问题,即 图像分类 。 图像分类是根据图像的语义信息将不同类别图像区分开来,是计算机视觉中重要的基本问题,也是图像检测、图像分割、物体跟踪、行为分析等其他高层视觉任务的基础。 图像分类在很多领域有广泛应用,包括安防领域的人脸识别和智能视频分析等,交通领域的交通场景识别,互联网领域基于内容的图像检索和相册自动归类,医学领域的图像识别等。 一般来说,图像分类通过手工特征或特征学习方法对整个图像进行全部描述,然后使用分类器判别物体类别,因此如何提取图像的特征至关重要。 在深度学习算法之前使用较多的是基于词袋(Bag of Words)模型的物体分类方法。 词袋方法从自然语言处理中引入,即一句话可以用一个装了词的袋子表示其特征,袋子中的词为句子中的单词、短语或字。对于图像而言,词袋方法需要构建字典。最简单的词袋模型框架可以设计为 底层特征抽取 、 特征编码 、 分类器设计 三个过程。 Now: 而基于深度学习的图像分类方法,可以通过有监督或无监督的方式 学习

F-RCN论文阅读及难点解析

拥有回忆 提交于 2020-02-20 06:33:38
论文名称:《 R-FCN:object detection via region-based fully convolutional networks 》 论文下载:http://papers.nips.cc/paper/6465-r-fcn-object-detection-via-region-based-fully-convolutional-networks.pdf 论文代码:https://github.com/daijifeng001/r-fcn 一、概述: 1、R-FCN创新点: R-FCN要解决的根本问题是Faster R-CNN检测速度慢的问题。Faster R-CNN速度慢是因为ROI层后的结构对不同的proposal是不共享的,试想下如果有300个proposal,ROI后的全连接网络就要计算300次,耗时惊人。所以本文作者把ROI后的结构往前挪来提升速度,但光是挪动下还不行,ROI在conv5后会引起上节提到的平移可变性问题,必须通过其他方法加强结构的平移可变性,Position-sensitive score map因此而生。 归纳如下: (1)提出Position-sensitive score maps来解决目标检测的位置敏感性问题; (2)充分利用全卷积网络来减少总体计算量,提升速度比Faster-RCNN快2.5-20倍; 2、R

经典深度卷积神经网络模型原理与实现

旧街凉风 提交于 2020-02-19 17:36:08
卷积神经网络(Convolutional Neural Network,CNN)最初是为解决图像识别等问题设计的,在早期的图像识别研究中,最大的挑战是如何组织特征,因为图像数据不像其他类型的数据那样可以通过人工理解来提取特征。卷积神经网络相比传统的机器学习算法,无须手工提取特征,也不需要使用诸如SIFT之类的特征提取算法,可以在训练中自动完成特征的提取和抽象,并同时进行模式分类,大大降低了应用图像识别的难度;相比一般的神经网络,CNN在结构上和图片的空间结构更为贴近,都是2D的有联系的结构,并且CNN的卷积连接方式和人的视觉神经处理光信号的方式类似。 卷积和池化的随机组合赋予了CNN很大的灵活性,因此也诞生了很多耳熟能详的经典网络:LeNet,AlexNet,VGGNet,NiN,Google Inception Net,ResNet,DenseNet这几种网络在深度和复杂度方面依次递增。下面将分别介绍这几种网络原理,架构以及实现(Pytorch实现)。 LeNet LeNet诞生于1994年,是 最早的深层卷积神经网络之一 ,并且推动了深度学习的发展。从1988年开始,在多次成功的迭代后,这项由Yann LeCun完成的开拓性成果被命名为LeNet5。它是第一个成功大规模应用在手写数字识别问题的卷积神经网络,在MNIST数据集中的正确率可以高达99.2%。