An interview with Dmytro Mishkin, Computer Vision Researcher
It’s my absolute pleasure to have Dmytro today. Dmytro is a Ph.D. student in Computer Vision at the Center for Machine Perception of Czech Technical University. Dmytro’s interests lie in areas like deep learning, metric learning, image matching, local features and so on. Dmytro’s research has been widely successful in many areas of machine learning and computer vision in general. His research work can be checked out here.
Two of my most favorite research works from his vault are — Systematic evaluation of convolution neural network advances on the Imagenet and All you need is a good init. Dmytro is also one of the Co-founders of Eastern European Conference on Computer Vision which brings about a unique opportunity for CV/ML researchers to meet, share their knowledge, learn about new trends and find like-minded people. You can learn more about Dmytro from here.
I would like to wholeheartedly thank Dmytro for taking the time to do this interview. I hope this interview serves a purpose towards the betterment of data science and machine learning communities in general :)
An interview with Dmytro Mishkin, Computer Vision Researcher
Sayak: Hi Dmytro! Thank you for doing this interview. It’s a pleasure to have you here today.
Dmytro: Hi Sayak! Thank you for the invitation :)
Sayak: Maybe you could start by introducing yourself — what your research work looks like, what are you currently working on and so on?
Dmytro: I work mostly on things which are interesting for me yet affordable == could be run on my local PC. There are two originally separate directions: (a) two-view matching and (b) deep learning, which are merging now.
First, two view matching, aka wide baseline stereo, is a basic task needed for 3D reconstruction and all things like it. You get two or more images and you should answer if they are depicting the same object. If yes — also output pixel or region correspondences between images and geometrical relations between them, see an example here.
If the task seems too simple, think about matching images, which are separated by years, under different illumination and so on.
(I have started to learn computer vision from this task and it is also the topic of my Ph.D. thesis, which I am forcing myself to start writing)
My interest in deep learning, on the other hand, started from my industrial job — a photo-to-shop startup, which I co-founded and which failed. And Kaggle, of course. Papers you mentioned, actually born quite accidentally. “All you need is a good init” was an outcome of my participation in Kaggle National Data Science Bowl in 2015. It was quite hard to make CNN learn well and I did a simple empirical initialization scheme, which worked surprisingly well. The “Systematic evaluation of convolution neural network advances on the Imagenet” was actually a GitHub repo with logs, where I tested different architectural choices — just to make use of GPU which I had bought recently. After several months of experiments, I asked my supervisor — Jiri Matas — if it worth publishing and he answered: “Let’s try”. That’s the story.
Now research-wise, I mostly work on learning components for two-view matching, and also on the Kornia open source library (https://kornia.github.io/), which implements classical computer vision algorithms in PyTorch in a differentiable way. I also do consulting mainly for Ukrainian companies that are working on computer vision and deep learning, from time to time. If you want to collaborate, ping me.
Sayak: Thank you so much for such a detailed answer, Dmytro. Two-view matching is certainly a new thing for me and I am already hooked. I am curious to know how did you become interested in machine learning and computer vision?
Dmytro: It was accidental as well. During my master studies (aircraft control systems), I realized that I don’t like it and luckily my supervisor proposed me to build a camera-based navigation system for a mobile robot. I found that I hated to work with hardware, but algorithms were fascinating. Another happy coincidence — I have got an internship at Czech Technical University in Prague under the supervision of Prof. Matas. It was such a great and life-changing experience, that I wanted to stay there and continue.
Sayak: Sweet coincidences, aren’t they? When you were starting in the field what kind of challenges did you face? How did you overcome them?
Dmytro: In the time I started, the default language was C++ and I was a terrible, super terrible programmer. You know, memory leaks, callbacks, optimization — all that kind of stuff. I cannot say that I have overcome them by becoming a better programmer, unfortunately. The field just switched to Python and that solved lots of problems (automatically). But I am trying to improve my software skills as well — they often are more important bottlenecks, than something ML-specific.
Sayak: I see. I have always found the pursuit of incorporating software engineering best practices while developing ML systems to be of high value. Especially folks like Jeremy Howard, Joel Grus always encourage it. Your research work has been so successful and you go by the motto of doing this which work, rather than being “novel, but not working”. What is your general approach to conducting research?
Dmytro: Build something for yourself. My best research was actually to solve problems I had myself: how to initialize a CNN? Which activation function to choose? How to match those images, I have taken myself? Things, which I have done because I have to — are not as good. I mean, they are not terrible, but :) Luckily in our lab, we are not forced to work 100% time on Ph.D.-topic-related problems or something like that. We have quite a lot of freedom, which is not always the case for other labs.
Sayak: That is absolutely true and I see this as quite encouraging. These fields like computer vision and machine learning are rapidly evolving. How do you manage to keep track of the latest relevant happenings?
Dmytro: I don’t :) I read arxiv-sanity several times a week, also Twitter feed, but still miss something often. The pace is so fast, that I am not sure, I could keep track fully at all. On the other hand, I’d say that it is better to miss 10 good papers spending that time implementing your own ideas and thinking about them. If you read too much, you somehow stop to get original ideas by yourself. But if you would like to quickly know what is working — check if there is a relevant Kaggle competition. Kaggle crowd-mind knows/quickly finds out the most practical way to solve the problem.
Sayak: Thanks for sharing your views here, Dmytro. Being a practitioner, one thing that I often find myself struggling with is learning a new concept. Would you like to share how do you approach that process?
Dmytro: I’ll tell you a story. As a Ph.D. student, I need to take some classes and pass exams. Once, I read and “learned” a lot, but failed exam miserably because of a lack of understanding. So for the next time, I implemented everything related to that course from scratch in Python/NumPy. That time no question at the exam confused me. Implementing things and trying to improve them is, probably, the best way of learning I know.
Sayak: 101% agreed on that. Any plans for authoring a book anytime soon?
Dmytro: I am now working on upgrading the labs in our computer vision course from Matlab to something not that ancient and also going to write the thesis in such a way, that it could be used as an overview and textbook in two view matching. Otherwise, writing a thesis just to defend sounds to wasteful. But I haven’t thought about the book.
Sayak: That is very thoughtful, Dmytro. Any advice for the beginners?
Dmytro: Believe in yourself and practice. Practice on something, which is interesting to you and does not start from the boring theory. I’ll give you an example: a master student I supervised, Orest Kupyn developed DeblurGAN and became the first-ever student of Ukrainian University who published at CVPR. He started to do computer vision year before so, or like this — impressive but doable progress.
Visualize a lot. And once you have done something — “package it”. Develop a nice repo, which is easy to use. Write a blog post about it. You would be surprised how many papers don’t have an easy-to-use example of the proposed thing, which impacts badly on their impact (pun intended). I have even written a post about such packaging: Machine learning research as a product. How easy is it to use your work?. And once you are not a beginner anymore — help others!
P.S. I am a fan of fast.ai courses, check them, they are great!
Sayak: Even I am a big fan of fast.ai courses and they have helped learn a lot of things quicker than I could have ever thought of. I am never going to forget the points you mentioned, Dmytro. Thank you so much for doing this interview and for sharing your valuable insights. I hope they will be immensely helpful for the community.
Dmytro: Hope so. Thanks again for inviting me, it is an honor to be in such great company :)
I hope you enjoyed reading this interview. Watch out this space for the next one and I hope to see you soon. This is where you can find all the interviews done so far.
If you want to know more about me, check out my website.