You can run the following in the directory containing the files you want to rename.
Code:
for i in "$(ls ./)"; do if [ -f "$i" ]; then new_name=$(echo "$i" | tr "[:upper:]" "[:lower:]" | tr "_" " " | sed -e 's/^./\u&/' -e 's/ ./\U&/g'); fi; mv "$i" "$new_name"; done
It may be prudent to test it in a temporary directory first though
Oops, spotted a small problem, got to go to work now though so I'll fix it tomorrow - unless someone beats me to it.