Patent Publication Number: US-9424491-B1

Title: Suggesting profile images for a social network

Description:
CROSS REFERENCE TO RELATED APPLICATIONS 
     This application is a continuation of and claims priority to U.S. application Ser. No. 13/253,693, filed Oct. 5, 2011, titled, “Suggesting Profile Images for a Social Network,” which is incorporated herein by reference in its entirety. 
    
    
     BACKGROUND 
     The specification relates to generating a set of suggested profile images for a user. In particular, the specification relates to generating a set of suggested profile images for a user by identifying the most recent images of the user with the least number of people in the images. 
     Over the last decade social networking has become increasingly popular. The sharing of information among social network users has exponentially increased. Users post information such as text, photos, audio and videos on a daily basis. Users also tag people in the photos, sometimes to alert people to something interesting but also to identify the users in the images. 
     One way to personalize a user profile is to select a profile image. This process is frequently cumbersome because the user selects an image, uploads the image, resizes the image and makes other changes. Mobile device users find the process to be particularly difficult when using a small screen on the mobile device. Prior art methods attempt to overcome these difficulties by allowing a user to capture an image with a webcam, upload the image from the user&#39;s desktop, choose a photo from a camera roll or choose another user&#39;s photo as a profile image. These options, however, still require that the user go through several steps to select a profile image. 
     SUMMARY OF THE INVENTION 
     In some examples, the specification describes a system and method for generating a set of suggested profile images for a social network using a profile image application. The profile image application includes a scorer, a recognition engine, a trend analyzer and a suggestion module. The scorer identifies metadata associated with each application and scores a plurality of images based at least in part on the metadata. In one embodiment, the images are user-uploaded images or images from a third party application. In another embodiment, the metadata includes at least one of a tag of the user, a tag of other people and a timestamp. In yet another embodiment, the scoring includes generating a lower score for an image where the user and other people are tagged than an image where the user is tagged. In one embodiment, the scoring includes generating a higher score for more recent images based at least in part on the timestamp. In another embodiment, the scorer receives user feedback that includes a selection of at least one of the suggested profile images and adjusts the scoring to reflect user preference. 
     The recognition engine identifies people and objects in the image. In one embodiment, the recognition engine determines whether the image includes people that were not tagged. The trend analyzer identifies trends based at least in part on the people and objects identified by the recognition engine. The suggestion module generates the ordered set of suggested profile images based at least in part on the score and provides the suggested profile images to the user. This method is advantageous for mobile device users because it avoids the need for a user to go through the arduous steps of selecting a user image, resizing the image, selecting the user image as a profile image, etc. 
     In one embodiment, the specification includes a computer program product comprising a computer useable medium including a computer readable program, wherein the computer readable program when executed on a computer causes the computer to receive a plurality of images, identify metadata associated with each application, score the plurality of images based at least in part on the metadata, generate an ordered set of suggested profile images and provide the ordered set of suggested profile images. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The specification is illustrated by way of example, and not by way of limitation in the figures of the accompanying drawings in which like reference numerals are used to refer to similar elements. 
         FIG. 1  is a block diagram illustrating one embodiment of a system for ordering a set of suggested profile images. 
         FIG. 2  is a block diagram illustrating one embodiment of a profile image application. 
         FIG. 3  is one example of a graphic representation of a user interface that displays a user profile page. 
         FIG. 4  is one example of a graphic representation of a user interface that displays a set of suggested profile pictures. 
         FIG. 5  is a flow diagram of one embodiment of a method for generating a set of suggested profile images. 
         FIG. 6  is a flow diagram of another embodiment of a method for generating a set of suggested profile images. 
     
    
    
     DETAILED DESCRIPTION 
     A system and method for suggesting a set of profile images are described below. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the specification. It will be apparent, however, to one skilled in the art that the invention can be practiced without these specific details. In other instances, structures and devices are shown in block diagram form in order to avoid obscuring the description. For example, the present embodiment is described in one embodiment below primarily with reference to user interfaces and particular hardware. However, the present embodiment applies to any type of computing device that can receive data and commands, and any peripheral devices providing services. 
     Reference in the specification to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the description. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment. 
     Some portions of the detailed descriptions that follow are presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self consistent sequence of steps leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers or the like. 
     It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the following discussion, it is appreciated that throughout the description, discussions utilizing terms such as “processing” or “computing” or “calculating” or “determining” or “displaying” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system&#39;s registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices. 
     The present embodiment of the specification also relates to an apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, or it may comprise a general-purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer readable storage medium, such as, but is not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, flash memories including USB keys with non-volatile memory or any type of media suitable for storing electronic instructions, each coupled to a computer system bus. 
     The specification can take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment containing both hardware and software elements. In a preferred embodiment, the specification is implemented in software, which includes but is not limited to firmware, resident software, microcode, etc. 
     Furthermore, the description can take the form of a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system. For the purposes of this description, a computer-usable or computer readable medium can be any apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device. 
     A data processing system suitable for storing and/or executing program code will include at least one processor coupled directly or indirectly to memory elements through a system bus. The memory elements can include local memory employed during actual execution of the program code, bulk storage, and cache memories which provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution. 
     Input/output or I/O devices (including but not limited to keyboards, displays, pointing devices, etc.) can be coupled to the system either directly or through intervening I/O controllers. 
     Network adapters may also be coupled to the system to enable the data processing system to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks. Modems, cable modem and Ethernet cards are just a few of the currently available types of network adapters. 
     Finally, the algorithms and displays presented herein are not inherently related to any particular computer or other apparatus. Various general-purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct more specialized apparatus to perform the required method steps. The required structure for a variety of these systems will appear from the description below. In addition, the specification is not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the specification as described herein. 
     System Overview 
       FIG. 1  illustrates a block diagram of a system  100  for generating a set of suggested profile images according to some examples. The illustrated description of the system  100  includes user devices  115   a ,  115   n  that are accessed by users  125   a ,  125   n , a social network server  101  and third-party server  107 . In  FIG. 1  and the remaining figures, a letter after a reference number, such as “ 115   a ” is a reference to the element having that particular reference number. A reference number in the text without a following letter, such as “ 115 ,” is a general reference to any or all instances of the element bearing that reference number. In the illustrated embodiment, these entities are communicatively coupled via a network  105 . 
     The network  105  is a conventional type, wired or wireless, and may have any number of configurations such as a star configuration, token ring configuration or other configurations known to those skilled in the art. Furthermore, the network  105  may comprise a local area network (LAN), a wide area network (WAN) (e.g., the Internet), and/or any other interconnected data path across which multiple devices may communicate. In yet another embodiment, the network  105  may be a peer-to-peer network. The network  105  may also be coupled to or includes portions of a telecommunications network for sending data in a variety of different communication protocols. In yet another embodiment, the network  105  includes Bluetooth communication networks or a cellular communications network for sending and receiving data such as via short messaging service (SMS), multimedia messaging service (MMS), hypertext transfer protocol (HTTP), direct data connection, WAP, email, etc. While only one network  105  is coupled to the user devices  115   a ,  115   n , the social network server  101  and the third-party server  107 , in practice any number of networks  105  can be connected to the entities. 
     In one embodiment, the profile image application  103   a  is operable on the social network server  101 , which is coupled to the network via signal line  104 . In one embodiment, the social network server  101  sends and receives data to and from one or more of the user devices  115   a ,  115   n  and the third-party server  107  via the network  105 . For example, the social network server  101  is a hardware server operated by Google® of Mountain View, Calif. that provides the Google+ service to the user devices  115   a ,  115   n . A person having ordinary skill in the art will recognize that the social network server  101  can be configured to provide different services and/or functionality to the user devices  115   a ,  115   n . Although only one social network server  101  is shown, persons of ordinary skill in the art will recognize that multiple social network servers  101  may be present. 
     In another embodiment, the profile image application  103   b  is stored on the user device  115   a , which is connected to the network via signal line  108 . The user device  115   a  is any computing device that includes a memory and a processor, such as personal computer, a laptop, a tablet or a mobile device such as a cellular phone, a personal digital assistant or a smart phone, etc. The user  125   a  interacts with the user device  115   a  via signal line  110 . Although only two user devices  115   a ,  115   n  are illustrated, persons of ordinary skill in the art will recognize that any number of user devices  115   n  are available to any number of users  125   n.    
     The third-party server  107  is a hardware server device that includes a third-party application  118 . In one embodiment, the third-party server  107  sends and receives data to and from one or more user devices  115   a ,  115   n  and the social network server  101  via the network  105 . For example, the third-party server  107  is a hardware server that manages a photo application for uploading, modifying and transmitting images to the profile image application  103 . A person with ordinary skill in the art will recognize that the third-party server  107  can be configured to provide different services and/or functionalities to the user devices  115   a ,  115   n  and the social network server  101 . The third-party server  107  is connected to the network  105  via signal line  106 . Although only one third-party server  107  and only one third-party application  118  are shown, persons of ordinary skill in the art will recognize that multiple third-party servers including multiple third-party applications may be present. 
     Profile Image Application  103   
     Referring now to  FIG. 2 , the profile image application  103  is shown in detail.  FIG. 2  is a block diagram of a computing device  200  that includes the profile image application  103 , a memory  237 , storage  240 , a communication unit  245  and a processor  235 . In one embodiment, the computing  200  device is a social network server  101 . In another embodiment, the computing device  200  is a user device  115   a . While the modules are described for an embodiment where the profile image application  103   a  is stored on the social network server  101 , persons of ordinary skill in the art will recognize that the descriptions can be modified to describe the application as being stored on the user device  115   a.    
     The processor  235  comprises an arithmetic logic unit, a microprocessor, a general purpose controller or some other processor array to perform computations and provide electronic display signals to a display device. The processor  235  is coupled to the bus  220  for communication with the other components via signal line  236 . Processor  235  processes data signals and may comprise various computing architectures including a complex instruction set computer (CISC) architecture, a reduced instruction set computer (RISC) architecture, or an architecture implementing a combination of instruction sets. Although only a single processor is shown in  FIG. 2 , multiple processors may be included. The processing capability may be limited to supporting the display of images and the capture and transmission of images. The processing capability might be enough to perform more complex tasks, including various types of feature extraction and sampling. It will be obvious to one skilled in the art that other processors, operating systems, sensors, displays and physical configurations are possible. 
     The memory  237  stores instructions and/or data that may be executed by processor  235 . The memory  237  is coupled to the bus  220  for communication with the other components via signal line  238 . The instructions and/or data may comprise code for performing any and/or all of the techniques described herein. The memory  237  may be a dynamic random access memory (DRAM) device, a static random access memory (SRAM) device, flash memory or some other memory device known in the art. In one embodiment, the memory  237  also includes a non-volatile memory or similar permanent storage device and media such as a hard disk drive, a floppy disk drive, a CD-ROM device, a DVD-ROM device, a DVD-RAM device, a DVD-RW device, a flash memory device, or some other mass storage device known in the art for storing information on a more permanent basis. 
     The storage  240  is a non-transitory memory that stores data for the functionality of the profile image application  103 . The storage  240  is coupled to the bus  220  via signal line  241 . The data stored in the storage  240  includes user information such as a user profile for each user and social network content such as posts and images submitted by a user  125 , media submitted by the user&#39;s friends, images received from a third-party application  118 , etc. The social network content is explained in further detail below with reference to the social network application  202 . 
     The communication unit  245  transmits and receives data to and from the user device  115 , third-party server  107  and/or the social network server  101  depending upon where the profile image application  103  is stored. The communication unit  245  is coupled to the bus  220  via signal line  246 . In one embodiment, the communication unit  245  includes a port for direct physical connection to the network  105  or to another communication channel. For example, the communication unit  245  includes a USB, SD, CAT-5 or similar port for wired communication with the user device  115 . In another embodiment, the communication unit  245  includes a wireless transceiver for exchanging data with the user device  115 , the third-party server  107  or any other communication channel using one or more wireless communication methods, such as IEEE 802.11, IEEE 802.16, BLUETOOTH® or another suitable wireless communication method. 
     In yet another embodiment, the communication unit  245  includes a cellular communications transceiver for sending and receiving data over a cellular communications network such as via short messaging service (SMS), multimedia messaging service (MMS), hypertext transfer protocol (HTTP), direct data connection, WAP, e-mail or another suitable type of electronic communication. In still another embodiment, the communication unit  245  includes a wired port and a wireless transceiver. The communication unit  245  also provides other conventional connections to the network for distribution of files and/or media objects using standard network protocols such as TCP/IP, HTTP, HTTPS and SMTP as will be understood to those skilled in the art. 
     In one embodiment, the profile image application  103  comprises a controller  202 , a social network application  204 , a scorer  206 , a recognition engine  208 , a trend analyzer  210 , a suggestion module  212  and a user interface engine  214  that are each coupled to the bus  220 . 
     The controller  202  is software including routines for receiving information such as posts, media, requests for social network content, etc. via the communication unit  245  and transmitting the information to the other components of the profile image application  103 . In one embodiment, the controller  202  is a set of instructions executable by the processor  235  to provide the functionality described below for receiving and transmitting information. In another embodiment, the controller  202  is stored in the memory  237  of the computing device  200  and is accessible and executable by the processor  235 . In either embodiment, the controller  202  is adapted for cooperation and communication with the processor  235 , the communication unit  245 , the storage  240 , the social network application  204 , the scorer  206 , the recognition engine  208 , the trend analyzer  210 , the suggestion module  212 , the user interface engine  214  and other components of the computing device  200  via signal line  234 . 
     The controller  202  receives social content submitted by a user  125  from a user device  115 . The social content includes posts, comments and attached media. The attached media includes for example, images, video, audio, news articles, documents, website links, etc. In one embodiment, the images are tagged with a user&#39;s identity. The controller  202  transmits social content to the social network application  204  and also transmits any images to the scorer  206  or the recognition engine  208 . The controller  202  also stores the received posts in the storage  240 . 
     In another embodiment, the controller  202  receives images from a third-party server  107  via the communication unit  245 . The images received from the third-party server  107  includes, for example, images submitted by the user  125  using a third-party application  118 , images submitted by another person where the user is tagged in the image and publically available images. In one embodiment, the controller  202  receives the media by sending a request to the third-party server  107  via the communication unit  245 . In another embodiment, the controller  202  receives the media from the third-party server  107  periodically, for example, every week, every day, every hour, etc. The controller  202  stores the received media in the storage  240 . Once the suggestion module  210  generates a set of suggested profile images and the user interface engine  214  generates a user interface that includes the set of suggested profile images, the controller  202  transmits the set to the user  115   a  via the communication unit  245 . 
     The social network application  204  is software including routines for generating and managing a social network. In one embodiment, the social network application  204  is a set of instructions executable by the processor  235  to provide the functionality described below for generating and managing a social network. In another embodiment, the social network application  204  is stored in the memory  237  of the computing device  200  and is accessible and executable by the processor  235 . In either embodiment, the social network application  204  is adapted for cooperation and communication with the processor  235 , the communication unit  245 , the storage  240 , the controller  202 , the user interface engine  214  and other components of the computing device  200  via signal line  222 . 
     A social network is any type of social structure where the users  125  are connected by a common feature, for example, Google+. The common feature includes friendship, family, work, an interest, etc. The common features are provided by one or more social networking systems, such as those included in the system  100 , including explicitly-defined relationships and relationships implied by social connections with other online users, where the relationships form a social graph (not shown). In some examples, the social graph (not shown) reflects a mapping of these users  125  and how they are related. 
     The social network application  204  registers a user with the social network by receiving a username, password, demographic information, likes, dislikes, education, work history, impressive facts, nicknames, etc. from the user. The social network application  204  generates a unique identifier associated with the user, generates and updates a social graph of the user&#39;s relationship with other users and generates a user profile that incorporates the user information including the registration information and the unique identifier. The social network application  204  also updates the user profile, for example, in response to receive a user selection of a suggested profile image generated by the suggestion module  212 . The user profile is stored in the storage  240 . In one embodiment, the social network application  204  generates a user profile that includes information for accessing a third-party application, such as a photo-sharing website and the social network application  204  receives and manages images from the third-party application  118 , such as images where the user is tagged. 
     In one embodiment the social network application  204  receives a request for social network content from the controller  202 . The social network content includes, for example, a description of activities performed by the user  125  and the user&#39;s friends, conversations, events, etc. The social network application  204  transmits instructions to the user interface engine  214  to generate a user interface that displays the social network content. In a further embodiment, the social network application  202  also receives a post submitted by the user  125  from the controller  202  and instructs the user interface engine  214  to incorporate the post in the user interface displaying the social network content. 
     The scorer  206  is software including routines for receiving images from the controller  202  and scoring the images based on predetermined preferences. In one embodiment, the scorer  206  is a set of instructions executable by the processor  235  to provide the functionality described below for scoring images. In another embodiment, the scorer  206  is stored in the memory  237  of the computing device  200  and is accessible and executable by the processor  235 . In either embodiment, the scorer  206  is adapted for cooperation and communication with the processor  235 , the communication unit  245 , the storage  240 , the controller  202 , the suggestion module  212  and other components of the computing device  200  via signal line  224 . 
     In one embodiment, the scorer  206  identifies metadata associated with the image including the names of people that are tagged in the image and the date that the image was captured. The scorer  206  applies a score to images where the user is tagged and the score  206  applies a higher score to the images based on recency of the images. The tags are applied by the user or other people. In one embodiment, the scorer applies a higher score to images where the user identifies himself because these tags are more likely to be accurate and possibly more flattering. In another embodiment, the scorer  206  also selects images where the user and other people are tagged. These images receive a lower score than images where only the user is tagged. 
     In another embodiment, the scorer  206  receives trends from the trend analyzer  210  and user images from the recognition engine  208  that have been identified as containing an object identified as being part of the trend. The scorer  206  applies a score to the identified user images. In one embodiment, the trend analyzer  210  indicates a level of prevalence of the trend, which the scorer  206  uses to modify the score. For example, if 50% of the social network users change their profile to images of blocks to celebrate the invention of the first block, the scorer  206  applies a higher score to the image than if only 0.05% of the social network users change their profile to images of blocks. 
     In yet another embodiment, the scorer  206  also updates the scoring rules based on user feedback. For example, the suggestions module  212  presents different options to the user for profile images and the user consistently selects images with multiple people in them as profile images. As a result, the scorer  206  applies a higher score to images with multiple tagged people than images with only the user tagged. In another embodiment, the scorer  206  updates the scoring rules based on feedback from similar users (according to demographics) or all users of the social network. 
     The recognition engine  208  is software including routines for receiving images from the controller  202  and performing recognition on the images to recognize people and objects. In one embodiment, the recognition engine  208  is a set of instructions executable by the processor  235  to provide the functionality described below for recognizing images. In another embodiment, the recognition engine  208  is stored in the memory  237  of the computing device  200  and is accessible and executable by the processor  235 . In either embodiment, the recognition engine  208  is adapted for cooperation and communication with the processor  235 , the communication unit  245 , the storage  240 , the controller  202 , the recognition engine  208  and other components of the computing device  200  via signal line  226 . 
     In one embodiment the recognition engine  208  performs recognition on images received from the controller  202  to determine: (1) whether the user was accurately tagged; (2) whether the user and other people were not tagged in images when they should have been; and (3) whether the user&#39;s images contain an object or a person that is part of a social network trend. 
     In one embodiment, the recognition engine  208  determines whether the user was accurately tagged by determining whether the image contains a person or an object that was tagged as the user. In some instances, social network users will tag an image of something such as a building with a user&#39;s name to draw the tagged user&#39;s attention to the image. This is unhelpful for the process of selecting a profile image, so the recognition engine  208  will notify the scorer  206  to score improperly tagged images as zero. Methods for identifying objects in images include recognition by parts, appearance-based methods (e.g. edge matching, divide-and-conquer search, grayscale matching, gradient matching, large modelbases, etc.), and feature-based methods (e.g. interpretation trees, hypothesize and test, pose consistency, pose clustering, invariance, geometric hashing, scale-invariant feature transform (SIFT), speeded up robust features (SURF), etc.). Persons of ordinary skill in the art will recognize that other methods of object recognition can be performed by the recognition engine  208 . 
     In another embodiment, the recognition engine  208  performs facial recognition of the images to confirm that the user is properly identified. In one embodiment, the recognition engine  208  measures the distance between distinct facial features, such as the eyes, nose and mouth in the image and compares the distance to distinct facial features in a verified image of the user and determines whether the differences are within an acceptable threshold, such as 5%. Persons of ordinary skill in the art will recognize that other methods of facial recognition can be performed by the recognition engine  208 . 
     The recognition engine  208  determines whether the user and other people were not tagged in images when they should have been by detecting objects associated with faces in the image, such as eyes, a nose, a mouth, a head and a body. If the recognition engine  208  determines that there are untagged people in the image, the recognition engine  208  performs facial recognition. In one embodiment, the recognition engine  208  compares the facial measurements against a set of the user and other people that are part of the user&#39;s social graph. This reduces the number of comparisons that the recognition engine  208  makes and improves the accuracy because the image is more likely to involve the user and the user&#39;s friends than people outside of the social graph. 
     The recognition engine  208  determines whether the user&#39;s images contain an object or a person that is part of a social network trend by analyzing profile images and categorizing objects and people in the images to identify types of objects and people and analyzing the user&#39;s images to determine whether they contain the objects or the people. The analysis is transmitted to the trend analyzer  210  for determining a trend based on the objects. For example, the recognition engine  208  identifies the presence of a pink cancer ribbon or a cat in the profile images, receives a request from the trend analyzer  210  to search for pink cancer ribbons or a cat in the user&#39;s images and performs object recognition on the user&#39;s images. 
     In another embodiment, the recognition engine  208  identifies the presence of a person in profile images that is not the same as the user, for example because it is National Dad Appreciation Week or a celebrity recently passed away, and transmits the identity of the person to the trend analyzer  210 . In one embodiment, the recognition engine  208  uses the social graph to determine that the person is related to the user, for example the person is the user&#39;s father, and the recognition engine  208  transmits the relationship to the trend analyzer as well. The recognition engine  208  receives an indication of a trend from the trend analyzer  210  and determines whether the user has images of the person identified as being part of the trend. If yes, the recognition engine  208  transmits the image to the scorer  206  for scoring. 
     The trend analyzer  210  is software including routines for receiving analysis from the recognition engine  208  and identifying trends in profile images. In one embodiment, the trend analyzer  210  is a set of instructions executable by the processor  235  to provide the functionality described below for analyzing trends. In another embodiment, the recognition engine  208  is stored in the memory  237  of the computing device  200  and is accessible and executable by the processor  235 . In either embodiment, the trend analyzer  210  is adapted for cooperation and communication with the processor  235 , the communication unit  245 , the storage  240 , the recognition engine  208 , the suggestion module  212  and other components of the computing device  200  via signal line  228 . 
     In one embodiment, the trend analyzer  210  receives a set of objects or people identified in all profile images and a timestamp that the images were captured. In another embodiment, the trend analyzer  210  receives profile images that were changed recently, such as in the last week to reduce the computations needed to be performed. The trend analyzer  210  applies an algorithm to determine whether the increase in a type of object or person is indicative of a trend. In one embodiment, the algorithm is a trend estimation, which is a statistical technique that generates a model and determines whether a change in the model is random or a trend. For example, if a non-random number of people have profile images of dog, it may be National Dog Appreciation Week. Persons of ordinary skill in the art will recognize that other statistical methods for detecting trends are possible. Once the trend analyzer  210  identifies a trend, the trend analyzer  210  notifies the recognition engine  208  of the trend so that the recognition engine  208  searches the user&#39;s images to identify an object or person associated with the trend if the user&#39;s images have not already been processed by the recognition engine  208 . If the recognition engine  208  processed the user&#39;s images, the trend analyzer  210  transmits the trend to the scorer  206  so that the scorer  206  scores the images based at least in part on the trend. 
     The suggestion module  212  is software including routines for determining a set of suggested profile images. In one embodiment, the suggestion module  212  is a set of instructions executable by the processor  235  to provide the functionality described below for determining the set of suggested profile images. In another embodiment, the suggestion module  212  is stored in the memory  237  of the computing device  200  and is accessible and executable by the processor  235 . In either embodiment, the suggestion module  212  is adapted for cooperation and communication with the processor  235 , the storage  240 , the controller  202 , the user interface engine  214  and other components of the computing device  200  via signal line  230 . 
     The suggestion module  212  receives the scored images from the scorer  206 . The scorer determines an order for the set of profile images and a number of images to suggest. In one embodiment, the suggestion module  212  generates a set of profile images with the highest scored images being ordered in descending order. For example, if there are five images available with only the user tagged, the suggestion module  212  generates a set of the five suggested profile images and provides the suggested profile images to a user by instructing the user interface engine  214  to display the five suggested profile images. If there are less than five images with only the user tagged, the suggestion module  212  generates a set of five suggested profile images with both only the user being tagged and multiple people being tagged in the images. If there are less than five images available of either user-only images and multiple people images, the suggestion module  212  instructs the user interface engine  214  to display the number of images available. Persons of ordinary skill in the art will recognize that the set of five suggested profile images is one example and that other examples, such as two or 10 are possible. 
     In one embodiment, the suggestion module  212  incorporates profile images of objects or people that are identified by the trend analyzer  210  as being part of a trend. In one embodiment, if there are multiple trends and multiple images available, the suggestion module  212  includes a single trend in the set of suggested profile pictures to avoid overwhelming the user. 
     The user interface engine  214  is software including routines for generating a user interface. In one embodiment, the user interface engine  214  is a set of instructions executable by the processor  235  to provide the functionality described below for generating a user interface. In another embodiment, the user interface engine  214  is stored in the memory  237  of the computing device  200  and is accessible and executable by the processor  235 . In either embodiment, the user interface engine  212  is adapted for cooperation and communication with the processor  235 , the social network application  204 , the suggestion module  214  and other components of the computing device  200  via signal line  232 . 
     In one embodiment, the user interface engine  214  receives instructions from the social network application  204  and generates a user interface that displays the social network content requested by the user  125  including posts, comments, the social graph, registration information, preferences, etc. In another embodiment, the user interface engine  214  receives instructions from the suggestion module  212  and generates a user interface displaying the set of suggested profile images. Once the user interface engine  214  generates the user interface, the controller  202  transmits the user interface via the communication unit  245  to the user device  115   a.    
     User Interface 
     Turning now to  FIG. 3 , one example of a graphic representation of a user interface  300  generated by the user interface engine  212  is illustrated. The user modifies the profile by clicking on the parts of the profile that the user wants to edit. The user interface  300  includes sections of a user profile that the user can modify. These sections are divided into two areas: an image section  307  and a text section  309 . The text section  309  includes information about the user, such as bragging rights, occupation and employment history. The image section  307  includes pictures uploaded by the user, such as the picture of the cat  305 . The image section also includes a profile image. In this example the profile image is blank. The user changes the profile image by selecting the change image tab  311  to drag and drop and image into the user interface or select a photo from the user device&#39;s  115  storage. The user interface generates a set of suggested profile images in response to selecting the show more suggestions tab  313 . 
       FIG. 4  illustrates an example of a user interface  400  that the user interface engine  214  displays in response to the user selecting the show more suggestions tab  313 . If the user selects one of the images, the suggestion module  212  updates the user profile with the selected image. 
     In this example, the user interface engine displays five profile images  413 ,  415 ,  417 ,  419 ,  421 . The first three images  413 ,  415 ,  417  are of the user. The third image  417  appears lower in the set because it is an older picture of the user. The fourth and fifth images  419 ,  421  include both the user and other people because the storage  240  did not include five pictures of only the user. In one embodiment, the user&#39;s identity was confirmed by the recognition engine  208 . 
     Methods 
     Referring now to  FIGS. 5 and 6 , various embodiments of the method of the specification will be described.  FIG. 5  is a flow diagram  500  of one embodiment of a method for generating a set of profile images. The social network application  204  registers  502  the user and generates a user profile. The user profile includes a username and password, the user&#39;s name, demographics, bragging rights, work history, education, etc. The user profile is stored in storage  240 . The controller  202  receives  504  a plurality of images and transmits the images to the scorer  206 . The scorer  206  identifies  506  metadata associated with each image. For example, the scorer  206  identifies the number of users tagged in images, the names of users tagged in images and a timestamp that the image was captured. In one embodiment, the scorer  206  also identifies a time that the image was uploaded to account for a user&#39;s preference to display a profile image from recently uploaded images, regardless of the time that the image was captured. The scorer  206  scores  508  the images based at least in part on the metadata. For example, images where only the user is tagged receives a higher score than images where the user and other people are tagged. In another example, more recent pictures receive a higher score than older images. 
     The scorer  206  transmits the scored images to the suggestion module  212 , which generates  510  an ordered set of suggested profile images. The suggestion module  212  transmits the ordered set to the user interface engine  214  with instructions to generate  512  a user interface that includes the ordered set of suggested profile images. The controller  202  transmits the user interface to the user device  115   a  via communication unit  245 . The user selects one of the suggested profile images and the social network application  204  receives  514  a user selection of one of the suggested profile images. The social network application  204  updates  516  the user profile to include the selected profile image. In one embodiment, the controller  202  receives  518  user feedback and transmits the user feedback to the scorer  206 , which modifies the algorithm used during scoring to reflect user preference. For example, if the user consistently selects suggested profile images that include multiple people in the image, the scorer  206  modifies the algorithm to prioritize images with multiple people over images that only include the user. 
       FIG. 6  is a flow diagram  600  of another embodiment of a method for suggesting at least one profile image for a post. The controller  202  receives  602  a plurality of images where a user is tagged. In one embodiment, the images were uploaded to the social network and stored in storage  240 . In another embodiment, the controller  202  receives images from a third-party application  118 , such as a photo-sharing website. The controller  202  transmits the images to the scorer  206 , which identifies  604  metadata associated with each image including an identity of people that are tagged in the images, an identity of a person that tagged the user and a timestamp of when the image was captured and when the image was uploaded to the social network. 
     The controller  202  also transmits the images to the recognition engine  208 , which performs  606  image recognition to confirm the user&#39;s identity, identify other people in the image and identify objects. If the image contains people that were untagged, the recognition engine  208  tags those people. If the image contains an improperly tagged person, the recognition engine removes the improper tag. The recognition engine  208  transmits the results to the scorer  206  and a trend analyzer  210 . The trend analyzer  210  identifies  608  trends based on people and objects identified in the images. The trend analyzer  210  transmits the trend to the scorer  206 , which scores  610  user images that include the object or person. The scorer  206  transmits the score to the suggestion module  212 , which provides  612  an ordered set of suggested profile images to the user. In one embodiment, the suggestion module  212  includes one image that was selected because it is part of a trend. In one embodiment, the suggestion module  212  provides the ordered set of suggested profile images to the user by instructing the user interface engine  214  to generate a user interface that includes the suggested profile images. 
     The foregoing description of the embodiments of the specification has been presented for the purposes of illustration and description. It is not intended to be exhaustive or to limit the specification to the precise form disclosed. Many modifications and variations are possible in light of the above teaching. It is intended that the scope of the disclosure be limited not by this detailed description, but rather by the claims of this application. As will be understood by those familiar with the art, the specification may be embodied in other specific forms without departing from the spirit or essential characteristics thereof. Likewise, the particular naming and division of the modules, routines, features, attributes, methodologies and other aspects are not mandatory or significant, and the mechanisms that implement the specification or its features may have different names, divisions and/or formats. Furthermore, as will be apparent to one of ordinary skill in the relevant art, the modules, routines, features, attributes, methodologies and other aspects of the disclosure can be implemented as software, hardware, firmware or any combination of the three. Also, wherever a component, an example of which is a module, of the specification is implemented as software, the component can be implemented as a standalone program, as part of a larger program, as a plurality of separate programs, as a statically or dynamically linked library, as a kernel loadable module, as a device driver, and/or in every and any other way known now or in the future to those of ordinary skill in the art of computer programming. Additionally, the disclosure is in no way limited to implementation in any specific programming language, or for any specific operating system or environment. Accordingly, the disclosure is intended to be illustrative, but not limiting, of the scope of the specification, which is set forth in the following claims.