공부하기싫어
article thumbnail
  • 다중선형회귀 코드에 결과값 프린트

이전에 짯던 코드인

https://github.com/cyanindy/howwasit/blob/532c7e51b26dcd0a7e0298f2fe0c84ca24d6cae5/OSS_dev_competition/Multiple_Linear_Regression.py

 

GitHub - cyanindy/howwasit: personal repository

personal repository. Contribute to cyanindy/howwasit development by creating an account on GitHub.

github.com

에서

만약 x1,x2,x3 값이 95,99,100 이라면 머신러닝된 w1,w2,w3,b 값을 이용해 결과값을 출력시키는 코드를 짜보았다.

1
2
3
4
5
6
w1_result = sess.run(w1)
w2_result = sess.run(w2)
w3_result = sess.run(w3)
b_result = sess.run(b)
answer = 95 * w1_result + 99 * w2_result + 100 * w3_result + b_result
print(int(answer))
cs

결과값은

196

으로 확인되었다.

 

  • 60개의 피팅모델 사진 머신러닝 시키기

자 우선 목표는

60개의 모델 사진의 상의 하의 를 각각 x데이터와 y데이터에 담아 학습시키고

새로운 사진을 입력받으면 rgb 를 추출해 각각 x1, x2, x3 로 치환하고

머신러닝을 통해 구해진 w1,w2,w3,b 값을 이용해

Hypothesis(y추정값) = w1*x1 + w2*x2 + w3*x3 + b

을 구해볼 것이다.

 

머신러닝이 된다면 이전 글에서 만들었던 csv 파일에서

만약 1행의 색깔이 입력되었다면 출력값은 몇행인지를 제일 오른쪽 열에 추가하여

안드로이드 스튜디오로 어플을 만든 후

머신러닝을 통한 회귀분석 값이 입력된 csv 파일을 참조하게 하여

이후 patch 를 통해 더 많은 결과 혹은 정확한 결과를 보여주도록 할 예정이다

쉽게말해서

분석은 데스크탑에서 한 후, 결과값을 csv 파일로 추출하여 안드로이드 어플에 패치 시키는 것 이 목표이다.

 

  • main_ColorIs.py 에 다중선형회귀 코드 합치기

이렇게 합쳐보았고

결과값또한 나오도록 해봤다

 

우선

w1_result = sess.run(w1)

w2_result = sess.run(w2)

w3_result = sess.run(w3)

b_result = sess.run(b)

answer = int(csv.loc[0,"R"]) * w1_result + int(csv.loc[0,"G"]) * w2_result + int(csv.loc[0,"B"]) * w3_result + b_result

print(int(answer))

 

로 해서 pandas 로 인덱스 처리해준 csv 파일의 1번행 값인 white의 rgb 인 255,255,255 가 상의 색깔일때의

하의색인 answer 를 프린트 시켜보았다.

 

cost 값이..?

cost 값이 좀 높긴 하였지만 결과값은 28이 나왔고 이를 csv파일에서 일련번호로 찾아보니

khaki

하의색으로는 카키색이 나왔다.

실제 색 비교

하얀상의에 뭘입어도 어울리긴 하지만

머신러닝의 추천 색깔은 해당 카키색으로 추출되었다.

 

  • cost 값을 줄여보자

10000번 학습한 cost 값이 400대가 나왔다.

사진이 부족한 것도 있고 사진들의 전처리가 일일히 하다보니 정확하게 rgb 값이 추출되도록 처리되지 않은 것도 있지만 그래도 한번 3만번 학습을 시켜보도록 하겠다.

1
2
3
4
5
6
7
for step in range(30001) : 
    cost_val, hy_val, _ = sess.run([cost, hypothesis, train],
    feed_dict = { x1 : x1_data_R, x2 : x2_data_G, x3 : x3_data_B, Y : Y_data})
    if step % 5000 == 0 :
        print(step, "Cost : ",cost_val,"\nPrediction:\n",hy_val, 
        "\nWeight,bias :\n",sess.run(w1),sess.run(w2),sess.run(w3),sess.run(b))
        print("==============")
cs

결과는?

3만번 학습

21번행의 머스타드 색이 나왔다

 

음.. 그러면 상의색이 하얀색이 아닌 파란색으로 한번 돌려보자

1
2
3
4
5
6
w1_result = sess.run(w1)
w2_result = sess.run(w2)
w3_result = sess.run(w3)
b_result = sess.run(b)
answer = int(csv.loc[31,"R"]) * w1_result + int(csv.loc[31,"G"]) * w2_result + int(csv.loc[31,"B"]) * w3_result + b_result
print(int(answer))
cs

3만번 그대로 돌려보았다

결과는?

상의색-blue

38번이면 brown 색이다

그림판으로 보면

음...

어울리나..?

37- 버버리색

같은 코드를 그냥 한번 더 돌려보았을때

cost 값이 30정도 줄었고

결과값은 버버리색으로 위의 갈색보다 살짝 연한 색이 추출되었다.

 

  • 안드로이드 앱 만들기

대충 머신러닝은 가능하게 된것 같으니

이제 유저들이 이용할 수 있는 플렛폼을 만들어야겠다.

 

1. 어플을 만들어서 상의 혹은 하의를 선택할 수 있게 하고

2. 유저의 갤러리에서 사진을 선택하거나 촬영한 후

3. 사진의 규격을 수정하여 rgb 값을 추출한 후

4. 만들어놓은 csv 파일에서 해당 색을 찾아서

5. 미리 만들어놓은 학습 결과 값을 출력하고

6. 그 색깔에 맞는 하의를 판매하는 쇼핑몰의 이름과 해당 색깔의 바지를 판매하고있는 링크까지

이렇게 개발을 해봐야겠다.

 

글을 쓰는 시점이 9월6일인데 앞으로 2일남았지만

해당 기능을 구현할 수 있을지는 모르겠다.

최대한 한번 할수 있을데까지는 해봐야겠지