이미지 분류에 컨벌루션 신경망 사용하기
게시 됨: 2020-08-14이미지 분류는 화장을 가져옵니다. CNN 덕분입니다.
CNN(Convolutional Neural Networks)은 이미지 분류의 중추이며 이미지를 가져와 고유하게 만드는 클래스와 레이블을 할당하는 딥 러닝 현상입니다. CNN을 사용한 이미지 분류 는 기계 학습 실험의 중요한 부분을 형성합니다.
CNN 및 그 유도 기능을 사용하는 것과 함께 이제 Facebook 사진 태그 지정에서 Amazon 제품 권장 사항 및 의료 이미지, 자동 자동차에 이르기까지 다양한 응용 프로그램에 널리 사용됩니다. CNN이 인기 있는 이유는 전처리가 거의 필요하지 않기 때문에 다른 기존 알고리즘이 할 수 없는 필터를 적용하여 2D 이미지를 읽을 수 있습니다. CNN을 사용하여 이미지 분류 가 작동 하는 과정에 대해 더 깊이 파고들 것 입니다.
목차
CNN은 어떻게 작동합니까?
CNN 은 입력 레이어, 출력 레이어, 은닉 레이어로 구성되어 있으며 이 모든 레이어는 이미지를 처리하고 분류하는 데 도움이 됩니다. 히든 레이어는 컨볼루션 레이어, ReLU 레이어, 풀링 레이어 및 완전 연결 레이어로 구성되며 모두 중요한 역할을 합니다. 컨벌루션 신경망에 대해 자세히 알아보세요.
CNN을 사용한 이미지 분류 가 어떻게 작동 하는지 살펴보겠습니다 .
입력 이미지가 코끼리의 이미지라고 상상해보십시오. 픽셀이 있는 이 이미지는 먼저 컨볼루션 레이어에 입력됩니다. 흑백 사진인 경우 이미지는 2D 레이어로 해석되며 모든 픽셀에는 '0'과 '255' 사이의 값이 할당되고 '0'은 완전히 검은색이고 '255'는 완전히 흰색입니다. 반면에 컬러 그림인 경우 각 색상 값이 0에서 255 사이인 파란색, 녹색, 빨간색 레이어가 있는 3D 배열이 됩니다.

