In this episode, Dr. Satya Mallick interviews Adrian Rosebrock, a successful entrepreneur and the owner of the popular PyImageSearch blogs. As you may know, PyImageSearch produces free tutorials, and provides many educational courses and books. In this interview, Adrian will dwell on the courses he has successfully launched, some aspects of tackling the financial issues, his way to Ph.D. and whether it’s worth doing, also uncovering the stepping stones to profitability in business. Adrian will also share his views on goal-setting, as well as his personal formula of success.
The video and audio versions you can find on Youtube, Spotify, SoundCloud, Google Podcasts, Apple Podcasts, and Stitcher.
The interview was recorded in September 2020.
SM (Satya Mallick): Hello everybody! In this episode, we will talk to Adrian Rosebrock, who is a successful computer vision entrepreneur and a very popular blogger. He started his company PyImageSearch without taking a dime of venture capital funding. He did this by executing many successful crowdfunding campaigns. In this episode, we will learn various aspects of starting a business: how to build an audience, how to come up with product ideas, and how to manage your time and effort as an entrepreneur. PyImageSearch produces free tutorials, and it has many good courses and books, so I encourage you to check it out if you do not know anything yet about PyImageSearch. Let's dive in and talk to Adrian. I'm your host Satya Mallick and this is our podcast AI for Entrepreneurs. Welcome Adrian, it's such a pleasure to have you on our show and I’m so thankful that you're here.
AR (Adrian Rosebrock): Thank you, Satya. It's truly a pleasure to be here. I feel humbled and honored. When I started PyImageSearch it was just a small blog, and to be here and talk with the CEO of OpenCV is awesome. By the way, huge congrats on becoming the CEO! I think that you and Brandon ran an amazing Kickstarter campaign – it’s a phenomenal success! And I think it's probably the most successful embedded hardware crowdfunding campaign I’ve heard about, I can’t think of any other campaign that's brought in 1.3 million. Huge thanks to you and Gary and the rest of the OpenCV team for 20 years of the open-source community! It's just truly a testament to what the community can accomplish, I love it, and I’m sure you’re proud of it as well.
SM: Thank you so much! Occipital was probably the second one, they raised 1.29 million, and we raised 1.36 million if you want to pick a winner. But in all fairness, the Occipital guys were also advising us, so it's not a competition. But this show is about you and I want to focus exclusively on you. There are very few people, very few bloggers who have had such an impact on the OpenCV community. Pretty much anybody who starts with OpenCV knows you already or they have hit your blog while researching something. To understand an entrepreneur, we need to understand their background, so I want you to walk us through your background: first tell us about yourself, about growing up, and what your childhood was like. What were the influences in your childhood?
AR: Sure! As for the background, I have a Ph.D. in computer science with a focus on computer vision and machine learning. I've always loved writing — one of my early childhood memories is that I used to write little stories on index cards, that would be 20 pages of index cards, little short stories front and back, and I would staple them together, cut up a piece of cardboard and design the cover of it, and put it all together. I would sell it to my parents for 50 cents. That was back when I was probably nine or ten years old, and it's weird how those little things you do as a child end up impacting you as an adult, and in some cases your entire career. So that's the very first book I ever wrote. Practical Python and OpenCV is my first book, but technically that’s not true as I was selling books to my parents back then. I grew up in rural Maryland, in the middle of nowhere. I went to Francis Scott Key High School, but we always called it “cornfield high”, because there was nothing but cornfields you just drove through a farm practically to get to the high school. Then I went to the University of Maryland, Baltimore County, which is just outside Baltimore, and I lived there for about six or seven years while I was doing my undergrad and my Ph.D. Then after grad school, I went to Connecticut — my wife (girlfriend at that time) had a job up there, and I spent there about seven years, and now we have moved to Philadelphia.
SM: That's great! In your childhood, what were the influences in your life, your parents, your family… tell us more about it, please, as to understand an entrepreneur I feel that you have to understand their background, where they're coming from, so walk us through some of your childhood experiences.
AR: Ok definitely. My childhood was honestly traumatic, I had Lyme disease when I was a kid. Growing up in rural Maryland, I played outside all the time, the woods were our playground, we didn't have any jungle gyms, so my friend and I would go out in the woods and play all the time. I guess somehow, I ended up getting bit by a tick, and probably a few months after that, I started having really bad symptoms. From there it was just a fight — what in the world do I have? What is making me sick?
SM: For people who don't know about Lyme disease, having it, one may feel depleted of energy for about a month or more.
AR: It's an autoimmune disease. Every one to two months you'll develop a super high fever, and your joints will completely lock up, you typically lose appetite, but it depends. It's a very debilitating type of disease, it's especially hard to diagnose because it comes and goes: one month you're perfectly fine, then the next month you're sick, you get over it, but it just repeats and it's cyclical. It can take a long time to discern the pattern.
SM: Does it cure itself or do you take medications for that?
AR: You have to take medication for and you have to take it ideally within the first couple of years because otherwise, you can actually develop some severe problems, sometimes fatal. Typically, you develop arthritis at an extremely young age, you lose a lot of mobility in your joints and it can be fatal in certain situations.
SM: That's terrible! I was under the impression that Lyme disease affects you for about a month or two, but as you said that it can continue for a very long time and it can recur.
AR: Absolutely! And back then Lyme disease was something that a lot of doctors on the east coast of the United States only believe could happen up in the north, in New York, specifically Westchester county, so doctors didn’t think that Lyme disease could happen in some place as far south as Maryland. So, for a long time, no one could properly diagnose me and it was my father who properly diagnosed me in the first place. He has a Ph.D. and essentially autoimmune research and infectious diseases, and weirdly enough ten years prior he had studied Lyme disease for quite a bit while he was working for some government organization. When he was in the military, he did some research there. And I went to the family doctor just as I did every time, I got sick, and my father asked the doctor for bile in my blood, and then took it back to his lab, and he saw all the classic markers of Lyme disease. So, then it became a fight taking it to the doctors. So, I was very sick, I missed all of the second grade, and part of third grade as well, and that was a little challenging because when you're eight or nine years old, you are developing your social skills and you're learning how to interact with other kids.
SM: On your blog, you also mentioned some mental health problems that your mother went through, so could you walk us through how challenging it was?
AR: My mother suffers from bipolar, schizophrenia, depression, and that was a struggle going up, because she was just in and out of the psychiatric world, probably from the time I was in fourth grade, even until now she still struggles and she has a lot of problems. It's tough talking about mental health issues because back then there was a big stigma, and you couldn't talk about that, especially in a rural area. You felt that if you brought that up, you were less of a family or less of a person. That was just a brutal experience. I remember the first time we dropped her off at the mental health facility, it was myself, my father, and my grandparents, and it was late in the evening; she said she would go through with the treatment and try to make herself better. We were driving home with my father and realized it was eight o'clock at night, we hadn’t had dinner, so we decided to stop and get some pizza. I remember sitting at that table, eating a slice of pizza, and just looking my father dead in the eyes. I told him that I felt so much calmer then. I think it showed him the situation we were all in was really bad, and we were trapped in it. If a person's suffering from mental health issues, they need help and they should be accommodated, and you should do everything in your power to make sure they're okay. But the issue specifically with my mother is that she never wanted to adhere to the treatment, she didn't want to adhere to her medication, and it caused this cyclical relapse. Ultimately, I left home at 18, but again there are still issues that exist.
SM: One of the things with mental health issues is that although you can control them, they never go away, you have to manage them. It takes a lot of responsibility.
AR: Yes, and it's sad because sometimes certain mental health issues make you less responsible, but to get better you have to be more responsible. It's just such a problem. When Covid-19 started, I felt really bad for people, obviously because of the virus, but even more, because I knew some people were trapped in the same situation that I was in as a kid. High school for me was some of the just horrific experiences of my life, with my mother just being very sick. At least at that time, I had friends who had cars, so we got to go out, to go to coffee shops, we got to go to the movies. I made sure to get out of the house every single day. At the height of the pandemic when the restrictions were at their worst back in March and April and May, I knew some people were trapped in their homes, especially kids, who could not get away, they were just living in that hell day in and day out, and I know the impact that it can have on a person, and how it influences. So, I thought what could I do about this? At the time we were just offering sales and all of our books and courses, I put together some free resources for people to isolate and learn at the same time. If you need a retreat, if you need an escape, come here and learn from us, we have our free material, we have our paid material as well. We donated to the Child Mind Institute, which is an institute to help with mental health issues with children, so it was great — we had raised about a little over ten thousand dollars for them by the time the sale ended. For me, that was super important, because while the virus is definitely bad and I feel sorry for people impacted by it, I also know some people are going to live through the mental health problems in these families, and in some ways, that's going to be worse and I want to be able to do what I can to help them.
SM: It’s terrible, especially if you decide to confine yourself completely. I have never isolated myself completely, I would wake up very early at five in the morning, I would go to the beach and spend some time alone there, and that way I was not confined to my room the whole day, and that creates and contact with nature, elevates your mood. Making those kinds of choices can also help a little bit, I'm not saying that it's going to help completely, but being in nature, getting up early, taking a walk or something will help you to keep your sanity. It’s a tough time.
AR: I hope that it encourages people to take care of themselves more, and look inward and look for gratitude journals and meditations, anything they can do to make themselves more sustainable.
SM: That's right. Tell me a little bit about how you got interested in computer science and computer vision?
AR: When I was a kid, I loved playing sports soccer, basketball, baseball, I played every sport that I possibly could. I loved every component of it. But the problem was that by the time I was in middle school I developed a condition with my knees – it’s when the tendons and muscles are outgrowing your bones, knees lock up, and joints become extremely painful. I couldn't play the sports I wanted to, so I needed something else to do. I had a friend at the time, Andrew, whose father was a programmer: he wrote code in Java and was a Linux nerd type of a guy and a really sweet man. Being friends with Andrew I learned how to write code from them, so I learned basic HTML. I thought that it was so cool, I had a website on freewebs.com, I don't even know if that website even exists anymore. We had fun with it, we were learning as we were doing it. And then Ben, my other close friend, was an artist and he loved webcomics. He created webcomics, so in middle school, I wrote the HTML for a basic webcomics website, and he created the art. In high school, I continued to develop, so I was writing dynamic web pages using PHP.
SM: So, your high school must have been in 1999, around that time?
AR: I would have graduated high school in 2007. So, this was 2003 or 2004.
SM: And dotcom had passed completely.
AR: Yes! I guess my first computer vision project was in my senior year of high school. I took an AP statistics class and instead of a final exam, our teacher told me to go out in the real world, find some data, and apply statistics to it in some way, and then to write a paper on it and create a presentation to show up to the class. At that time, I had studied basic information retrieval, building text, search engines, so I understood the concept: let's count the number of words in a document and then apply some basic mathematical operations to them, and then I will be able to pull out similar pieces of text from that small data set. But I was getting really curious about image data because it's so much easier to work with. Text it's more intuitive. But how does computer vision work? I tried to read textbooks on it, it was just so far over my head because I had nowhere near enough mathematical background, just imagine, a 12th-grade kid trying to read linear algebra… No, I can't do that. However, I like text search engines — is it possible to do image search engines using basic steps? So, I wrote a basic web scraper that gathered a data set of 50 or 100 images online that used to be the scale. At that time that was enough. That was the image net, I have 100 images that are labeled. So, my idea was as follows: if I compute the mean and standard deviation, and the histogram, the kurtosis of the histogram, and all this other stuff, I can create this list of numbers that quantify the images. And if I compute the distance between these features ideally, they'll have similar semantic meanings. So that was my AP staff project, I wrote it all in Java, I don't know why.
SM: That was the programming language of choice at that time. People were reading either C++ or Java, the newer kids were learning Java, the older ones were learning C++.
AR: I wish I still had that project, I'm sure it was just 200 lines of horribly written code that would be impossible to decipher.
SM: The code that I wrote two years ago looks horrible to me now, it's funny! By the way, how did you decide on an undergrad program? Some of the people who are listening are students, they may be in undergrad, so how do they make this choice of picking up computer vision? Now it is slightly easier, but back in your day, it was not obvious that computer vision would take off. I remember I was at a conference with Gary Bradski, that was the first time I met him, and he was going on and on about how computer vision is a complete failure, and I was also annoyed I was going to speak up. But I was at that conference by chance, my advisor was invited to that conference and he couldn't make it, so he'd asked me to go, so I just decided to check his name tag, and there it was Gary Bradski, so I shut up but was very disappointed after that. This conference took place in 2003. I was very disappointed that those top people in computer vision thought that this field had failed. But now things are much better. Still, could you please walk us through your journey! How did you decide that you wanted to be in computer vision? How does one person who is contemplating getting into computer vision and AI come to that conclusion themselves? I mean the students who are thinking about it right now.
AR: My journey was a little weird just due to the time back then, as we didn't have undergrad computer vision courses, and libraries like OpenCV weren't accessible, so you had to be deeply involved, probably on a postgraduate level, just to understand what was going on. I went to college thinking that I wanted to focus exclusively on information retrieval, just text search engines, that's what I thought I wanted to do. So, my entire first two or three years of undergrad I took every information retrieval course I could find. I read every other textbook that I could find. But I was getting a little bored because even back then information retrieval was a solid field, and we could do it well, and the gains are marginal on most things. I wouldn't be able to sustain my life afterward – I couldn’t say I appreciated and loved the field, it was not going to drive me to be successful. So, I went back and looked at computer vision because that was my second love. I would love to dig into this stuff, but I was an undergrad at the time, and the only computer vision course we had was a computational photography course, and it was only for graduates. I went to my advisor and told him that I want to learn it, that I knew it was graduate only, but I was ready to pay for the course, asking him to let me take it as an undergrad. Then I went to the professor begging them to let me into the course. That was my first foray into computer vision and our very first project was to install OpenCV on our systems. Back in the day there wasn’t even NumPy binding to the library; it was a seven-day project, and it took most students 14 days — he gave us an extension on it because it was brutal. Luckily, I was going to do this in a virtual machine because I knew I was going to botch something eventually, so after each step, I was taking snapshots of the throwing it on an external hard drive. That way I could pull it back if I needed it, but it still took me a long time, oh my god, it was brutal!
SM: That's true, that was the state at that time!
AR: As for new students it's so much easier! Even though I have an academic background, a degree — I have a Ph.D. in computer science, I have a lot more of a practitioner view on the world. I relate it to learning how to play the guitar. When I was in 6th grade I wanted to learn how to play the guitar. I wanted to be an amazing guitarist, so my parents bought me a cheap guitar and an amplifier from Walmart for 50 bucks, signed me up for guitar lessons, and I did it for two years. My teacher was a nice guy, I loved him, but it showed me the limitations of the time because everyone was so focused on theory — you had to learn music theory, you had to learn how to properly understand time signatures and notes, and be able to read sheet music at a very high level. As for me, I just wanted to figure out, I was strumming this thing, I wasn’t sure I wanted to do it as a career, just let me figure out if I want to do this! And I gave it up after two years, I got fed up with it. About three years ago I picked it back up again, but and I found a different guitar teacher, and he created a system that teaches theory through actual practical learning: you learn certain specific guitar riffs which translate into certain pentatonic scales, you learn something practical, l but also as a theory element, so it gives you a hint as to whether or not you want to do this. That's what I think the computer vision and deep learning community is now: libraries are easier to install, they're one or two simple commands, with Python it's a simple import statement. So, if you're an undergrad or even a grad student and you think you want to do computer vision, and certainly if you want to do it in an industry, just go to a website OpenCV.org or PyImageSearch, or whatever website you find on Google, and just run an example, write the code in an IDE, execute it, and see what the result is. The reality is that in academia, in grad school, and college, you're going to be learning more theory, you're going to be deeply involved in that. However, depending on your job after college, you're not going to be as reading as many research papers. You're going to be spending a hell of a lot more time on your ID in a Jupyter notebook writing code and analyzing results. So, figure out if you are doing that – if you are sitting in that IDE, if you are looking at the results, and then if you are that cool, then talk to your advisor and say that you are interested in this and ask to sign you up for that class.
SM: What are your thoughts on master's versus Ph.D.? When I give my honest answer, my friends accuse me of being a hypocrite. But I want your take on that – should people go for master’s or Ph.D.?
AR: This is probably a little controversial to say but I have to thank my father for this. Schools and universities are businesses, and they want their numbers and their metrics to look good. So, a little trick I would say: if you truly think you want a Ph.D. or you think you want to strive for a Ph.D., it is worth signing up for the Ph.D. program and giving it a shot because the course requirements for a Ph.D. and a master's are going to be very similar. The difference, in the end, is either a little bit of research or a project or a lot of the answers.
SM: In UCSD it's almost “buy one — get one free”, so the master’s just drops off while you're on your Ph.D. course.
AR: Right! And the other way to look at it is that you can think of a master's as a consolation prize if you can't do your Ph.D. because universities want to keep their graduation rate high enough, they have a certain threshold, they need to be competitive. If they see a Ph.D. who's been sitting in their program for ten years, they'll be asking just to write a short little thing, here's your certificate, get out the door. And that's the honest truth. If you want to go for a Ph.D. and you fail, you might still get your master’s without much effort.
SM: As for master’s, you are not expected to do anything new; in Ph.D. you have to produce something novel. The novelty factor is there. But then again, let me finish asking that question: master’s or Ph.D.? How do people decide between a master's or a Ph.D.? If you're remotely interested in research, then go for a Ph.D. program, and if you change your mind you'll still end up with the master’s, right.
AR: Right.
SM: I feel the same way. People who are research-oriented and are ready to have that experience where it's a lot of failures because most of the things that you think are novel, you come up with a new idea, and then you do your research and you figure out that it was done in the 1960s… It takes a lot of iteration to get to that one novel idea, and then it doesn't just need to be novel, it should actually be better, and that is often very tough. I did have a lot of papers during my Ph.D., but it was lucky in the sense that I was working in two different fields. Whenever I used to get bored with one, I would just switch to another, and finally, in the last year, my Ph.D. advisor said that I had to pick one and do it. So, I ended up with 15 papers during my Ph.D. but they were split into two different fields. Many times, especially in the first two years, I felt that I’m actually going to quit after my master's. It's only when I got a good lab my lab mates were excellent, my Ph.D. advisor was really good, then I decided that this is worth it. So those things are also important, what environment you are in.
AR: I'll also say: when choosing a grad school, don't choose a school based on its name. You think of Stanford and Caltech, and Carnegie Mellon as your schools for artificial intelligence and computer vision, but I think it's far more important to try, if possible, to choose your advisor first. So, look for an advisor that has the same interests that you do, and then go read their papers and see what their research is. Then email them directly and see if you can start a conversation with them, and develop that rapport even before you apply to the school. The reason I say this is because it's very easy to get trapped in your Ph.D. to feel isolated and alone because you're pushing the state of the art, and truly by the time you earn your Ph.D. you know more about your specific research interests and interests than any other person in your defense room. You do know it you may not have confidence in yourself; your advisory board they're there to pick you apart but they don't know as much as you do. It's a funny situation to be in, but the point is don't get so fixated on the school. You need to find an advisor that's going to have the same research interest as you because they're going to be more willing to help, they're going to be more capable of helping you through tough times in your research. I love my Ph.D. advisor to death, but UMBC was not a school known for computer vision: it had one or two professors that did stuff in graphics, but it was predominantly artificial intelligence and distributed systems. So, I was pretty alone and isolated when I did my Ph.D., and that was a bit of a challenge. However, if I did it all over again, I’m not sure I would do it any differently, I think it worked out in the long run for me. But for someone just trying to get through grad school, try the advisor approach first rather than getting overly fixated on the specific school.
SM: I agree! In my case, my advisor was really good and it helped to make that decision. But do you think that a Ph.D. is absolutely required for a career in AI?
AR: That's a good question and I don't think a Ph.D. is necessary, especially not anymore. For me as an entrepreneur, the way I look at a
Ph.D., it's really good job security, so if anything, really horrible were to happen to a business I was running, or I would have fallen in tough times financially, with that Ph.D. it's a lot easier for me to go to a local community college and find a job saying I have a Ph.D. in computer science and I can teach that. Since I have that Ph.D., I’m more likely to be hired over someone with a master's or someone who has pure industry expertise, even if that industry person has far more knowledge than I do.
SM: The credential helps.
AR: Exactly so! Maybe 10-15 years ago certainly there was an argument to be made for having a Ph.D. in computer vision and computer science, but at this point, with deep learning and computer vision so accessible, I think it's more important to have that practitioner mindset to have a repository of projects you've created solving real-world problems. But if you want to go into academia, if you want to do research, if you want to work in a non-industry lab, then that's the cut-off when I say you need to consider that Ph.D. as a requirement. You're going to have a much harder time being successful at a university or a research lab or getting tenure without that Ph.D.
SM: I agree with that. So, now you finished your Ph.D., and you jumped right into entrepreneurship. I did exactly the same thing, so I want to hear about your story. You had a few initial companies before you started PyImageSearch. Tell us about those companies and how you got started with those companies. Was there any funding? How did you do the whole thing?
AR: That's a great question! My first job in the computer science space was when I was about 18 or 19 years old. I was fresh out of high school going to college at UMBC. I was so tired of being a broke kid without a car and nothing to do, so I was going to find a job. I searched for web developer positions because at that time I knew PHP extremely well. I was developing websites not only for a hobby but for a little bit of income — for friends and family. I found a hit on craigslist and was interviewed by the business owner. He used to own ratemyteachers.com which is a rating of professors for high school and middle school people and teachers. So, I got that job and this was 2006. It was right before the housing bubble just completely destroyed the market. So, it was a group of I think 10 or 12 of us, half working on another website, half working on ratemyteachers.com, and it was overnight the team just disappeared. Money completely dried up, and by the end of 2008, it was just me, the CEO, and maybe one other person. So, I started off as the junior developer, and about a year later by default, not due to my knowledge, I became the senior web developer, even though I certainly did not earn that credential at all, but I stayed there. I did grad school, and I worked about 40 hours a week. I hated it and I loved it at the same time — it showed me that I did not want to do web development as a career, that was plain to me by year two or three, but I was grateful for the experience because it gave me a ton more real-world experience than anyone in my class. I could see the theory in our data structures and our algorithms class, but I could also look at some of the projects I was developing and see that algorithms aren't going to work here or there, we use this data structure instead, etc. So, I was getting tons of real-world experience, and I had a good income as a college student, being able to pay for my college and help with rent. My parents were very generous, and they were able to help me a bit as well. I guess I worked on that job until the final year of grad school. We decided we were going to sell the company and that's what we did. It gave me just enough money to pay for the rest of my grad school, and have six months to wrap up school. I did my Ph.D. as well but due to department regulations I had to stay in the program for a certain number of semesters; that way the school gets properly paid, so I had a semester to do just essentially whatever I wanted. In late undergrad I started a fashion search engine — it was called Chic Engine. For example, I would say “Hey, Satya, I love your shirt!” and I could take a photo of the shirt and return similar items online, and that was a horrible business for a college student to build. I didn't understand it was a two-sided marketplace — you needed users of the application, but then you also needed businesses to agree to give you an affiliate thief for actually sending traffic I converted to their websites. I put that online and I think it made about three dollars per month for two years. I could buy a soda and that was wonderful.
SM: Here's an interesting story: when I was building my consulting business, the first group I found in India was this very talented group of people who were building an application where you could take a picture of your shirt and then search an online shop for that. I reached out to them because I knew that there was no way — we had tried to do the same thing with my first company, and we did not go all out. We just said that suppose we had the product, we went to our clients and asked if you would buy it, and everybody said that they are very interested in it, but nobody signed a contract. So, we never built the product. These guys who were building this thing let me try out the product, and it worked beautifully. They had been around for two years, I reached out to them and asked if they were making money and they answered in the negative. I said we can do this consulting gig and that's how I started my consulting company. It was exactly this product, and they never made any money from that product. It's one of those ideas that sounds so compelling, but unless you do a test on it, unless you ask people to pay for it, you realize that it's actually an idea that will not produce results.
AR: It’s all about that product-market fit, and that was my lesson learned from Chic Engine. I then went on to ID My Pill which has the same concept: there you have a prescription pill in your hand and you want to find out what it is. Maybe you dropped all your pills on the ground and now you don't know which one is which, or you want to make sure the pharmacist gave you the correct pill, or maybe you found a pill in your kid's room and you want to figure out if this is a Tylenol or Percocet, or something I should be worried about. The project came about in my computational photography course; I was talking to my professor and he said I had to do a final project, do a little bit of research, and write a basic paper. He worked at the naval hospital and he said prescription drug identification is going to be a big deal — people want to make sure they're taking the correct pills. There's going to be more government involvement and making sure people adhere to their medication, and then also the government is very interested in counterfeit pill education, not necessarily ecstasy tablets, but for creating the same engravings as a Percocet or a Viagra or something that is a very popular pill. So, the government had a lot of interest in that and I thought that would be so easy and we should just apply optical character recognition to the pill, those markings on it. It seemed to be an easy project. That was a humbling experience because you can’t do that in uncontrolled lighting conditions, imprints are not meant to be OCR, you cannot do that even in controlled lighting conditions because they embellish logos on them sometimes, the pills aren't perfect. You have to do feature-based approaches or deep-learning-based approaches that definitely would sign these networks to do it. So, I tried and failed in that, and eventually came up with this feature extraction method that could identify the top 5,000 pills in the US market, and at that time there were I think 31,000 prescription pills in the market in the US, at least half of which are round and white. So that was a bit of a challenge. However, I had a working prototype, but I didn't necessarily want to take this ugly code that I had written for the proof of concept research statement, and turn it into a business. I learned a lesson from Chic Engine to validate the market first, make sure people are going to pay for that application, so with ID My Pill I did something a little different. I wanted to do human automation in the place of artificial intelligence just to validate this is the market. I created a very basic iPhone app, I think the framework back then was PhoneGap, I think it's called Apache Cordova, now it's just you can create an iPhone application or smartphone application using HTML, CSS, and JavaScript, it's incredibly easy especially if you have a web developer background. And the way this thing worked was the REST API: you took a photo of the pill, uploaded it to a server, and then the server would return the result. Now for a researcher, for a developer, for a programmer the immediate thought is just to dive into the code, figure out how to develop this artificial intelligence to recognize the pill. I took my experience from Chic Engine, so I was not going to do it but to get a text message sent to alert me so that I know to hop online and just research the pill quickly, and then send the result back to the user. Our goal was to get it returned in two minutes. I did that — I remember waking up at two in the morning to hop online and quickly identify the pill and send the result back. Eventually, I hired a few people so we could have around-the-clock support for it. I am so happy I did that because it showed that the idea had legs, and people were paying for the app, downloading it to their phone, and getting the correct pill identification.
SM: Was it a one-time payment for the app or was it a recurring payment so that they have to subscribe monthly?
AR: It was a one-time fee, I didn't get enough features to try and get monthly recurring revenue with a consumer app which is just notoriously hard to deal with, and especially back then — I mean this was in the early 2010s, it was very hard back in those days to develop a consumer MMR application.
SM: Right. What was the scale of that project and was the project successful and profitable? What were your goals? Was profitability a goal of yours at that time or you just wanted to build it, and then even making a loss at it, grow the audience?
AR: Back then with that application, I wanted to self-employ myself, so that I could pay my rent, pay my car payment, pay myself a little bit of money. I'm a bootstrapper, that's always been my kind of mentality. I worked in a business with venture funding before, and I hated the idea of always having a ticking clock above your head once you accepted the money. I could see what that did to the people around me. Being on venture funding is a hard job and I do not envy it.
SM: I made zero million dollars from my last VC-backed company, and after that decided that I’m going to bootstrap. Those are two very valid approaches. The thing that I did not like about VC-backed companies is that there is a knife hanging on top of your head. As time passes, all the blogs you have written on PyImageSearch, help you in your business, the longer you have been at this business, the more chance of success you have. In a VC-backed startup, you have a five-year window: you either be successful, either go big or go home. And by big they mean you have to be a 200-300-million-dollar business or maybe a billion-dollar business, but a 10-million-dollar business is not attractive for them, it’s considered to be a failure. For an individual owner, a 10-million-dollar business is fantastic, you're generating a profit of two or three million dollars a year, that's great! So, I agree with you on that. For a lot of people, it makes sense to bootstrap, and once you build an audience, you can bootstrap very well. That brings us to your current venture, PyImageSearch: how did you get started on it? As I understand you were already employed in a different job at that time, but you still managed to publish a blog post every week, which takes much time, you also managed to build a company. When did you finally decide to come out, leave your job, and do this full time?
AR: It was my final year of grad school, my first semester of the final year. I was still working on ID my Pill, at that point we implemented the artificial intelligence solution, so there was no more human automation, it was running automatically, it was scaling, and we were probably getting a couple of thousand dollars a month of revenue out of it. Enough to pay the bills but not a ton more than that. The end goal was that we wanted to make that into an API and we didn't want to sell the app, the app was just the proof of concept that it worked. We wanted to be able to take the API to your Pfizer's and say that they could implement this in their own solution, and pay us for the actual API and the algorithms that we use. I was very humbled in that experience because I learned that in order to make a relationship that works you have to have a lot of connections you have to be well connected in the medical space which, as a grad student, I certainly was not. So, I got a real humility check going through that. Coming out of that, I was just frustrated. My first foray into the cell phone business was about making a couple of bucks a month, and in order to make it successful I needed more connections and venture funding money which I didn't want to take, so I was annoyed. I almost finished grad school and I thought I would have something successful by now, and I didn’t know what I was going to do. During that final semester, I didn't have anything to do, my dissertation was done, I just could sit around and play video games all day, or I could try and work on a new business. And I wanted to work on a new business but I wanted something that was going to be easier to sell, with a cheaper price tag, a one-time payment for whatever product. I looked at the market, I looked at my own personal knowledge at that point: I was good at OpenCV, I understood the Python API very well, and I was also very good at building image search engines or content-based image retrieval. So, my idea was to start a blog about building image search engines with OpenCV and the Python programming language, which is actually why the blog is called PyImageSearch as a Python image search. And if you go back and read my first few posts they were all about content-based image retrieval on a very basic level. I thought I could start a blog about this, write a book or a course, and I'll be able to sell that. Soon I realized that I picked too small of a niche, and I believe that it's always easier to go up a niche than it is to go down. Whenever I see someone starting a website, I recommend considering niching down. For example, if you want to start a website on building iPhone apps then start digging deep, and let it be swift applications plus camera applications or whatever. If it turns out that the market is too small, it's far easier to go from swift plus OpenCV plus cameras to just swift in general.
So, I started PyImageSearch. After I wrote my dissertation, I wrote my first book. It was about 250 pages — Practical Python and OpenCV, that book's still for sale on our website. And that was my first sale just writing 20 different blog posts, publishing them, getting google search traffic, starting an email list. And people came to look forward to my content. I enjoyed what I wrote and they eventually trusted me for their education. But the problem was that it wasn't making anywhere near enough money for me to sustain myself, even after I had published the book. So, the book was online, it was certainly making money, but nowhere near enough for me to live on. All the money that I had from the sale of the company I used to work for all that was going due to rent and stuff, so I was borderline broke at that point, and I realized I need to find an actual job and get some sustainable income. And this was a full-time job 40 hours a week at least. It was brutal! We were doing essentially big data for the state of Maryland, all that stuff is running on 30-year-old machines from Xerox, and Maryland pays millions of dollars per month just to maintain this 30-year-old system. And we were tasked with rebuilding it and we got farther than any other company had. Then there was a local election, the governor changed, and the governor-elect the next day told us the project was over. It was a startup company, it was five of us. I was getting a real salary that a Ph.D. postgrad should be paid for their knowledge and expertise but I was working probably 80 hours a week! I was waking up at four o'clock in the morning or five o'clock in the morning I work for PyImageSearch for three or four hours, eat breakfast, work one the stuff for this company from eight or nine to six o'clock at night, eat dinner, and then another three or four hours on PyImageSearch. I do this every single day including weekends probably for the first two or two and a half years of the business.
SM: And just for the record — people may not know that we are recording this on Labor Day, and we are both working.
AR: The life of an entrepreneur!
SM: A lot of times people say that they don't have the time, and I tell them: look, there are three eight-hour workdays packed in a single day, just use two of them! Take one day off for eight hours. But If you are starting something, you have to push hard and I'm not saying that you have to push 16 hours every day, but 12 hours you can maintain for many months and that is what you have to do. Otherwise, there's no way out, otherwise, you end up taking outside funding, and even finding outside funding, you have to work to get that funding, it's not free at all.
SM: How and when did PyImageSearch become profitable? There is an idea in this online space that once you have 1000 true fans, then you don't have to worry about paying your bills, they will pay the bill for you. When did you reach that point? Was it a Kickstarter campaign or what brought you to that point?
AR: I started PyImageSearch in December or January of my final year of grad school, I started working for that startup company in May, and then probably by September I wasn't at the point where I could quit the other job, I was definitely dependent on it, but I knew that if I buckled down and focused on it that probably in 12 to 18 months, that I could quit that other job, and focus exclusively on PyImageSearch. That governor election happened, and by December of that year I was out of a job, the startup that I was working with was folded. PyImageSearch was doing well, but not at the point where I could just focus on it exclusively.
SM: This was 2013, right? So, in January 2013 you started PyImageSearch, and by December you were feeling confident that in 12 months or so you will be able to quit, but then you were forced to quit because the government changed the rules.
AR: Exactly! At that point I had a decision to make: I could put my back against the wall and just fight for my life trying to make my project successful, or I could continue what I was doing work on PyImageSearch eight hours a day, but also work for another company for eight hours a day. And at that point, I said to myself: I'm young, if I fail there's still time to recover, let's just go for it! But I was genuinely terrified about it. I was living in Connecticut with my girlfriend, who would be my fiancé a couple of years later, I was concerned that if I went broke and I couldn’t support us, she could have actually taken care of me, as she had a phenomenal job, but I was worried because I didn't want to appear to be less of a man to her. It was pretty scary, but in January 2014 I launched the PyImageSearch Careers Kickstarter campaign, and that was just meant to be a course on OpenCV, but computer vision in general. I describe it as a college-level survey course, but more hands-on, more code-based, more practical. The very first day that campaign brought in about ten thousand dollars, and I was blown away, I had no idea what to expect, it was mind-blowing. That campaign raised about 36,000, and that gave me a six-month runway to put my back against the wall and just go. So, after that point, I was working 12-14 hours a day seven days a week, just building and creating content non-stop.
SM: You had no help and you were the only one to do all this work, that's amazing!
AR: Yes, I didn't really have enough money to bring on someone with the necessary experience that I would have to content creation. Looking back, I can see numerous mistakes where I could have delegated or hired someone on Upwork or done better delegation. Delegation is extremely challenging, it's always been certainly trying to get better at it, but back then I had no concept of delegation, I thought that it had to be done to my standards. That was a fight!
SM: So, the book was released after six months, how much time did you take to complete that Kickstarter delivery?
AR: It was a six-month course, and I think month one was delivered about three months after the campaign, and each month subsequent after that. Back then it was just me, I wrote about 160 lessons in about five months.
SM: Amazing! It's really hard to do that kind of content creation and not only that it's not just writing code. You have to explain everything and you have to get into the mind of the reader who doesn't have the same level of experience as you, sometimes you could be using technical terms that are so obvious to you, but then you read again and you realize that you haven’t explained something and you have to go and rewrite that too and explain everything. It’s tough. So that Kickstarter campaign put you on the path to profitability. And then you did another Kickstarter campaign after that, and that became your business model, I mean you decided that every year or so you would do a Kickstarter campaign, release a new product, support existing products, and move forward that way.
AR: That's absolutely right! A year and a half after that I ran the Kickstarter campaign for deep learning for computer vision with Python which focuses on deep learning with Keras and TensorFlow, and that was unbelievably successful. The first 24 hours we did about $80,000, and it ended at about $270,000. I was shocked there was such a market need! I can't take credit for that, I think it was a combination of luck and just preparedness. One of my favorite quotes is “Fortune favors the prepared”. So, if you're grinding and putting in the work and constantly pushing what you can do, luck will eventually find you.
SM: A lot of people say they use this formula that success is luck plus effort, and I don't like it, because it almost makes you feel that even if your effort is zero, with enough luck you will be successful. One should use the multiplicative model: success is luck times effort, where both are important. You do need some amount of luck, but without effort, it's going to be zero. No amount of luck will get you success if you have not put in the effort unless it's a lottery ticket or something very rare. So, by that time when you raised 270k with your next Kickstarter campaign, you were able to afford a staff?
AR: At that point, we brought on someone to do it, his name's David McDuffie, who does email correspondence, so he's triaging all of our emails making sure they're routed properly to the correct person. Then we brought on Dave Hoffman, who has a master's in computer science, for the focus and computer vision, and he helps me write content, so it's not solely me penning every single word anymore which allows me to focus on higher-level business operations. It was way later than it should have been, I should have considered hiring people after year one, certainly by 18 months, but it took over two years to get the first two team members in place. and again, if I had to do it all over again, I would have focused a lot more effort on delegation. It would have been less stressful in the long run, and probably improve my own physical and mental health as well.
SM: It's tough actually, delegation also means that you have to spend that time to find somebody. I'm struggling with the same thing right now: I have about 711 emails, I'm not kidding! The reason it happened this way is that initially I responded to all the emails that I received but at some point, it just became unmanageable and that it kept piling on. Now I'm afraid to look at my emails, so the only way to get around this is to inform my users that I'm not the only one looking at these emails, I will have people looking at this, please be aware. The reason I was hesitant to do that is that sometimes people share personal stories etc., and I have a communication with them, and they are sure that it's only me reading the emails, but it's become impossible. I'm scared to check my emails, there's so much of it, and it's difficult to explain the concept. I have some daily goals which I have to hit before I can check my email, and for the last two or three months, it has been happening that I'm not even finishing my daily goals. So, emails are going bad, so I have to fix that problem. Communicating with people can take two-three hours of your time, it's so difficult to do.
AR: I relate so at a visceral level, I just feel it inside my chest when I hear you talk about that because I can't just look at my inbox and see all those emails so I would dedicate every Thursday I hit inbox zero, I would go through to my inbox, to my LinkedIn messages, to Twitter, to Facebook, the blog post comments, and I did this every Thursday since PyImageSearch started all the way up until three or four months ago. I was tracking my time as I was doing this and I realized it got to the point where on Thursdays I could spend eight to ten hours doing nothing but correspondence and that is with a team to help me get through all that. I will say this was the biggest mistake that I made — not just learning how to delegate, but I didn't respect my own time enough and I didn't realize how important my time was to the business, and I became too engrossed in spending time on emails, If there was a question in my inbox especially from a paying customer that I owed them that response, that was my responsibility to get back to them and it really just ended up making me feel I was giving so much of myself to this business, that I didn't have anything left in return. So, about three or four months ago I just turned off blog post comments completely, I put an auto-reply on: we get these many emails per day, we prioritize our customers, but in all likelihood, we're not going to get back to you if you're not a customer. And I was so thankful that I made that decision because it just improved my mental state so much! I didn't feel burdened and taken advantage of as much as I did, and it allowed me to regain a part of myself. So, if you're starting a business and you find yourself doing your own support and spending more than a couple of hours per week doing this, you should either delegate it or just stop offering support altogether.
SM: There can be one of those emails, you know what kind of emails I'm talking about, which are completely obnoxious. They completely forget the value people are providing. It happens to me two or three times a year, but I get this nasty email that stays on my mind for half a day. It's surprising that we forget all the good emails we receive and focus on those nasty ones. It's our human nature that you want everybody to like you, which is impossible. Now, that campaign was not the only campaign you had, there was an even bigger successful campaign last year. Tell us something about that campaign as well!
AR: So, we ran a Kickstarter campaign for a book called Raspberry Pi for Computer Vision, which I think we're going to rebrand next year and call Embedded Computer Vision. We had written tons of content on the Raspberry Pi and it was far more popular than I ever thought. I didn't think the Raspberry Pi community 1) was that large and 2) gathered people who are so interested in video processing and computer vision. I decided to write a book on it, and as we were getting deeper, as we were diving into writing the code, putting together a campaign that was also the same time that Nvidia announced the Nano and Google announced the Coral. There was so much interest in this embedded space, so I made up my mind to cover that in the book as well. So, it was again “fortune favors prepared” — I had no idea that Google and NVidia were going to release this stuff. Three weeks before our Kickstarter campaign was going. I rewrote the copy for all of our marketing campaigns to drive that point. And we did well, I think that campaign brought in about $370,000 over the course of 30 days, so that was a fun campaign to run and again far beyond whatever my goals were.
SM: And with some of these campaigns you're promising physical books also. That is pretty tough, we are realizing now how shipping a physical product is difficult, the shipping costs and everything is a nightmare!
AR: It's brutal and it's only getting worse, with Covid, and not only. Amazon used to offer to create space, which is their print-on-demand service, that was a wonderful service, and then they took that down, and you could only use it if you were also publishing your content on Amazon. But that creates a problem for entrepreneurs and marketers because they know that if a user buys from Amazon then we don't have their email address, which is the most valuable asset. so, we can't follow up with that. I have no way of making more sales, so then we have to find other printers as well and what I found over the past four or five years is that printing physical books — matter what company you go with — it’s going to be challenging, it's going to be stupidly expensive to do as a self-published author. And it's honestly hard to make the numbers work. but luckily with the quality we provide, we're able to do it, but if we didn't do that, I genuinely don't think we could offer printed editions.
SM: Is there a demand for printed editions? Or you just want to have a printed edition.
AR: I think it started with the fact that I wanted to offer a printed edition as a bonus and then I found out that more and more people do love printed editions. Reading a physical book feels more valuable than reading the book on my iPad or my kindle, with the exact same contents, there’s something about the tactile nature of the physical book, the page-turning.
SM: Underlining or highlighting is easier.
AR: True. It’s easier to transfer that knowledge from the book to your brain, and I think there is certainly a market for people that prefer that tactile quality of the text.
SM: We will come to your current Indiegogo campaign in a bit, but before that, I want to know — for entrepreneurs who are listening — I want to know what kind of time management you have, what your day looks like, and how you manage your time. what parts do you delegate, what parts do you keep to yourself? Walk us through your daily routines: do you set goals every day? It is important for entrepreneurs to remain organized and also to cope with goal setting.
AR: I take a very engineering mindset and I say: this is the end goal of what I want to achieve in a given calendar year, and then I'll write down eight sub-goals. It'll help me hit that for the year, and I have goals for each quarter, each month, each week. I'll pick out the eight things I need to do to make me get closer to that end goal, and then for each day I write down in my notebook what I call “my three big things, and these things have to be done no matter what bad accident may happen to me. It's an approach that I’ve developed over the years just doing this every single day. The night before I sign off of work, I write down those three big things in my notebooks. When I get started the next morning, there's no going through my Trello or Jira list of things that I have to do, as I already know them, it’s time to sit down and get them done. I design my entire life around flow states. I'm a big believer in deep work, and the ability to disconnect from distractions, and just get to work and focus on it. I carve out two to three-hour blocks a time, so I’ll wake up around five o'clock in the morning, work exclusively straight from five a.m. to about seven or seven-thirty, eat breakfast, have another work block up until noon, eat lunch, take the dog for a walk, do some meditation to get my brain calm down a little bit, and then I have another two to three-hour work block after that. During the hustle stage, you're working 12-14 hours a day, but after that, if you want to build a sustainable business you have to start looking for ways to allow your body and mind to recover. Just like a professional athlete who hops in an ice bath and uses different massage tools, they also have a chiropractor to help them. Entrepreneurs need active recovery too. I recently tried infrared saunas and cryotherapy, so I look for things that will help me recharge when I’m not working, things that disconnect me from anything related to work, so at this point running PyImageSearch I stick to eight to nine hours per day, and just Monday through Friday, maybe every now and then I have to work a little bit on the weekend, but I’m trying to be much more disciplined, and I think the discipline is what matters. Once you hit profitability, you can’t maintain that hustle lifestyle for more than two or three years. You will burn yourself out completely!
SM: I agree. So, finally, your day ends at about 5:30 or so in the evening, and then you're done, right?
AR: Typically, by 4:35 I’m done: I close the door to my office, and I tell myself to power down and that the work time is over. Now it’s time for a transition to being a good husband to your wife, transition to being able to take care of your dog, enjoy life to its fullest now, that time for business is done!
SM: That's what Cal Newport also says — you physically have to tell yourself to power down. I have had to get into that situation in the last few months, and it's been terrible. I'm back in the hustle mode right now, it's funny because at one point around 2015 I decided that I was going to work only 20 hours. At that time, I did not consider blogging as work, because that was not producing any revenue. I was serious about that, it continued for six months, it was a lovely time! I used to work 20 hours, then I would spend another 30 hours or so on blogging, but by that time I had not committed to anybody, I was blogging at my own pace, so it was not stressful at all. Then after we had a team, they wanted to succeed, they wanted to see the growth, so it was on me to deliver that growth. And now with OpenCV, it is almost a startup experience again, so this thing is going to continue for another one year of this hustle, and then things will settle down a little bit. It's tough when you're starting out, and as you said that discipline is crucial for that.
AR: In my opinion success is not in the action, success is measured in your ability to recover every day, that's where the real discipline comes in, because it's so easy after a hard workday to binge watch some sort of terrible reality tv show, or drink a couple of beers or a couple of scotches, and just numb myself to what's going on. But that's not sustainable either, you're going to develop a whole different issue, which I have gone through too. When I was doing PyImageSearch full-time, it was just too easy to be alright, and I’ll have a drink at the end of the night to calm down, yeah but after a while, your body and your mind starts to reject that, you feel even more tired the next day. So, success should be measured in your ability to actively recover, that to me is a true marker of sustainability.
SM: What about goal setting, do you write down your goals every day? Or how do you set your goals?
AR: I map out my year in reverse – I am a kind of reverse engineer — so I’ll create my big goal, my five to eight big goals for the year, and then quarterly goals, and then monthly goals, and then my weekly goals, and then my three big things I’m going to accomplish, hell or high water, every single day.
SM: So, the writing part: when you write down your goals, it is the three big goals that you want to achieve every day, those are the ones you write down every day, right?
AR: Right. It takes practice to do that because sometimes you'll pick three goals that are so simple, you'll get them done in five minutes and feel you're done for the day. And sometimes you'll pick three big things there, and one of them is so audacious that it really should have had an entire week or month dedicated to it. So, it does take practice to learn how to do that and, in my experience, it took about two months to really hone in on what three things that I could actually accomplish in a single day, but once you get into it, it's such a powerful tool, a motivator.
SM: I agree with that. So, you're managing a remote team right now, but what are the tools that you use to remote? Do you use Trello and do you use Slack?
AR: I am so happy because two weeks ago we killed off our Slack group, and I am just the happiest I’ve ever been. I hate Slack and real-time communication apps, because they pull you out of deep work to deal with questions that are not urgent, and honestly should live in an email until someone could get to them. We have used Slack for 3-4 years. I brought on a technical project manager and I was just complaining about Slack agent, and he suggested removing it, so two weeks later we got rid of slack, and now we have a G-suite across the board so we have our own dedicated inboxes, and Google drive, and everything. Google drive annoys me, I think Dropbox is still a superior product, and I wish Google drive would catch up to Dropbox. We still use Dropbox for file sharing, previously we had used Evernote for a writing collaboration, but I guess six or seven months ago we switched over to Notion which has been fun — anyone listening to this who has not used notion, just go, sign up for it, and use it! It will totally change your life in not only how you personally work, but how you collaborate with others. We don't use Google docs for collaborating on documents, because Google docs suck for code, I don't know maybe there's a macro you could create in Google to format it and make everything look nice, but Notion supports markdown, so it's so simple to insert code to insert fragments, so we rely on Notion not just for collaborating on writing blog posts and chapters, but also for our business processes and for all of our documentation.
SM: I got to try that out! I've heard good things about it but I've never had the urge to try it out.
AR: It’s super cheap too, it's three dollars a month for an individual license, and if you're a team, that's something seven dollars per user per month, it’s totally worth it!
SM: That's great! So, I think it is time to go to the current Indiegogo campaign that you're running. It is about the OCR book, and before we run into this book, I want to ask you how you came up with the idea? Walk us through the product development stage, what goes through your mind when you're thinking about a new product? OCR is something that is a new product in the market, how do you come up with that?
AR: Prior to the campaign launching, we had four or five blog posts on OCR and text detection and recognition. And right around when Covid started I was just thinking of topics that I wanted to potentially write about more, so I looked at our analytics, and time and time again, month over month, I noticed that our OCR tutorials were always in the top 20. That is odd because while our existing OCR tutorials are good, I would not put them in the top 10 percent of content that we've ever published. And then I went through email conversations and I started searching all of our inboxes for terms related to optical character recognition, and I started to see more and more of them. There is a market here for OCR and I wanted to test it out by writing blog post content, that's typically how I do a lot of these content tests — let's dedicate two to three weeks to OCR, write a couple of that post on them, see what the reaction is, take the temperature of the room. And I sat down to do that: and I was reading the documentation on Tesseract, I was looking at some of the stuff OpenCV does. I was puzzled: why is this so hard? I'm not the smartest person in the world, but I know how to operate the OpenCV library, and I know how to import Python libraries, and I know how to read documentation. Why am I struggling so much with this? And that gave me the understanding that if I was struggling to put together these practical examples for tutorials, then certainly readers were as well. I reassessed the situation and realized that it needs to be more than just a short series of tutorials, there is an actual market need here, where people will pay money for content related to OCR.
SM: That's absolutely right. There are nuances, it’s not one thing that you put through an engine, and it outputs the right thing, it's a nuanced thing. You have to do different things based on the problem at hand. If you think about it, a number-plate recognition is also OCR, but it is handled slightly differently than say a document analysis.
AR: Totally nuanced. I think Tesseract is such a phenomenal library, but it's gone, it's changed hands so many times first from Hewlett Packard to Google, and now Google fully backs it and supports it, but it has a long history. The documentation isn't fully in place, there's a lot of broken links when you go through the documentation, and some of the page segmentation modes aren't fully described. It's very confusing just to pick up Tesseract and have it installed, and then just run the engine on it, as you will get terrible results back. You will have no idea what you should be doing to improve those results. If it'd be importing Keras or PyTorch, getting it off the shelf model, and then two or three lines of code as if you fine-tune a network on the model, but it's only getting two percent accuracy, and then you go read the docs to figure out how to improve accuracy, but the docs don't exist, so it's this cyclical problem.
SM: Sometimes you need that pre-processing step that you might have missed, image alignment, or you may need to binarize the image better, and suddenly it starts working, but this magic needs to happen, which your book addresses. Tell us more about what's covered in the book — OCR is still a very large topic, so what does the book cover? The books that you are offering in this Indiegogo campaign, what do they cover?
AR: With PyImageSearch books and courses, we typically want to create a basic level, an intermediate level, and an advanced level. That way readers can kind of self-segment into what they want to learn and what their particular budget is. So, we planned out I think about 40 chapters that we wanted to write, and we grouped them into “The Intro to OCR” bundle, so this is your basic of the basics. Here's Tesseract, here's how each of the segmentation notes works, here's how you can do basic OCR. We cover things like automatic text detection with both Tesseract and OpenCV, and we also remove Tesseract saying that sometimes Tesseract is too much, and it's easier to create basic OCR models using image processing, and it sounds crazy to say, but if you have controlled lighting conditions you don't need machine learning, you don't need deep learning. Basic contour processing and thresholding go a long way and I don't think that's fully appreciated in the age of deep learning because everybody jumps to deep learning trying to apply the hot new model to a topic, but in reality, basic image processing can do it.
SM: It's funny because they do that because it is the hammer that they are familiar with. The other pure computer vision approach makes a lot of sense computationally, it is way less expensive, but you need to know that hammer, otherwise, you can't use it. It's great that those kinds of tricks are covered, please, walk us through the basic syllabus of what is covered in the book.
AR: I place a strong emphasis on teaching through practical real-world projects. I want people to read the book and understand that it is the hammer, or the screwdriver, or the stall that I’m to pull out of my toolbox and apply to this specific problem. So, we cover the basics of Tesseract, OCR, and text, and translating them into different languages. We do credit card OCR reading, passports, and different forms of text localization. One of my favorite chapters is where we show how to train and fine-tune custom test rack models on your own OCR data sets. Unfortunately, there are not a lot of quality tutorials on how to do that online, and again we remove Tesseract and say that if you want to train a custom Keras, TensorFlow, or PyTorch model, this is how you go about doing it as well, and we apply real-world projects like scanning invoices and receipts. Image alignment, document registration, automatic license plate recognition are covered as well, and also topics that you don't typically see covered but are very important, for example, OCR and video streams. Anytime you start moving it you're going to insert motion blur, so how do you detect the motion blur and avoid the computationally expensive process of applying OCR to a frame. That isn't going to have readable text on it anyway. And we do stuff with GPUs for OCR and writing recognition, which is a very challenging topic, and then of course how to use the Google vision API or Amazon recognition, or Microsoft cognitive services.
SM: The fact is that for people who want to get their hands dirty and know the nuts and bolts of things, it's good for them, but for people who want to use high-level APIs, it is just as good for them as well, because you cover both those segments. In some projects it may make sense that you have good network connectivity, you have everything going for you, and you should just use Google's or Amazon's API for this, and in other projects, you don't have network connectivity, you're having to work with a Raspberry Pi which is in some remote area, then you end up using training your own network, or using tesseract, whichever makes sense. So that's great! As for the bundles you mentioned, there are three different bundles: beginners, intermediate, and then the one for experts; what is the pricing of the bundle, and what's covered in each one?
AR: In the intro to OCR, that starts at 95 dollars, and that's strictly for a basic introduction to Tesseract and how you can use OpenCV and image processing for OCR. We cover text localization and detection in there as well and start to open the door to deep learning. The second bundle — the OCR practitioner bundle – is focused on using deep learning in almost every single chapter, that's where you start to push the state of the art. That one starts at 195 dollars. Then we have the OCR expert bundle, which costs 335 dollars, and that focuses on your advanced deep learning pushing the state of the art, and also includes additional bonuses: the printed edition of the text, certificate of completion, and access to our private forums. Each bundle includes the e-books, our high-quality document code, our pre-configured virtual machine instance, so you don’t have to worry about configuring your VM (of course, we provide instructions if you want to configure your machine), and then support from myself and my team. Overall, we try to group everything together: what someone's experience is, what their budget is, what they hope to learn, and just try and create a good learning experience for all of our customers.
SM: That's great! One thing that has always baffled me and I struggle with it, especially with software products, as with hardware there is a lower limit to what pricing you are going to keep, but in software it is a question — how do you come up with a pricing model? And this question is mostly for entrepreneurs who are listening to the podcast — how do they come up with a good price when it is a software product? What are the considerations that you have in mind?
AR: That's a great question and it's challenging to answer because even if you talk to your potential customers, you know you have product product-marketed you know they're going to buy it, coming up with that price is hard because maybe you want to do a little survey and kind of figure out what the upper and lower limits of the pricing model are. Any intelligent person is going to say lower because they want to spend less money. How do you take that information and then turn that into something actionable that you will make money off? The first thing, I always say it’s a mindset shift. You have to understand — no one is going to devalue your time more than yourself as an entrepreneur. Running a business, having employees, and showing your successful business, you're also a little bit insecure about your own pricing model, because you don't want to create something that no one is going to buy, you want people to pay for it. So, first, whatever your mind says you should be charging, you probably want to start by doubling that, because you're automatically devaluing yourself completely, so start there. I like tiered pricing because it gives people options based on their budget experience. I think it was Ryan Delk from gumroad.com, for a three-tier product you start with your base price, and then your next tier should be double that, and then your third tier should be 2.2 times the middle tier, and that's just a basic rule of thumb, I’ve learned I’ve used ever since 2013-2014. And I see a lot of other not just info products, not just software, but a lot of SAS companies doing that as well, and it seems a fairly good rule of thumb.
SM: Also, people don't fully appreciate that charging for a product allows you to make better products. A lot of people think that money-making is the goal, but usually, that is not the case, the case is to create stuff. Think of entrepreneurs as painters or artists who are creating drawings on a canvas and selling a product allows them to create better products for people and help people. It's not all about profit, profit is the means which allows us to build better products, right to stay in the game, otherwise, you're out of the game, you're not helping anybody. And there is a lot of free content that you provide, that we at OpenCV also provide, so there is a ton of free content, and on top of that we do this paid content so that we can survive and also make a good living, it's perfectly valid. I personally feel that one should never be embarrassed for selling products because as long as your contribution to society is more than what you're taking out, that’s perfectly fine. That's something I always think about.
SM: We are running out of time but I also want to know your thoughts about the future of AI. Where do you think computer vision is headed? In just broad terms for people who are starting out, not just as entrepreneurs, but also as practitioners. Where is the field moving and what should they prepare themselves for?
AR: I think it’s evident right now but I think embedded computer vision and deep learning is where it's going to be in the immediate term as evidenced by Kickstarter, there's a need for that type of hardware, there's a need for deep learning on the edge. In the short term, I’d say in the next five years, I think we're going to start to see a little bit of regulation at the government level regarding artificial intelligence. I think it's going to be poorly researched and not very well executed walls, kind of the GDPR for artificial intelligence. It's going to be some politician’s baby that he wants to see going through congress, so he could keep his seat, but in reality, it's going to make zero sense and it’s not going to work out in the long run. I think we're going to continue to see hybrid open source packages like Keras, and TensorFlow, and PyTorch that are truly open source, but they're also supported by large companies. Google puts money towards Keras and TensorFlow, and Facebook does the same for PyTorch. I think it's a good relationship in the short term because it creates these high-quality libraries that people can use not only in their academic work but also in their professional lives as well. However, I think along with that, there's going to be problems on Google's side. Keras and TensorFlow were originally two separate packages and now they're being integrated, and as for TensorFlow 2, it works, but there's also the concern of what's going to happen in TensorFlow 3 and 4, so is it is going to be more TensorFlow API based is going to be Keras API based? Google's going to have a lot of problems and probably some reconciliation that needs to be done to make TensorFlow 3 even better than what TensorFlow 2 is. And I think PyTorch is going to run into some problems, not because of the library itself, but because of Facebook. Facebook is in the news all the time, and for not good things, also Facebook is going to be talked about during that election. When you have these open source libraries that are sponsored by these corporations that do something extremely wrong, just being associated with those companies drags down the rest of the crew as well. Hopefully, it doesn't come to that, but I could easily see something in the next five years that knocks Facebook off of its throne, and then causes a cascade of problems for anyone or anything connected to Facebook.
SM: Those political problems are very difficult to gauge: how things affect the libraries, and things that. I also want to know your thoughts about online education in general. Where is the space moving, what do you think?
AR: I think Covid has shown us that we're going to have to become better at online education, maybe provide better video streaming services that have digital whiteboards and make it easier for remote learning across the board. I think if that happens, you'll start to see colleges start to lower their prices a little bit in order just to keep people coming through the front door, even though there's less of an in-person experience. People are biologically wired to think that bad things are going to happen again. Pandemics do happen every 20 or every 100 years, like in 1920 or in 1820. This stuff does happen, but there is a long enough gap between them that you only have to experience one maybe two in a single lifetime. But as humans, we want to prevent the downside so much that we think it's going to happen every single year, so I think we're going to overreact a little bit with our reliance on online education thinking that this is going to happen again. But in the long run, I think it'll be a good thing, it'll enable us to be better educated online. I think education itself, the education sector itself no matter if you are talking about computer vision or a knitting course on Udemy, is a lot like the app store in the sense that we're going to see a race to the bottom. App developers spend months or even years developing an application to sell it on the app store for 99 cents, and people just pick out every single bug because they have to pay 99 cents for it. I think education is, unfortunately, going to go down that road in the next five to 10 years, and it'll be harder to charge more for quality products, and it'll be harder to continue to create super high-quality products if the education sector continues that so-called app store route.
SM: Hopefully it doesn't go there! I have a slightly different view of where this thing can go. First of all, 30 percent of the universities are going away, as they did not have a sustainable business model — it was based on student loans, and people admit now that they are getting these completely useless degrees, so that's going to go away. The other thing that good universities are doing which I completely disagree with is that they are literally putting a camera and it’s exactly the same product. The teacher teaching in front of a camera is their new style of online education, which is very wrong. I’ll tell you why — because it has all the downsides of online education, this Zoom kind of setup, and it has none of the upsides. I think in the next few years we will start seeing these massive online universities — Udacity and Coursera are good examples of that. But even those two companies are not doing something that I feel is obvious: the online education market, the content creation, is almost going the movie industry route. If you have a large audience, then the amount of money that is spent on content creation will skyrocket. You could have two million dollars invested in a single course, and then there will be animations and very high-quality stuff, it's not just one professor drawing on the board anymore. I have this example: when I first learned about differential years back in undergrad, I had a hard time visualizing what it is, because I was reading it in a book and it was not even part of my curriculum, I was just interested in it. I saw a video of it on YouTube, it took me one minute. This is so easy, it had animation which helped me to get into the subject very quickly. When we produce our content, ten minutes is equivalent to one hour of lecture time, and these universities are completely missing that. It is going to be like creating a small movie. But we'll see how that goes unless it goes the app store route, and everything will be ruined in that case.
SM: So, what advice would you give to entrepreneurs as well as people starting in computer vision: how do they get started? How do they move forward if they're complete beginners?
AR: If they're complete beginners, they're probably debating like what is this worth doing or how do I go about doing it. If you're having those questions, I would like to consider the analogy that I made about learning guitar. When I tried to learn guitar as a sixth-grader, my teacher focused on theory. That's not in my opinion a good way to start if you're figuring out whether or not you like something. Go to OpenCV.org, go to PyImageSearch, follow the install guides, get OpenCV installed on your computer, and follow some tutorials. Not even purchase a book or course yet, just run a tutorial, type the code out in an IDE because that's where you're going to be spending a lot of your time if you choose that as a career path. So just figure out if you like it, and if after an hour or two you're satisfied, then maybe you should consider investing a little money in a book or a course, so you could continue to develop your knowledge in a structured way, ensuring that it's a linear progression, and you're not bouncing around from YouTube to Coursera, or whatever website you find online. At that point it's all about getting started: stop worrying about libraries, stop worrying about programming languages, just pick Python, and then pick OpenCV, and just dive in. If you like it, your natural curiosity is going to start to spread, and it's going to take you the rest of the way.
As for entrepreneurs — at that point I assume you already have some knowledge of computer vision, maybe you've done some research projects as well — I would say try and do human automation first, while you're trying to find that product-market fit. A lot of SAS apps are owned by developers, they're started by developers, and it's so easy just to focus on writing the code because that's where we're most comfortable — we enjoy it, we're in our comfort zone. The problem is that you may realize you're building the wrong product, or you'll disappear into a hole for six months, code up this glorious app and come to present it, and realize that you built the wrong product. You just solved something that never needed to be solved in the first place. So, entrepreneurs in the artificial intelligence space have to realize that they have all of the traditional problems of software development for productized services or SAS applications along with all the science-based problems, for example, how to get the accuracy that we want, how this scale is going to work in a real-time application, etc. So, you have all those theoretical considerations as well.
SM: The last thing I want to ask you is how people can reach you first. And second, you have this Indiegogo campaign going on right now, I highly encourage people to go there and check out the book. I'm pretty certain that the quality of the product you finally built will be extremely high. So, tell people how they can reach you? We will put the link to the Indiegogo campaign right under this post, wherever the video is shared but is there any other way people can reach you?
AR: If you want to see more of the content that I offer, you can go to PyImageSearch.com, we have over 400 free tutorials that you can learn from and read through, we have several books and courses if you're interested in our paid education. You already mentioned linking up the Indiegogo campaign, there's also a banner at the top of our website and you can click and check it out. Otherwise, you can send me an email to adrienne@pyimagersearch.com and there's a contact form on our website as well, that you can use. I predominantly use Twitter and LinkedIn as my social media tools, my twitter's @PyImageSearch, and then you can look for me on LinkedIn @AdrianRosebrock. I think LinkedIn has a cap on the number of connections you're allowed to have, and it's currently thirty thousand, starting to bump up close against that, so make sure you get your submission in, so I can accept it. Thank you so much for having me on the show, Satya, it's a privilege and honor. I’m so happy for you and the entire OpenCV crew! It's been a crazy 20 years, and I’m happy that you guys are on a path to profitability and sustainability, and I hope the library is here for another 20 years for all of us to continue to use it. Thank you again for all the amazing work you've done for the community, thanks to everyone involved in OpenCV, past, and present, none of us will be here without you.
SM: Thank you so much, Adrian, and I appreciate you coming on the show because I know your time is valuable, especially in the middle of a campaign. When does the campaign end?
AR: I’m horrible at date math. It is September 21st at 11:59, Pacific time!
SM: Great! I wish you all the best for the campaign, thank you so much for your time!