Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

论文流程理解 #14

Open
Ostnie opened this issue May 23, 2018 · 10 comments
Open

论文流程理解 #14

Ostnie opened this issue May 23, 2018 · 10 comments

Comments

@Ostnie
Copy link

Ostnie commented May 23, 2018

打算用tensorflow复现RACNN,但是中间有几步总是觉得难以实现,说一下我对全程的理解,希望能有人帮忙看看是否有误
1、用普通VGG进行分类,微调,直到分类效果不再提升
2、固定住VGG参数,输出最后一层卷积层的输出到APN里面,输出三个用于定位的参数,
3、裁剪图片,用1固定住的VGG继续做分类,将公式8计算出来的loss作为APN的loss(实际是由VGG计算出来的)进行优化,改变三个定位参数
4、重新循环2,3直至VGG分类效果不再提升
5、循环1234

@kekedan
Copy link

kekedan commented Jun 25, 2018

同学,不知道不实现没有,三个定位是用于当前batch的。
有个问题想想你请教下,在论文中Mask是为了用于求导,使用tensorflow相当于是自动求导的,感觉好像并不需要这个,不知道你是怎么实现的,能否交流下,谢谢。

@Ostnie
Copy link
Author

Ostnie commented Jun 26, 2018

最后我还是没有实现,不过确实你说的batch流程之前是搞错了。
你提到的mask是指哪一步?我可能没有注意到这是一个mask,我没有看过mask rcnn的内容,不知道你说的是否和那个mask一样

@yuleichin
Copy link

yuleichin commented Jul 8, 2018

我有一个疑问,就是在使用sigmoid函数crop图像区域的时候,有的代码实现是根据预测的三个坐标的位置直接用[tx-tl:tx+tl,ty-tl:ty+tl]来点选原图像中的区域,然后再调用nn.resample函数来插值的。如果这样实现的话,为什么还需要论文中sigmoid函数相减确定crop区域呢?
就是说,这个crop操作是真的crop吗?如果是的话直接点选就好了?
如果只是把目标区域以外的点用boxcar function相乘都置为很小的值,然后直接根据目标区域的坐标来插值放大,那么网上的pytorch实现代码就有问题了。

@bluemandora
Copy link

bluemandora commented Jul 20, 2018

@yuleichin 他代码反向传播的时候用了那个sigmoid函数的梯度,因为直接crop是不可导的。前向传播的时候就无所谓了,可以直接crop

@houkai
Copy link

houkai commented Jan 24, 2019

@bluemandora soga! this's the key trick!

@Asichurter
Copy link

我的理解是,论文里面的sigmoid函数的x有个放大的系数k被设置得非常大,结果就是让sigmoid函数近似于阶梯函数,相当于使用soft attention的方式近似达到了hard attention的效果。M通过这个变式的sigmoid让框内的点的注意力系数接近1,而让框外的注意力系数接近0,这样的注意力作用于scale的输入图像上就产生了类似于crop的效果。

映射了注意力以后框外的位置都被映射为0,图像尺寸使用了双线性差值来恢复尺寸,估计要用到tx,ty和tl来恢复。

我没看懂的地方在于,step2里面说提取图像在VGG最后一层的激活值来确定初始的square,这里具体是怎么确定的?而且前面的哥们讨论的batch在论文里面也没有提到,所以模型到底是不是以batch为基础来训练的呢?

@HiIcy
Copy link

HiIcy commented Sep 7, 2019

@Asichurter ,hey,哥们,我也对这里很迷,还有交替训练时,我是需要先每个尺度先预测遍,在融合fc的值,再预测遍?我现在还对这几个地方有点迷惑,能指点下吗?

@Asichurter
Copy link

@HiIcy 参照论文3.4的step3,应该是先固定住放大的APN网络(只是固定参数,但还是要前馈),用每个scale的分类损失优化VGG和fc。再固定住VGG和fc的参数,前馈一次,用rank loss来优化APN

@HiIcy
Copy link

HiIcy commented Sep 17, 2019

@Asichurter 啊,不好意思!我大概理解,它是分开固定参数来优化,但论文里好像说的需要最后融合来预测,网上那个pytorch实现好像给那一行注释了,不知道你怎么看

@anzhang-fly
Copy link

我也很疑惑这一点,看的代码都是根据各个尺度做的预测结果,而原论文的意思是先把每个尺度做融合后再做预测。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants