predict(np.array(img_adv))
сетка тут ломается от того что входная картинка приведена к диапозону [0,255], при ожидаемом [0,1]. Если этот поправить, то сломать ее уже ни так просто, не сильно меняя картинку.
im = Image.fromarray(np.uint8(input_im * 255))