A computer implemented method of classifying images using at least two image classification models, the method comprising: obtaining training images associated with labels, wherein each training image of the training images is associated with two or more labels of the labels and wherein each label of the labels corresponds to an image classification class and wherein the labels have a hierarchical structure; training at least two convolutional neural networks using the training images and the hierarchically structured labels associated with the training images, a respective separate convolutional neural network being trained for each hierarchy level of the labels; and classifying an input image into two or more classes based on the at least two trained convolutional neural networks, the classifying including applying a first network of the trained convolutional neural networks, wherein the first network is trained for a top level of the hierarchical structure; and applying at least one additional network of the trained convolutional neural networks, wherein the at least one additional network is trained for a lower level of the hierarchical structure; wherein probability scores for each label are computed from higher hierarchy level to lower hierarchy level; and wherein for each lower level, the probability score for the current level label is multiplied by the probability score of the corresponding higher level label. obtaining training images associated with labels, wherein each training image of the training images is associated with two or more labels of the labels and wherein each label of the labels corresponds to an image classification class and wherein the labels have a hierarchical structure; training at least two convolutional neural networks using the training images and the hierarchically structured labels associated with the training images, a respective separate convolutional neural network being trained for each hierarchy level of the labels; and classifying an input image into two or more classes based on the at least two trained convolutional neural networks, the classifying including applying a first network of the trained convolutional neural networks, wherein the first network is trained for a top level of the hierarchical structure; and applying at least one additional network of the trained convolutional neural networks, wherein the at least one additional network is trained for a lower level of the hierarchical structure; wherein probability scores for each label are computed from higher hierarchy level to lower hierarchy level; and wherein for each lower level, the probability score for the current level label is multiplied by the probability score of the corresponding higher level label. applying a first network of the trained convolutional neural networks, wherein the first network is trained for a top level of the hierarchical structure; and applying at least one additional network of the trained convolutional neural networks, wherein the at least one additional network is trained for a lower level of the hierarchical structure; wherein probability scores for each label are computed from higher hierarchy level to lower hierarchy level; and wherein for each lower level, the probability score for the current level label is multiplied by the probability score of the corresponding higher level label.