Why would anyone treat the person they say they “love” like this?

My boyfriend has done and said some horrible things to me. He wasn’t like this in the beginning. We’ve been together for almost two years. His true colors began to show months into the relationship. He became physically abusive and verbally and it started to mess with me mentally and emotionally. He has called me weak for not wanting to accept his abuse. He always says “Do you think you’re gonna find a perfect guy outside of me? We all have flaws.” Which I get but his flaws are damaging me in ways I feel like I’ll never come back from. He even has told me “This is why I don’t want to be with you.” And pretty much called me a hoe. He said all this a few months back, my birthday was coming up and I told him that we should go to a bar after we went out to eat for my birthday because I don’t usually drink and I thought it would be different and fun for me. He told me that I act like every other hoe and that if I wanted to be like them he didn’t need to be with me. He said all this publicly, we were around a bunch of people and he was loud. He has called me stupid on many occasions simply because I had a different view or different opinion from him. He says he loves me and always apologizes but he continues to be this way toward me. I feel like I’m in too deep to let go now because I really do love him.
Why would anyone treat the person they say they “love” like this?
Post Opinion