search file names

I want to search files with find command and have following condition, but wants to ignore all pictures format like *.png,*.jpg,*.gif

wants to search

*backup*
*bak*
*test*
-- [at start or end]
__ [at stard or end]

numbers in file name

*temp*
*tmp*

find . \( -name "*backup*" -o -name "*bak*" -o -name "*test*" -o -name "--*" -o -name "*--" -o -name "__*" -o -name "*__" \
-o -name "*[0-9]*" -o -name "*temp*" -o -name "*tmp*" \) -a ! \( -name "*.png" -o -name "*.jpg" -o -name "*.gif" \)

Thanks how i want to ignore cache directory with it, i need to add under that.

find . \( -name "*backup*" -o -name "*bak*" -o -name "*test*" -o -name "--*" -o -name "*--" -o -name "__*" -o -name "*__" \
-o -name "*[0-9]*" -o -name "*temp*" -o -name "*tmp*" \) -a ! \( -name "*.png" -o -name "*.jpg" -o -name "*.gif" \) \
-o -name "cache" -prune

still showing cache directory, i want to ignore it.

find . \( -name "*backup*" -o -name "*bak*" -o -name "*test*" -o -name "--*" -o -name "*--" -o -name "__*" -o -name "*__" \
-o -name "*[0-9]*" -o -name "*temp*" -o -name "*tmp*" \) -a ! \( -name "*.png" -o -name "*.jpg" -o -name "*.gif" \) \
-o -name "cache" -prune | grep -v "cache"