Fashion Design Aid System

This study was accepted and published in "Computational Intelligence in Music, Sound, Art and Design" as a part of proceedings for EvoMUSART conferences. EvoMUSART is an International Conference on Computational Intelligence in Music, Sound, Art and Design. The main goal of this conference is to bring together researchers who are using Computational Intelligence techniques for artistic tasks, providing the opportunity to promote, present and discuss ongoing work in the area.  This work was also further developed as a master's degree project. To read more about this project click here.

These days, consumers can make their choice from a wide variety of clothes provided in the market; however, some prefer to have their clothes custom-made. Since most of these consumers are not professional designers, they contact a designer to help them with the process. This approach, however, is not efficient in terms of time and cost and it does not reflect the consumer’s personal taste as much as desired. This study proposes a design system using Interactive Genetic Algorithm (IGA) to overcome these problems.

IGA differs from traditional Genetic Algorithm (GA) by leaving the fitness function to the personal preference of the user. The proposed system uses user’s taste as a fitness value to create a large number of design options, and it is based on an encoding scheme describing a dress as a two-part piece of clothing. The system is designed in the Rhinoceros 3D software, using python, which provides good speed and interface options.


Types

Individual

An individual refers to a 2 piece dress consisting of Upper and Lower parts with spe-cific parameters. An individual is a dictionary of the form {‘upper’:X, ‘lower’:Y, ‘up-perParms’: L1, ‘lowerParms’:L2} where

• X is a GUD

• Y is a GLD

• L1 is a list of integers. Each of its members is a number in range(1,10).

GUD

A GUD (General Upper Design) is an integer in {1..10}. Each GUD refers to one of the 10 different definitions, designed with grasshopper for an upper body design piece. As an example, figure below displays the representation of GUD number 9 in the rhinoceros interface. To be able to show this GUD, 3 initial values have been set for its list of parameters.

GLD

A GLD (General Lower Design) is an integer in {1..10}. Each GLD refers to one of the 10 different algorithms, designed with grasshopper for a lower body design piece. As an example, figure below displays the representation of GLD number 7 in the rhinoceros interface. To be able to show this GUD, 3 initial values have been set for its list of parameters.


Functions

Crossover

Crossover is a random function from pairs of individuals to individuals. The new individual consists of either the upper part of the first and lower part of the second parent, or the upper part of the second and lower part of the first parent. If A is an individual with the dictionary: {‘upper’:9, ‘lower’:7, ‘upperParms’:[8,5.3,10], ’lowerParms’: [5,9,0]} and B is an individual with the dictionary: {‘upper’:10, ‘lower’:5, ‘upperParms’:[3,3,10], ’lowerParms’: [10,5,0.25]}, figure below Shows possible individual C produced by their crossover with the following dictionary: {‘upper’:10, ‘lower’: 7, ‘upperParms’:[3,3,10],’lowerParms’:[5,9,0 ]. This dictionary results in an individual with the upper design of individual B and lower design of individual A.

Mutation

Mutation is a random function from individuals to individuals, which changes a random element in either the list of upperParms or lowerParms of an individual. The process works as follows. The list of upperParm or lowerParms of an individual is chosen at random. An element from one of the 3 element in that list is chosen randomly and replaced with a

randomly generated number in {0..10}

Figure below shows the individual we want to perform mutation on. This individual has the following dictionary: {‘upper’:3, ‘lower’:4, ‘upperParms’: [9,10,1], ’lower-Parms’:[10,10,4]}. Performing mutation on this figure can generate an individual with the following dictionary: {‘upper’:3, ‘lower’:4, ‘upperParms’: [9,10,1], ’lowerParms’:[10,10,6]}, shown below it.

Step

If x is the user's favorite dress in population p, y is the user's second favorite dress in population p, and a,b,c, and d are the remaining members of p, then step(p) is a new population consisting of the following individuals:

  1. X
  2. a mutation of x
  3. a mutation of the crossover of x and y
  4. a crossover of x with a random member of {a,b,c,d}
  5. a crossover of mutation of a random member of {a,b,c,d} and a new individual
  6. a new individual

System Design

The overview of the entire system is shown on the right. To create the initial population, the system selects random elements and combines them into 6 dress designs. User gives his fitness value by selecting 2 of his favorite designs in order of favorability. The system uses a pre-defined parent selection to choose pairs of designs for divergent and recombination. After applying crossover and mutation, the results are displayed again and this loop continues until a desired design is found. As a summary, here is a pseudocode description of the algorithm:

• step 1:Generation of the first population. The GUD, GLD, upperParms and lowerParms of each individual in this population are randomly selected.

• Step 2:display: The 6 individuals are presented to the user through the user inter-face.

• Step 3:Happy with the result? If so, end. If not, go to step 4.

• Step 4: Evaluation. In response to the presented population, the user is asked to give a report based on his subjective view. This evaluation will count as the fitness function in the IGA process.

• Step 5:reproduction. According to the choice of the user, either the convergent or divergent type of reproduction is used to create a new population. Go to step 2.

I BUILT MY SITE FOR FREE USING