Add the real file width and height to your default img tag, no matter which file source does finally takes. That will probably calm Lighthouse and PagesSpeed. Doing so will improve the rendering of the image as the browser does not need to download the whole image prior the render because you already provide the size.
However if you want to provide also the source size, then you'll have to use the sizes attribute:
Sizes
Is a list of source sizes that describes the final rendered width of
the image represented by the source. Each source size consists of a
comma-separated list of media condition-length pairs. This information
is used by the browser to determine, before laying the page out, which
image defined in srcset to use. Please note that sizes will have its
effect only if width dimension descriptors are provided with srcset
instead of pixel ratio values (200w instead of 2x for example).
The sizes attribute has an effect only when the element is
the direct child of a <picture>
element.
You can also do it directly over the img tag:
<picture>
<img srcset="img_pink_flowers_small.jpg 320w,
img_pink_flowers_medium.jpg 480w,
img_pink_flowers_large.jpg 800w"
sizes="(max-width: 320px) 280px,
(max-width: 480px) 440px,
800px"
src="img_pink_flowers_small.jpg" width="280" height="460">
</picture>
The second value of each size set is the real width of the image. While the first one is equivalent to the media attribute. The last one does not use media value as is the one set for any other screen size.