News & Events
대부분의 연구 분야는 많은 자금과 잘 갖춰진 실험실이 필요하다. 그러나 초기 수준에서 DL로 작업하려면 시스템만 갖추면 된다. 컴퓨터의 연산 능력에 대해 걱정할 필요도 없다. 모델을 실행할 수 있는 많은 클라우드 플랫폼 역시 사용할 수 있다. 이러한 장점 덕분에 많은 학생들이 DL을 대학 프로젝트로 선택할 수 있게 되었다. 선택할 수 있는 딥러닝 프로젝트들이 많이 있다. 당신은 초보자 혹은 전문가일 것이다. 이 포스팅에서는 모두에게 적합한 프로젝트를 소개할 것이다.
해볼 만한 딥러닝 프로젝트
누구나 대학 생활을 하며 프로젝트를 경험할 것이다. 이 프로젝트는 규모가 작거나 혁신적일 수 있다. 인공지능과 머신러닝의 시대인 만큼 딥러닝에 힘쓰는 것은 매우 자연스러운 일이다. 하지만 많은 선택지로 인해 혼란스러울 수 있다. 최종 프로젝트를 진행하기 전에 살펴봐야 할 상위 딥러닝 프로젝트를 나열했다.
01. Scratch에서 신경망 구축하기
신경망은 사실 DL의 가장 기본이다. DL을 제대로 이해하기 위해서는 신경망에 대한 명확한 아이디어가 필요하다. 딥러닝 알고리즘을 구현하기 위해 여러 라이브러리를 사용할 수 있지만, 더 잘 이해하려면 라이브러리를 한 번 작성해보아야 한다. 많은 사람들이 이를 쓸모 없는 딥러닝 프로젝트로 여길지도 모른다. 하지만, 일단 여러분이 이 프로젝트를 마치게 된다면 중요성을 알게 될 것이다. 이 프로젝트는 결국 초보자들에게는 더할 나위 없는 훌륭한 프로젝트가 될 것이다.
- 일반적인 DL 모델에는 일반적으로 입력, 은닉 계층 및 출력과 같은 세 개의 계층이 있다. 각각의 층은 여러 개의 뉴런으로 구성되어 있다.
- 뉴런은 확실한 출력을 제공하기 위해 연결되어 있다. 이러한 연결로 형성된 모델이 신경망이다.
- 입력 계층은 입력을 받는다. 그다지 특별하지 않은 특성을 가진 기본적인 뉴런들이다.
- 뉴런 사이의 연결은 가중치라고 불린다. 은닉층의 각 뉴런은 가중치와 편향과 연관되어 있다. 입력에 해당하는 가중치를 곱하고 편향을 더한다.
- 그런 다음 가중치와 편향의 데이터는 활성화 함수를 거친다. 출력의 손실 함수는 오류를 측정하고 정보를 역전달하여 가중치를 변경하고 궁극적으로 손실을 줄인다.
- 손실이 최소화될 때까지 프로세스가 계속된다. 프로세스 속도는 학습 속도와 같은 일부 하이퍼 파라미터에 따라 달라진다. 만드는 데는 많은 시간이 걸리지만 결국 DL의 작동 방식을 이해할 수 있을 것이다.
02. 교통 표지판 구분
자율주행 자동차는 최근 인공지능(AI)과 DL 트렌드로 떠오르고 있다. 테슬라, 도요타, 메르세데스-벤츠, 포드 등 대형 자동차 제조사들이 자율주행 자동차 기술 발전을 위해 많은 투자를 하고 있다. 자율 주행 자동차는 교통 규칙을 이해하고 작동해야 한다.
결과적으로, 정밀함을 달성하기 위해, 자동차는 도로 표시를 이해하고 적절한 결정을 내려야 한다. 이 기술의 중요성을 분석하면서, 학생들은 교통 표지판 분류 프로젝트를 시도할 수 있다.
- 이 프로젝트는 복잡해 보일 수 있다. 그러나 컴퓨터로 프로젝트의 프로토 타입을 매우 쉽게 수행할 수 있다. 코딩의 기본과 이론적인 지식만 알면 된다.
- 우선, 해당 모델에 다양한 교통 표지판을 가르쳐야 한다. 학습은 데이터 세트를 사용하여 수행된다. 캐글에서 이용할 수 있는 “교통 표지판 인식”은 라벨이 있는 5만 개 이상의 이미지를 가지고 있다.
- 데이터 세트를 다운로드한 후 데이터 세트를 탐색한다. Python PIL 라이브러리를 사용하여 이미지를 열 수 있다. 필요한 경우 데이터 세트를 정리한다.
- 그런 다음 모든 영상을 라벨과 함께 목록으로 가져온다. CNN은 원시 이미지로 작업할 수 없으므로 이미지를 NumPy 배열로 변환한다. 모델을 학습시키기 전에 데이터를 훈련 세트와와 테스트 세트로 분할한다.
- 이미지 처리 프로젝트이기 때문에 CNN이 관여해야 한다. 입력하기 전에 NumPy 배열 데이터를 플랫하게 만들자.
- 마지막으로 모델을 학습하고 검증한다. 손실 및 정확도 그래프를 관찰한다. 그런 다음 테스트 세트에서 모델을 테스트한다. 테스트 세트에서 만족스러운 결과가 나오면 프로젝트에 다른 항목을 추가할 수 있다.
03. 유방암 분류
유방암 분류 프로젝트 역시 간단하지만 실용적인 프로젝트이다. 이 또한 이미지 처리 프로젝트이다. 세계적으로 매년 유방암만으로 사망하는 여성이 상당하다.
다만 암을 조기에 발견할 수 있다면 사망률이 줄어들 수 있다. 유방암 발견에 관한 많은 연구 논문과 프로젝트가 발표되었다. 프로젝트를 시작하여 파이썬 프로그래밍뿐만 아니라 DL에 대한 지식을 향상시켜 보자.
- 모델을 만들려면 Tensorflow, Keras, Theano, CNTK 등과 같은 기본 파이썬 라이브러리를 사용해야 헌다. 텐서플로우의 CPU와 GPU 버전을 모두 사용할 수 있다. 둘 다 써도 무관하나 텐서플로우-GPU가 가장 빠르다.
- IDC 유방 조직 병리학 데이터 세트를 사용한다. 라벨이 붙은 이미지만 30만 개에 이른다. 각 이미지의 크기는 50*50이다. 전체 데이터셋은 3GB의 공간을 차지한다.
- 초보자라면 OpenCV를 프로젝트에 사용해야 한다. OS 라이브러리를 사용하여 데이터를 읽는다. 그리고 훈련 세트와 테스트 세트로 나누자.
- 그리고 나서 CancerNet이라고도 불리는 CNN을 만든다. 3 x 3 컨볼루션 필터를 사용한다. 필터를 쌓고 필요한 최대 풀링 계층을 추가한다.
- sequential API를 사용하여 전체 CancerNet을 패키징한다. 입력 계층은 4개의 매개 변수를 사용한다. 그런 다음 모형의 하이퍼 파라미터를 설정한다. 검증 세트와 함께 훈련 세트를 가지고 교육을 시작한다.
- 마지막으로 혼돈 행렬을 찾아 모형의 정확성을 확인한다. 이 경우에는 테스트 세트를 사용하자. 결과가 만족스럽지 않을 경우, 하이퍼 파라미터를 변경하고 모델을 다시 실행한다.
04. 음성을 이용한 성별 인식
목소리에 의한 성별인식은 중간 난이도의 프로젝트이다. 이 프로젝트에서는 오디오 신호를 처리해야 성별을 구분할 수 있다. 이항 분류이다. 목소리를 듣고 남자와 여자를 구별해야 한다. 남성은 굵은 목소리를 가지고 있고, 여성은 날카로운 목소리를 가지고 있다. 당신은 신호를 분석하고 탐구함으로써 이해할 수 있다. 해당 프로젝트는 텐서플로우가 가장 잘 될 것이다.
- Kaggle의 “Gender Recognition by Voice” 데이터 세트를 사용하자. 데이터 세트에는 남성과 여성의 3,000개 이상의 오디오 샘플이 포함되어 있다.
- 원시 오디오 데이터는 모델에 입력할 수 없으니 데이터를 정리하고 피쳐 추출을 수행한다. 소음을 최대한 줄이자.
- 과적합 가능성을 줄이기 위해 남성과 여성의 수를 동일하게 만든다. Mel Spectrogram 프로세스를 사용하여 데이터를 추출할 수 있다. 데이터를 128 크기의 벡터로 변환한다.
- 처리된 오디오 데이터를 단일 배열로 가져와서 테스트 세트와 훈련 세트로 나눈다. 다음으로 모델을 만들자. 피드 포워드 신경망을 사용하는 것이 이 경우에 적합할 것이다.
- 모델에서 최소 5개의 레이어를 사용해보자. 필요에 따라 레이어를 늘릴 수 있다. 숨겨진 레이어에는 “relu” 활성화를 사용하고 출력 레이어에는 “sigmoid”를 사용한다.
- 마지막으로 적절한 하이퍼 파라미터를 사용하여 모델을 실행한다. 100을 Epoch로 사용한다. 훈련 후 테스트 세트로 검증한다.
05. 이미지 캡션 생성기
이미지에 캡션을 추가하는 것은 고급 프로젝트이다. 그러므로, 당신은 위의 프로젝트들을 끝낸 후에 시작해야 한다. 요즘 같은 소셜 네트워크 시대에는 사진과 동영상이 도처에 널려 있다. 대부분의 사람들은 글 한 단락보다 이미지를 선호한다. 또한 글보다는 이미지로 쉽게 이해시킬 수 있다.
이 모든 이미지들은 캡션이 필요하다. 우리는 사진을 보면, 자동적으로 캡션이 떠오른다. 컴퓨터도 마찬가지이다. 이 프로젝트에서 컴퓨터는 사람의 도움 없이 이미지 캡션을 만드는 법을 배울 것이다.
- 이것은 사실 복잡한 프로젝트이다. 그럼에도 불구하고, 여기서 사용되는 네트워크도 문제가 있다. CNN과 LSTM(즉, RNN)을 모두 사용하여 모델을 만들어야 한다.
- 이 경우에는 Flicker8K 데이터 세트를 사용한다. 이름에서 알 수 있듯이, 1 GB의 공간을 차지하는 8,000 개의 이미지를 가지고 있다. 또한 이미지 이름과 캡션이 포함된 “Flicker 8K 텍스트” 데이터 세트를 다운로드한다.
- pandas, TensorFlow, Keras, NumPy, Jupyterlab, Tqdm, Pillow 등과 같은 많은 파이썬 라이브러리를 사용해야 한다. 컴퓨터에서 모든 파일을 사용할 수 있는지 확인한다.
- 캡션 생성기 모델은 기본적으로 CNN-RNN 모델이다. CNN은 특징을 추출하고 LSTM은 적절한 캡션을 만드는 데 도움이 된다. Xception이라는 이름의 미리 훈련된 모델을 사용하여 프로세스를 더 쉽게 만들 수 있다.
- 그런 다음 모델을 훈련시킨다. 최대한의 정확성을 확보한다. 결과가 만족스럽지 않을 경우 데이터를 정리하고 모델을 다시 실행한다.
- 별도의 이미지를 사용하여 모델을 테스트한. 모델이 이미지에 적절한 캡션을 제공하는 것을 볼 수 있다. 예를 들어, 새의 이미지에는 “새”라는 캡션이 붙게 된다.
06. 음악 장르 분류
사람들은 매일 음악을 듣는다. 사람마다 음악 취향이 다르다. 머신러닝을 이용하여 음악 추천 시스템을 쉽게 구축할 수 있다. 하지만, 음악을 다양한 장르로 분류하는 것은 다르다. 딥러닝 프로젝트를 만들려면 DL 기술을 사용해야 한다. 또한 이 프로젝트를 통해 오디오 신호 분류에 대한 좋은 아이디어를 얻을 수 있다.
- CNN, 서포트 벡터 머신, K-최근접 이웃 및 K-평균 군집화 등 여러 방법을 사용하여 문제를 해결할 수 있다. 원하는 대로 아무거나 사용할 수 있다.
- 해당 프로젝트에서는 GTZAN 데이터 세트를 사용한다. 2000-200년까지 다양한 노래들을 포함하고 있다. 각 노래의 길이는 30초이다. 10가지 장르를 이용할 수 있고 각 노래의 라벨이 제대로 붙어 있다.
- 다음, 당신은 피처 추출 과정을 거쳐야 한다. 음악을 매 20-40ms씩 더 작은 프레임으로 나누자. 그런 다음 노이즈을 확인하여 데이터를 잡음이 없는 상태로 만든다. DCT 방법을 사용하여 프로세스를 수행한다.
- 프로젝트에 필요한 라이브러리를 가져온다. 피쳐 추출 후 각 데이터의 주파수를 분석한다. 주파수 역시 장르를 결정하는데 도움이 될 것이다.
- 적절한 알고리즘을 사용하여 모델을 구축한다. KNN을 이용하시면 가장 편리하다. 하지만 지식을 얻기 위해서는 CNN이나 RNN을 이용해 해보자.
- 모델을 실행한 후 정확도를 테스트한다.
07. 오래된 B&W 이미지 색칠하기
요즘, 우리가 보는 모든 것은 컬러 이미지이다. 다만 흑백 카메라만 나오던 시절이 있었다. 영화는 물론 모든 이미지들이 흑백이었다. 하지만 기술의 발전으로 흑백 이미지에 RGB 색상을 추가할 수 있게 되었다.
딥러닝은 우리가 이러한 일을 하는 것을 꽤 쉽게 만들었다. 기본적인 파이썬 프로그래밍만 알면 된다. 모델을 제작하기만 하면 되고, 원한다면 프로젝트에 사용할 GUI도 만들 수 있다. 이 프로젝트는 초보자들에게 꽤 도움이 될 수 있다.
- OpenCV DNN 아키텍처를 기본 모델로 사용한다. 신경망은 L 채널의 사진 데이터를 소스로 사용하고 a, b 스트림의 신호를 목표로 하여 훈련된다.
- 편의를 위해 미리 훈련된 Caffe 모델을 사용하자. 별도의 디렉토리를 만들고 필요한 모든 모듈과 라이브러리를 추가한다.
- 흑백 이미지를 읽고 Caffe 모델을 로드하자. 필요한 경우 프로젝트에 따라 이미지를 정리하고 정확도를 높이자.
- 그런 다음 사전 훈련된 모델을 수정한다. 필요에 따라 레이어를 추가하고 모델에 배치할 L-채널을 처리한다.
- 훈련 세트로 모델을 실행한다. 정확성과 정밀도를 준수하여 모델을 최대한 정확하게 만들어 보자.
- 마지막으로, ab 채널로 예측을 하자. 결과를 다시 관찰하고 나중에 사용할 수 있도록 모델을 저장한다.
08. 운전자 졸음 감지
수많은 사람들이 하루 종일 밤낮으로 고속도로를 이용한다. 택시 운전사, 트럭 운전사, 버스 운전사, 그리고 장거리 여행객들은 모두 수면 부족을 겪는다. 결과적으로 졸릴 때 운전하는 것은 매우 위험하다. 대부분의 사고는 운전자의 피곤으로 인해 발생한다. 따라서 이러한 충돌을 피하기 위해 Python, Keras 및 OpenCV를 사용하여 작업자가 피곤할 때 알려주는 모델을 만들 것이다.
- 이번 딥러닝 프로젝트는 사람의 눈이 잠시 감겼을 때 이를 모니터링하는 졸음 모니터링 센서를 만드는 것이 목적이다. 졸음이 인식되면 이 모델이 운전자에게 알린다.
- 이 파이썬 프로젝트에서 OpenCV를 사용하여 카메라에서 사진을 수집하고 딥러닝 모델에 넣어 사람의 눈이 떠져 있는지 감겨져 있는지 판단한다.
- 이 프로젝트에 사용된 데이터 세트에는 눈을 감고 뜬 사람의 이미지가 여러 개 있다. 각 이미지에 레이블이 지정된다. 7천 개 이상의 이미지를 포함하고 있다.
- 그런 다음 CNN으로 모델을 제작한다. 이럴 땐 Keras를 쓰자. 완료되면 총 128개의 노드가 완전히 연결된다.
- 이제 코드를 실행하고 정밀도를 확인한다. 필요한 경우 하이퍼 파라미터를 조정한다. PyGame을 사용하여 GUI를 작성한다.
- OpenCV를 사용하여 비디오를 수신하거나 웹캠을 대신 사용할 수 있다. 스스로 테스트 해보자. 5초 동안 눈을 감으면 모델이 경고하는 것을 볼 수 있다.
09. CIFAR-10 데이터 세트를 사용한 이미지 분류
주목할 만한 딥러닝 프로젝트는 이미지 분류이다. 이것은 초급 수준의 프로젝트이다. 이전에 우리는 다양한 유형의 이미지 분류를 했다. 그러나 CIFAR 데이터 세트는 다양한 범주의 이미지를 갖고 있기 때문에 특별하다. 다른 고급 프로젝트로 작업하기 전에 이 프로젝트를 수행해야 한다. 분류의 기본은 이것으로부터 이해할 수 있다. 평소처럼 python과 Keras를 사용하자.
- 분류 과제는 디지털 이미지의 모든 요소를 여러 범주 중 하나로 정렬하는 것이다. 사실 이미지 분석에서 매우 중요한 것이다.
- CIFAR-10 데이터 세트는 널리 사용되는 컴퓨터 비전 데이터 세트이다. 데이터 세트는 다양한 딥러닝 컴퓨터 비전 연구에 사용되어 왔다.
- 이 데이터 세트는 32*32 크기의 6000장의 사진을 포함하여 10개의 클래스 레이블로 구분된 60,000장의 사진으로 구성되어 있다. 이 데이터 세트는 저해상도 사진(32*32)을 제공하여 연구자들이 새로운 기술을 실험할 수 있도록 한다.
- Keras와 Tensorflow를 사용하여 모델을 구축하고 Matplotlib을 사용하여 전체 프로세스를 시각화한다. keras.datasets에서 직접 데이터 세트를 로드한다.
- CIFAR 데이터 세트는 거의 깨끗하다. 데이터를 처리하기 위해 별도의 시간을 주지 않아도 된다. 모델에 필요한 레이어만 작성하면 됩니다. SGD를 옵티마이저로 사용한다.
- 데이터로 모델을 훈련시키고 정밀도를 계산하자. 그런 다음 GUI를 작성하여 전체 프로젝트를 요약하고 데이터 세트가 아닌 임의의 이미지에서 테스트할 수 있다.
10. 연령 감지
연령 감지는 중요한 중급 단계 프로젝트이다. 컴퓨터 비전(Computer vision)은 인간이 인지하는 것과 동일한 방식으로 컴퓨터가 어떻게 사진과 비디오를 보고 인식할 수 있는지에 대한 조사이다. 일차적으로 생물학적 시각에 대한 이해 부족이 가장 큰 어려움이다.
그러나 데이터가 충분하다면 이러한 생물학적 시각 이해 부족은 없어질 수 있다. 이번 프로젝트도 마찬가지이다. 그 데이터를 바탕으로 모델이 제작되고 훈련될 것이다. 그렇게 사람들의 나이를 결정할 수 있다.
- 이 프로젝트에서 DL을 활용하여 얼굴을 찍은 사진 한 장으로부터 나이를 확실하게 인식해야 한다.
- 화장품, 조명, 장애물, 그리고 얼굴 표정과 같은 요소들 때문에, 디지털 사진으로 정확한 나이를 결정하는 것은 매우 어렵다. 따라서 이 작업을 회귀 작업이라고 부르지 않고 분류 작업으로 만든다.
- 이 경우에는 Adience 데이터 세트를 사용한다. 25,000개 이상의 이미지들을 가지고 있으며, 각각의 이미지들은 제대로 레이블이 붙어 있다. 총 공간은 거의 1GB이다.
- CNN 레이어를 3개의 컨볼루션 레이어, 총 512개의 연결된 레이어로 만들자. 데이터 세트를 사용하여 이 모델을 학습한다.
- 얼굴을 감지하기 위해 필요한 파이썬 코드를 작성하고 얼굴 둘레에 정사각형 상자를 그리자. 상자 위에 나이를 표시하는 단계를 수행한다.
- GUI를 만들고 사람 얼굴이 있는 임의의 사진으로 테스트해보자.
마무리
요즘같은 기술의 시대에는 누구나 인터넷에서 무엇이든 배울 수 있다. 게다가, 새로운 기술을 배우는 가장 좋은 방법은 더 많은 프로젝트를 하는 것이다. 전문가들도 마찬가지이다. 어떤 분야의 전문가가 되고 싶다면, 그는 가능한 한 많은 프로젝트를 해야 한다. 인공지능은 지금 매우 중요하고 떠오르는 기술이다. AI의 중요성은 나날이 증가하고 있다.
초보자라면 어떤 프로젝트로 시작해야 할지 혼란스러울 수 있다. 그래서 여러분이 살펴봐야 할 딥러닝 프로젝트 몇 가지를 나열해보았다. 이 글에는 초급과 중급 수준의 프로젝트가 모두 포함되어 있다. 이 포스팅이 당신에게 유익하기를 바란다. 그러니, 시간을 낭비하지 말고 지금 당장 새로운 프로젝트를 시작하자.
번역 – 핀인사이트 인턴연구원 강지윤(shety0427@gmail.com)
원문 보러가기>
https://www.ubuntupit.com/top-deep-learning-projects-ideas-for-beginners-and-professionals/