2013년 5월, Google은 개인 사진 검색을 출시하여 사용자가 이미지에 있는 객체를 기반으로 라이브러리에서 사진을 검색할 수 있도록 했습니다.
그림 1. 샴고양이를 Google 포토로 검색하면 상품이 배송됩니다.
이후 2015년에 Google 포토에 도입된 이 기능은 컴퓨터 비전 소프트웨어가 인간의 표준에 따라 이미지를 분류해 여러 가지 방식으로 가치를 더할 수 있다는 개념 증명이라는 혁신적인 개념으로 널리 인식되고 있습니다.
사용자는 더 이상 이미지 콘텐츠를 분류하기 위해 '해변'과 같은 라벨로 태그를 지정할 필요가 없습니다. 수백 또는 수천 개의 이미지 집합을 관리할 때 수작업이 필요하지 않게 되기 때문입니다.
사용자는 새로운 방법으로 사진 컬렉션을 살펴볼 수 있습니다. 검색어를 사용해 태그한 적이 없는 객체로 사진을 찾을 수 있습니다. 예를 들어 '야자수'를 검색하면 배경에 야자수가 있는 휴가 사진을 모두 표시할 수 있습니다.
소프트웨어는 최종 사용자가 인지할 수 없는 분류적 분류 (예: 샴 고양이와 아비시니안 고양이 구분)를 할 수 있으며, 이를 통해 사용자의 도메인 지식을 효과적으로 강화할 수 있습니다.
이미지 분류 작동 방식
이미지 분류는 지도 학습 문제입니다. 지도 학습에서는 대상 클래스 집합 (이미지에서 식별할 객체)을 정의하고 라벨이 있는 예시 사진을 사용하여 모델을 인식하도록 모델을 학습시킵니다. 초기 컴퓨터 비전 모델은 원시 픽셀 데이터를 모델에 대한 입력으로 사용했습니다. 하지만 그림 2와 같이 원시 픽셀 데이터만으로는 이미지에서 캡처된 객체의 수많은 변형을 포함할 수 있을 만큼 안정적인 표현을 제공하지 않습니다. 객체의 위치, 객체 뒤의 배경, 주변 조명, 카메라 각도, 카메라 초점은 모두 원시 픽셀 데이터의 변동을 유발할 수 있습니다. 이러한 차이는 픽셀 RGB 값의 가중 평균을 사용하여 수정할 수 없을 정도로 현저합니다.
그림 2. 왼쪽: 고양이를 다양한 자세로 촬영한 후 다양한 배경화면과 조명 조건을 사용해 고양이를 캡처할 수 있습니다. 오른쪽: 이러한 다양성을 고려하기 위해 픽셀 데이터를 평균화해도 유의미한 정보가 생성되지 않습니다.
객체를 더 유연하게 모델링하기 위해 기존 컴퓨터 비전 모델은 색상 히스토그램, 질감, 도형과 같은 픽셀 데이터에서 파생된 새로운 특성을 추가했습니다. 이 접근 방식의 단점은 조정해야 할 입력이 너무 많아 특성 추출이 큰 부담이 되었다는 점입니다. 고양이 분류기의 경우, 가장 관련성이 높은 색상은 무엇인가요? 형태 정의는 얼마나 유연해야 하나요? 특성을 정밀하게 조정해야 했기 때문에 강력한 모델을 빌드하는 것이 매우 어려웠고 정확성이 떨어졌습니다.
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2022-09-27(UTC)"],[[["\u003cp\u003eThis tutorial teaches how Google developed its image classification model used in Google Photos.\u003c/p\u003e\n"],["\u003cp\u003eUsers will learn about convolutional neural networks and build their own image classifier to differentiate cat and dog photos.\u003c/p\u003e\n"],["\u003cp\u003eThe tutorial requires prior knowledge of machine learning fundamentals and basic Python coding skills.\u003c/p\u003e\n"],["\u003cp\u003eTraditional computer vision models relied on raw pixel data and engineered features but were limited in handling variations in images.\u003c/p\u003e\n"],["\u003cp\u003eThis tutorial uses the Keras API, though prior experience is not necessary due to heavily commented code examples and comprehensive documentation.\u003c/p\u003e\n"]]],[],null,["\u003cbr /\u003e\n\nLearn how Google developed the state-of-the-art image classification\nmodel powering search in Google Photos. Get a crash course on convolutional neural\nnetworks, and then build your own image classifier to distinguish cat photos\nfrom dog photos.\n| **Estimated Completion Time:** 90--120 minutes\n\nPrerequisites\n\n-\n\n [Machine Learning Crash Course](https://developers.google.com/machine-learning/crash-course/)\n\n or equivalent experience with ML fundamentals\n\n- Proficiency in programming basics, and some experience coding in Python\n\n| **Note:** The coding exercises in this\n| practicum use the [Keras](https://keras.io/) API.\n| Keras is a high-level deep-learning API for configuring neural networks. It is\n| available both as a standalone library and as a\n| [module within\n| TensorFlow.](https://www.tensorflow.org/api_docs/python/tf/keras)\n|\n| Prior experience with Keras is not required for the Colab exercises, as code\n| listings are heavily commented and explained step by step. Comprehensive API\ndocumentation is also available on the [Keras site](https://keras.io/). \n\nIntroduction\n\nIn May 2013, Google [released search for personal\nphotos](https://search.googleblog.com/2013/05/finding-your-photos-more-easily-with.html),\ngiving users the ability to retrieve photos in their libraries based on the\nobjects present in the images.\n\n*Figure 1. Google Photos search for\nSiamese cats delivers the goods!*\n\nThe feature, later incorporated into [Google\nPhotos](https://googleblog.blogspot.com/2015/05/picture-this-fresh-approach-to-photos.html)\nin 2015, was widely perceived as a game-changer, a proof of concept that\ncomputer vision software could classify images to human standards, adding value\nin several ways:\n\n- Users no longer needed to tag photos with labels like \"beach\" to categorize image content, eliminating a manual task that could become quite tedious when managing sets of hundreds or thousands of images.\n- Users could explore their collection of photos in new ways, using search terms to locate photos with objects they might never have tagged. For example, they could search for \"palm tree\" to surface all their vacation photos that had palm trees in the background.\n- Software could potentially \"see\" taxonomical distinctions that end users themselves might not be able to perceive (e.g., distinguishing Siamese and Abyssinian cats), effectively augmenting users' domain knowledge.\n\nHow Image Classification Works\n\nImage classification is a supervised learning problem: define a set of target\nclasses (objects to identify in images), and train a model to recognize them\nusing labeled example photos. Early computer vision models relied on raw pixel\ndata as the input to the model. However, as shown in Figure 2, raw pixel data\nalone doesn't provide a sufficiently stable representation to encompass the\nmyriad variations of an object as captured in an image. The position of the\nobject, background behind the object, ambient lighting, camera angle, and camera\nfocus all can produce fluctuation in raw pixel data; these differences are\nsignificant enough that they cannot be corrected for by taking weighted averages\nof pixel RGB values.\n\n*Figure 2. **Left** : Cats can be captured\nin a photo in a variety of poses, with different backdrops and lighting\nconditions. **Right**: averaging pixel data to account for this variety does\nnot produce any meaningful information.*\n\n\nTo model objects more flexibly, classic computer vision models added new\nfeatures derived from pixel data, such as [color\nhistograms](https://wikipedia.org/wiki/Color_histogram), textures, and\nshapes. The downside of this approach was that [feature\nengineering](/machine-learning/crash-course/representation/feature-engineering)\nbecame a real burden, as there were so many inputs to tweak. For a cat\nclassifier, which colors were most relevant? How flexible should the shape\ndefinitions be? Because features needed to be tuned so precisely, building\nrobust models was quite challenging, and accuracy suffered.\n| **Key Terms**\n|\n| |-------------------------------------------------------------------------|\n| | - [feature engineering](/machine-learning/glossary#feature_engineering) |\n|"]]