Statement:

1) This article is compiled from the selfless contributions of Daniu and machine learning experts on the Internet. Please refer to the references for specific references. 2) This article is for academic exchange only, not commercial use. So the specific references in each section don’t correspond in detail. If some part of the careless infringement of everyone’s interests, but also hope haiyan, and contact the blogger to delete. 3) The blogger is uneducated, if there is any improper place in the article, please point out, common progress, thank you. 4) This is the first edition, if there are any mistakes, it needs to continue to amend, add and delete. Still hope everybody gives directions a lot. We all share a little bit and contribute to the advancement of the motherland’s scientific research.

○ Write first

In fact, the 19th autumn recruit algorithm on some [oversupply], the headlines even issued algorithm to persuade to quit. This is largely because a few years ago the algorithm employment situation was too good, leading to a large number of people to algorithm, which led to the big bubble has not been digested, so in fact, the algorithm is not now suddenly difficult to find a job, but before it was too easy. In fact, you said the company is really not short of algorithm engineers? Of course not, the company also has a shortage of algorithm engineers, so why this situation? In addition to some of the blind into the students to discourage; Several HR people I’ve heard and met say they’ve received hundreds of resumes, but nothing matches them. So it’s true that there are more people doing algorithms, but there are also people who need to do algorithms, and the main contradiction is the mismatch between supply and demand.

Therefore, after many times of mental breakdown, asking a lot of seniors and leaders, and referring to a lot of leaders’ articles, I decided to summarize what learning ability and knowledge reserve I need if I want to become a [deep learning algorithm engineer]. This article should be a [record] of the nature of the article, I hope to see what I have learned along the way, what is ready to learn, what needs to learn, I hope to encourage you together.

1. Programming ability

I’ve heard it hundreds of times and it makes my brain ache, but I can’t help it. It’s a necessary skill. To what extent is it necessary?

Let’s just say, if you want to write an essay, if you can’t write, put words together, put sentences together, I don’t think you can do it at all. Very image, but it is true, think carefully, you are hired to work, the company will not recruit a MATLAB or Python are not familiar with people to do project development, do pure algorithm research is not.

  • MATLAB we all know, do laboratory research is really great, efficient and convenient matrix and array operations, drawing is also quite good, but industrial applications have not heard who is using MATLAB to achieve it.
  • Python you may be wondering why, so to speak, if you are not familiar with a relatively simple language like Python, you have nothing to say.

So what are the basic requirements for programming ability?

(1) Proficient in Linux

Windows
Windows
linux
Windows

However, many people may not feel that the conditions are too suitable, such as laboratory conditions, computer conditions and so on, but for us, Linux does not need to understand too deep. Install ubuntu system, common file operation, program compilation and so on know OK. The rest is completely in the use of the process of learning, always have a book at hand “Bird brother Linux private house dishes”, god book, you can baidu or Google a natural know this book is powerful. In or now the network is more powerful, there are many resources, the laboratory building is also a good choice, to help you match the good environment, direct use is OK. If you still want to do it yourself, a virtual machine is also a good choice. It won’t affect the environment configuration of your computer, but it still meets the requirements.

Personal Plan:

  • Birdman’s Linux Home Dish
  • The lab building

(2) Good command of Python

Python tutorial

Some students will ask, “Python2 or Python3?” Let’s just say that the Python core team plans to stop supporting Python2 in 2020, which means that Python2 will soon be saying goodbye. Python is actually very easy to learn, and the process of looking at other people’s code is the process of learning. Search official documentation for unfamiliar uses (python, numpy, pandas, matplot, scikit-learn, etc.).

The Python development environment is worth mentioning because there are so many options. Pycharm and Jupyter Notebook are recommended. Check out this blog, Anaconda and PyCharm’s detailed installation tutorial for Windows10.

Personal Plan:

  • Programming Python: Getting Started to Practice
  • Crazy Python Handouts

(3) fluent use of C++

“The c + + primer”
C++ primer plus
Handbook of Job Hunting for Programmers
Programming and Algorithms

Personal Plan:

  • “The c + + primer”
  • C++ primer plus
  • Programming and Algorithms (I)
  • Programming and Algorithms (3)

(4) Good algorithm foundation

Convolutional Neural Network CNN (Full of Dry Goods)

This requires that the development capacity must pass, because the efficiency of the algorithm is still required in actual production. The algorithms used in industry are years behind those used in academia, so don’t get too excited about what companies are doing. The quality of real data is much worse than you think, and the algorithms used in real life are not that sophisticated, and most of the time they are not used in modeling.

Personal Plan:

  • LeetCode
  • Cattle from
  • Sword Finger Offer

Python:

  • Diagram of algorithms
  • Solving Data Structure and Algorithm Problems with Python
  • Data Structures and Algorithms in Python

C + + :

  • Aha! Algorithm
  • Programming and Algorithms (2)
  • Introduction to Algorithms Chinese third edition (this is a god book…)

(5) Good programming habits

Miscellaneous – What if Python code is ugly? Autopep8 to help you

Deep learning theory

classification
Object Classification
Object Detection
Image Semantic Segmentation
edges2cats
deepart

I mainly do [image reconstruction] or [super resolution] related things. In fact, the general is to take a look at the paper, reproduce the network structure, or directly run other people’s code, do a network structure modification, adjust a super parameter. The pre-production of image data sets, as well as pre-processing is the main work. Why is deep learning so strong? Is it better than traditional image processing? What kind of problems does it mainly solve?

Personally, I agree with the following three points: strong ability to learn features, strong versatility, and low cost of development, optimization and maintenance. The problem may be the amount of data, which requires a high precision of label. Why is deep learning almost a standard part of computer vision research? .

