哪位大神帮忙恢复原图,能看见头像图片 背影就行

后使用快捷导航没有帐号?
查看: 356|回复: 0
深度学习方法(五):卷积神经网络CNN经典模型整理Lenet,Alexnet,Googlenet,VGG...
新手上路, 积分 11, 距离下一级还需 39 积分
论坛徽章:1
http://blog.csdn.net/xbinworld/article/details/文 | Song Han
利用深度压缩和DSD训练来提高预测精度。
深度神经网络已经成为解决计算机视觉、语音识别和自然语言处理等机器学习任务的最先进的技术。尽管如此,深度学习算法是计算密集型和存储密集型的,这使得它难以被部署到只有有限硬件资源的嵌入式系统上。
为了解决这个限制,可以使用深度压缩来显著地减少神经网络所需要的计算和存储需求。例如对于具有全连接层的卷积神经网络(如Alexnet和VGGnet),深度压缩可以将模型大小减少35到49倍。即使对于全卷积神经网络(如GoogleNet和SqueezeNet),深度压缩也可以将模型大小减少10倍。而且上述两种压缩情况都不会降低模型预测的精度。
当前的训练方法有不足之处
压缩模型而不丢失其精确度意味着在训练好的模型中有严重的冗余,这说明当前的训练方法有不足之处。为了解决这个问题,我和来自NVIDIA的JeffPool、百度的Sharan Narang和Facebook的Peter Vajda合作开发了“密集-稀疏-密集”(DSD)的训练方法。这是一种新的方法,它首先通过稀疏约束的优化方法将模型正则化,然后通过恢复和重新训练被剪枝的连接的权重来提高预测精度。
在测试时,由DSD训练得到的最终模型仍然跟原始密集型模型具有相同的架构和维度,并且DSD训练不会增加任何推理开销。我们对主流的神经网络(如CNN / RNN / LSTM)架构用DSD训练方法进行了图像分类、图像描述和语音识别的实验,发现模型有显著的性能改进。
在本文中,我们会首先介绍深度压缩,然后介绍“密集-稀疏-密集”(DSD)训练方法。
深度压缩的第一步是“突触剪枝”。 人类大脑是有这一剪枝过程的。从婴儿时期到成年,人脑会有5成的突触会被修剪掉。
类似的规则是否适用于人工神经网络呢?答案是肯定的。在早期的工作中,网络剪枝已经被证明是一种减少网络复杂度和过度拟合的有效方法。这种方法也适用于现代神经网络。首先我们通过常规神经网络训练来学习网络连接权重。然后我们会剪枝权重值较小的连接:即删除网络中权重值低于某一阈值的所有连接。最后,我们重新训练网络,得到剩余稀疏连接的权重值。剪枝方法使AlexNet和VGG-16模型的参数数量分别减少了9倍和13倍。
图1. 剪枝一个神经网络。所有图片由Song Han 友情提供
深度压缩的下一步是权重共享。我们发现神经网络对低精度权重值具有非常高的容忍度:极度粗略的权重值并不会降低预测精度。如图2所示,蓝色权重值最初为2.09、2.12、1.92和1.87,然后让它们共享相同的权重值2,网络的预测精确度仍然不受影响。因此我们可以只存储非常少量的权重值,称之为“编码本”。并让许多其他权重共享这些相同的权重值,且只在码本中存储其索引即可。
索引可以用非常少的比特数来表示。例如在下图中存在四种颜色,因此仅需要两位来表示一个权重而不用原来的32位。另一方面,编码本占用的存储空间几乎可以忽略不计。我们的实验发现,就权衡压缩比和精度而言,这种权重共享技术是优于线性量化的方法的。
图2. 训练权重共享的神经网络
图3显示了使用深度压缩的总体结果。Lenet-300-100和Lenet-5是在MNIST数据集上评估的,而AlexNet、VGGNet、GoogleNet和SqueezeNet是在ImageNet数据集上评估的。压缩比从10倍到49倍不等。即使对于那些全卷积神经网络(如GoogleNet和SqueezeNet),深度压缩仍然可以将它们压缩一个数量级。我们重点看一下SqueezeNet,它比有相同预测精度的AlexNet少50倍的参数,但仍然还可以再压缩10倍使其模型大小只有470KB,这使它可以很容易地在片上SRAM里使用。而访问SRAM比DRAM更快更节能。
我们还尝试了其他压缩方法,例如基于低秩近似的方法,但是压缩比没有那么高。你可以在Deep Compression的论文中找到完整的讨论。
图3 深度压缩的实验结果
深度神经网络可以被大量剪枝和压缩的事实意味着我们当前的训练方法具有一些局限性。它不能充分利用密集模型的全部容量来找到最佳局部最小值,而一个剪枝过的有着更少神经突触的稀疏模型也可以达到相同的精度。这带来了一个问题:我们是否可以通过恢复并重新学习这些权重来达到更好的精度吗?
让我们拿奥运会田径比赛的训练做个比喻。教练首先会让跑步运动员在高海拔的山地上训练,那里会有很多的限制:低氧、寒冷等。结果当跑步运动员再次返回平原地区时,他的速度就会有提高。对于神经网络来说也是相同的道理:给定严格约束的稀疏训练方法得到的网络模型有跟密集网络模型一样的性能。一旦你解除了这些约束,模型可以工作得更好。
理论上,以下是DSD训练能行之有效的因素:
1.避开鞍点:优化深度网络最大的困难之一是鞍点的扩散。 DSD训练方法通过剪枝和重新密集化的框架来避开鞍点。对收敛的模型做剪枝干扰了模型学习的模式并使得网络模型能够避开鞍点,这使模型有机会可以收敛到一个更好的局部或全局最小值。这个想法也跟“模拟退火”算法类似。虽然模拟退火算法在搜索图上随着概率降低而随机跳跃,但是DSD训练方法会确定性的偏离收敛值。这一收敛值是通过在第一次密集模型训练阶段中去除小权重值和增强稀疏支持得到的。
2.正规化和稀疏训练:稀疏训练步骤中的稀疏正规化将模型优化降维到较低维空间,在这个空间中的损失函数表面更平滑并且对噪声更鲁棒。很多数值实验证实了稀疏训练和最终DSD方法可以降低方差和减少误差。
3. 强大的重新初始化:权重初始化在深度学习中起着重要的作用。传统的训练方法只有一次初始化的机会,而DSD方法在训练过程中给模型优化第二次(或更多)的机会。它基于更鲁棒的稀疏训练结果来重新初始化。我们基于稀疏模型结果来重新构建密集网络,这可以理解为剪枝权重的零初始化。其它的初始化方法也值得尝试。
4. 打破对称性:隐藏单元的置换对称性会使权重对称,因此在训练中容易相互影响。在DSD方法中,权重剪枝打破了与权重相关的隐藏单元的对称性,而且在最终的密集模型中是不对称的。
我们在几个主流的CNN/RNN/LSTM模型上进行了图像分类、图像描述和语音识别数据集的实验,发现这种“密集-稀疏-密集”的训练流程能够显著地提高模型精度。我们的DSD训练方法采用了三个步骤:密集,稀疏,密集。图4展示了每个步骤。
图4 密集-稀疏-密集的训练流程
1.初始的密集训练:第一个“密集”步骤通过在密集网络上的常规网络训练来学习连接权重。然而跟传统训练不同的是,该“密集”步骤的目的不是学习连接权重的最终值,而是学习哪些连接是重要的。
2. 稀疏训练:“稀疏”步骤会剪枝掉权重值较低的连接并重新训练稀疏网络。我们对试验中的所有层都使用相同的稀疏度,因此会有一个单一的超参数:稀疏度(sparsity)。我们对每一层的参数进行排序,从网络中去掉最小的N* sparsity个稀疏参数,将密集网络转换为稀疏网络。我们发现稀疏比率为50%-70%的效果非常好。然后我们重新训练稀疏网络,这可以在稀疏约束下完全复原模型的精度。
3. 最终的密集训练:最后的“密集”步骤会恢复已剪枝的连接,使网络再次变的密集。这些之前剪枝的连接会初始化为零并重新训练。恢复被剪枝的连接增加了网络的维度,并且更多的参数更容易使网络的鞍点向下滑动以获得更好的局部最小值。
我们将DSD训练方法应用于各种类型的神经网络和不同领域的数据集。 我们发现DSD训练方法提高了所有这些神经网络的精确度。 神经网络选自CNN、RNN和LSTM;数据集是从图像分类、语音识别和图像描述领域中选择的, 结果如图5所示。DSD模型可以在DSD Model Zoo上下载。
图 5. DSD训练提高了预测精度
生成图像描述
我们把在图像描述任务中使用DSD训练方法的效果做了可视化(见图6)。我们把DSD训练方法应用于NeuralTalk中,NeuralTalk是一个用于生成图像自然语言描述的长短时记忆模型(LSTM)。基准模型不能很好的描述图片1、4和5。例如图片1,基准模型将女孩错误地描述为男孩,并且把女孩的头发错误地描述为岩墙。稀疏模型可以在图片中识别出有一个女孩,而DSD模型可以进一步识别出秋千。
在第二张图片中,DSD训练方法可以识别出运动员正在尝试投篮,而基准模型只能描述成运动员正在打球。值得注意的是稀疏模型有时比DSD 模型表现得更好。在最后一张图片中,稀疏模型能够正确地识别出泥潭,而DSD模型只能从背景中识别出森林。DSD训练方法的优良性能不仅限于这些例子,此论文的附录中提供了更多的由DSD训练方法生成的图像描述结果。
图6. DSD训练方法提高图像描述的性能的可视化展现
稀疏模型的优点
用于把深度神经网络压缩为较小模型的深度压缩和用于神经网络正则化的DSD训练方法都是利用模型稀疏性来实现更小的模型或者更高的预测精度的技术。除了模型大小和预测精度,我们还研究了可以利用稀疏性的其他两个方面:速度和能耗,这超出了本文的讨论范围。
转载请注明来自36大数据(): &
除非特别注明,本站所有文章均不代表本站观点。报道中出现的商标属于其合法持有人。请遵守理性,宽容,换位思考的原则。&>&&>&&>&&>&CNN模型简单介绍(LeNet,AlexNet,VGG,GoogLeNet,ResNet,GAN,R-CNN)
CNN模型简单介绍(LeNet,AlexNet,VGG,GoogLeNet,ResNet,GAN,R-CNN)
上传大小:803KB
CNN模型简单介绍(LeNet,AlexNet,VGG,GoogLeNet,ResNet,GAN,R-CNN)
综合评分:0(0位用户评分)
所需积分:1
下载次数:1
审核通过送C币
创建者:mfkbbdx1
创建者:daiyinglang
创建者:nigelyq
课程推荐相关知识库
上传者其他资源上传者专辑
移动开发热门标签
VIP会员动态
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
android服务器底层网络模块的设计方法
所需积分:0
剩余积分:720
您当前C币:0
可兑换下载积分:0
兑换下载分:
兑换失败,您当前C币不够,请先充值C币
消耗C币:0
你当前的下载分为234。
CNN模型简单介绍(LeNet,AlexNet,VGG,GoogLeNet,ResNet,GAN,R-CNN)
会员到期时间:
剩余下载次数:
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:CNN的发展史
       上一篇回顾讲的是2006年Hinton他们的Science Paper,当时提到,2006年虽然Deep Learning的概念被提出来了,但是学术界的大家还是表示不服。当时有流传的段子是Hinton的学生在台上讲paper时,台下的机器学习大牛们不屑一顾,质问你们的东西有理论推导吗?有数学基础吗?搞得过SVM之类吗?回头来看,就算是真的,大牛们也确实不算无理取闹,是骡子是马拉出来遛遛,不要光提个概念。
       时间终于到了2012年,Hinton的学生Alex Krizhevsky在寝室用GPU死磕了一个Deep Learning模型,一举摘下了视觉领域竞赛ILSVRC 2012的桂冠,在百万量级的ImageNet数据集合上,效果大幅度超过传统的方法,从传统的70%多提升到80%多。个人觉得,当时最符合Hinton他们心境的歌非《我不做大哥好多年》莫属。
       这个Deep Learning模型就是后来大名鼎鼎的AlexNet模型。这从天而降的AlexNet为何能耐如此之大?有三个很重要的原因:
大量数据,Deep Learning领域应该感谢李飞飞团队搞出来如此大的标注数据集合ImageNet;
GPU,这种高度并行的计算神器确实助了洪荒之力,没有神器在手,Alex估计不敢搞太复杂的模型;
算法的改进,包括网络变深、数据增强、ReLU、Dropout等,这个后面后详细介绍。
       从此,Deep Learning一发不可收拾,ILSVRC每年都不断被Deep Learning刷榜,如图1所示,随着模型变得越来越深,Top-5的错误率也越来越低,目前降到了3.5%附近,而在同样的ImageNet数据集合上,人眼的辨识错误率大概在5.1%,也就是目前的Deep Learning模型的识别能力已经超过了人眼。而图1中的这些模型,也是Deep Learning视觉发展的里程碑式代表。
图1. ILSVRC历年的Top-5错误率
       在仔细分析图1中各模型结构之前我们先需要了解一下深度学习三驾马车之一————LeCun的LeNet网络结构。为何要提LeCun和LeNet,因为现在视觉上这些神器都是基于卷积神经网络(CNN)的,而LeCun是CNN的祖师爷,LeNet是LeCun打造的CNN经典之作。
       LeNet以其作者名字LeCun命名,这种命名方式类似的还有AlexNet,后来又出现了以机构命名的网络结构GoogLeNet、VGG,以核心算法命名的ResNet。LeNet有时也被称作LeNet5或者LeNet-5,其中的5代表五层模型。不过别急,LeNet之前其实还有一个更古老的CNN模型。
最古老的CNN模型
       1985年,Rumelhart和Hinton等人提出了后向传播(Back Propagation,BP)算法[1](也有说1986年的,指的是他们另一篇paper:Learning representations by back-propagating errors),使得神经网络的训练变得简单可行,这篇文章在Google Scholar上的引用次数达到了19000多次,目前还是比Cortes和Vapnic的Support-Vector Networks稍落后一点,不过以Deep Learning最近的发展劲头来看,超越指日可待。
       几年后,LeCun利用BP算法来训练多层神经网络用于识别手写邮政编码[2],这个工作就是CNN的开山之作,如图2所示,多处用到了5*5的卷积核,但在这篇文章中LeCun只是说把5*5的相邻区域作为感受野,并未提及卷积或卷积神经网络。关于CNN最原始的雏形感兴趣的读者也可以关注一下文献[10]。
图2. 最古老的CNN网络结构图
       1998年的LeNet5[4]标注着CNN的真正面世,但是这个模型在后来的一段时间并未能火起来,主要原因是费机器(当时苦逼的没有GPU啊),而且其他的算法(SVM,老实说是你干的吧?)也能达到类似的效果甚至超过。
图3. LeNet网络结构
       初学者也可以参考一下Caffe中的配置文件:
/BVLC/caffe/blob/master/examples/mnist/lenet.prototxt
AlexNet、VGG、GoogLeNet、ResNet对比
       LeNet主要是用于识别10个手写数字的,当然,只要稍加改造也能用在ImageNet数据集上,但效果较差。而本文要介绍的后续模型都是ILSVRC竞赛历年的佼佼者,这里具体比较AlexNet、VGG、GoogLeNet、ResNet四个模型。如表1所示。
