Hello there.
I don’t see anything wrong with the warped image.
I see that the shoulder and the knife are doubled, but as those (partly doubled regions) are occluded parts, that artifact is expected in the warped image. The background is occluded partly with the shoulder and with the knife.
For backward warping the forward flow, we look at the image coordinates, read the flow for each pixel. Then we copy the pixel value of the corresponding pixel (x + u) in that initial coordinate (x). Assume the background has no movement. In this case the flow of that part is zero and the pixel values of the second image in those pixels (which is equal to the same initial coordinates) are copied.
In other words:
warped_img(x) = img2[x + flow(x)].
And to have a better interpolation, bilinear interpolation could be used instead of nearest neighbor in grid_sample.
Are the copied parts the reason you assume something is wrong? If not, sorry for the extra explanation.