I am trying to implement Faster RCNN for Object Detection. I am following this 23 particular GitHub repo for implementation. However, I have a doubt from this 6 particular line in the code and just want to clarify if I have understood things correctly. There is block of code following this line where a few layers have been fixed by setting requires_grad to False. However, in this 5 particular line in the train function, the base feature extractor is set to eval() but then again the following 2 lines train some specific layers.
I have 2 main doubts,

Why is requires_grad set to False in the preceding few lines if it is anyway going to be used in evaluation mode?
What effect do the 2 lines below the self.FRCNN_base.eval() do in terms of training in the def train() function?

Any help would be appreciated. Thanks