Data Augmentation
Inception(NIN)
卷积核大小
全连接层数
全连接层大小
Local Response Normalization
Batch Normalization
表1 AlexNet、VGG、GoogLeNet、ResNet对比
       接下里直接上图即可,AlexNet结构图如下:
图4. AlexNet网络结构
       换个视角:
图5. AlexNet网络结构精简版
       AlexNet相比传统的CNN(比如LeNet)有哪些重要改动呢:
(1) Data Augmentation
       数据增强,这个参考李飞飞老师的cs231课程是最好了。常用的数据增强方法有:
随机裁剪、平移变换
颜色、光照变换
(2) Dropout
       Dropout方法和数据增强一样,都是防止过拟合的。Dropout应该算是AlexNet中一个很大的创新,以至于Hinton在后来很长一段时间里的Talk都拿Dropout说事,后来还出来了一些变种,比如DropConnect等。
(3) ReLU激活函数
       用ReLU代替了传统的Tanh或者Logistic。好处有:
ReLU本质上是分段线性模型,前向计算非常简单,无需指数之类操作;
ReLU的偏导也很简单,反向传播梯度,无需指数或者除法之类操作;
ReLU不容易发生梯度发散问题,Tanh和Logistic激活函数在两端的时候导数容易趋近于零,多级连乘后梯度更加约等于0;
ReLU关闭了右边,从而会使得很多的隐层输出为0,即网络变得稀疏,起到了类似L1的正则化作用,可以在一定程度上缓解过拟合。
       当然,ReLU也是有缺点的,比如左边全部关了很容易导致某些隐藏节点永无翻身之日,所以后来又出现pReLU、random ReLU等改进,而且ReLU会很容易改变数据的分布,因此ReLU后加Batch Normalization也是常用的改进的方法。
