A learning program that causes a computer to execute a process comprising: extracting features from input image data utilizing an encoder, the input image data including labeled image data in which object information is added to an input image wherein the object information indicates class, position and size of an object included in the input image, and unlabeled image data in which the object information is not added to an input image; detecting objects in the input image data from the features of the input image data, and generating a result of the detection indicating the class, the position and the size of the detected objects, utilizing an object detector; associating based on the result of the detection each of the objects with corresponding regions in the input image using width and height thereof and, restoring, utilizing a decoder where the decoder and the encoder form an auto-encoder, a restored image data where the regions are restored, to restore the input image; executing first learning of the encoder and the object detector with supervised learning based on a first difference between the result of the detection and the object information of the labeled image data included in the input image data; and executing second learning of the encoder, the object detector, and the decoder, with unsupervised learning based on a second difference between the unlabeled image data included in the input image data and the restored image data, wherein the second learning of the object detector is executed with the supervised learning and the unsupervised learning so that both of the first difference and the second difference become small. extracting features from input image data utilizing an encoder, the input image data including labeled image data in which object information is added to an input image wherein the object information indicates class, position and size of an object included in the input image, and unlabeled image data in which the object information is not added to an input image; detecting objects in the input image data from the features of the input image data, and generating a result of the detection indicating the class, the position and the size of the detected objects, utilizing an object detector; associating based on the result of the detection each of the objects with corresponding regions in the input image using width and height thereof and, restoring, utilizing a decoder where the decoder and the encoder form an auto-encoder, a restored image data where the regions are restored, to restore the input image; executing first learning of the encoder and the object detector with supervised learning based on a first difference between the result of the detection and the object information of the labeled image data included in the input image data; and executing second learning of the encoder, the object detector, and the decoder, with unsupervised learning based on a second difference between the unlabeled image data included in the input image data and the restored image data, wherein the second learning of the object detector is executed with the supervised learning and the unsupervised learning so that both of the first difference and the second difference become small. <EOS>