Puedes usar el patrón lazy load:
https://medium.com/@filipvitas/lazy-...t-2c5bcb691274
Te recomiendo que no uses la api IntersectionObserver, porque aún no tiene buen soporte. Y lo mismo con el atributo lazy. Hazlo como siempre se hace: comparando la relación entre el offsetTop de la imageny el innerHeight y el pageYOffset de la página.