(4) Local Response Normalization
       Local Response Normalization要硬翻译的话是局部响应归一化,简称LRN,实际就是利用临近的数据做归一化。这个策略贡献了1.2%的Top-5错误率。
(5) Overlapping Pooling
       Overlapping的意思是有重叠,即Pooling的步长比Pooling Kernel的对应边要小。这个策略贡献了0.3%的Top-5错误率。
(6) 多GPU并行
       这个不多说,比一臂之力还大的洪荒之力。
       VGG结构图
图6. VGG系列网络结构
       换个视角看看VGG-19:
图7. VGG-19网络结构精简版
       VGG很好地继承了AlexNet的衣钵,一个字:深,两个字:更深。
图8. GoogLeNet网络结构
       GoogLeNet依然是:没有最深,只有更深。
       主要的创新在于他的Inception,这是一种网中网(Network In Network)的结构,即原来的结点也是一个网络。Inception一直在不断发展,目前已经V2、V3、V4了,感兴趣的同学可以查阅相关资料。Inception的结构如图9所示,其中1*1卷积主要用来降维,用了Inception之后整个网络结构的宽度和深度都可扩大,能够带来2-3倍的性能提升。
图9. Inception结构
网络结构如图10所示。
图10. ResNet网络结构
       ResNet依然是:没有最深,只有更深(152层)。听说目前层数已突破一千。
       主要的创新在残差网络,如图11所示,其实这个网络的提出本质上还是要解决层次比较深的时候无法训练的问题。这种借鉴了Highway Network思想的网络相当于旁边专门开个通道使得输入可以直达输出,而优化的目标由原来的拟合输出H(x)变成输出和输入的差H(x)-x,其中H(X)是某一层原始的的期望映射输出,x是输入。