About this part of the theory of learning, flying all kinds of resources. Here are some recommendations:

  • You can take a look at li Hongyi’s one day deep learning courseware;
  • Li Feifei’s CS231n course, netease Cloud class has Chinese subtitled version of big Data Abstract translation course, Zhihu column intelligent unit has CS231n course translation (very good);
  • Ng’s DEEP LEARNING AI, which is coming down at the end of this year, and my own series of introductory notes to DEEP LEARNING based on the course.

Personal Plan:

  • Deep Learning in a Day
  • CS231N course
  • Deep Learning AI courses
  • DeepLearning flower book
  • Tensorflow+ Practical Google Deep Learning Framework
  • Graphic Neural Networks and Deep Learning
  • PyTorch Deep Learning Combat
  • Python Deep Learning (Keras)
  • Pytorch for Deep Learning
  • PyTorch deep Learning Framework
  • PaddlePaddle and The Application of Deep Learning
  • Hands-on Deep Learning
  • PyTorch Combat Computer Vision for Deep Learning
  • Classic deep learning papers

G++, CMake and Makefile

python
c / c++ / java
G++, CMake and Makefile
Linux
Department of C code

Personal Plan:

  • g++
  • CMake
  • Makefile

Shell, Vim and Git

  • Shell command is the operating basis of Linux, and it is also the beginning of learning to use Linux. Gradually getting familiar with advanced shell command will bring great efficiency improvement in future work.
  • Vim is the most commonly used editor in Linux, which can be used by everyone from the novice to the master. Its column editing, search and replace, automatic completion and other functions ensure efficiency. Maybe students who switch from Visual Studio or other environments will be a little uncomfortable at the beginning, but over time, they will understand the advantages of VIM more and more.
  • Git is an essential quality for programmers, slowly learn to maintain a few of their own code base, until the future when the problem will be understood.

Personal Plan:

  • shell
  • vim
  • git

Python crawlers

data

Personal Plan:

  • Web crawler
  • Python Project Case Development from Beginning to Action: Crawlers, Games, and Machine Learning

Vi. Data visualization

My advice on this is to play a lot of games, read other people’s codes and blogs, and it will be easy to learn.

Personal Plan:

  • Kaggle
  • tianchi

7. Basic mathematics

  • Calculus: In fact, I think the calculus knowledge involved is relatively simple, with few integrals and not particularly complicated differentiation. It only takes one day to learn it.

  • Probability theory and statistics: This is the most important branch of sequence applied to machine learning. Applications such as conditional probability, correlation coefficient, maximum likelihood, law of large numbers, Markov chains, etc., still have to do a good job of probability.

  • Linear algebra: The digital image itself is presented in the form of a matrix, and so are samples of multiple vectors which are very common, and in most machine learning algorithms every sample is presented in the form of a vector, Multiple matrix multiplies are in the form of TensorFlow which is literally one of Google’s deep learning libraries.

  • Convex optimization: this needs to be carried out separately to say. Because so many problems (especially in the field of machine learning) are optimization problems, convex optimization is the simplest form, so everyone is trying to figure out how to convert general optimization problems into convex optimization problems. As for the pure convex optimization theory, it seems to have been relatively mature. In machine learning, often see what dual problems, KKT conditions, etc., latent heart spend two days to learn a study.

There is really no need to systematically learn mathematical knowledge, which is inefficient and time-consuming. After all, everyone has the foundation of undergraduate or postgraduate studies, which is enough. The most used is matrix theory!! Or learn it as you use it, and then summarize it. Another is to learn and use online search resources, such as CSDN, Zhihu and so on.

Personal Plan:

  • Matrix Theory
  • Peking University “convex optimization” course
  • Lin Xuantian machine learning foundation
  • Lin Xuantian machine learning techniques

Viii. Public account

Times have changed, and a man a hundred years ago would never have imagined that he was confused not by turning to a book or asking someone but by telling a machine next to him. Today, elementary school students doing arithmetic or a little girl having a period ask a computer: what’s going on? But what does all this have to do with learning vision? — A: No. It’s a little bit off. Let’s go a little further. Thinking about something new happening across the time dimension and how it relates to something old may give you a certain freedom of imagination. Such as telegraphy, telephone, video chat and HoloLens talk, as well as horse-drawn carriages, cars, trains, planes and rockets for space travel, steam engines, electricity, the Internet and AI. So use resources flexibly, see more certainly right, but to have a choice to see, can’t see everything, people’s energy or priority.

First of all, the public is not advertising, recommend a few of their own to see it (ranking no order).

  • Machine learning lab
  • Pan gen AI
  • The Kaggle Contest bible
  • There are three AI
  • I love computer vision
  • Datawhale
  • Computer Vision Life
  • CVer
  • Mini excavator

Nine, eggs

If you look at the catalogue, you’ll see it looks like a knife, doesn’t it? I hope you and I can be invincible!!

Recommend a blog written by oneself – big talk convolutional neural network CNN (full of dry goods), plant trees from now on.

If lucky enough to help you, please help me a [praise], to a [attention]! I would appreciate an encouragement along the way.

If you want more resources, please follow @I’m Guan Xiaoliang, MAX~

Reply [benefits] to get the gift I prepared for you, including C++, four major components of programming, NLP, deep learning and so on.

The algorithm and data structure information can be obtained by replying to [Data structure]

For more articles (paragraphs), please follow the wechat public account “Programmer Guan Xiaoliang” ~

Refer to the article

  • Zhihu – https://www.zhihu.com/question/335451320
  • Some thinking and learning methods about computer vision
  • 【 End 】 Deep learning CV algorithm engineers from the entry to the primary interview how far, about 25 articles