Hey man I have the same problem, except I am 22 almost 23! Now before I say this please understand that in no way is this negative or do I mean to trample your hopes of having relationships. I have always struggled with just talking to girls, to the point where I put off a lot of women because I am too shy to talk to them so I come off as mean or rude. In high school I was able to become close friends with one girl whom I really liked, it never worked out (she had a serious BF) even though I told her about my feelings. This is the other part (and the bigger one) of my trouble with women, rejection. Between shyness and rejection its hard enough but with bad self esteem its even worse. For a long time I considered most women out of my league but recently I have been trying something new. If I meet a girl that I find attractive or I like I just go for it. Even if you are so nervous you feel like puking you have to try, I know rejection hurts and those first few times hanging out will be nerve racking but trust me man just go for it. Its so cliche but the worst that could happen is you don't hit it off and at best you will become friends or more. You will never know until you try. I can preach this all I want but I know it might not make it any easier and probably wont. To this day I still struggle (22 and I still havent had a GF yet) but you just gotta keep ploddin along and keep trying man, dont let it get you down. Believe in yourself, confidence is everything even if you dont believe just fake it till ya make it. GL man I hope this helped you at least a little bit.
Edit: For the love of God do not do what the guy above me said. Telling a girl she looks like a raccoon is only going to hurt her feelings. Whether or not you ever see her again you might really hurt her, those types of things can be truly devastating. Especially with someone wearing alot of makeup, they are usually trying to cover up their insecurities or things they think are wrong with themselves. Making women feel bad or awkward to help yourself is not the right way to go about this.