图11. ResNet网络结构
Deep Learning一路走来,大家也慢慢意识到模型本身结构是Deep Learning研究的重中之重,而本文回顾的LeNet、AlexNet、GoogLeNet、VGG、ResNet又是经典中的经典。
随着2012年AlexNet的一举成名,CNN成了计算机视觉应用中的不二选择。目前,CNN又有了很多其他花样,比如R-CNN系列,详情敬请期待我爱机器学习网站(52ml.net)的#Deep Learning回顾#下一期。
本文只是简单回顾,疏漏之处敬请谅解,感兴趣的可以加QQ群一起学习:
[参考文献]
[1] DE Rumelhart, GE Hinton, RJ Williams, Learning internal representations by error propagation. 1985 – DTIC Document.
[2] Y. LeCun , B. Boser , J. S. Denker , D. Henderson , R. E. Howard , W. Hubbard and L. D. Jackel, “Backpropagation applied to handwritten zip code recognition”, Neural Computation, vol. 1, no. 4, pp. 541-551, 1989.
[3] Kaiming He, Deep Residual Learning, http://image-net.org/challenges/talks/ilsvrc2015_deep_residual_learning_kaiminghe.pdf
[4] Y. LeCun, L. Bottou, Y. Bengio, and P. Haffner. Gradient-based learning applied to document recognition. Proceedings of the IEEE, 86(11):, 1998.
[5] A. Krizhevsky, I. Sutskever, and G. Hinton. Imagenet classification with deep convolutional neural networks. In Advances in Neural Information Processing Systems 25, pages , 2012.
[6] Christian Szegedy, Wei Liu, Yangqing Jia, Pierre Sermanet, Scott E. Reed, Dragomir Anguelov, Dumitru Erhan, Vincent Vanhoucke, Andrew Rabinovich: Going deeper with convolutions. CVPR
[7] Karen Simonyan, Andrew Zisserman: Very Deep Convolutional Networks for Large-Scale Image Recognition. CoRR abs/ (2014)
[8] Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. Deep Residual Learning for Image Recognition. IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2016
[9] 一些对应的caffe实现或预训练好的模型: /BVLC/caffe /BVLC/caffe/wiki/Model-Zoo
[10] K. Fukushima. Neocognitron: A self-organizing neural network model for a mechanism of pattern recognition unaffected by shift in position. Biological Cybernetics, 36(4): 93-202, 1980.
欢迎加入我爱机器学习QQ11群:
微信扫一扫,关注我爱机器学习公众号
欢迎加入我爱机器学习QQ11群:
最新文章列表
NIPS 2016 — Day 1 Highlights NIPS 2016 — Day 2 Highlights:...
2017年五月 &(1)
2017年四月 &(65)
2017年三月 &(54)
2017年二月 &(48)
2017年一月 &(54)
2016年十二月 &(62)
2016年十一月 &(97)
2016年十月 &(97)
2016年九月 &(124)
2016年八月 &(83)
2016年七月 &(13)
2016年六月 &(10)
2016年五月 &(6)
2016年四月 &(9)
2016年三月 &(7)
2016年二月 &(2)
2016年一月 &(3)
2015年十二月 &(5)
2015年十一月 &(4)
2015年十月 &(2)
2015年九月 &(2)
2015年八月 &(3)
2015年七月 &(6)
2015年六月 &(8)
2015年五月 &(4)
2015年四月 &(1)
2015年三月 &(3)
2015年二月 &(1)
2015年一月 &(2)
2014年十二月 &(4)
2014年十一月 &(2)
2014年十月 &(3)
2014年九月 &(4)
2014年八月 &(22)
2014年七月 &(40)
2014年六月 &(61)
2014年五月 &(63)
2014年四月 &(187)
2014年三月 &(4799)
2014年二月 &(764)
2014年一月 &(330)
2013年十二月 &(145)
2013年十一月 &(126)
2013年十月 &(216)
2013年九月 &(284)
2013年八月 &(327)
2013年七月 &(275)
2013年六月 &(315)
2013年五月 &(228)
2013年四月 &(175)
2013年三月 &(186)
2013年二月 &(118)
2013年一月 &(210)
2012年十二月 &(221)
2012年十一月 &(155)
2012年十月 &(144)
2012年九月 &(98)
2012年八月 &(99)
2012年七月 &(109)
2012年六月 &(75)
2012年五月 &(88)
2012年四月 &(78)
2012年三月 &(78)
2012年二月 &(50)
2012年一月 &(17)
2011年十二月 &(27)
2011年十一月 &(6)
2011年十月 &(11)
2011年九月 &(13)
2011年八月 &(13)
2011年七月 &(19)
2011年六月 &(18)
2011年五月 &(6)
2011年四月 &(12)
2011年三月 &(15)
2011年二月 &(6)
2011年一月 &(9)
2010年十二月 &(6)
2010年十一月 &(11)
2010年十月 &(5)
2010年九月 &(8)
2010年八月 &(5)
2010年七月 &(12)
2010年六月 &(4)
2010年五月 &(7)
2010年四月 &(6)
2010年三月 &(12)
2010年二月 &(7)
2010年一月 &(2)
2009年十二月 &(5)
2009年十一月 &(16)
2009年十月 &(6)
2009年九月 &(7)
2009年八月 &(7)
2009年七月 &(5)
2009年六月 &(6)
2009年五月 &(6)
2009年四月 &(4)
2009年三月 &(7)
2009年二月 &(6)
2009年一月 &(1)
2008年十二月 &(4)
2008年十一月 &(5)
2008年十月 &(1)
2008年八月 &(1)
2008年七月 &(3)
2008年六月 &(3)
2008年五月 &(3)
2008年三月 &(1)
2007年十二月 &(1)
2007年十月 &(1)
2007年八月 &(4)
2007年七月 &(1)}

我要回帖

更多关于 头像图片 背影 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信