A global planner is responsible for finding a feasible path from a start location to a goal location ros global planner. A local planner is responsible for generating the velocity commands that will actually (essentially) execute the drive motions required to follow the global path plan ros local planner. In this context, you can have two cost maps, one global costmap (which the global planner uses) and a local costmap (which the local planner uses). The local costmap can take account of dynamic objects in the area closest to the robot (like in the range of the lidar scanner) and allow the local planner to plan to avoid the obstacles.
For your case, I would suggest instead of using a custom object detector, just to get started you use the default planner and costmap structure. Clearpath provides really nice launch and config files which do exactly this. See move_base.launch and the config files it uses to set up the global and local navigation stacks. Once you have done this you may consider how to incorporate your custom detected obstacles into the local costmap.
The teb_local_planner is one version of a local planner that does take into account local dynamic obstacles (Tutorial1 and Tutorial2). But personally I think its important you get an understanding of the basic local and global nav stack layout before you do anything more complicated like TEB, but that is just my opinion.