dog nose recognition management service application with Siamese Neural Networks and object-detection(deep-learning)
- Siamese Neural Network
- Object-Detection
- ๋น๋ฌธ์ธ์
- ๋ฐ๋ ค๊ฒฌ
- ํซ ๋ค์ด์ด๋ฆฌ
๋น๋ฌธ ๊ฐ์ฒด ์ธ์ ๊ธฐ์ ์ ํตํ ๋ฐ๋ ค๋๋ฌผ ๊ด๋ฆฌ ์ดํ๋ฆฌ์ผ์ด์
- ๋๊ตญ๋ํ๊ต ๋ฏธ๋์ฌํ๋ฅผ ์ํ ์ธ๊ณต์ง๋ฅ ์ฑ๋ฆฐ์ง ์ต์ฐ์์ ์์
์ฒญ์ถ ๊ทธ ์ก์ฑ
Name | Role | Contact |
---|---|---|
์ด๋์ธ | ํ์ฅ, ๊ฐ์์ง ์ฝ ์ถ์ถ ๋ฐ ๋น๋ฌธ ์ธ์ ๋ชจ๋ธ ๊ฐ๋ฐ ๋ฐ ์ด์, ๋ฐ์ดํฐ ๋ผ๋ฒจ๋ง ๋ฐ ์ฆ๊ฐ | [email protected] |
์์์ฐ | ๊ธฐํ, ํ์ต ๋ฐ์ดํฐ ์์ง ๋ฐ ๋ผ๋ฒจ๋ง, ์ด๋ฏธ์ง ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ | [email protected] |
ํฉ๋จ์ฃผ | UX/UI ๋์์ธ, ๋ชจ๋ฐ์ผ ๊ฐ๋ฐ | [email protected] |
์กฐ์ฑ๋ฏผ | ๋ฐฑ์๋ ๊ฐ๋ฐ ๋ฐ ์๋ฒ ๊ตฌ์ถ | [email protected] |
dog nose recognition
tensorflow==2.8.0
scikit-learn==1.1.3
opencv-python==4.6.0
imgaug==0.4.0
crop dog nose
pytorch==1.11.0
opencv-python==4.6.0
opencv-python==4.6.0
imgaug==0.4.0
react-native==0.69.6
react==18.0.0
expo==46.0.13
Django==3.2
djangorestframework==3.13.1
djangorestframework-simplejwt==5.2.1
django-allauth==0.51.0
Pillow==9.1.1
train environment
RTX 3060
CUDA Version==11.2
cudnn==7.6.5
๋น๋ฌธ์ด๋ ๊ฐ์์ง ์ฝ์ ์ฃผ๋ฆ์ ๋ปํ๋ค. ์ฌ๋์ผ๋ก ์น๋ฉด ์ง๋ฌธ๊ณผ ๊ฐ์ ๋์ด๊ฐ ๋ค์ด๋ ๋ณํ ๋์ง ์๋๋ค. ๊ณง ๊ฐ์์ง์ ๊ฐ์ฒด ์ธ์์ ํ ์ ์๋ค๋ ๊ฒ์ด๋ค. ๊ทธ๋์ ์ฐ๋ฆฌ ํ์ ๋น๋ฌธ์ ์ด์ฉํ์ฌ ๊ฐ์ฒด ์ธ์ ๊ธฐ์ ๊ฐ๋ฐ ๋ชฉํ๋ก ํ๋ก์ ํธ๋ฅผ ์งํํ๋ค.
์ต๊ทผ ๋ฐ๋ ค๋๋ฌผ 1500๋ง ์๋๊ฐ ๋์๋ค. ํ์ง๋ง ๋ฐ๋ ค๋๋ฌผ ๋ฑ๋ก๋ฅ ์ ๋ฐ๋ ค๋๋ฌผ ์์ ๋นํด ํ์ ํ ๋ฎ์ ์์น๋ฅผ ๋ณด์ฌ์ฃผ๊ณ ์๋ค. ์๋ํ๋ฉด ๋ฐ๋ ค๋๋ฌผ ๋ฑ๋ก์ ๋ด์ฅํ์นฉ๊ณผ ์ธ์ฅํ์นฉ์ ๊ฒฐ์ ํ์ฌ ์นฉ์ ๊ฐ์์ง ์ ๋ณด๋ฅผ ๋ฃ์ด์ค ๋ค ๋ฑ๋ก์ ํด์ผํ๋ค. ์ธ์ฅํ ์นฉ์ ๊ฐ์์ง๋ค์ด ๋ง์ด ์์ด๋ฒ๋ ค ์์ด๋ฒ๋ฆด๋๋ง๋ค ๋ค์ ๊ตฌ๋งค๋ฅผ ํด์ผํ๋ ๋น์ฉ๋ถ๋ด์ด ์์ผ๋ฉฐ, ๋ด์ฅํ ์นฉ๊ฐ์ ๊ฒฝ์ฐ๋ ๋ฐ๋ ค๊ฒฌ์๊ฒ ๋ถ์์ฉ์ด ๋ฐ์ ํ ์ ์๋ ๊ฑฐ๋ถ๊ฐ์ด ๋ค์ด ๋ง์ ๋ฐ๋ ค์ธ๋ค์ด ๋ฑ๋กํ์ง ์๋ ๊ฐ์ฅ ํฐ ๋น์จ์ ์ฐจ์งํ๊ณ ์๋ค. ํซ ๋ณดํ ๊ฐ์ ๋ฅ ๋ํ ๋ค๋ฅธ ๋๋ผ๋ค์ด ๋นํด ๋ฎ์ ์์น์ ์์ ์์ฅ ๊ท๋ชจ๋ก ํ์ฑ ๋์ด์๋ค. ํซ ๋ณดํ ์ํด์จ์ 200% ๊ธฐ๋กํ๊ณ ์๋ค. ํซ ๋ณดํ์ ํผ๋ณดํ๋์ ์๋ณ์ด ์ด๋ ค์ ๊ฐ์ ์๋ค์ด ์ ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ง์ ๊ธฐ์ ๋ค์์ ์ ๊ทน์ ์ผ๋ก ํซ ๋ณดํ์ ์ถ์ ํ ์ ์๋ ์ํฉ์ด๋ค.
๊ทธ๋์ ์ฐ๋ฆฌ ํ์ ์ ์กฐํ ๋๋ฌผ๋ฑ๋ก, ๋์ ํซ ๋ณดํ ์ํด์จ, ๊ฑฐ๋ถ๊ฐ์ด ๋๋ ๋ด์ฅ์นฉ์ ํ๊ณ์ ์ ๋ณด์ํ์ฌ ๊ฐ๋จํ ๋๋ฌผ๋ฑ๋ก, ํธ๋ฆฌํ ๊ฐ์ฒด์ธ์, ๋ด์ฅํ ์นฉ ๊ฑฐ๋ถ๊ฐ ํด์, ํซ ๊ด๋ฆฌ, ๋ฐ๋ ค๋๋ฌผ ์์ฅ์ ํ์ฑํ๋ฅผ ๋ชฉํ๋ก ๋น๋ฌธ๊ฐ์ฒด ์ธ์๊ธฐ์ ์ ํตํ ๋ฐ๋ ค๋๋ฌผ๊ด๋ฆฌ ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ๋ค.
result_video.mp4
-
์ฌ์ฉ์๋ ์ดํ๋ฆฌ์ผ์ด์ ์ ์นด๋ฉ๋ผ ๊ธฐ๋ฅ์ผ๋ก ๊ฐ์์ง์ ์ ๋ฉด ์ผ๊ตด ์ฌ์ง์ ์ฐ๋๋ค.
-
๊ฐ์์ง ์ ๋ฉด ์ผ๊ตด ์ฌ์ง์ ๊ฐค๋ฌ๋ฆฌ์ ์ ์ฅ๋๋ฉฐ, REST API๋ฅผ ํตํด ์๋ฒ๋ก ์ ์ก๋๋ค.
-
์ ์ก๋ ๊ฐ์์ง ์ ๋ฉด ์ผ๊ตด ์ฌ์ง์ object-detection ๋ชจ๋ธ์ธ yoloV5์ ํตํด ๊ฐ์์ง์ ์ ๋ฉด ์ผ๊ตด ์ค ์ฝ(๋น๋ฌธ) ๋ถ๋ถ๋ง ์ถ์ถํ์ฌ ์ด๋ฏธ์ง ์ ์ฒ๋ฆฌ๋ฅผ ์งํํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๋ค.
-
์ฌ์ฉ์๋ ์ดํ๋ฆฌ์ผ์ด์ ์ ์นด๋ฉ๋ผ ๊ธฐ๋ฅ์ผ๋ก ๊ฐ์์ง์ ์ ๋ฉด ์ผ๊ตด ์ฌ์ง์ ์ฐ๋๋ค.
-
๊ฐ์์ง ์ ๋ฉด ์ผ๊ตด ์ฌ์ง์ ๊ฐค๋ฌ๋ฆฌ์ ์ ์ฅ๋๋ฉฐ, REST API๋ฅผ ํตํด ์๋ฒ๋ก ์ ์ก๋๋ค.
-
์ ์ก๋ ๊ฐ์์ง ์ ๋ฉด ์ผ๊ตด ์ฌ์ง์ object-detection ๋ชจ๋ธ์ธ yoloV5์ ํตํด ๊ฐ์์ง์ ์ ๋ฉด ์ผ๊ตด ์ค ์ฝ(๋น๋ฌธ) ๋ถ๋ถ๋ง ์ถ์ถํ์ฌ ๋น๋ฌธ ์ธ์ ๋ชจ๋ธ์ input ํ๋ค.
-
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋์ด ์๋ ๋ชจ๋ ๊ฐ์์ง์ ๋น๋ฌธ์ ์ด์งํ์ ์๊ณ ๋ฆฌ์ฆ์ ํตํด ๋น๋ฌธ ์ธ์ ๋ชจ๋ธ์ input ํ๋ค.
-
๋น๋ฌธ ์ธ์ ๋ชจ๋ธ์ input์ผ๋ก ๋ค์ด์จ ๋ ๋น๋ฌธ ์ฌ์ง์ ์ ์ฌ๋๋ฅผ ๋น๊ตํ์ฌ ๊ฐ์ ๋น๋ฌธ์ธ์ง ๋ค๋ฅธ ๋น๋ฌธ์ธ์ง ์์ธก๊ฐ์ ์๋ฒ๋ฅผ ํตํด client๋ก ์ ์กํ๋ค.
-
๋ง์ฝ ๊ฐ์ ๋น๋ฌธ์ผ ๊ฒฝ์ฐ, ํด๋น ๋น๋ฌธ์ ๊ฐ์์ง ์ ๋ณด๋ฅผ client์๊ฒ ์กฐํํ ์ ์๋๋ก ํ๋ค.
ํ์ต ๋ฐ์ดํฐ ์์ง ๋ฐ ๋ผ๋ฒจ๋ง
๊ฐ์์ง ์ฝ ์ธ์ ๋ฐ์ดํฐ
ํ์ต๋ฐ์ดํฐ๋ Tsinghua Dogs Dataset ์์ ๊ฐ์์ง ์ฝ๋ฅผ ์ธ์ํ ์ ์๋ ์ฌ์ง๋ค์ ์ ๋ณํ ํ ์ด๋ฏธ์ง ์ฆ๊ฐ์ ์ด์ฉํด ํ์ต๋ฐ์ดํฐ๋ฅผ ๋ง๋ค์๋ค.
Data Collection | Sorted Image | Image Augmentation |
---|---|---|
70,428 | 2,029 | 10,145 |
๊ฐ์์ง ๋น๋ฌธ ์ธ์ ๋ฐ์ดํฐ
ํ์ต๋ฐ์ดํฐ๋ CVPR2022 Biometrics Workshop Pet Biometric Challenge์ ์ฒจ๋ถ๋ ๋ฐ์ดํ ์ ์ค์ ๊ฐ์์ง ๋น๋ฌธ์ด ๋ณด์ด๋ ์ฌ์ง๋ค๋ก ์ ๋ณํ๊ณ , ๊ตฌ๊ธํผ์ ํตํด ํ์๋ค์ ์ธ์คํ๊ทธ๋จ์ ์ฌ๋ ค ๋ฐ๋ ค๊ฒฌ์ด ์๋ ์ง์ธ๋ค์๊ฒ ์ป์ ๋ฐ์ดํฐ๋ฅผ ์ด๋ฏธ์ง ์ฆ๊ฐ์ ์ด์ฉํด ํ์ต๋ฐ์ดํฐ๋ฅผ ๋ง๋ค์๋ค.
๋ฐ์ดํฐ ์์ง | ์ด๋ฏธ์ง ์ ๋ณ | ์ด๋ฏธ์ง ์ฆ๊ฐ |
---|---|---|
20,000 | 964 | 9,640 |
๊ฐ์์ง ๋น๋ฌธ ์ธ์์ ์ํ ์ด๋ฏธ์ง ์ ์ฒ๋ฆฌ
-
GaussianBlur :ใ์ด๋ฏธ์ง์ ์ค์๊ฐ์ ๊ฐ์ค์น๋ฅผ ์ฃผ๊ณ ์ฃผ๋ณ์ ๋ ํ๋ฆฌ๊ฒ ํ์ฌ ๋ ธ์ด์ฆ๋ฅผ ์ ๊ฑฐํด ์ฝ์ ๋น ๋ฐ์ฌ ์ ๊ฑฐ
-
EdgeDection :ใsobel, laplacian, canny ์ฌ์ฉํด ๊ฐ์ฅ์๋ฆฌ ์ถ์ถ
Sboel | Laplacian | Canny |
---|---|---|
crop dog nose(๊ฐ์์ง ์ฝ ์ถ์ถ)
๊ฐ์ฒดํ์ง(object-detection)์ ํ ์ด๋ฏธ์ง์์ ๊ฐ์ฒด์ ๊ทธ ๊ฒฝ๊ณ ์์(bounding box)๋ฅผ ํ์งํ๋ ๊ธฐ์ ์ด๋ค. ๊ฐ์ฒด ํ์ง ์๊ณ ๋ฆฌ์ฆ์ ์ด๋ฏธ์ง๋ฅผ ์ ๋ ฅ์ผ๋ก ๋ฐ๊ณ , ๊ฒฝ๊ณ ์์์ ๊ฐ์ฒด ํด๋์ค ๋ฆฌ์คํธ๋ฅผ ์ถ๋ ฅํ๋ฉฐ ์ด๋ ๊ฒฝ๊ณ ์์์ ๋์ํ๋ ์์ธก ํด๋์ค์ ํด๋์ค์ ์ ๋ขฐ๋(confidence)๋ฅผ ์ถ๋ ฅํ๋ค. ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ ๋ชจ๋ธ์ 2018๋ ์ ์ถ์๋ yoloV5 ๋ชจ๋ธ์ด๋ค.
Train Result
epoch | 300 | 600 | 1047(early stopping) |
---|---|---|---|
์ ํ๋ | mAP50-95: 0.952 | mAP50-95: 0.952 | mAP50-95: 0.952 |
epoch | 300 | 600 | 646(early stopping) |
---|---|---|---|
์ ํ๋ | mAP50-95: 0.984 | mAP50-95: 0.984 | mAP50-95: 0.984 |
Model | yoloV5n | yoloV5m๋ฏธ๋์* |
---|---|---|
์ ํ๋ | mAP50-95 : 95.2% | mAP50 : 98% |
=> ์ฐจ์ด๊ฐ ๊ทน์ ์ผ๋ก ํฌ๊ฒ ๋์ง ์๊ธฐ ๋๋ฌธ์, ์์ธก์๋๊ฐ ๋น ๋ฅธ yoloV5n์ ์ฌ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ๋ค.
Siamese Network ๋ (์ดํ ์ด ๋คํธ์ํฌ) ๋ค๋ฃจ์ด์ผํ๋ ํด๋์ค์ ์ข ๋ฅ๊ฐ ๋งค์ฐ ๋ง๊ณ , ํน์ ํด๋์ค์ ๋ํ ์ฌ์ง์ ๋๋์ผ๋ก ๊ตฌํ ์ ์์ ๋ ๋จธ์ ๋ฌ๋์ ํ์ฉํ์ฌ ๊ทธ ํด๋์ค๋ฅผ ๊ตฌ๋ถํด๋ด๊ธฐ ์ํ์ฌ ๊ณ ์๋ ๋คํธ์ํฌ์ด๋ค.
์ด ๋คํธ์ํฌ๋ ๋ ์ฌ์ง์ ์ ๋ ฅ์ผ๋ก ๋ฐ์์ ๋ ์ด๋ฏธ์ง๋ฅผ ๋ฒกํฐํ ์ํจ ์ดํ, ๋ ๋ฒกํฐ๊ฐ์ ์ ์ฌ๋ (similarity in [0, 1]) ๋ฅผ ๋ฐํํ๋ ๋คํธ์ํฌ์ด๋ค. Network๋ ํด๋น ์ด๋ฏธ์ง์ ํน์ง์ hand-crafted features๊ฐ ์๋ data์์ ์ง์ ํ์ตํ ์ ์์ผ๋ฏ๋ก ์ฃผ์ด์ง similarity ๋ฅผ ์ต์ ํ ํ ์ ์๋ ์์ง์ feature๋ฅผ ์ถ์ถํ๋ค.
Siamese Network๋ ํ๋์ ์ด๋ฏธ์ง๋ฅผ ํ๋์ ๋ฒกํฐ๋ก ๋ณํํ ์ ์๋ weight๋ฅผ ๊ฐ์ง๊ณ ์๋๋ฐ, ์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ด๋ฏธ์ง๋ฅผ ์ ๋ ฅ์ผ๋ก ๋ฐ์ ์ฌ๋ฌ๋ฒ์ convolution ์ฐ์ฐ์ ๊ฑฐ์ณ ํ๋์ ๋ฒกํฐ๋ก ์ด๋ฏธ์ง๋ฅผ ์ธ์ฝ๋ฉํ๋ค. ๋ ์ด๋ฏธ์ง๋ ๊ณต์ ๋๋ weight ๋ฅผ ์ด์ฉํ์ฌ ๋ฒกํฐ๋ก ์ธ์ฝ๋ฉ ๋๋ค.
์ ์๋ ๋คํธ์ํฌ์ ๋ ์ฌ์ง์ด ๊ฐ์ ๊ฒฝ์ฐ ์ ์ฌ๋(Similarity)๋ฅผ 1๋ก ์ฃผ๊ณ , ๋ ์ฌ์ง์ด ๋ค๋ฅผ ๊ฒฝ์ฐ ์ ์ฌ๋(similarity)๋ฅผ 0์ผ๋ก ์ฃผ์ด์ ๋ชจ๋ธ์ ํ์ต์ํจ๋ค. ์ด๋ ํ์ต์ ์ฌ์ฉํ๋ loss๋ binary_crossentropy๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐํ๊ฐ์ด ์ ์ฌ๋์ธ 0~1 ์ฌ์ด์ ํ๋ฅ ๊ฐ์ผ๋ก ํ๋ค. ์ด๋ฅผ ํตํด์ ์ถ์ถ๋ ๋ฒกํฐ ๊ฐ์ ๊ฑฐ๋ฆฌ๋ ์๋ก ์ ์ฌํ(=๊ฐ์) ์ด๋ฏธ์ง๋ผ๋ฆฌ๋ ๊ฐ๊น์ด ๊ฑฐ๋ฆฌ(๋์ ์ ์ฌ๋)๋ฅผ ๊ฐ์ง๊ณ , ์๋ก ๋ค๋ฅธ ์ด๋ฏธ์ง ๊ฐ์๋ ๋จผ ๊ฑฐ๋ฆฌ๋ฅผ (๋ฎ์ ์ ์ฌ๋) ๊ฐ์ง๋๋ก ํ์ต์ ์งํํ๋ค.
Siamese Neural Network ๊ธฐ๋ฐ ๋น๋ฌธ ์ธ์ ๋ชจ๋ธ
๋น๋ฌธ ์ด๋ฏธ์ง์์ ํน์ง์ ์ ๋น๊ตํ๊ธฐ์ํด ์์ท ๋ฐ๋๊ธฐ๋ฐ์ ์ด๋คํธ์ํฌ ๋ชจ๋ธ์ ๊ตฌํํ๋ค.
์ธ์ ์ํฌ ์ฌ์ง๊ณผ db์ ์ ์ฅ๋์ด์๋ ์ฌ์ง์ด ๋์์ input์ผ๋ก ๋ค์ด๊ฐ ๊ฐ๊ฐ ์จ์ดํธ๋ฅผ ๊ณต์ ํ๋ฉฐ ์ฌ๋ฌ๋ฒ์ ์ปจ๋ณผ๋ฃจ์ ์ฐ์ฐ์ ํตํด ํน์ง์ ์ด ์ถ์ถ๋ฉ๋๋ค. ํน์ง์ ์ด ์ถ์ถ๋ ์ด ํผ์ฒ๋งต์ ์ฐจ์ด๋ฅผ ์ฌ๋ฌ๋ฒ์ dense ๋ ์ด์ด๋ฅผ ๊ฑฐ์น๊ณ sigmod๋ฅผ ํตํด ์ ์ฌ๋์ธ 0-1 ์ฌ์ด์ ํ๋ฅ ๊ฐ์ ๋ฐํํ๋ค.
์์ฒ ์ด๋ฏธ์ง์ ๊ฐ๊ฐ์ ์ ์ฒ๋ฆฌ๋ ์ด๋ฏธ์ง๋ค์ ๊ธฐ๋ฒ ๋ณ๋ก ๋ชจ๋ ํ์ต์์ผ ๋น๊ต๋ถ์์ ํ๋ค. ๊ฒฐ๊ณผ๋ ์๋์ ๊ฐ๋ค.
Train Result
Original | Canny dataset | Laplacian dataset | Sobel dataset | |
---|---|---|---|---|
Accuracy | 0.96 | 0.95 | 0.96 | 0.96 |
Loss | 0.14 | 0.16 | 0.13 | 0.14 |
=> Laplacian๊ธฐ๋ฒ์ ์ ํ๋๊ฐ ๊ฐ์ฅ ๋์ ์ด ์ ์ฒ๋ฆฌ ๊ธฐ๋ฒ์ ์ฌ์ฉํ ๋ชจ๋ธ์ ์๋ฒ(๋ฐฑ์ค๋)์ ์ด์ํ์ฌ ์ฌ์ฉํ๋ค.
ํ๋ก ํธ์๋ ์ธ์ด๋ก๋ javascript, ๊ทธ๋ฆฌ๊ณ framework๋ก์ react-native๋ฅผ ์ฌ์ฉํ๋ค.
react-native์ ๊ฐ๋ฐ ๋ฐฉ๋ฒ์ผ๋ก๋ cli ๋์ expo๋ฅผ ์ ํํ๋ค. expo๋ ํธ๋ฆฌํ๊ณ ์ ์ฉํ๋ฉฐ ์ถํ ๋ฐฐํฌํ ๊ฒฝ์ฐ cli๋ณด๋ค ๊ฐํธํ๋ค๋ ์ฅ์ ์ด ์์ด ์ ์ง, ๋ณด์ํ๊ธฐ์ ์ข๋ค. cli๋ณด๋ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ ์ง๋ง, expo ์์ฒด์์ ๊พธ์คํ๊ฒ ๊ธฐ๋ฅ๋ค์ ์ ๊ณตํด์ฃผ๊ณ ์์ด ์ ํํ๋ค.
๊ฐ๋ฐ์ ์งํํ ๋, ์ฌ์ฉ์์๊ฒ ์ข์ ๊ฒฝํ์ ์ฃผ๋ ๊ฒ์ ๊ฐ์ฅ ์ต์ฐ์ ์ ๋ชฉํ๋ก ์ค์ ํ์ฌ ์์
์ ์งํํ์๋ค. text input์ด๋ button๊ณผ ๊ฐ์ด ์์ฃผ ์ฐ์ด๋ ๊ธฐ๋ฅ์ ๊ฒฝ์ฐ ์ปดํฌ๋ํธ์์ผ๋ก ํต์ผ์ฑ์ ๋์ด๊ณ ๋น๋ฌธ ๋ฑ๋ก๊ณผ ๊ฒ์ ์ ๋ชจ๋ธ์ด ์ฒ๋ฆฌํ๋ ์๊ฐ์ผ๋ก ์ฌ์ฉ์์ ๋๊ธฐ์๊ฐ์ด ๊ธธ์ด์ง๊ธฐ ๋๋ฌธ์ skeleton component๋ฅผ ์ฌ์ฉํ๋ค.
์นด๋ฉ๋ผ ์ดฌ์์, ์ฌ์ฉ์ ๋๊ตฌ๋ ์ฝ๊ฒ ๊ฐ์์ง ์ฝ๋ฅผ ์ฐ์ ์ ์๊ฒ ์ฝ ๋ชจ์ ์ด๋ฏธ์ง๋ฅผ ์นด๋ฉ๋ผ ํ๋ฉด์ ๋์ฐ๊ณ , ๊ฐ์์ง ์ดฌ์์ ์ด๋ ต๊ธฐ ๋๋ฌธ์ ๊ฐ์์ง๋ฅผ ํธ๋ํฐ์ผ๋ก ์ง์ค์ํค๊ธฐ ์ํด clap-sound๋ฅผ ๋ฃ์ด ์ฝ๋ฅผ ์ฝ๊ณ , ์ ํํ๊ฒ ์ฐ์ ์ ์๋๋ก ๊ตฌํํ์๋ค.
expo์์ ๋ค์ํ library๋ฅผ ์ง์ํด์ฃผ๊ณ ์๋ค. ์นด๋ฉ๋ผ ๊ธฐ๋ฅ์ผ๋ก๋ expo-camera์ expo-image-picker๋ฅผ ์ฌ์ฉํ์ผ๋ฉฐ, ์บ๋ฆฐ๋ ๊ธฐ๋ฅ์ผ๋ก๋ expo-calendar๋ฅผ ์ฌ์ฉํ๋ค. clap-sound๋ฅผ ๋ฃ์ ์์๋ react-native-sound์ react-native-sound-player๋ฅผ ์ฌ์ฉํ๋ค.
rest_auth, allauth ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํ์ฌ ํ์๊ฐ์ ์ ํ์ํ ์ฌ์ฉ์์ ๋๋ค์, ์ด๋ฉ์ผ, ๋น๋ฐ๋ฒํธ๋ฅผ ๋ฐ์์ ์ ๋ ฅ ๋ฐ์์ ์ฌ์ฉ์์ ๊ณ์ ์ ๋ง๋ ๋ค. DB์ ์ ์ฅ๋ ๋ ์ฌ์ฉ์ ๋น๋ฐ๋ฒํธ๋ฅผ ๋จ๋ฐฉํฅ ํด์ ํจ์(one-way hash function)๊ฐ ์ฌ์ฉ๋๋ค. ์ฌ์ฉ์๊ฐ ํ์๊ฐ์ ์ ํ ๋์๋ JWT ํ ํฐ ์ธ์ฆ ๋ฐ๊ธ์ ํจ๊ป ์งํํ๋ค.
์ ์๊ฒฌ์ ํ๋กํ์ ๊ฐ์ DB์ ์ ์ฅํ๊ณ ์ ์๊ฒฌ์ ๋น๋ฌธ๋ฑ๋ก ๋ฐ ๋น๋ฌธ๊ฒ์ฌ๋ฅผ ์งํํ๋ค. DB์ ์ ์ฅ์ ์๋ฃํ ํ, ์ฌ์ฉ์๊ฐ ํ๋ก ํธ์์ ์ ์๊ฒฌ ํ๋กํ ์ ๋ณด ๋ฐ id(pk)๊ฐ์ ๋ณด๋ด๋ฉด, ์๋ฒ์์ ๋ฐ์, ํด๋น id ๊ฐ์ ๋งก๋ ์ ์๊ฒฌ์ DB ์ ๋ณด๋ฅผ ๊ฐ์ ธ์์ ์กฐํ ๋ฐ ์์ ์ ์งํํ๋ค. ์ฌ์ฉ์๊ฐ ๋น๋ฌธ ๋ฑ๋ก ๋ฐ ์ธ์ํ ๋ ์ ์๊ฒฌ์ ์ฝ ์ฌ์ง๊ฒฝ๋ก๋ฅผ ๋ฐ๋ก DB์ ์ ์ฅํ ํ, Foreign key ๋ฅผ ํ์ฉํ์ฌ ๊ฐ์์ง์ ํ๋กํ ์ ๋ณด์ DB์ ์ฐ๊ฒฐ์ํจ๋ค.
๋น๋ฌธ์กฐํ๋ฅผ ํ๊ฒ ๋๋ฉด ๊ฐ์์ง์ ์ฝ์ฌ์ง์ ์ฐ์ผ๋ฉด yolo๋ฅผ ํตํด ํฌ๋กญ๋ ์ฝ์ฌ์ง์ด ๋์จ๋ค. ์ด ์ฌ์ง์ ๊ฒฝ๋ก์ ๊ฐ์์ง DB์ ์ ์ฅ๋์ด์๋ ์ฝ ์ฌ์ง ๊ฒฝ๋ก๋ฅผ ํตํด ๋๊ฐ์ ์ฝ ์ฌ์ง์ ๋น๊ตํ๋ค. ๋น๋ฌธ ์ธ์ ๋ชจ๋ธ์ ๊ฒฐ๊ณผ์ธ ์ ์ฌ๋ ํ๋ฅ ๊ฐ, ์ฆ Score ์ ์๊ฐ 0.8 ์ด์์ผ๊ฒฝ์ฐ ํด๋น ๊ฐ์์ง๊ฐ ๊ฐ๋ค๊ณ ํ๊ณ ๊ฐ์์ง์ DB๋ฅผ ๋ณด์ฌ์ฃผ๊ณ ์๋๊ฒฝ์ฐ HTTP_204_NO_CONTENT ๋ฅผ ํตํด ์ผ์นํ์ง ์๋๋ค๊ณ ์๋ ค์ค๋ค.
๋ณ์์ผ์ง ์ ๋ DB์ ๋ณ์ ๋ฐ ์๋ฐฉ ์ ์ข ๊ณผ ์ฌ์ฅ์ฌ์์ถฉ์ ์ ์ฅํ๋ DB๋ฅผ ๋ง๋ค์ด์ ์ ์ฅํ๋ค.
์ ์๊ฒฌ๊ณผ ๊ด๋ จ๋ ๋์ ์ผ๊ธฐ๋ฅผ DB์ ์ ์ฅํ๋ค. ์ผ๊ธฐ์์ ์ฐ์ฑ ์ฌ๋ถ๋ฅผ choice๋ก ์ฒดํฌ๋ฐ์ค ์ ๋ฌด์ ๋ฐ๋ผ DB๊ฐ์ด [o, x] ๊ฐ์ผ๋ก ์ ์ฅ๋๋๋ฐ, o๊ฐ ์ ์ฅ๋ ๋๋ง๋ค ์ฐ์ฑ ๊ฐ์ด 1๊ฐ์ฉ ์ฆ๊ฐ์ํจ๋ค. ์ถํ ๋ค๋ฅธ ์ผ๊ธฐ์์ ํด๋น ๊ฐ์ด o์ธ์ง x์ธ์ง ๊ฒ์ฌ๋ฅผ ํตํด์ o์ผ ๊ฒฝ์ฐ ์ฐ์ฑ ํ์๋ฅผ 1 ์ฆ๊ฐ์ํค๊ณ ์๋, ๊ฒฝ์ฐ ๊ฐ์ ์ฆ๊ฐ์์ผ ์ฐ์ฑ ํ์๋ฅผ DB์ ์ ์ฅ์ํจ๋ค.
์ฌ๋์ ์ง๋ฌธ๊ณผ ๊ฐ์ด ๋ฐ๋ ค๊ฒฌ์ ๋น๋ฌธ(์ฝ ์ง๋ฌธ)์ ๋ชจ๋ ๋ค๋ฅด๋ฉฐ ๋์ด๊ฐ ๋ค์ด์๋ ๋ณํ์ง ์๊ธฐ์ ์์ฒด์ ๋ณด๋ก์จ ์ฌ์ฉํ ์ ์๋ค. ๋๋ฌธ์, ๋น๋ฌธ ๊ฐ์ฒด์ธ์ ๊ธฐ์ ์ ๊ฐ๋ฐํจ์ผ๋ก์จ ๋ง์ดํฌ๋ก์นฉ์ ๋ถ์์ฉ์ ๊ทน๋ณตํ๊ณ ๋ฐ๋ ค๊ฒฌ ์ ์ฒด ๋ด ์ด๋ฌผ์ง ์ฝ์ ๊ณผ ๋น์ฉ์ ๋ํ ๋ถ๋ด์ด ์ ์ผ๋ฉฐ, ํ์ ๋ฐ ๋ถ์ค ์ผ๋ ค๊ฐ ์๊ณ ๋น ๋ฅด๊ฒ ๋ฑ๋ก ๋ฐ ์กฐํ๊ฐ ๊ฐ๋ฅํ๋ค. ์ฆ, ๋ณธ์ง์ ์ผ๋ก ๋ฐ๋ ค๋๋ฌผ์ ๋ถ์์ด๋ ์ ๊ธฐ๋ฅผ ๋ฐฉ์งํ ์ ์๋ค.
ํ์ฌ ๋น๋ฌธ ๊ด๋ จํ ๊ธฐ์ ์ค ์ผ๋ถ๋ ์ฌ์ฉ์ ์นํ์ ์ด์ง ์์ผ๋ฉฐ ์ฌ์ ์์ ์ด ๋ง์ ๊ฒฝ์ฐ๊ฐ ์์ด ์ค์๊ฐ ์๋น์ค์ ๋ถ์ ํฉํ๋ค. ํด๋น ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ ๋ ๋์ ๊ธฐ์ ๊ฐ๋ฐ์ ํตํ์ฌ ๋น ๋ฅธ์๊ฐ๋ด์ ํจ๊ณผ์ ์ผ๋ก ๊ฐ์ฒด์ธ์์ ํ๋ ์์คํ ์ ๊ตฌ์ถํ ์ ์์ ๊ฒ์ด๋ค. ๋ฟ๋ง ์๋๋ผ, ๋ฐ๋ ค๊ฒฌ ๋น๋ฌธ์ธ์ ์์คํ ์ ์์ฉํ๋ฅผ ์ํด ํฅํ ๋ถ๋ฅ ์ฑ๋ฅ์ ๋์ฑ ํฅ์ ์ํฌ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ํ ์ฐ๊ตฌ์ ๋๋ถ์ด ์ค์ ์์ง๋ ๋ฐ์ดํฐ ๊ธฐ๋ฐ์ ๋ถ๋ฅ ์ฑ๋ฅ ๋ถ์ ์ฐ๊ตฌ๋ ์ํํ ์์ ์ด๋ค. ์ด๊ฒ์ ๋ฐ๋ ค๊ฒฌ ๋น๋ฌธ ์ธ์ ์์คํ ์ ๋ถํ์ํ ์ธ์ ์ฒ๋ฆฌ ํ์๋ฅผ ์ค์ด๊ณ ์ธ์๋ฅ ๋ ํฅ์ ์ํฌ ์ ์์ ๊ฒ์ผ๋ก ๊ธฐ๋๋๋ค.
ํ์ฌ๋ ๊ฐ๋ฅผ ๋์์ผ๋ก ์๋น์ค๋ฅผ ์ ๊ณตํ ์์ ์ด์ง๋ง, ํฅํ ๊ณ ์์ด์ ๊ฐ์ ๊ฐ๋ฅผ ์ ์ธํ ๋ค๋ฅธ ๋ฐ๋ ค๋๋ฌผ๊น์ง ํ๋ํ์ฌ ์๋น์ค๋ฅผ ์ ๊ณตํ ์ ์์ผ๋ฆฌ๋ผ ์์ํ๋ค.
๋ํ, ๋๋ฌผ์ด ๋ฏธ๋ฆฌ ๋ฑ๋ก๋ ํน์ ๊ฐ์ฒด์ธ์ง ์๋์ง๋ฅผ ํ์ธํ๋ ๋๋ฌผ ์ธ์ฆ์ ๋๋ฌผ ๋ณ์, ๋๋ฌผ ์ ์ ์ผํฐ, ๋๋ฌผ ๋ณดํธ์, ๋๋ฌผ ๋ณดํ์ฌ ๋ฑ ๋ค์ํ ๊ณณ์์ ์ฌ์ฉ๋๋ค. ๋๋ฌผ ๋ณดํ์ฌ์ ๊ฒฝ์ฐ, ์ฌ๊ณ ๊ฐ ๋ฐ์ํ์ ๋ ๋ณดํ์ ๊ฐ์ ๋ ํน์ ๊ฐ์ฒด์ธ์ง ์ ํํ ํ์ธํ ์ ์๊ฒ ๋๋ฉด ์ด์ ๊ฐ์ ๋ฐ๋ ค๋๋ฌผ ์ฌ์ ์์ ์ ์ฉํ ๊ธฐ์ ๋ก ์๋ฆฌ๋ฅผ ์ก์ผ๋ฉฐ ๋ฐ๋ ค๋๋ฌผ ์์ฅ์ ํ์ฑํ๋ฅผ ๊ธฐ๋ํ ์ ์๋ค.
- Gregory Koch, Richard Zemel, Ruslan Salakhutdinov, Siamese Neural Networks for One-shot Image Recognition, ICML deep learning workshop, vol. 2, pp. 3-8 ,2015
- Joseph Redmon, Santosh Divvala, Ross Girshick, Ali Farhadi, You Only Look Once: Unified, Real-Time Object Detection, pp. 1-7, 2015
- YOLOv5, https://pytorch.org/hub/ultralytics_yolov5/
- ์ ์ฑํ, ๋ฐฐ์ข ํ, OpenCV-Python์ผ๋ก ๋ฐฐ์ฐ๋ ์์ ์ฒ๋ฆฌ ๋ฐ ์์ฉ, ์๋ฅ์ถํ, 2020
- ๊ถํํ, ๋ฐฑ์๋๋ฅผ ์ํ Django REST Framework with ํ์ด์ฌ, ์์ง๋ท์ปด, 2022
- ์ฒ์ ๋ฐฐ์ฐ๋ ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ, 493์ชฝ, ํ๋น๋ฏธ๋์ด - ๊น๋ฒ์ค
- Do it! ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ ์ฑ ํ๋ก๊ทธ๋๋ฐ, 856์ชฝ, ์ด์งํผ๋ธ๋ฆฌ์ฑ - ์ ์ํ