How do I identify repeated subimages within a larger image?
A naive approach would be to set a maximum size, .25 image width, and compare every possible square with every other possible square, in a "sliding window" fashion.

So take a 5000 by 5000 square as your reference (eg 0,0 to 4999,4999).
now grab all the other possible "windows". Start by comparing your reference square to the square at (5000,0 to 9999,4999), then compare your reference square to the square at (5001,0 to 10000,4999) then to (5002,0 to 10001,4999) etc.

So your compare function could subtract the (greyscale) difference between each pixel of your reference frame and your target frame and give a score.

Next (after comparing your reference to all other possible squares), you select a new reference, the square at (1,0 to 5000,4999) and compare that reference square to all other possible squares.

Once the whole process was done at the 5000,5000 size, you would know if any structure of size 5000x5000 matches any other part of the image (to a threshold).

Then, you would make your reference square smaller, eg 4999x4999  and repeat the whole process at size 4999x4999 to see if any structure of size 4999x4999 is "duplicated"

You would proceed until your minimum size.

Then...you would want to try instead of squares...rectangles of different proportions.

As you can see, this is computationally prohibitive, so you have to make compromises:


make the source image smaller. Only when you have a near match, check the high res map at that location
slide by 10 pixel increments
identify some basic reference structures yourself, and only use those as reference
try a "monte-carlo" approach by trying random locations and getting statistics of promising locations for pixel by pixel checks
implement on gpu 
limit the structures to only a few rectangle shapes rather than all
preprocess the image to have higher contrast
start by using small sizes (20x20 pixels) and once you find small matches, grow your "square" there to look for larger matches that might be the "real" duplicated structure


So there's no magic. What there is is domain heuristics.  You tell your script what you think are the likely sizes/shapes/locations/orientations of structures.

However, the question of "why" you need to identify duplicate structures is actually fundamental to how you will optimize the problem.

EDIT: 
an entirely different approach would be to use some algorithm that's pre-tuned for "object segmentation" to go through and find anything that seems to have a defined boundary, then run a clustering algorithm on all the "objects", and it should group the most similar ones together. Then you can manually select the matches or do a final threshold step. This is likely much more similar to how the "human" brain does it as is likely to be much faster