Are you using anything like nginx / varnish to locally cache?
I don’t see the point of that, the CDNs all have some kind of thundering herd protection, all called origin shield or something, so even if 1000 people request the same image simultaneously the CDN will only send one request and serve the same image to all 1000. I don’t see any need to have a CDN and a local cache.
But a cache might be necessary on the other side of things — if you get a request for a large number of variations of the same image often — at that point you don’t want to load up the high quality large originals N times, so you might want to put an nginx/varnish over the original image source if that’s a problem you have. I sometimes put a CDN over the original image source as well, like a raw.cdn.something.com for the originals. That way even if I need the many variations of the same image quickly the imgproxy loads it off the closest edge cache. This bill tends to be many orders of magnitude lower than the main outgoing CDN that serves users, so it’s usually negligible.