Today’s blog post is part one of a two-part series inspired by an email I received over the weekend from Aarav, a PyImageSearch reader who is interested in studying computer vision:
SUBJECT: How do I ask good computer vision questions?
My name is Aarav. First, I just want to say how much I love your blog. It’s been a great resource to me.
I’m currently studying computer science at IIT Bombay. I’m very interested in computer vision and deep learning but am new to the fields.
I know I have a lot to learn but I’m self-conscious when asking questions.
I’ve posted questions on top computer vision LinkedIn groups, StackOverflow, and reddit:
(Links omitted in respect to Aarav’s privacy)
But I often don’t get a response. The responses that I do get are short, sometimes unpleasant, and are very unhelpful to me.
To be honest, it’s made me question whether I want to study this field.
Adrian, can you help me? Am I doing something wrong?
It would be helpful if you could do a blog post on how to ask good computer vision questions.
I can empathize with Aarav — learning to ask a good question is an acquired skill, almost an “art” of sorts.
How do I know this?
Besides collectively spending seven years in school earning my bachelors degree and PhD (asking my own fair share of questions along the way), each day I spend a significant chunk of my time answering questions from PyImageSearch readers just like yourself who are interested in studying computer vision, but are hung up on a particular topic.
Over the past three years running PyImageSearch I’ve answered tens of thousands of computer vision questions…but I’ve never actually addressed the components of what constitutes a “good” computer vision question.
As Aarav posed, how do you know you’re asking a “good” question?
And how do you ask this question such that you:
- Obtain the knowledge/clarity you are seeking.
- While recognizing and respecting the time of others?
Is there such a magic formula?
Unfortunately, there isn’t a one-size-fits-all solution.
But there are general techniques you can (and should) be using when asking questions about computer vision (or any technical subject in general).
In today’s blog post we’ll discuss the five key components that go into asking a good computer vision question.
Next week we’ll apply these components to analyze and dissect actual PyImageSearch questions to better understand how to ask insightful questions.
Whether you are posting on StackOverflow, emailing me, or contacting any other subject matter expert, my hope is that you use these techniques to better help yourself and those who are responding to your questions.
Note: Aarav’s name, university and affiliation have been anonymized to protect the identity of the reader who asked the question. Any real-life correlation with the name, question, or affiliation is purely coincidental.
How to ask good computer vision questions
To start today’s blog post I want to share a personal story with you from my time in college studying computer vision.
We’ll then discuss what makes a “good” question, followed by reviewing the five key components required when asking any question.
A personal story
When I first started studying computer vision and image processing I had a lot of questions.
In particular, I vividly remember struggling with the concept of kernels and convolutions — I simply couldn’t translate the mathematics in my textbook to an actual practical implementation.
After my professor first discussed kernels and convolutions in class, I spent the next two days spinning my wheels, fruitlessly re-reading the same chapter in my textbook and reviewing the same lecture notes, only to get nowhere.
Before our next lecture, I went to my professor during office hours, tail between my legs, feeling half-ashamed that I couldn’t grasp such a simple concept (I even doubted my ability to study computer vision as a career).
My professor was a huge help and very patient with me.
He helped clear my doubts.
Looking back, I remember feeling extremely nervous and self-conscious going to see my professor:
I didn’t want to waste his time on questions I should have been able to understand and answer myself.
I couldn’t have been farther from the truth.
People like my computational photography professor (and many other teachers I’ve had) genuinely wanted to help me — all they asked for in return was:
- Respect for their time.
- The understanding that while they could guide me and point me in the right direction, I still had to do the hard work myself.
It’s been a long time since I thought about that interaction with my computational photography professor, but I was reminded of it this past weekend when I received the email from Aarav outlined above.
Aarav’s question helped me pause for a moment and reflect:
In a way I’ve come full-circle with my professor. While I’ll always consider myself a student (I am never done learning and will always make it a point to study and try new things), I have become a subject matter expert in computer vision.
Over the past three years running PyImageSearch, I have seen my share of good questions — ones that were well thought out and had a specific purpose and end goal.
I’ve also respond to questions that required a bit of digging and going back-and-forth with the reader to understand what the actual underlying problem was.
And I’ve even answered some extremely trying questions, requiring both the patience of myself and the reader.
My personal opinion is that we can all get better at asking questions, no matter how good we are already.
The more questions we ask, the more we can learn — but we need to do so in a manner that is respectful to those around is.
What is a good question?
You might be familiar with the old phrase:
For the most part, this is true.
However, I think Carl Sagan, astronomer, cosmologist, and astrophysicist put it best when he said:
In highly technical, advanced fields such as computer vision there are bound to be questions — it’s the very nature and existence of these questions that make computer science (and all other sciences) possible.
Experts in advanced scientific fields are asking questions all the time.
In fact, researchers, quite literally make a job out of asking questions.
They question their research.
They question the research of their peers.
And they derive more questions from their original questions.
You might already be familiar with this process — it’s called the scientific method:
- Step #1: Ask a question and develop a hypothesis.
- Step #2: Run an experiment to test your hypothesis.
- Step #3: Measure and record the results of your experiment.
- Step #4: Draw conclusions from your results.
- Step #5: Go back to Step #1 and repeat using your new found knowledge.
These exact steps allow us to perform novel research and advance the current state-of-the-art…
…but this process isn’t just for researchers, it’s for anyone who is involved in computer science.
While researchers are advancing their respective fields, on the opposite side of the spectrum we have students we are just trying to get started by asking questions regarding the very fundamentals of computer vision. These initial questions build the foundation on which they’ll ask even more advanced questions later in their careers.
We need questions to be asked. We need questions to be answered. Without this process, science cannot progress.
Given the inevitability of questions, both at the very high level (i.e., state-of-the-art research) to the very fundamentals (i.e., the building blocks of computer vision) we need to focus on on how to write more insightful, intelligent questions with specific goals in mind that can be answered by others.
Five components of a practical, insightful question
I’m going to stop focusing on what makes a “good” question and instead focus on what makes an “insightful” question.
Asking an insightful question starts well before it’s typed into an email message or comment form.
I’ve included the components of writing practical, insightful computer vision questions below:
- Know the purpose.
- Understand the context.
- Do your research.
- Ask your question (and be respectful of others time)
- Repeat the process as necessary.
We’ll review each of these components in detail in the remainder of this post.
Component #1: Know the purpose
Before you ask a question, you should first take a step back and ask yourself why you are asking the question in the first place.
More specifically, ask yourself: “After asking this question, what knowledge/insight do I hope to obtain?”
You see, all insightful, intelligent questions have a purpose — they all have an end goal. What is your end goal in asking a question?
By combining the purpose (Component #1) along with the context (Component #2) allows subject matter experts to better help you.
Component #2: Understand the context
Understanding the “why“ behind your question is helpful, but it’s also not enough — I need the context of your question as well.
What do I mean by context?
Context are the circumstances that form the setting of your question.
What relevant life circumstances are prompting this question?
Are you a student working on a tricky homework assignment?
Are you a researcher performing state-of-the-art experiments and hoping to publish your results?
Or are you simply curious about a particular computer vision topic and want to learn more?
Understanding not only why you are asking the question but also the context behind it makes your question much easier to answer.
The more context you can provide regarding your question, the better.
Component #3: Do your research
After understanding the purpose of your question, you should take some time to do a bit of initial research, even if its only on an internal level.
- Do I have any pre-existing knowledge about this topic? If so, what do I already know?
- Where can I find resources related to this question/subject matter?
- Are there any existing tutorials, blog posts, research papers, etc. that address my question?
- Have I spent 15-20 minutes on Google querying for content similar to my question and reading what others have asked before me?
You may be able to answer all of these questions — or you may only be able to answer none of them.
The point of this exercise isn’t to “check each item off”, but rather to take a step back and think critically about your question.
Component #4: Ask your question (and be respectful of others time)
By the time you actually ask your question, you should be well prepared.
You should understand what your end goals are and what you hope to learn/accomplish by asking your question.
You should have done your homework on the question to seen if others have asked similar questions (as well as reviewed the responses).
Finally, and most importantly:
Ask your question while being respectful of others time.
Regardless of whether you are posting on StackOverflow, LinkedIn, or asking a subject matter expert (like myself), respect their time.
- Don’t expect the person you are asking to writeup a multi-page email response to your question, analyzing every little detail and including references to an exhaustive list of papers you should read.
- Don’t expect them to write code for you.
- And don’t expect them to hold your hand.
Be realistic and set your expectations accordingly:
- Ask your question with your specific end goal and context in mind.
- And you will receive a response that helps point you in the right direction (but won’t do all the hard work for you). You’ll need to do the hard work yourself.
A question is only as good as the thought, time, and effort that goes into it.
If you take the time to ask questions with a well thought out purpose and end goal, you’ll find that the responses you receive in return are much better and helpful to accomplishing your particular project/task.
Component #5: Repeat the process as necessary
More times than not, one question leads to another.
We ask a question that clarifies a particular matter, only to find that it further muddies the water of another concept downstream — we again need help and explanation.
In this case, it’s time to repeat the process.
Assess your new question.
Why are you asking it?
What is your end goal?
Do your research on the question.
Then ask (while respecting others time).
Rinse and repeat.
Asking good questions takes practice
As you get better at asking insightful questions you’ll start to notice a pattern in how others ask questions as well.
You’ll begin to sense when a coworker or colleague has done adequate research to prepare their question…or if they are flying by the seat of their pants, hoping for a solution to suddenly materialize from a poorly thought out inquiry.
As a subject matter expert, I can tell you what a huge pleasure it is to answer questions that have a specific purpose and end goal.
I love answering these questions because I can not only clarify any doubts, but also provide advice on how to solve the overall problem the reader is working on.
The reader walks alway happy, not only because their question is answered, but also because they have more resources they can leverage to help solve their problem.
On the contrary, I can also tell you how trying and tedious it can be to answer questions where readers:
- Are not being respectful of my time.
- Haven’t taken the time themselves to consider why they are asking the question (i.e., the end goal + context).
In next week’s blog post, we’ll analyze actual questions I have received on the PyImageSearch blog, reviewing them piece-by-piece, and see the five components of asking a good question in action. These examples will help you improve your own ability to ask questions — because let’s face it, we all can use a little practice.
Today’s blog post discussed how to ask good computer vision questions.
The five components of asking a good question involves:
- Knowing the purpose of your question (i.e., the end goal).
- Relaying the context of the question (the situation you are in prompting the question to be asked).
- Doing your research.
- Asking the question while being respectful of others time.
- Repeating the process as necessary.
This formula can also be extended to other technical domains outside computer science as well.
In the second tutorial in this two-part series, I’ll discuss how to ask questions specifically on the PyImageSearch blog.
We’ll look at actual emails I have received here on the PyImageSearch blog, and take them apart, discussing the positive (and negative) qualities of the question — I’ll even suggest methods to better phrase your inquires to help ensure you find the information you’re looking for.
To be notified when this next “can’t miss” blog post goes live, be sure to enter your email address in the form below to join the PyImageSearch Newsletter!