1. A method comprising: in response to receiving a request to validate a user to determine if the user is a computer or a human, performing the following steps: randomly selecting a set of images from an image data store, wherein the image data store includes a plurality of images that are each categorized into one of a plurality of categories according to content of each image, wherein each image in the set of images is associated with a different category, wherein each image in the set of images is a randomly selected type of image, the type of image indicating how the image was generated, wherein the type of image includes two or more of a photograph, a drawing, a clipart or a line drawing; for a given image among the set of images, determining the category associated with the given image; generating a challenge instruction using the category of the given image, wherein the challenge instruction instructs the user to select an image from the set of images corresponding to the category; generating a user interface for displaying the challenge instruction and for displaying each image from the set of images sequentially to the user one at a time, each image being displayed for an interval of time, wherein the interval of time each image is displayed is selected randomly for each image in the set of images; receiving a user input indicating an image selected by the user from the set of images; and when the image selected by the user is associated with the category identified in the challenge instruction, generating a response to the request to validate the user, indicating that the user has successfully responded to the challenge instruction.