데이터 수집 방법

1. 공개 데이터 사용

2. 크롤링 데이터 사용(python crawling...)

3. 직접 촬영

 

데이터 전처리

수집된 데이터 -> 정제 -> 이미지 데이터 다루기(각도 조절, 채도 높이기 등)

...->데이터 학습

 

이미지 데이터 라벨링 소개

외부나 도커를 이용해 내부에서 작업하는 방법이 있다.

툴에는 CVAT이 있고 깃허브에 도커 파일이 따로 있어 내부적으로 프라이빗한 작업 가능

 

데이터 어노테이션 파일

라벨링 작업이후 생기는 파일로 XML이나 JSON 파일이 생긴다

읽고 활용할 수 있어야 한다.

 

데이터 나누기

훈련 세트와 데스트 세트로 나눈다.(양성과 음성 클래스 적절히 섞기)

 


데이터 수집 방법

 

1. 웹 스크래핑 : 웹 페이지에서 데이터 추출

2. 소셜 미디어 모니터링 ( 대화 , 키워드, 해시태그 등 수집 )

3. 데이터 크롤링 : 웹 사이트 링크 따라가며 데이터 수집

4. IoT 센서 데이터 수집 : 스마트 시티, 스마트 홈 등에서 발생하는 데이터 수집

5. 로그 데이터 수집: 서버 네트워크 등에서 발생하는 로그 데이터 수집하는 기술

 

수집하고자 하는 데이터 종류아 목적에 따라 선택

 

데이터 수집에서 고려할 것

 

1. 시점 변화 : 객체 인식이나 추적에 필요하며 객체나 장면의 위치 방향 각도 크기 등이 서로 다른 시점에서 촬영된 데이터 수집 필요

2. 척도 변형 : 객체나 장면 크기에 따른 차이를 의미, 동일한 객체나 장면이 서로 다른 크기로 촬영된 이미지들 간의 차이를 고려하여 데이터 수집 시 다양한 크기의 이미지 수집 or 이미지 축소 또는 확대하여 데이터셋 보강(augmentatation 기술 활용)

3. 변형: 대상의 형태가 변형될 때.. 데이터를 회전, 이동, 대칭하여 수집(augmentatation 기술 활용)

4. 가려짐 : 다양한 뷰 포인트에서 객체 촬영하여 데이터셋 보강, de-occlusion 기술 활용

5. 조명 조건  (다양한 조건 환경에서 데이터 수집)

6. 배경 혼란 : 배경이 복잡할 경우 검정색마스크로 가려버리거나, 딥러닝 기술을 활용한 세그멘테이션 알고리즘이 효과적 해결

7. 클래스 내 변형 : 클래스 간에 속하는 객체들 간의 차이를 최대한 줄이는 게 좋다( 클래스가 차라면 기아 중형차만 모으기...)

 

이미지 데이터셋 공유 사이트

MNIST : 손글씨 사이트

CIFAR : 10개 클래스 있다

ImageNet :cv 경진대화에서 사용되는 데이터셋 - 분류 문제에 활용

COCO : 오브젝트 디텍션에 활용되는 데이터셋

DOTA : 항공 이미지

CelebA : 유명인 얼굴 데이터셋 GAN 모델에서 많이 활용

AI Hub : 국내 데이터셋 플랫폼

Kaggle : 보통 예측이나 분석에 활용되는 데이터셋 

 


크롤링

인터넷 상의 웹 페이지에서 데이터를 수집하는 과정, 일반적으로 크롤러 또는 스파이더라고 불리는 소프트웨이 사용

웹스크래핑과 연관되어있으며 크롤링은 웹 스크래핑의 프로세스 중 하나.

더보기

크롤링은 웹 스크래핑의 하위 과정 중 하나입니다. 웹 스크래핑은 웹 페이지에서 정보를 추출하는 전반적인 과정을 의미하며, 이는 크롤링과 데이터 추출 및 가공 단계로 구성됩니다.

 

크롤링은 웹을 돌아다니면서 웹 페이지를 자동으로 탐색하는 과정을 말합니다. 크롤러(또는 스파이더)라고 불리는 프로그램이 웹 페이지를 방문하고 링크를 따라가며 다른 페이지를 찾아내는 것입니다. 크롤러는 일반적으로 로봇 또는 봇으로 알려져 있으며, 웹 사이트의 구조를 파악하고 데이터 수집 대상을 확인합니다.

 

크롤러가 웹 페이지를 탐색하면서 필요한 정보를 추출하기 위해 웹 스크래핑 기술을 사용합니다. 웹 스크래핑은 HTML 문서를 파싱하여 원하는 데이터를 추출하는 과정을 말합니다. 이러한 데이터 추출 작업은 CSS 선택자, XPath, 정규 표현식 등을 사용하여 웹 페이지의 특정 요소를 식별하고 추출하는 방식으로 이루어집니다.

 

