save_image “unnormalizes” the image via:
ndarr = grid.mul(255).add_(0.5).clamp_(0, 255).permute(1, 2, 0).to('cpu', torch.uint8).numpy()

I don’t know, if add_image of TensorBoard does the same, but it looks like the colors might be clipped, so you could try to apply the same method as in save_image.