[当前最佳0.00000 @ypw/ 0.20631 @LeeJuly30] Kaggle ImageNet Dogs


#111

使用了Stanford dogs dataset:

代码:https://github.com/ypwhs/DogBreed_gluon


#112

可以不用opencv读数据,用mx.image.imread读进来的图片就是RGB的


#113


使用了 resnet152_v1做fine tuning,epoch 100,有些overfitting,再试试early stopping,结果应该会改善。


#114

又进步了这么多 真厉害!


#115

多谢多谢。
再问另外一个问题:image resize怎么实现的?比如把图片从400 * 288缩放到300 * 300,H压缩了、W拉伸了,就分出了俩子问题:(1)H压缩,仅仅是选取了一些pixel去丢弃吗,怎么选? (2)W拉伸,多出来的pixel怎么去填充?


#117

取决于你用什么插值方法,比如我是使用 OpenCV 来 resize 的,在 cv2.resize 里面传入不同的参数,可以有不同的效果。常用的插值方法有以下几种:

参数 解释
INTER_NEAREST 最近邻居插值
INTER_LINEAR 双线性插值
INTER_CUBIC 双三次插值
INTER_AREA 使用像素区域关系进行重采样。这可能是图像抽取的首选方法,因为它可以产生无莫尔效应的结果。但是当图像放大时,它与INTER_NEAREST方法类似。

如果是按 INTER_NEAREST 插值,放大时会出现马赛克效果,缩小时直线会出现锯齿效果。
而 INTER_LINEAR 则会进行线性插值,在缩小图像的时候效果还行,放大的时候就会有模糊的效果。
使用 INTER_CUBIC 放大图像时会插出更好的效果,但是运算量要大许多。

它们之间的比较可以看下图:

我没有指定插值方式,因此 cv2.resize 默认会使用 INTER_LINEAR 的方式来插值,多了的 pixel 直接丢弃,少了的按线性的方式插值。

参考链接:


#118

恭喜,又提高了不少啊 :grinning:


#119


将96X96变为224X224,效果提升很明显啊。


#120

96x96的时候精度大概是多少?


#121

未使用Stanford dogs dataset,仍然用resnet50_v2,固定前面层参数,把图像resize到224*224,增强全开。比上次提升了


#122

最好只到了1.8左右


#123

resnet18_v2 迁移学习,看 @ypw 培神的代码给了我一个启示,如果锁定前面的特征层,只训练后面的全链接层,那么可以先把所有的数据过一边前面的特征层,保存到本地,这样再训练就会节省很多时间和显存。还没有实测
使用rec文件好像还是卡IO


#124

没错,就是这个思路


#125

请问在尝试运行get_features_v3.ipynb时,每次到net = models.get_model(model_name, pretrained=True, ctx=ctx)这句代码就会出现The kernel appears to have died. It will restart automatically. 是因为gpu问题还是batchsize太大了呢?


#126

昨天也有人问到了类似的问题,初步分析是内存炸了,但是原因不明。你可以尝试更新 mxnet:

pip install -U --pre mxnet-cu80

#127

我用的是最新的mxnet-cu75==0.12.1
so 可能是cuda版本问题?


#128

刚刚试了试这个思路,爽到爆
先把预训练模型的特征层抽出来当作一个net,然后让所有的数据过一遍这个net,算是预训练完了。因为不需要计算梯度,可以将bs开到很大,同样只过一遍,速度也很快。
然后把过一遍的数据保存的本地,然后新建一个全链接层的小net,然后加载保存的数据进行训练,同样,因为网络小,bs也可以开到很大,而且速度飞快
Get到了新技能,开森 :rofl:

这是现在的速度,以前的一代得有个两三分钟,aws,p2乞丐版
捕获


#129

听说有奖励?image用了standford dog dataset


#130

赞,是用gluon写的吗?


#131

2层的全连接网络又变大了一点(第一层1024,第二层120),加了batchnormal和relu,成绩又提高了一些。但是到epoch7 val loss就不在收敛了。是不是还是模型太复杂了?求大神指导一下如何继续提高:hugs: