일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- til
- 비전공자 코딩교육
- 멋사 AI
- 이렇게 그녀를 잃었다
- 멋사 AI 교육
- 멋사 국비지원과정
- 리뷰
- 비전공자 멋쟁이사자처럼
- 가브리엘마르케스
- 멋쟁이사자처럼 k 디지털
- 비전공자 코딩
- k 디지털 후기
- 홍명희 임꺽정
- 멋쟁이사자처럼
- 문학동네
- 인생책
- 멋쟁이사자처럼 k-digital
- AI 국비지원
- 민음사
- 인터뷰
- 인생책짧은글
- 영화AI추천
- 추천프로젝트
- 영화추천시스템
- 유니오르
- k 디지털
- 멋쟁이사자처럼 전액국비지원
- 멋사 전액국비지원교육
- 멋사 k 디지털
- AI 코딩
- Today
- Total
글쟁이, 코딩한다
0208/ k_digital 43일차/ 웹 프로그래밍(Django) 본문
0.
TIL은 이런 곳에 하기 보다는 주로 깃헙에서 잔디 심는 일을 말한다는 걸 이제 알았다.
43일차라 돌이킬 수가 없지만. 일단 이 과정을 듣는 동안은 마저 이대로 하고 끝나는 대로 그쪽으로 가야겠다.
웹 프로그래밍. 오늘은 머신러닝 모델 적용.
예제는 opencv-python 라이브러리를 활용한 사진 얼굴&눈 인식 사이트.
이번에는 pythonanywhere로 배포까지. 역시 똑같은 내용들은 패스하고 새로 배운 것들 위주로.
CV2 라이브러리 활용 얼굴&눈 인식 사이트
기본 순서
가상환경 구축(opencv-python(4.1.1.26), pillow(5.4.1) 라이브러리 설치)
프로젝트&앱 개설
1. 이미지 파일 업로드
(1) Media 폴더
유저들이 업로드한 파일들을 받아낼 공간
#templates, static과 비슷한 매커니즘
설정
1 settings.py(static 설정 아래)
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
2 urls.py(적용을 원하는 프로젝트/앱 urls.py)
from django.conf import settings
from django.conf.urls.static import static
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
(2) form
2-1 FileSystemStorage
1-이용자가 이미지를 업로드할 폼을 구성(ImageField를 활용한다)
2-요청값(POST)을 받아 POST값, FILES값을 나눠 받는다
3-FileSystemStorage()를 활용해 받은 이미지 파일 자체, 이름과 URL을 구별한다
#이 과정에서 이미지는 아까 만들어준 MEDIA_ROOT 경로를 따라 media 폴더에 자동 추가(알아서 생성도 한다)
#일시적인 저장일 뿐, 따로 저장하지는 않는다
4-저장한 이미지를 바탕으로 웹사이트에 표기한다
2-2 using DB (권장)
1-DB 생성
2-DB를 적용한 업로드 폼으로 forms를 수정
3-요청값(POST)을 받아 POST값, FILES값을 나눠 받는다
4-입력받은 값을 전처리 과정(경로 설정, 저장 내역, 얼굴 인식 등)을 거쳐 DB에 저장한다
#이미지는 DB에 곧바로 저장하지 않는다. DB에는 media 폴더 경로가 들어간다.
5-DB를 바탕으로 이미지를 웹사이트에 표기한다
2. 모델 적용
1- 따로 functions.py 파일을 만들어 복잡한 연산을 함수로 정의한다
#복잡한 코드는 곧바로 작성하기보다 주피터노트북 등에서 미리 구성해 오자
$$ 여기서는 cv2 라이브러리 내 Haar-based Cascade Classifier를 썼다. AdaBoost 기반 머신러닝 물체 인식 모델이다. 얼굴 정면을 인식하는 'haarcascade_frontalface_default', 눈 부분을 인식하는 'haarcascade_eye'를 가져와 썼다.
2- 모델에 맞춰 파일 크기, 형식 등을 맞춰준다.
#지나치게 큰 이미지를 줄이거나 따로 맞춰줘야 할 조건들이 있는지 확인하자
3- 모델을 제대로 적용하기 위한 URL 구성
4- 결과값 예측&표기
3. 배포
1-라이브러리가 너무 많다 -> 일일이 모두 설치?
requirements.exe : 라이브러리 리스트 기반 자동 설치를 활용하자
(cmd)pip freeze > requirements.txt
-----이후 가상환경에서 설치할 때는 : pip install -r requirements.txt
2- .gitignore 파일 생성
.gitignore : github에 push할 때 파일 내 목록을 모두 제외해준다
ex)
*.pyc ; *은 모든 파일을 뜻한다
*~
__pycache__
.DS_Store
-------두고 오는 임시 파일들--------
django_env : 가상환경
db.sqlite3 : DB ; 개발 시 실험단계에서 사용한 로컬 DB 제외 ; 사용자들이 초기화된 상태에서 DB를 생성하도록
/static : CSS 파일들 ; collectstatic으로 프로젝트 내에서 모으는 것이 좋다
/media/images : 개발 단계에서 업로드한 파일들도 날려준다
--------두고 오는 테스트용 파일들-----
----이후 gitignore로 제외한 static, DB 등은 collectstatic, migrate 등 명령어로 수집&등록해야한다.
----이전 배포(로또 사이트)와는 달리 (Web탭)Stactic files를 수정. URL에 디렉토리 이름, Directory에 경로를 지정해준다.
오늘의 TML
URL 세부주소, 함수, 별칭(name)은 모두 통일하는 편이 좋다.
대문자로 쓴 파이썬 변수들 : 다른 파일에서 끌어다쓸 변수들
'나는 코딩도 한다 > TIL' 카테고리의 다른 글
0215 / k_digital 45일차 / 파이널프로젝트 (2) | 2021.02.15 |
---|---|
0209 / k_digital 44일차 / 자습 (0) | 2021.02.09 |
0205 / k_digital 42일차 / 웹 프로그래밍(Django) (2) | 2021.02.05 |
0204 / k_digital 41일차 / 웹프로그래밍(Django) (0) | 2021.02.04 |
0203 / k_digital 40일차 / 웹 프로그래밍(Django) (0) | 2021.02.03 |