그러면 소프트웨어가 '필터'(또는 커널)라고 하는 더 작은 이미지를 선택하는 행렬 읽기가 시작됩니다. 필터의 깊이는 입력의 깊이와 같습니다. 그런 다음 필터는 입력 이미지와 함께 이미지를 따라 1단위 오른쪽으로 이동하는 컨볼루션 이동을 생성합니다.
그런 다음 값을 원래 그림 값과 곱합니다. 곱한 숫자를 모두 합산하여 하나의 숫자가 생성됩니다. 이 과정을 전체 이미지와 함께 반복하여 원본 입력 이미지보다 작은 행렬을 얻습니다.
마지막 배열은 활성화 맵의 기능 맵이라고 합니다. 이미지의 컨볼루션은 다른 필터를 적용하여 가장자리 감지, 선명하게 하기 및 흐림과 같은 작업을 수행하는 데 도움이 됩니다. 필터 크기, 필터 수 및/또는 네트워크 아키텍처와 같은 측면을 지정하기만 하면 됩니다.
인간의 관점에서 이 동작은 이미지의 단순한 색상과 경계를 식별하는 것과 유사합니다. 그러나 이미지를 분류하여 고양이가 아닌 코끼리와 같은 특징을 인식하기 위해서는 코끼리의 큰 귀와 몸통과 같은 독특한 특징을 식별해야 합니다. 여기서 비선형 및 풀링 레이어가 등장합니다.
비선형 레이어(ReLU)는 이미지의 비선형성을 증가시키기 위해 기능 맵에 활성화 함수가 적용되는 컨볼루션 레이어를 따릅니다. ReLU 레이어는 모든 음수 값을 제거하고 이미지의 정확도를 높입니다. tanh 또는 sigmoid와 같은 다른 작업이 있지만 ReLU가 네트워크를 훨씬 빠르게 훈련할 수 있기 때문에 가장 인기가 있습니다.
다음 단계는 네트워크가 크기나 위치에 관계없이 항상 해당 이미지를 인식할 수 있도록 동일한 개체의 여러 이미지를 만드는 것입니다. 예를 들어, 코끼리 그림에서 네트워크는 코끼리가 걷고 있거나 서 있거나 달리고 있는지 여부를 인식해야 합니다. 이미지 유연성이 있어야 하며 풀링 레이어가 필요한 곳입니다.
이미지의 측정값(높이 및 너비)과 함께 작동하여 입력 이미지의 크기를 점진적으로 줄여 이미지의 개체가 어디에 있든 식별하고 식별할 수 있습니다.
풀링은 또한 새로운 정보에 대한 범위가 없는 너무 많은 정보가 있는 '과적합'을 제어하는 데 도움이 됩니다. 아마도 풀링의 가장 일반적인 예는 이미지가 겹치지 않는 일련의 영역으로 분할되는 최대 풀링일 것입니다.
Max pooling은 모든 추가 정보가 배제되고 이미지의 크기가 작아지도록 각 영역의 최대값을 식별하는 것입니다. 이 작업은 이미지의 왜곡도 설명하는 데 도움이 됩니다.
이제 CNN을 사용하기 위해 인공 신경망을 추가하는 완전 연결 계층이 제공됩니다. 이 인공 네트워크는 다양한 기능을 결합하고 이미지 클래스를 더 정확하게 예측하는 데 도움이 됩니다. 이 단계에서 신경망의 가중치에 대한 오차 함수의 기울기가 계산됩니다. 가중치와 특징 검출기는 성능을 최적화하도록 조정되며 이 프로세스가 반복적으로 반복됩니다.
CNN 아키텍처는 다음과 같습니다.
원천
CNN Application-MNIST용 데이터세트 활용
CNN을 효과적으로 적용하기 위해 여러 데이터 세트를 사용할 수 있습니다. CNN을 사용한 이미지 분류 에서 가장 많이 사용되는 세 가지는 MNIST, CIFAR-10 및 ImageNet입니다. 먼저 MNIST를 살펴보자.
1. 미니스트
MNIST는 Modified National Institute of Standards and Technology 데이터 세트의 약어이며 0과 9 사이의 손으로 쓴 단일 숫자의 작은 정사각형 28×28 그레이스케일 이미지 60,000개로 구성되어 있습니다. MNIST는 대중적이고 잘 알려진 데이터 세트입니다. 부분, '해결됨.' CNN을 사용하여 이미지 분류 를 연습, 개발 및 평가하기 위해 컴퓨터 비전 및 딥 러닝에 사용할 수 있습니다 . 무엇보다도 여기에는 모델의 성능을 평가하고 가능한 개선 사항을 탐색하며 새 데이터를 예측하는 데 사용하는 단계가 포함됩니다.
그것의 USP는 우리가 사용할 수 있는 잘 정의된 훈련 및 테스트 데이터 세트가 이미 있다는 것입니다. 이 훈련 세트는 훈련 실행 모델의 성능을 평가해야 하는 경우 훈련 및 검증 데이터 세트로 더 나눌 수 있습니다. 모델이 문제를 얼마나 잘 학습하고 있는지에 대한 더 큰 통찰력을 위해 학습 곡선과 각 실행의 검증 세트에서의 성능을 기록할 수 있습니다.
주요 신경망 API 중 하나인 Keras는 모델에 "validation_data " 인수를 명시하여 이를 지원합니다. Fit() 함수는 모델을 훈련할 때 각 훈련 실행에서 손실 및 메트릭에 대한 모델 성능을 언급하는 객체를 결국 반환합니다. 다행히 MNIST에는 기본적으로 Keras가 탑재되어 있으며 몇 줄의 코드만으로 훈련 및 테스트 파일을 로드할 수 있습니다.
흥미롭게도 New York University의 Courant Institute of Mathematics Sciences 교수인 Yann LeCun과 뉴욕 Google Labs의 연구 과학자인 Corinna Cortes의 기사는 MNIST의 특수 데이터베이스 3(SD-3)이 원래 훈련 세트. 특수 데이터베이스 1(SD-1)이 테스트 세트로 지정되었습니다.

