๋ชฉ์ฐจ
- ๊ณํ ๋ฐ ์งํ ๋จ๊ณ
- ๋ง๋ฌด๋ฆฌ ๋จ๊ณ
- ํผ๋๋ฐฑ
๊ณํ ๋ฐ ์งํ ๋จ๊ณ
ํ๋ก์ ํธ ์งํ ์์
๋ฐ์ โ ํ๋ก์ ํธ ์ฃผ์ ์ ์ , ๋ฐ์ ์๋ฃ์ ๋์์๋ ๊ธฐ๋ฅ๊ตฌํ ํ์ (๋ชจ๋ ํ์์ด ํ์๊ธฐ๋ฅ ์ดํดํ๊ธฐ, ์ถ๊ฐ๊ธฐ๋ฅ ์ด๋๊น์ง ๊ตฌํํ ๊ฒ์ธ๊ฐ?) โ ํ๋ก์ ํธ์ ํ์ํ Notion page, GitHub repository ๊ฐ์ค โ Figma ์ด์ฉํด ๋ ์ด์์ ์ ์, GitHub Readme, Wiki ์
๋ก๋ โ ์ญํ ๋ถ๋ด ๋ฐ ๋ง๊ฐ๊ธฐํ ์ค์ โ ๋ง๊ฐ๊ธฐํ๊น์ง ์ด์ฌํ ๋ง๋ค๊ธฐ! โ ๋ชจ๋ branch merge (ํ์ผ ํฉ์น๊ธฐ)โ ์์ฑ! โ ์ฝ๋๋ฆฌ๋ทฐ
ํ๋ก์ ํธ ์ดํด ๋ณด๊ธฐ
์ฌ์จ ์บ๋ฆญํฐ๋ฅผ ๋ชจ๋ ์๊ณ ์๋์?
๊ถ๊ธํ ์ฌ์จ ์บ๋ฆญํฐ๋ฅผ ๋ฌผ์ด๋ณด์ธ์! ํน์ ๋์ ๋ฎ์ ์ฌ์จ์ ์ฐพ์๋ณด๊ณ ์์ ๋กญ๊ฒ ์ฝ๋ฉํธํด ๋ณด์ธ์!
์๋น์ค ์๊ฐ
์ฌ์จ ์ฌ์ง ์
๋ ฅ์ ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ์ด ํ์ตํ ๋ฐ์ดํฐ๋ฅผ ๋ฐํ์ผ๋ก ์บ๋ฆญํฐ ์ด๋ฆ์ ์ถ๋ ฅํด์ฃผ๋ ์๋น์ค + ์ฌ์ฉ์๊ฐ ํด๋น ์บ๋ฆญํฐ์ ๊ด๋ จํ ๋ด์ฉ์ ์์ ๋กญ๊ฒ ์ถ๊ฐํ๊ณ ์ญ์ ํ ์ ์๋ ์๋น์ค
์ฌ์ฉํ ๋ชจ๋ธ
custom๋ CNN
๋ฐ์ดํฐ์
The Simpsons Characters Data
๊ฐ๋ฐ ํด
Vscode, Pycharm, Python, Tensorflow, Keras, Flask, MongoDB, HTML, CSS, JavaScript, Jinja2, Axios, Ajax, Firebase
ํ์
ํด
Notion, Github, Figma, Slack, GatherTown
ํ์๊ธฐ๋ฅ (์๋ฃ)
-
๋ฉ์ธํ์ด์ง์์ ์ฌ์ฉ์๊ฐ ์ด๋ฏธ์ง ์
๋ก๋ -> ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ์ด ์ด๋ฅผ ์ธ์ํ์ฌ ํด๋น ์ด๋ฏธ์ง์ ์นดํ
๊ณ ๋ฆฌ๋ฅผ ๊ฒฐ๊ณผํ์ด์ง์ ์ถ๋ ฅ
-
์ธ์ํ ์ฌ์จ์ด๋ฏธ์ง์ ๋ผ๋ฒจ ๋ฐ์ดํฐ๋ฅผ DB์ ์ ์ฅ
์ถ๊ฐ๊ธฐ๋ฅ (์๋ฃํ ๊ฒ์ ๋ฐ์ค)
- ๋ฐ์ดํฐ ์ถ๊ฐ ํ์ต
- ๋ง์ด ์กฐํ๋ ์บ๋ฆญํฐ๋ฅผ GET์ผ๋ก ๊ฐ์ ธ์ ๊ฒฐ๊ณผํ์ด์ง์ ๊ทธ๋ํ๋ก ์ถ๋ ฅ
- (์ด๋ค ์ฌ์จ ์บ๋ฆญํฐ๊ฐ ๊ฐ์ฅ ๋ง์ด ์กฐํ๋์๋์ง, ์๋ ค์ง์ง ์์ ์บ๋ฆญํฐ๊ฐ ๋ง์ด ์กฐํ๋์์ ๊ฒ์ด๋ผ ์์๋จ)
- ์ด๋ฏธ์ง ๊ฒฐ๊ณผ ๊ณต์ ๊ธฐ๋ฅ (ogํ๊ทธ ์ด์ฉ : ์๊ฐ ๋จ์ ๊ฒฝ์ฐ ์งํ)
- ๊ฒ์๊ธฐ๋ฅ์ ๊ฐ์ง ์ฌ์จ ์ํค ํ์ด์ง ์ ์
- ์ฌ์จ ์ํคํ์ด์ง์์ DB๋ด์ฉ(์บ๋ฆญํฐ์ด๋ฆ, ์ฌ์ง, ์ฝ๋ฉํธ)๊ณผ ์๋ฒ์์ ์์ฑ๋ ์ค๋ช
๊ฐ์ ธ์ jinja2๋ก ํ์ด์ง ๋์ฐ๊ธฐ
- ํ์ด์ด๋ฒ ์ด์ค ์ด์ฉํด ๋ฉ์ธํ์ด์ง์์ ์ด๋ฏธ์ง ๋๋๊ทธ-๋๋กญ๊ธฐ๋ฅ ๊ตฌํ
- ์ฌ์จ ์ํคํ์ด์ง์์ ๋ชจ๋ฌ ๋์ด ๋ค DB์ฐ๋ํด ์ฝ๋ฉํธ ์ถ๊ฐ, ์ญ์ ํ ์ ์๋ ๊ธฐ๋ฅ ์ ์
ํ์ด์ง ์ด์ฉ์
์ฌ์จ ํฌ, ์ฌ์จ์ ๋๋ฉ์ด์
๋ณธ ์ฌ๋
๋์ ๊ณผ์ (์๋ฃํ๊ฒ์ ๋ฐ์ค)
- GIT์ Pull Request๋ฅผ ์์ฒญ์ ํ์ ์ค ํ ๋ช
์ด์์ด ์ฝ๋๋ฅผ ๊ฒํ ํ ์ฝ๋ฉํธ๋ฅผ ๋ฌ์์ฃผ์ธ์. ๋ฆฌ๋ทฐ๊ฐ ๋๋๋ฉด Merge๋ฅผ ์งํ
- ํ๋ก ํธ์๋์ ๋ฐฑ์๋๋ฅผ ๋ณ๋์ ๋ ํฌ์งํ ๋ฆฌ๋ก ๋ถ๋ฆฌํด์ ์ฌ์ฉ
- ๋ฐฑ์๋ ๊ฐ๋ฐ์ Postman์ ํ์ฉ
- jQuery์ด์ธ์ javascript๋ฅผ ์ด์ฉํ ํ๋ก ํธ์๋ ๊ตฌํ
- Flask API ๋ชจ๋ํ - ๊ฐ์ธ ์์
์ app.py์ ์์
ํ ์ถํ ํฉ์น ๋ ๋ชจ๋ํ
- ๋ค์ํ ๋ชจ๋ธ๋ก ํ์ต, ์ฑ๋ฅ๊ฒฐ๊ณผ๋ฅผ benchmark(๋น๊ต)
ํ ๋ด ๊ณต์ง
- ๋ฐํ์ : ์ค๊ฐํ
- ์์์ดฌ์ : ์ ์ง์
- ๊ฐ์ธ์ด ๋งก์ ๊ธฐ๋ฅ์ ์ฐ์ Github ๊ฐ์ธ ๋ธ๋์น์ ์
๋ก๋ (merge๋ ๋งจ ๋ง์ง๋ง์)
- Github Readme์ ๊ฐ์๊ฐ ์ค๋ ํ ์ผ ์
๋ก๋
- Notion ๊ฐ๋ฐ์ผ์ ์ ์๊ธฐ๊ฐ ๋งก์ ๊ธฐ๋ฅ ์ฐธ์กฐํ์ผ ์
๋ก๋ (์ถํ ์ฝ๋๋ฆฌ๋ทฐ ๋ฐ ํ์ ์๋ฃ ๊ณต์ ์ฉ)
- Github Readme, Wiki๋ ๊ณ์ ์
๋ฐ์ดํธ
- ์๋ฆฌ๋น์ธ์ผ ์๊ฑฐ๋ ์๊ธฐ ๋๋๋ Gather, Slack์ผ๋ก ์ํต
- ๋ฏธ๋ฆฌ ์ ํด๋ ํด๋, ํ์ผ ๊ฒฝ๋ก์ค์ ์งํค๊ธฐ
๊ฒฝ๋ก์ค์
- ์ด๊ธฐ (ํ๋ก์ ํธ ์งํํ๋ฉด์ ๋ณ๊ฒฝ๋ ์ ์์)
- ์ต์ข
- ํ๋ช
๊ณผ ํ์: ๊ฐํ์ฑ๊ณต(6์กฐ) (์ค๊ฐํ[ํ์ฅ], ๊น๋ฏผ์ฌ, ์ ์ง์, ์ด์นํ)
- ๊ฐ๋ฐ ๊ธฐ๊ฐ : 22.05.19.๋ชฉ ~ 22.05. 24.ํ ์คํ 5:00 ๋ง๊ฐ
๊ฐ๋ฐ ์ผ์
๋ ์ด์์
API ์ค๊ณ
๋ง๋ฌด๋ฆฌ ๋จ๊ณ(์์ฑ)
- ๋ธ๋์น ํ์ฉ
- ๊ฐ์ ๋งก์ ํ์ด์ง์ ๋ฐ๋ฅธ ๋ธ๋์น ์์ฑ ํ ์์
ํ์ด์ง ์์
๋ง์น ๋ค merge ํ ํ์ผ ํฉ์น๊ธฐ ์งํ โ ์ถ๊ฐํด์ผํ ์ฌํญ์ด๋ ๊ฐ์ธ์ด ์คํํด๋ณผ ์ฌํญ ์์ผ๋ฉด ๋๋ค๋ฅธ ๋ธ๋์น ์์ฑ ํ ์์
โ ์ต์ข
merge
์ฌ์ฉ๋ ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ
custom๋ CNN ๋ชจ๋ธ ์ด์ฉ
๊ตฌํํ ํ์ด์ง ์ ๋ฆฌ
์ฌ์ฉํ ๊ธฐ๋ฅ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
Python, Tensorflow, Flask, Jinja2, Axios, Ajax, CSS, HTML, JavaScript, Firebase
๋จธ์ ๋ฌ๋ ๋ชจ๋ธ ์คํ ๊ฒฐ๊ณผ
- ๊ฐ๊ฐ ๋ค๋ฅธ ๋ชจ๋ธ 3๊ฐ๋ก ์คํ ํด๋ณธ ๊ฒฐ๊ณผ ์์ดํ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ด๊ฑฐ๋ ์ ์๋ฏธํ ์ฐจ์ด๊ฐ ๋์ง ์์์.
- tensorflow๋ก ์ค๊ณ๋ CNN ๋ชจ๋ธ 2๊ฐ, pytorch๋ก ์ค๊ณ๋ Resnet18 ๋ชจ๋ธ 1๊ฐ
๋ชจ๋ธ ์คํ ๊ฒฐ๊ณผ
1) custom_1 CNN (92%) : ์ด๋ฒ ํ๋ก์ ํธ์์ ์ฌ์ฉ๋จ
Epoch 1/50
189/189 [==============================] - 105s 484ms/step - loss: 3.1456 - accuracy: 0.1013 - val_loss: 2.9746 - val_accuracy: 0.1671
...
Epoch 50/50
189/189 [==============================] - 90s 477ms/step - loss: 0.3779 - accuracy: 0.8928 - val_loss: 0.4056 - val_accuracy: 0.9229
2) custom_2 CNN (95%)
3) Resnet18 (95%)
๋๋ผ์ด๋ธ์์ ๋จธ์ ๋ฌ๋ ํ์ผ ๊ณต์ ํ๋ฉฐ ํ๋ก์ ํธ ์งํ
๊ธฐ๋ฅ ์์ฐ
๋ฉ์ธํ์ด์ง-๊ฒฐ๊ณผํ์ด์ง
์ด๋ฏธ์ง ๋๋๊ทธ์ค ๋๋กญ
- ์ฌ์ง์
Firebase
์ ์ ์ฅํ ๋ค URL์ DB์ ์ ์ฅํ๋ ๋ฐฉ์์ผ๋ก ์งํํ์๊ณ , cookie์ ์ฌ์ง URL๊ณผ ๋ชจ๋ธ์ด ์์ธกํ ๊ฒฐ๊ณผ๊ฐ์ ์ ์ฅํด ์ด๋ฅผ ๊ฒฐ๊ณผํ์ด์ง์์ ํ์ฉํ์๋ค.
- ์ด๋ฏธ์ง ๋๋๊ทธ ํ โFind simpsonโ ๋ฒํผ์ ๋๋ฅด๋ฉด ๊ฒฐ๊ณผํ์ด์ง๋ก ์ด๋ํ๋ค.
- ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํ์ฌ ์ฐจํธ๋ก ์ด๋ค ์บ๋ฆญํฐ๊ฐ ๋ง์ด ์กฐํ๋์๋์ง ๋ณด์ฌ์ฃผ์๋ค.
- chart์ ๋ฐ์ดํฐ๋ฅผ jinja2๋ก ๋ณด๋ผ๋ '
๋ผ๋ ํน์๋ฌธ์๊ฐ HTML์์์&
๋ผ๊ณ ์ฝํ๋ฉด์ ์ ์ฒด ๋ฌธ์์ด์ด &string&
๋ก ์ฝํ๋ ํ์์ด ๋ฐ์ํ๋๋ฐ ์ด๋ฅผ |safe
๋ก ํด๊ฒฐํ์๋ค.
- โ๋๋ฌด์ํคโ์ฒ๋ผ ์ฌ์ฉ์๊ฐ ๊ฒฐ๊ณผ ํ๋ฉด์ ๋์์ง ์บ๋ฆญํฐ์ ๊ดํ ์ค๋ช
์ ์ธ ์ ์๊ฒ ๊ตฌํํ์๋ค. โPost!โ๋ฒํผ์ ๋๋ฅผ ์ ๋ชจ๋ธ์ด ์์ธกํ ์บ๋ฆญํฐ์ด๋ฆ(character_name)๊ณผ ์์ฑํ ์ค๋ช
(comments)์ด DB์ โSimpson/commentsโ์ ์ ์ฅ๋๋ค.
(์ํคํ์ด์ง๋ด ๋ชจ๋ฌ์ฐฝ์์ ์
๋ ฅํ ์ค๋ช
์ ์ญ์ ๋ฐ ์ถ๊ฐ๊ฐ ๊ฐ๋ฅํ๋ค)
์ํคํ์ด์ง-๋ชจ๋ฌํ์ด์ง
- ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์ฌ์จ ์บ๋ฆญํฐ๋ฅผ ๊ฒ์ํ๋ฉด ์ฐพ์์ง์ ์๊ฒ ๊ตฌํํ์๋ค.
- ์ฌ์จ ์บ๋ฆญํฐ ํด๋ฆญ์ ๋ชจ๋ฌ์ ๋์ ํด๋น ์ฌ์จ ์บ๋ฆญํฐ์ ์ด๋ฆ, ์ด๋ฏธ์ง, ์บ๋ฆญํฐ ์ค๋ช
, ๋๊ธ์ด ๋์ค๊ฒ DB๋ฅผ ์ฐ๋์์ผฐ๋ค.
- jinja2๋ฅผ ์ฌ์ฉํ์ฌ
wiki.html
ํ์ด์ง๋ฅผ ๊ตฌํํ์๋ค.
- Simpson/comments DB์์ ์๋ ๋ฐ์ดํฐ(comments, character_name)๋ฅผ ๋ชจ๋ ๊ฐ์ ธ์ ์ํ๋ ์ฌ์จ ์บ๋ฆญํฐ ์ ๋๊ธ์ ๋ฌ ์ ์๋๋กapp.py
๋ฅผ ๊ตฌ์ฑํ์๋ค.
- ์ฌ์จ ์บ๋ฆญํฐ๋ฅผ ํด๋ฆญํ ์ ํด๋น ์ฌ์จ์ ๋ชจ๋ฌ์ ๋์ Simpson/comments DB์์ ์บ๋ฆญํฐ์ ์ด๋ฆ๊ณผ ๋ฌ๋ฆฐ ์ค๋ช
์ ๊ฐ์ ธ์ค๊ณ app.py์์ ์์ฑ๋ ์บ๋ฆญํฐ ์ค๋ช
๋ ๊ฐ์ ธ์จ ๋ค ์ด๋ฅผ ๋ชจ๋ฌ์ฐฝ์์ ๋ชจ๋ ๋ณด์ฌ์ง ์ ์๋๋ก ๊ตฌํํ์๋ค. ๋ณด์ด๋ ๊ฒ์ฒ๋ผ jinja2์ ๋ฐ๋ณต๋ฌธ, ์กฐ๊ฑด๋ฌธ์ ์ด์ฉํด ํ ์ค์ 5๋ช
์ ์ฌ์จ ์บ๋ฆญํฐ๊ฐ ๋์์ง๋๋ก wiki.html
๋ฅผ ์ ์ํ์๋ค.
์ ์ฒด ๋์ ๊ณผ์
๋ฉ์ธํ์ด์ง(์ฌ์ง ์
๋ ฅ) โ ๊ฒฐ๊ณผํ์ด์ง(์ฌ์ง, ์บ๋ฆญํฐ ๋ผ๋ฒจ ์ถ๋ ฅ ํ ์บ๋ฆญํฐ ์ค๋ช
์
๋ ฅ) โ ์ํค ํ์ด์ง(์บ๋ฆญํฐ ๊ฒ์ ํ ๋ฌ๋ฆฐ ์ค๋ช
ํ์ธ ๋ฐ ์ญ์ ,์ถ๊ฐ ๊ฐ๋ฅ ํ์ธ)
์์ฐ ์์
์๋ ์ด๋ฏธ์ง ํด๋ฆญ์ ์์ฐ์์์ผ๋ก ์ด๋ํฉ๋๋ค ๐
๋ฐํ ํ ํผ๋๋ฐฑ
- ๋ชจ๋ฌ์ ๋๊ธ ๋ฌ๊ณ ์ญ์ ์ ์๋ก๊ณ ์นจ๋๋ ๋ถ๋ถ ๋ค๋ฅธ ๋ฐฉ๋ฒ ๊ตฌ์ํ๊ธฐ
- PR๋ฆฌ๋ทฐ ๋ฐ์ผ๋ฆฌ๋ณ๋ก ๋จธ์งํ๋ ๋ฐฉ์์ผ๋ก ์งํํ๊ธฐ
- ์ฝ๋๋ถ๋ฆฌ ๊ตฟ ( app.py ํจ์๋ณ๋ก ๋นผ๋์๊ฒ ๐ย )
- description โ jsonํํ๋ก ๋นผ๋๊ณ ๋ถ๋ฌ์ค๋ ๋ฐฉ์ ์ฌ์ฉํ๋ ๊ฒ์ ์ถ์ฒ
def des():
description = {}
return description
from descripition import des
description = des()