This week we welcome Adrian Rosebrock (@PyImageSearch) as our PyDev of the Week. Adrian is the author of several books on Python and OpenCV. He is also the author of PyImageSearch.com, a very popular Python blog that focuses on computer vision. Let’s take some time to get to know him a bit better!
Can you tell us about yourself and PyImageSearch?
Hi Mike, thank you for the opportunity to be interviewed on PyDev of the Week.
My name is Adrian Rosebrock. I have Ph.D in computer science with a focus in computer vision and machine learning from the University of Maryland, Baltimore County (UMBC).
I blog over at PyImageSearch.com about Python, computer vision, and deep learning. Over the past few years running PyImageSearch I have written a handful of books/courses, including:
- Practical Python and OpenCV, a gentle introduction to the world of computer vision and OpenCV using Python.
- PyImageSearch Gurus, an in-depth dive into computer vision, similar to what you may find in a college-level course, only *much* more hands-on and practical.
- Deep Learning for Computer Vision with Python, my brand new 800+ page book. This book is my *magnum opus* and is for readers who want to master neural networks and deep learning.
What are your hobbies?
Fitness is a big part of my life so when I’m not working or coding I spend a lot of my time at the gym.
I’ve always been interested in sports and physical activity. Growing up I played soccer, baseball, basketball, and a handful of other sports.
By my junior year of college I started getting into weight lifting. A buddy in my operating systems class offered to take me to the weight room and teach me a few lifts.
Since then I’ve been focusing less on team sports and more on lifting. I do a combination of olympic lifting, CrossFit, and personal training. I like the constant variation and challenging my body.
Otherwise, I’m a big RPG fan, especially the old school RPGs on the SNES. I’ve played through the Final Fantasy series way too many times to count.
When did you start using Python?
The first time I used Python was about 13 years ago, so about 15 years ago, sometime around the Python 2.1/Python 2.2 release.
I was just getting into programming, and to be honest, I didn’t like Python at first. I didn’t fully understand the point of Read-Eval-Print Loop (REPL) and I was still trying to get used to the command line environment and Unix-environments.
At that time Python was a little too complicated for my (extremely) novice programming skills. I continued to play with Python as I learned to code in other languages, but it wasn’t until sophomore year of college that I really got back into Python.
Since then, Python has been my programming language of choice.
What other programming languages do you know and which is your favorite?
There is a difference between knowing the syntax of a language versus knowing the libraries and ecosystem associated with a language.
While in graduate school I did a lot of work in big data, mainly with Hadoop clusters — this required me to do a lot of coding in Java. Java was also used for most of the 200 and 300 level classes at UMBC (especially data structures, although now UMBC uses Python).
My first job out of college also required me to use Java on Hadoop clusters and Accumulo databases. Because of this, I became *very* familiar with Java libraries and building scalable data workflows and predictive models.
I also know PHP far too well then I care to admit. I picked up the language as it had C-like syntax but with a scripting language flavor. This also opened the door for my early career in web development.
While in my undergraduate years I worked for RateMyTeachers.com, starting off as a junior developer, working my way up to senior developer, and eventually becoming the CTO.
Along the way I rewrote the site from scratch in PHP and the CodeIgniter framework (this is well before Laravel or any other mature, decent PHP framework that could easily scale existed). This helped me learn a lot about scalability and web applications.
I also know C/C++ fairly well, but nowadays I mainly only use them for optimizing various Python routines.
At this point in my life I can say that Python is undoubtedly my favorite programming language. I use it for everything from production code to one-off scripts that need to parse a log file. It truly is a versatile language.
What projects are you working on now?
Besides the handful of consulting/contracting jobs I’m working on, my primary focus is PyImageSearch and creating quality computer vision and deep learning tutorials centered around the Python programming language.
I just released my new book, Deep Learning for Computer Vision with Python, earlier this month.
Throughout the rest of this year I’ll be finalizing the details on PyImageConf a conference I’ll be hosting in San Francisco, CA in 2018.
I also have a few other books in the works for 2018 as well.
Which Python libraries are your favorite (core or 3rd party)?
OpenCV, while not a pure Python library, provides Python bindings. Without OpenCV computer vision would not be as easily accessible. I use OpenCV daily.
The same can be said for both NumPy and SciPy — this libraries are *heavily* responsible for researchers, practitioners, and data scientists moving to the Python programming language. NumPy and SciPy play a pivotal role in every single computer vision + machine learning script I write.
Scikit-learn and scikit-image are another set of libraries I use daily. Without scikit-learn I would have really struggled to finish the research associated with my dissertation.
Finally, I cannot say enough positive things about Keras. Just as scikit-learn has made machine learning accessible, Keras has done the same for deep learning.
How did you become an author?
I became an author at the exact same time I became an entrepreneur. As a young kid, perhaps only seven or eight years old, I was an avid reader. I read everything I could get my hands on.
At some point early in my childhood I decided I wanted to write my own books.
And that’s exactly what I did.
I would take 20ish index cards, write my own story on the index cards (normally focused on horror stories), and then design my own cover using thick cardboard. I would color in the cover using crayons. And then finally staple it all together to create a book.
Once the book was done I would sell it to my parents for a quarter.
When I was a kid I wanted to be either (1) an author or (2) an architect. In many ways I have combined both of them as an adult.
Can you describe some of the things you’ve learned while writing your books?
I’ve been developing software as a career since was 17 years old but it wasn’t until my mid-20’s that I started writing computer vision books.
Writing wasn’t a challenge for me — I had years of experience writing, especially considering my dissertation.
But marketing and selling a book was brand new territory. At first I didn’t know what I was doing. There was a lot of blind experimentation going on.
I was (pleasantly) surprised to discover that shipping and selling a book isn’t much different than shipping a piece of software: initial user feedback matters.
In my case, I wrote drafts of books and released them before they were 100% finalized. This helped me get initial reader feedback faster and then iterate on the book; the exact process you would take if you were validating a SaaS venture.
It turned out that the skills I learned working for small, startup companies in the software space were directly transferable to writing a book.
Is there anything else you’d like to say?
I just wanted to say thank you again for the opportunity and interview.
And if you’re interested in learning more about my new book, Deep Learning for Computer Vision with Python, just click here and grab your free set of sample chapters and Table of Contents.
Thanks for doing the interview!