Reduce image file sizes based on real-world size in model

I have a building model with a lot of custom textures that came from photos, which make the model quite large (150MB). I need to reduce the model size significantly, and I would like to mainly reduce the resolution of the textures that are small in the model. For example, a building facade and and small sign may both have 3MB photos for their textures. I’d like the building facade to not be reduced much (if at all), but the sign should be reduced significantly. Ideally, I’d like to be able to reduce the textures globally to 3 inches per pixel, for example. Is there any way to accomplish this?

An external image editor or utility of some kind, perhaps.