First of all, your question is board and it is hard to be answered thoughtfully. In general, image recognition itself is a wide topic. It might refer to classify a given image into a topic, or to recognize faces, objects, or text information in an image.
Depending on the objective of image recognition, you may use completely different processing steps. However, you may write the following general steps:
- get training data set
- preprocessing (e.g. denoising, normalization, scaling, contrast
- feature extraction (e.g. sift, hog, lbp, raw pixels, contours, edge
map, DCT, DFT)
- machine learning (e.g. logistic regression, neural network, svm)
- parameter tuning (need a dev. set)
- check results on how good you are, and see whether you need more data. If so, go to step 1 and repeat the process again.
- the same preprocessing in training
- the same feature extraction in training
- feed your features into the trained classifier
- output classification results.
Note: depending on your objective, preprocessing and selected features can be very different.
Asking someone to mark data manually is expensive. So people often use free dataset, each of which is often created for a specific purpose. Thus, these dataset may or may not satisfy your needs. Meanwhile, images from different dataset are often inconsistent, e.g. one set maybe of small grayscale images, while another maybe of large color images.