  We present a novel dual-flow representation of scene motion that decomposes
the optical flow into a static flow field caused by the camera motion and
another dynamic flow field caused by the objects' movements in the scene. Based
on this representation, we present a dynamic SLAM, dubbed DeFlowSLAM, that
exploits both static and dynamic pixels in the images to solve the camera
poses, rather than simply using static background pixels as other dynamic SLAM
systems do. We propose a dynamic update module to train our DeFlowSLAM in a
self-supervised manner, where a dense bundle adjustment layer takes in
estimated static flow fields and the weights controlled by the dynamic mask and
outputs the residual of the optimized static flow fields, camera poses, and
inverse depths. The static and dynamic flow fields are estimated by warping the
current image to the neighboring images, and the optical flow can be obtained
by summing the two fields. Extensive experiments demonstrate that DeFlowSLAM
generalizes well to both static and dynamic scenes as it exhibits comparable
performance to the state-of-the-art DROID-SLAM in static and less dynamic
scenes while significantly outperforming DROID-SLAM in highly dynamic
environments. The code and pre-trained model will be available on the project
webpage: \urlstyle{tt}
\textcolor{url_color}{\url{https://zju3dv.github.io/deflowslam/}}.
