본문 바로가기
기계학습/코세라 - 기계학습 (Andrew Ng)

week 11

by tryotto 2019. 8. 14.

1. Photo OCR Pipeline

     1) 이미지를 받는다

     2) Text Detection : 글자가 있는 영역을 찾는다

     3) Character Segmentation : 문자의 구역을 나눈다 ex. 안녕 -> 안/녕

     4) Character Recognition : 글자를 인식한다


** Pipeline 뜻 : "전체적인 문제 해결 틀" 이라고 생각하자. 이 문제를 어떤 단계를 거쳐서 해결할 것인가?



2. Sliding Windows

     - 이미지에서 사람 찾아내기 예시

1) 특정 크기의 사람 사진 데이터들을 수집한다

  2) 사람이 맞을 경우, y=1 을 feed 하고, 아니면 y=0 을 feed한다

3) 2번 과정을 통해서 계속 학습을 한다

--------------------------------------------- 학습 완료

4) 사진에서, detecting하는 사이즈를 조금씩 늘리면서 사진을 훑는다

5) 이떄, detecting하는 부위는, 마치 window를 sliding 하듯이 아래쪽, 오른쪽으로

   움직인다


      - 이미지에서 글자 찾아내기 예시 (1단계) - 찾아내기만 함. 아직 인식하진 못함

1) 특정 크기의 글자 사진 데이터를 수집한다

2) 글자가 맞으면 y=1, 아니면 y=0을 feed 한다 -> 학습

--------------------------------------------- 학습 완료

3) 사진에서, 특정 size로 detection을 실시한다

4) 글자로 의심될 경우, 흰색 pixel로 칠하고

    글자가 아니라고 생각될 경우, 검은색 pixel로 칠한다

5) Expansion을 한다 : 흰색 pixel 부분의 크기를 넓혀서, 주변에 다른 글자들과 연결되는게

   있는지 확인한다. 연결될 경우, 그 글자들은 유효하다

** 연결되지 않는 글자들의 경우, 문자로 인식하기엔 부족하다고 판단한다


       - 이미지에서 글자 구분하기 (2단계) - Character Segmentation

1) 문자를 구분하는 사진 데이터들을 수집한다

2) 글자를 구분할 경우 y=1, 못할 경우 y=0

  ** ex. AB 가 있을경우, y=1  (why? A|B 이런식으로 구분이 가능한 사진 데이터이므로)

------------------------------------------------- 학습 완료

3) Sliding window 하듯이, Segmentation을 한다 

(단, 얘는 1D 과정이라는게 독특. 즉, 한줄만 관찰하면 된다. 아래위로 움직일 필요 없음)



3. 추가 데이터를 얻는 방법

      - 큰 틀에서의 방법 :

1) 아예 새로운 데이터를 만들기 (직접, 노가다)

2) 갖고 있는 trainning set 을 변형해서 새 데이터 만들기 (짝퉁 만들기)

      - 데이터 얻는 방법 예시 (1) : 폰트

1) 아예 새로운 데이터 만들기 : 인터넷에 널린 폰트들을 직접 뗴와서 데이터셋을 만든다 (쌩노가다)


2) 갖고있는 자료 변형하기 : 

       - 갖고 있는 폰트에다가 그림자를 넣든, 

       - 얼룩을 묻히든

       - 글자를 구부리는 등. 변형을 가한다


      - 데이터 얻는 방법 예시 (2) : 목소리

1) 아예 새로운 데이터 만들기 : 일일이 사람들 모아서 음성 얻어야 됨 (쌩노가다)


2) 갖고있는 자료 변형 :

        - 음성에다가 자동차소리를 넣든

        - 별의 별 쓸데없는 소리를 넣는다


      - 데이터 얻을때 주의점 :

1) 데이터셋을 확장시키기 전에, 제대로 된 low bias classifier를 만들었는지를 확인해야 한다

2) 현재의 데이터의 10배의 데이터를 얻으려면 얼마나 더 많은 시간이 필요한지 먼저 확인하자

-> 생각보다 적은 시간이 들수도 있고, 생각보다 너무 많은 시간이 걸릴수도 있다

3) 여러가지 방법의 데이터 수집 방식을 활용한다

       - 새로운 데이터를 만들거나 갖고 있는 자료를 변형 (위에서 언급)

       - crowd source를 활용 (돈 주고 사이트에서 데이터를 얻어옴)



4. Ceiling Analysis : 어떤 곳에 시간을 투자해서 학습할것인가?

      - 방식 : 전체의 accuracy를 기준으로 판단한다

- pipeline 중 특정 단계를 수행했을때, accuracy 상승도가 매우 적거나, 상대적으로 적은지 확인한다

- 그런 경우가 있다면, skip 하거나, 좀 더 accuracy를 크게 상승시키는 pipeline 단계가

   있다면, 그 단계에 더 시간을 투자한다

'기계학습 > 코세라 - 기계학습 (Andrew Ng)' 카테고리의 다른 글

(개념별 정리) 오버피팅, 회귀  (0) 2019.08.17
(개념별 정리) Regularization  (0) 2019.08.17
week10  (0) 2019.08.14
week9  (0) 2019.08.14
week8 (2)  (0) 2019.08.14