그러나 그들은 SD-3이 인구 조사국에서 일하는 직원들로부터 수집된 반면 SD-1은 고등학생에게서 수집되었기 때문에 SD-3이 SD-1보다 식별 및 인식하기가 훨씬 쉽다고 생각합니다. 학습 실험의 정확한 결론은 결과가 훈련 세트 및 테스트와 독립적이어야 하므로 데이터 세트를 누락하여 새로운 데이터베이스를 개발할 필요가 있다고 판단되었습니다.
데이터셋 사용 시 미니배치로 나누어 공유변수에 저장하고 미니배치 인덱스를 기반으로 접근하는 것을 권장한다. 공유 변수가 필요한지 궁금할 수도 있지만 이것은 GPU를 사용하는 것과 연결됩니다. 데이터를 GPU 메모리에 복사할 때 필요할 때마다 각 미니 배치를 개별적으로 복사하면 GPU 코드가 느려지고 CPU 코드보다 훨씬 빠르지 않습니다. 데이터가 ano 공유 변수에 있는 경우 공유 변수를 빌드할 때 전체 데이터를 GPU에 한 번에 복사할 수 있는 좋은 기회가 있습니다.
나중에 GPU는 CPU 메모리에서 정보를 복사할 필요 없이 이러한 공유 변수에 액세스하여 미니 배치를 사용할 수 있습니다. 또한 데이터 포인트는 일반적으로 실수 및 레이블 정수이므로 유효성 검사 세트, 훈련 세트 및 테스트 세트에 대해 다른 변수를 사용하여 코드를 더 쉽게 읽을 수 있도록 하는 것이 좋습니다.
아래 코드는 데이터를 저장하고 미니 배치에 액세스하는 방법을 보여줍니다.
원천
2. CIFAR-10 데이터세트
CIFAR는 Canadian Institute for Advanced Research의 약자로, CIFAR-10 데이터셋은 CIFAR-100 데이터셋과 함께 CIFAR 연구소의 연구원들이 개발했습니다. CIFAR-10 데이터세트는 고양이, 배, 새, 개구리 등 10개 클래스에 속하는 물체의 60,000 32×32 픽셀 컬러 이미지로 구성됩니다. 이 이미지는 평균 사진보다 훨씬 작으며 컴퓨터 비전용입니다.
CIFAR는 CNN 프로세스를 사용한 이미지 분류에서 80%, 테스트 데이터 세트에서 90%의 잘 이해되고 간단한 데이터 세트입니다. 또한 하나의 테스트 배치와 5개의 훈련 배치에 최대 1,000개의 이미지가 분산되어 있습니다.
CIFAR-10 데이터 세트는 각 클래스에서 무작위로 선택된 1,000개의 이미지로 구성되지만 일부 배치에는 한 클래스에서 다른 클래스보다 더 많은 이미지가 포함될 수 있습니다. 그러나 훈련 배치에는 각 클래스의 이미지가 정확히 5,000개 포함됩니다. CIFAR-10 데이터 세트는 문제를 사용하여 이미지 분류 CNN 을 해결하기 위한 시작점으로 사용하기 쉽기 때문에 선호됩니다 .
테스트 장치의 디자인은 모듈식이며 데이터 세트 로딩, 모델 정의, 데이터 세트 준비, 평가 및 결과 프레젠테이션을 포함하는 5가지 요소로 개발할 수 있습니다. 아래 예는 교육 데이터 세트의 처음 9개 이미지와 함께 Keras API를 사용하는 CIFAR-10 데이터 세트를 보여줍니다.
원천
예제를 실행하면 CIFAR-10 데이터 세트가 로드되고 모양이 인쇄됩니다.
3. 이미지넷
ImageNet은 미리 정의된 단어와 구문을 기반으로 이미지를 거의 22,000개 범주로 분류하고 레이블을 지정하는 것을 목표로 합니다. 이를 위해 모든 단어 또는 구문이 동의어 또는 합성어(줄여서)인 WordNet 계층 구조를 따릅니다. ImageNet에서 모든 이미지는 이러한 synset에 따라 구성되어 synset당 천 개 이상의 이미지를 갖습니다.
그러나 ImageNet이 컴퓨터 비전 및 딥 러닝에서 언급될 때 실제로 의미하는 것은 ImageNet Large Scale Recognition Challenge 또는 ILSVRC입니다. 여기서 목표는 훈련 데이터 세트에 약 120만 개의 이미지가 포함되어 있으므로 100,000개 이상의 테스트 이미지를 사용하여 이미지를 1,000개의 다른 범주로 분류하는 것입니다.
아마도 여기에서 가장 큰 문제는 ImageNet의 이미지가 224×224를 측정하기 때문에 이러한 많은 양의 데이터를 처리하려면 막대한 CPU, GPU 및 RAM 용량이 필요하다는 것입니다. 이것은 일반 노트북에서는 불가능할 수 있습니다. 그렇다면 이 문제를 어떻게 극복할 수 있을까요?
이를 수행하는 한 가지 방법은 너무 많은 리소스가 필요하지 않은 ImageNet에서 추출한 데이터세트인 Imagenette를 사용하는 것입니다. 이 데이터 세트에는 각 클래스에 대한 개별 폴더가 있는 'train'(훈련) 및 'Val'(검증)이라는 두 개의 폴더가 있습니다. 이 모든 클래스는 원본 데이터 세트와 동일한 ID를 가지며 각 클래스에는 약 1,000개의 이미지가 있으므로 전체 설정이 상당히 균형을 이룹니다.

