Verbal abuse? Should I get a divorce? HELP

My husband and I have been married for 2 years. During our early stage of marriage, he called me names when he was angry. Names like "loose bitch, insecure, idiot, accusing me of adultery, Cheap, barren, and all types of names". He does this and apologizes. He is such a sweet person when hes not angry. Then when he gets mad again, he uses mean words again. Fast forward, I got pregnant for him, one day we got in a heated argument and he called me a prostitute. Gosh, I forgave him again cause he begged. His mum came to stay in our house when i gave birth to our baby and he called me arrogant, adamant, and a prostitute in front of his mother. His mother called me arrogant and adamant too. He has been begging and promised never to say those words again. I dont know If I should stay or leave? We have a son together? I feel divorce is too aggressive? Will he change? I AM TIRED.