νλ μ¬νμμ ν¨μ μ κ°μΈμ κ°μ±μ νννλ μ€μν μλ¨μ λλ€. κ·Έλ¬λ λͺ¨λ μ¬λμκ² μ ν©ν ν¨μ μ μ°ΎκΈ°λ μ½μ§ μμ΅λλ€. νΉν νΌμ€λ 컬λ¬, μΌκ΅΄ν, 체ν λ± μ 체μ νΉμ±μ κΈ°λ°ν λ§μΆ€ν ν¨μ μΆμ² μμ€ν μ μμ§ μΌλ°μ μ΄μ§ μμΌλ©°, μ΄λ‘ μΈν΄ μ¬μ©μλ€μ μμ μκ² μ ν©ν ν¨μ μ μ½κ² μ°Ύμ§ λͺ»νλ μ΄λ €μμ΄ μμ΅λλ€.
μ΅κ·Ό κ°μΈ λ§μΆ€ν μλΉμ€μ λν μμκ° μ¦κ°νκ³ μμΌλ©°, μ΄λ₯Ό λ°νμΌλ‘ μ 체μ νΉμ±μ κ³ λ €ν ν¨μ μΆμ² μμ€ν μ κ°λ°νλ κ²μ΄ μ€μν΄μ§κ³ μμ΅λλ€. λ³Έ νλ‘μ νΈλ μ΄λ¬ν νμμ±μ λ°νμΌλ‘ κ°μΈμ μ 체μ νΉμ±μ λΆμνμ¬ λ§μΆ€ν ν¨μ μμ΄ν μ μΆμ²νλ μμ€ν μ κ°λ°νμμ΅λλ€.
λͺ©ν
- κ°μΈμ μ 체μ νΉμ± λΆμ: μ¬μ©μμ νΌμ€λ 컬λ¬, μΌκ΅΄ν, 체νμ μλμΌλ‘ λΆμν©λλ€.
- λ§μΆ€ν ν¨μ μμ΄ν μΆμ²: λΆμλ μ 체μ νΉμ±μ κΈ°λ°νμ¬ μ¬μ©μμκ² μ ν©ν ν¨μ μμ΄ν μ μΆμ²ν©λλ€.
- μ¬μ©μ νΌλλ°± λ°μ: μ¬μ©μμ νκ°λ₯Ό λ°μνμ¬ μΆμ² νμ§μ μ§μμ μΌλ‘ ν₯μμν΅λλ€.
- μ¬μ©μ μΉνμ μΈ μΉ μΈν°νμ΄μ€ μ 곡: λꡬλ μ½κ² μ¬μ©ν μ μλ μΉ μΈν°νμ΄μ€λ₯Ό ν΅ν΄ μλΉμ€λ₯Ό μ 곡ν©λλ€.
μ£Όμ λ΄μ©
- μ΄λ―Έμ§ μ λ‘λ λ° μ²λ¦¬: μΌκ΅΄ μ¬μ§κ³Ό μ μ μ¬μ§μ μ λ‘λνμ¬ μ 체μ νΉμ±μ μλμΌλ‘ λΆμν©λλ€.
- μ 체 μ 보 μ§μ μ λ ₯ κΈ°λ₯: μ¬μ§ μμ΄λ νΌμ€λ 컬λ¬, μΌκ΅΄ν, 체νμ μ§μ μ λ ₯νμ¬ μΆμ²μ λ°μ μ μμ΅λλ€.
- κ³μ λ³ μΆμ² κΈ°λ₯: μ¬μ©μκ° μ νν κ³μ μ λ§λ ν¨μ μμ΄ν μ μΆμ²ν©λλ€.
- μΆμ² κ²°κ³Ό νμ λ° νΌλλ°± μμ§: μ¬μ©μμκ² λΆμ κ²°κ³Όμ ν¨κ» μΆμ²λ ν¨μ μμ΄ν λͺ©λ‘μ μ 곡νκ³ , μ¬μ©μμ νΌλλ°±μ μμ§νμ¬ μΆμ² λͺ¨λΈμ κ°μ ν©λλ€.
μμ€ν μ ν¬κ² νλ‘ νΈμλ, λ°±μλ, λ¨Έμ λ¬λ λͺ¨λΈλ‘ ꡬμ±λμ΄ μμ΅λλ€.
-
νλ‘ νΈμλ
- μν : μ¬μ©μμμ μΈν°λμ μ λ΄λΉνλ©°, μ¬μ§ μ λ‘λ, μ 체 μ 보 μ λ ₯, μΆμ² κ²°κ³Ό νμ, νΌλλ°± μμ§ λ±μ κΈ°λ₯μ μ 곡ν©λλ€.
- ꡬμ±μμ:
- HTML5, CSS3: μΉ νμ΄μ§ ꡬ쑰 λ° μ€νμΌλ§
- JavaScript (ES6): λμ κΈ°λ₯ ꡬν λ° API ν΅μ
-
λ°±μλ
- μν : νλ‘ νΈμλμμ μμ²ν μμ μ μ²λ¦¬νκ³ , λ¨Έμ λ¬λ λͺ¨λΈμ ν΅ν΄ μ 체μ νΉμ±μ λΆμνλ©°, μΆμ² μμ§μ ν΅ν΄ ν¨μ μμ΄ν μ μΆμ²νκ³ μ¬μ©μ νΌλλ°±μ λ°μν©λλ€.
- ꡬμ±μμ:
- Flask: μΉ μλ² λ° API μλν¬μΈνΈ μ 곡
- Redis & RQ: λΉλκΈ° μμ μ²λ¦¬λ₯Ό μν ν μμ€ν
- λ¨Έμ λ¬λ λͺ¨λΈ κ΄λ¦¬ λ° μ λ°μ΄νΈ λ‘μ§
-
λ¨Έμ λ¬λ λͺ¨λΈ
- νΌμ€λ μ»¬λ¬ μΈ‘μ λͺ¨λΈ
- λ°μ΄ν° μ μ²λ¦¬: μΌκ΅΄ μ΄λ―Έμ§μμ νΌλΆ μμλ§ μΆμΆνμ¬ RGB κ°μ μ»μ΅λλ€.
- μμ κ³΅κ° λ³ν λ° λΆλ₯: HSV λ° Lab μμ 곡κ°μΌλ‘ λ³νν ν, K-Means ν΄λ¬μ€ν°λ§μ ν΅ν΄ νΌμ€λ 컬λ¬λ₯Ό λΆλ₯ν©λλ€.
- μΌκ΅΄ν λΆλ₯ λͺ¨λΈ
- λͺ¨λΈ μν€ν μ²: EfficientNetB4 λͺ¨λΈ κΈ°λ°μ μ μ΄νμ΅μ μ¬μ©ν λ₯λ¬λ λͺ¨λΈ μ¬μ©
- λ°μ΄ν° μ¦κ°: μ΄λ―Έμ§ νμ , λ°μ λ±μ ν΅ν΄ λ°μ΄ν°μ μ νμ₯νμ¬ λͺ¨λΈμ μΌλ°ν μ±λ₯μ ν₯μμν΅λλ€.
- 체ν μΈ‘μ λͺ¨λΈ
- KeyPoint μΆμΆ: MediaPipeλ₯Ό μ¬μ©νμ¬ μ 체 μ£Όμ λΆμμ μ’νλ₯Ό μΆμΆν©λλ€.
- ν리 λ° κ°μ΄ μμΉ μΆμ : νκ΅μΈμ νκ· μ 체 λΉμ¨ λ°μ΄ν°λ₯Ό νμ©νμ¬ ν리μ κ°μ΄μ μμΉλ₯Ό μμΈ‘ν©λλ€.
- λ°°κ²½ μ κ±° λ° κΈΈμ΄ μΈ‘μ : Rembg λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νμ¬ λ°°κ²½μ μ κ±°νκ³ μ 체 λΆμμ λλΉλ₯Ό μΈ‘μ ν©λλ€.
- μΆμ² μμ€ν
λͺ¨λΈ
- Random Forest Regressor κΈ°λ° λͺ¨λΈ
- μ¬μ©μ νΉμ±κ³Ό μ·μ νΉμ±μ μ λ ₯μΌλ‘ λ°μ μμ νμ μ μμΈ‘ν©λλ€.
- μ½ν
μΈ κΈ°λ° νμ
νν°λ§
- μ·μ ν μ€νΈ νΉμ±μ Tf-Idfλ‘ λ²‘ν°ννμ¬ μ½μ¬μΈ μ μ¬λλ₯Ό κ³μ°νκ³ , μ μ¬ν μμ΄ν μ μΆμ²ν©λλ€.
- μ¬μ©μ νΌλλ°± λ°μ
- μ¬μ©μμ νκ°λ₯Ό λͺ¨λΈ νμ΅μ λ°μνμ¬ μΆμ² νμ§μ μ§μμ μΌλ‘ κ°μ ν©λλ€.
- Random Forest Regressor κΈ°λ° λͺ¨λΈ
- νΌμ€λ μ»¬λ¬ μΈ‘μ λͺ¨λΈ
- μΈμ΄ λ° νλ μμν¬
- Python 3.11
- Flask
- ν¨ν€μ§ λ° λΌμ΄λΈλ¬λ¦¬
- μ΄λ―Έμ§ μ²λ¦¬ λ° μ»΄ν¨ν° λΉμ
- OpenCV
- MediaPipe
- Dlib
- Rembg
- λ¨Έμ λ¬λ λ₯λ¬λ λ° λ°μ΄ν° μ²λ¦¬
- TensorFlow
- scikit-learn
- Pandas
- Numpy
- Joblib
- κΈ°ν
- Redis
- RQ (Redis Queue)
- Flask-Session
- μ΄λ―Έμ§ μ²λ¦¬ λ° μ»΄ν¨ν° λΉμ
- μΈμ΄ λ° λΌμ΄λΈλ¬λ¦¬
- HTML5
- CSS3
- JavaScript (ES6)
- νΌμ€λ μ»¬λ¬ μΈ‘μ λͺ¨λΈ
- K-Means Clustering (
kmeans_model_L2.pkl)
- K-Means Clustering (
- μΌκ΅΄ν λΆλ₯ λͺ¨λΈ
- TensorFlow Lite (
faceshape_efficientnetb4_crop.tflite) - EfficientNetB4
- Haar Cascade Classifier (
haarcascade_frontalface_default.xml)
- TensorFlow Lite (
- 체ν μΈ‘μ λͺ¨λΈ
- MediaPipe Pose Estimation
- Dlib Face Landmarks (
shape_predictor_68_face_landmarks.dat)
- μΆμ² μμ€ν
λͺ¨λΈ
- Random Forest Regressor
- μ½ν μΈ κΈ°λ° νμ νν°λ§
- Python 3.8 μ΄μ
- Redis μλ²
-
νλ‘μ νΈ ν΄λ‘
git clone https://github.com/your-repo/fashion-recommendation-system.git cd fashion-recommendation-system -
κ°μνκ²½ μμ± λ° νμ±ν
python -m venv venv source venv/bin/activate # Windowsμ κ²½μ°: venv\Scripts\activate
-
νμν ν¨ν€μ§ μ€μΉ
pip install -r requirements.txt
Redisκ° μ€μΉλμ΄ μμ§ μμ κ²½μ° Redis 곡μ μ¬μ΄νΈμμ μ€μΉν©λλ€.
Redis μλ²λ₯Ό μ€νν©λλ€.
redis-server-
Flask μ± μ€ν
python app.py
-
μ컀(worker) μ€ν
python worker.py
μΉ λΈλΌμ°μ μμ http://localhost:5000μ μ μνμ¬ μ ν리μΌμ΄μ
μ μ¬μ©ν©λλ€.
-
μ΄λ―Έμ§ μ λ‘λ
- μΌκ΅΄ μ¬μ§
- μ μ μ¬μ§
- νμ μ¬λ¦° μ μ μ¬μ§
-
μ 보 μ λ ₯
- μ±λ³ μ ν
- λμ΄ μ λ ₯
-
μΆμ² λ°κΈ°
"μΆμ² λ°κΈ°" λ²νΌμ ν΄λ¦νμ¬ μ 체μ νΉμ± λΆμ λ° ν¨μ μμ΄ν μΆμ²μ λ°μ΅λλ€.
-
μ 체 μ 보 μ λ ₯
- νΌμ€λ μ»¬λ¬ μ ν
- μΌκ΅΄ν μ ν
- 체ν μ ν
-
μ 보 μ λ ₯
- μ±λ³ μ ν
- λμ΄ μ λ ₯
-
μΆμ² λ°κΈ°
"μΆμ² λ°κΈ°" λ²νΌμ ν΄λ¦νμ¬ ν¨μ μμ΄ν μΆμ²μ λ°μ΅λλ€.
-
μ 체μ νΉμ± λΆμ
-
νΌμ€λ μ»¬λ¬ μΈ‘μ
- μΌκ΅΄ μ΄λ―Έμ§μμ νΌλΆ μμμ μΆμΆνκ³ , RGB κ°μ κΈ°λ°μΌλ‘ HSV λ° Lab μμ 곡κ°μΌλ‘ λ³ννμ¬ νΌμ€λ 컬λ¬λ₯Ό λΆλ₯ν©λλ€.
- K-Means ν΄λ¬μ€ν°λ§μ ν΅ν΄ λ΄, μ¬λ¦, κ°μ, κ²¨μΈ νμ μΌλ‘ λΆλ₯ν©λλ€.
-
μΌκ΅΄ν λΆλ₯
- EfficientNetB4 κΈ°λ°μ λ₯λ¬λ λͺ¨λΈμ μ¬μ©νμ¬ μΌκ΅΄νμ ννΈν, κΈ΄ν, νμν, λ₯κ·Όν, μ¬κ°νμΌλ‘ λΆλ₯ν©λλ€.
- λ°μ΄ν° μ¦κ° λ° μ κ·νλ₯Ό ν΅ν΄ λͺ¨λΈμ μ±λ₯μ ν₯μμμΌ°μ΅λλ€.
-
체ν μΈ‘μ
- MediaPipeλ₯Ό μ¬μ©νμ¬ μ 체μ μ£Όμ KeyPointλ₯Ό μΆμΆνκ³ , νκ΅μΈμ νκ· μ 체 λΉμ¨ λ°μ΄ν°λ₯Ό νμ©νμ¬ ν리μ κ°μ΄μ μμΉλ₯Ό μμΈ‘ν©λλ€.
- Rembg λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νμ¬ λ°°κ²½μ μ κ±°νκ³ , μ 체 λΆμμ λλΉλ₯Ό μ ννκ² μΈ‘μ ν©λλ€.
-
-
ν¨μ μμ΄ν μΆμ²
-
Random Forest κΈ°λ° μΆμ² μμ€ν
- μ¬μ©μ νΉμ±(νΌμ€λ 컬λ¬, μΌκ΅΄ν, 체ν)κ³Ό μ·μ νΉμ±μ μ λ ₯μΌλ‘ λ°μ μμ νμ μ μμΈ‘ν©λλ€.
- μ¬μ©μ νΌλλ°±μ λ°μνμ¬ λͺ¨λΈμ μ§μμ μΌλ‘ μ λ°μ΄νΈν©λλ€.
-
μ½ν μΈ κΈ°λ° νμ νν°λ§
- μ·μ ν μ€νΈ νΉμ±μ Tf-Idfλ‘ λ²‘ν°ννκ³ , μ½μ¬μΈ μ μ¬λλ₯Ό κ³μ°νμ¬ μ μ¬ν μμ΄ν μ μΆμ²ν©λλ€.
- μ¬μ©μ νΉμ±μ λ§λ μ·μ νΉμ±μ μ°κ²°νμ¬ λμ± κ°μΈνλ μΆμ²μ μ 곡ν©λλ€.
-
-
κ³μ μ ν κΈ°λ₯
- κ³μ μ μ ννμ¬ ν΄λΉ κ³μ μ λ§λ ν¨μ μμ΄ν μ μΆμ²λ°μ μ μμ΅λλ€.
-
μΆμ² μμ΄ν λ 보기
- μΆμ² κ²°κ³Ό νμ΄μ§μμ "λ 보기" λ²νΌμ ν΄λ¦νμ¬ μΆκ°μ μΈ μΆμ² μμ΄ν μ νμΈν μ μμ΅λλ€.
-
μΆμ² νμ§μ λν νΌλλ°± λ°μ
- μ¬μ©μμ νκ°λ₯Ό λͺ¨λΈ νμ΅μ λ°μνμ¬ μΆμ² νμ§μ μ§μμ μΌλ‘ κ°μ ν©λλ€.
λ³Έ μμ€ν μ κ°μΈμ μ 체μ νΉμ±μ λΆμνμ¬ λ§μΆ€ν ν¨μ μμ΄ν μ μΆμ²νλ μΉ μ ν리μΌμ΄μ μ λλ€.
μ¬μ©μλ μμ μ μΌκ΅΄ λ° μ μ μ¬μ§μ μ λ‘λνκ±°λ μ 체 μ 보λ₯Ό μ§μ μ λ ₯νμ¬ μΆμ²μ λ°μ μ μμ΅λλ€. λΆμλ νΌμ€λ 컬λ¬, μΌκ΅΄ν, 체ν μ 보λ₯Ό λ°νμΌλ‘ λ¨Έμ λ¬λ κΈ°λ°μ μΆμ² μμ§μ΄ μ΅μ μ ν¨μ μμ΄ν μ μ μν©λλ€.
-
μΉ μ ν리μΌμ΄μ μ μ
- μΉ λΈλΌμ°μ μμ
http://localhost:5000μ μ μν©λλ€.
- μΉ λΈλΌμ°μ μμ
-
μ¬μ§ μ λ‘λ λλ μ 체 μ 보 μ λ ₯
- μ¬μ§ μ λ‘λ λ°©μ: μΌκ΅΄ μ¬μ§, μ μ μ¬μ§, νμ μ¬λ¦° μ μ μ¬μ§μ μ λ‘λν©λλ€.
- μ§μ μ λ ₯ λ°©μ: νΌμ€λ 컬λ¬, μΌκ΅΄ν, 체νμ μ νν©λλ€.
-
μ±λ³ λ° λμ΄ μ λ ₯
- μ±λ³μ μ ννκ³ λμ΄λ₯Ό μ λ ₯ν©λλ€.
-
μΆμ² λ°κΈ°
- "μΆμ² λ°κΈ°" λ²νΌμ ν΄λ¦νμ¬ λΆμ κ²°κ³Όμ μΆμ² μμ΄ν μ νμΈν©λλ€.
-
μΆμ² μμ΄ν νμΈ
- μΆμ²λ ν¨μ μμ΄ν λͺ©λ‘κ³Ό κ° μμ΄ν μ μμΈ μ 보λ₯Ό νμΈν μ μμ΅λλ€.
-
μΆκ° μμ΄ν νμΈ
- νμν κ²½μ° "λ 보기" λ²νΌμ ν΄λ¦νμ¬ λ λ§μ μΆμ² μμ΄ν μ λ³Ό μ μμ΅λλ€.
-
νμ λ§€κΈ°κΈ°
- μΆμ²λ ν¨μ μ¬μ§μ ν΄λ¦νμ¬ νμ μ λ§€κΈΈ μ μμ΅λλ€.
-
μ΄μ±ν (201924532)
- μν : νΌμ€λμ»¬λ¬ μΈ‘μ κ°λ°, μΆμ² μμ€ν κ°λ°, λ°±μλ λ° νλ‘ νΈμλ κ°λ°
- e-mail: p.plue1881@gmail.com
- github: https://github.com/NextrPlue
-
κΉνν (201924451)
- μν : μΌκ΅΄ν μΈ‘μ κ°λ°, 체ν μΈ‘μ κ°λ°, μΆμ² μμ€ν κ°λ°, λ°±μλ κ°λ°
- e-mail: bigteach0508@pusan.ac.kr
- github: https://github.com/minchoCoin
- Yun-Seok Jung, βA Study on the Quantitative Diagnosis Model of Personal Color,β Journal of Convergence for Information Technology, Vol. 11, No. 11, pp. 277-287, 2021. (in Korean)
- Jong-Suk An, βA Study on Effective Image Making Depending on Hair Style and Neckline,β J Korean Soc Cosmetol, Vol. 15, No. 1, pp.342-351, 2009. (in Korean)
- Soo-ae Kwon, Fashion and Life, Gyohakyungusa, 2016.
- β2023 Consumption Trend Series - 03 Personalized Services,β MezzoMedia [Online], Available: https://www.mezzomedia.co.kr/data/insight_m_file/insight_m_file_1605.pdf (downloaded 2024, May. 19)
- So-young Lee, βPersonal Color Tone Type and Categorization of Harmonious Colors According to Skin Color,β M.S. thesis, Graduate School of Cultural and Information Policy, Hongik Univ., Seoul, South Korea, 2019. (in Korean)
- Trotter, Cameron, et al. "Human body shape classification based on a single image." arXiv preprint arXiv:2305.18480 (2023)