또 다른 옵션은 대규모 데이터 세트에서 사전 훈련된 가중치를 사용하는 방법인 전이 학습을 사용하는 것입니다. 이것은 CNN 을 사용하여 우리에게 잘 맞는 모델을 생성하는 데 사용할 수 있기 때문에 매우 효과적인 이미지 분류 방법입니다. CNN 모델을 이용한 이미지 분류 가 할 수 있어야 하는 한 가지 측면 은 같은 클래스에 속하는 이미지를 분류하고 다른 이미지를 구별하는 것입니다. 여기에서 사전 훈련된 가중치를 사용할 수 있습니다. 여기서의 장점은 작업 중인 데이터 세트의 종류에 따라 다른 방법을 사용할 수 있다는 것입니다.
더 읽어보기: 인공 신경망 ML 엔지니어가 알아야 할 7가지 유형
합산
요약하자면, CNN 을 사용한 이미지 분류는 프로세스를 더 쉽고 정확하고 덜 무겁게 만들었습니다. 머신 러닝에 대해 더 깊이 알고 싶다면 upGrad 에 전문가처럼 마스터하는 데 도움이 되는 다양한 과정이 있습니다!
upGrad 는 다양한 하위 범주와 함께 다양한 온라인 과정을 제공합니다. 자세한 내용은 공식 사이트 를 방문하십시오 .
기계 학습에 대해 자세히 알아보려면 IIIT-B 및 upGrad의 기계 학습 및 AI PG 디플로마를 확인하세요. 이 PG 디플로마는 일하는 전문가를 위해 설계되었으며 450시간 이상의 엄격한 교육, 30개 이상의 사례 연구 및 과제, IIIT- B 동문 자격, 5개 이상의 실용적인 실습 캡스톤 프로젝트 및 최고의 기업과의 취업 지원.
컨볼루션 신경망이란 무엇입니까?
CNN(Convolutional Neural Networks) 또는 convnet은 심층적인 피드포워드 인공 신경망의 범주로, 시각적 이미지 분석에 가장 일반적으로 적용됩니다. CNN의 디자인은 포유류의 시각 피질 조직에서 느슨하게 영감을 받았지만 오디오, 음성 및 기타 영역에도 적용되었습니다. CNN은 최소한의 전처리가 필요하도록 설계된 다층 퍼셉트론의 변형을 사용합니다. 이로 인해 오류가 발생하기 쉽고 다양한 문제에 더 쉽게 이식할 수 있지만 입력에 대해 비선형 변환을 수행하는 기능이 희생됩니다.
컨볼루션 신경망이 이미지 분류에 좋은 이유는 무엇입니까?
CNN의 가장 큰 한계는 이미지에서 컨텍스트를 파악할 수 없다는 것입니다. 또한 얼굴과 색상을 할 수 없습니다. CNN의 더 많은 제한 사항: 신경망에서 사용되는 학습 기술은 객체 인식, 학습, 공간 인식 및 경험 전달 능력과 같은 더 높은 인지 기능을 재현하기에 충분하지 않습니다. 신경망의 아키텍처는 이러한 한계를 극복할 만큼 충분히 유연하지 않습니다.