따라서 크롤링은 웹 스크래핑의 하위 과정 중 하나로, 데이터를 수집하기 위해 웹 페이지를 탐색하는 역할을 담당합니다. 웹 스크래핑은 크롤링으로부터 얻은 웹 페이지에서 필요한 데이터를 추출하여 가공하는 단계를 포함합니다.

 

 

이미지 크롤링

인터넷 상 존재하는 이미지 자동 수집

 

필요한 지식


HTTP(Hypertext Transfer Protocol):
HTTP는 인터넷에서 데이터를 주고받기 위한 프로토콜입니다. 클라이언트(일반적으로 웹 브라우저)가 서버에 요청을 보내면, 서버는 해당 요청에 대한 응답을 클라이언트에게 전송합니다. HTTP는 주로 웹 브라우저와 웹 서버 간에 사용되며, 클라이언트와 서버 간의 텍스트 기반 메시지 교환을 통해 이루어집니다.(웹 프로토콜: 웹 서비스를 제공하기 위해 사용되는 통신 규약으로 가장 일반적인 웹 프로토콜은 HTTP)

HTTP 요청(Request):
HTTP 요청은 클라이언트가 서버에게 특정 동작을 요청하는 메시지입니다. 주요 구성 요소는 다음과 같습니다:

메서드(Method): 요청의 종류를 나타냅니다. 일반적인 메서드로는 GET(리소스 조회), POST(데이터 전송), PUT(리소스 업데이트), DELETE(리소스 삭제) 등이 있습니다.


경로(Path): 서버에서 요청하는 리소스의 경로를 나타냅니다.


헤더(Headers): 요청에 대한 부가 정보를 포함합니다. 예를 들어, 사용자 에이전트 정보, 인증 정보 등이 있습니다.


본문(Body): POST나 PUT 메서드와 함께 전송되는 데이터를 포함합니다.


HTTP 응답(Response):
HTTP 응답은 서버에서 클라이언트에게 보내는 메시지로, 요청에 대한 처리 결과를 담고 있습니다. 주요 구성 요소는 다음과 같습니다:

상태 코드(Status Code): 요청 처리의 결과를 나타냅니다. 일반적인 상태 코드로는 200(성공), 404(찾을 수 없음), 500(내부 서버 오류) 등이 있습니다.


헤더(Headers): 응답에 대한 부가 정보를 포함합니다. 예를 들어, 콘텐츠 유형, 길이 등이 있습니다.


본문(Body): 응답으로 전송되는 데이터를 포함합니다. 일반적으로 HTML, JSON, 이미지 등이 포함될 수 있습니다.

 

 

html/css/js 에 대한 이해도 필요

 

이미지 크롤링에 사용되는 라이브러리(크롤링은 라이브러리가 항상 바뀐다!)

1.Request : 파이썬에서 http요청을 보내기 위한 라이브러리

2.BeautifulSoup : HTML 또는 XML 문서를 파싱하고, 문서 내에서 특정 요소를 검색하고 추출하는 기능을 제공

3. scrapy : 파이썬으로 작성된 웹 크롤링 프레임워크

4. 셀레늄(Selenium) : 자동화 웹 어플리케이션 테스트를 위한 프레임 워크-크롤링과 같은 웹스크래핑 작업에도 사용 가능

 


이미지 전처리

realworld에 속한 이미지로 학습 필요 애니메이션이나 일러스트 합성 이미지 제거

 

크기 조정 (Resizing): 이미지의 크기를 변경하여 원하는 크기로 조정

자르기 (Cropping): 이미지에서 관심 영역을 추출하기 위해 이미지의 일부분을 잘라내는 것

회전 (Rotation): 이미지를 특정 각도로 회전시키는 것

밝기 조정 (Brightness Adjustment): 이미지의 밝기를 조절하여 전체적인 명암을 변경하는 것


색상 변환 (Color Conversion): 이미지의 색상 공간을 변환하는 것

필터링 (Filtering): 이미지에 필터를 적용하여 이미지를 부드럽게 하거나 엣지를 강조하는 등의 효과

정규화 (Normalization): 이미지의 픽셀 값을 정규화하여 일관된 범위로 조정하는 것

'machine_learning' 카테고리의 다른 글

데이터셋과 데이터로더, Pytorch 설치  (1) 2023.06.16
데이터 수집과 전처리2  (0) 2023.06.14
통계 - 인자분석  (0) 2023.06.02
통계 - 주성분 분석(PCA)  (0) 2023.06.01
통계 - 공분산과 상관행렬  (0) 2023.06.01

+ Recent posts