▶ 컴퓨터 비전
- OpenCV 라이브러리만을 사용해서 이미지 뷰어(Crop, 흑백화, Zoom 등의 기능 포함)를 만들어주세요
pip install opencv-python
import cv2
# crop
image = cv2.imread('image_file.jpg')
cropped_img = image[y:y+h, x:x+w]
# image[200:600, 600,1250]
# gray
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
cv2.imshow('Image', image)
cv2.waitKey()
cv2.destroy AllWindows()
# zoom
zoom_camera = cv2.CAP_PROP_ZOOM()
- 딥러닝 발달 이전에 사물을 Detect할 때 자주 사용하던 방법은 무엇인가요?
=> 이미지 설명자를 기반으로 한다. 예를 들어, 자전거를 탐지하려면 이 객체가 포함된 몇 장의 사진으로 시작한다. 자전거에 해당하는 설명자는 이미지로부터 추출된다. 그 설명자는 자전거의 특정 부분을 나타낸다. 알고리즘이 이 객체를 찾을 때 목표 이미지에서 다시 설명자를 찾으려 할 것이다. 이미지에서 자전거를 찾기 위해 가장 일반적으로 사용되는 기법은 플로팅 윈도우다. 이미지의 작은 직사각형 영역이 차례로 검사된다. 가장 일치하는 설명자를 가진 부분이 해당 객체를 포함하는 것으로 간주된다. 이미지를 회전하거나 색이 바껴도 성능에 영향을 주지 않고 훈련데이터가 많이 필요하지 않으며 대부분의 객체에 작동한다는 장점이 있다. 그러나 정확도 수준은 만족스럽지 않다.
- Fatser R-CNN의 장점과 단점은 무엇인가요?
=> 장점) RPN을 제안하여, 전체 프레임워크를 End-to-End로 학습할 수 있다.
단점) 여전히 많은 컴포넌트로 구성되며, Region Classification 단계에서 각 특징 벡터(feature vector)는 개별적으로 FC layer로 Forward 된다. 느리다.
- dlib은 무엇인가요?
=>face recognition과 관련된 알고리즘들을 편하게 사용할 수 있는 라이브러리
face detection, face landmark detection등을 수행할 수 있음
(mtcnn도 face landmark 찾을 때 편리함)
- YOLO의 장점과 단점은 무엇인가요?
=> 장점) 빠르고 좋은 정확도를 가지며 여러 도메인에서도 좋은 성능을 보인다. 겹쳐지거나 작은 사물에 대한 인식률이 높아서 정확하다.
단점) object가 겹쳐있으면 제대로 예측이 안된다. 학습정도와 이미지 크기에 따라서 따라 모델의 성능이 크게 달라진다. 각 그리드 셀(grid cell)에서 단 하나의 class를 예측하기 때문에 object가 겹쳐있으면 제대로 예측이 안된다. 다른 모델에 비해 낮은 정확도를 가지며 특히 객체가 작을수록 정확도가 낮아진다.
- 제일 좋아하는 Object Detection 알고리즘에 대해 설명하고 그 알고리즘의 장단점에 대해 알려주세요
- 그 이후에 나온 더 좋은 알고리즘은 무엇인가요?
- Average Pooling과 Max Pooling의 차이점은?
=> pooling layer의 목적은 최적화 파라미터 개수를 줄이기 위함이다. max pooling은 해당영역에서 최대값을 찾는 방법이다. average pooling은 해당 영역에서 평균 값을 계산하는 방법이다. 이미지 인식 분야에서는 주로 max-pooling을 사용하는데 max-pooling으로 과적합이 나올 때 과적합 피하려고 average pooling을 사용하기도 한다.
- Deep한 네트워크가 좋은 것일까요? 언제까지 좋을까요?
=> 층이 깊어질수록 분류에 사용할 더 복잡하고 차별적인 특징을 얻을 수 있다. 기울기 소멸이나 폭발 문제를 해결한다면 좋을것 같기도 하다.
- Residual Network는 왜 잘될까요? Ensemble과 관련되어 있을까요?
- CAM(Class Activation Map)은 무엇인가요?
=> Class Activation Mapping (CAM) 이란 CNN이 특정 클라스 이미지를 그 클라스라고 예측하게 한 그 이미지 내의 위치 정보를 의미한다. 모델이 이미지의 어떤 부분을 보고 판단을 내리는지 어느 정도 알아낼 수 있습니다.
- Localization은 무엇일까요?
=> 이미지 속에서 물체의 위치를 알아내는 것, 단일 객체에 대해서만 처리
object detection: 여러 객체에 대해 각각 개인지, 고양이인지 분류하고 위치까지 파악하여 네모 박스를 표시 합니다.
instance segmentation: 여러 객체에 대해 각각 개인지, 고양이인지 분류하고 정확한 경계를 표시 합니다. 그리고 같은 고양이라 할지라도 고양이1, 고양이2 로 구분 됩니다.
- 자율주행 자동차의 원리는 무엇일까요?
https://m.post.naver.com/viewer/postView.naver?volumeNo=12446992&memberNo=12478241
=> 1) 인지 단계 : 자율주행에서 가장 중요한 기술, GPS, 카메라 레이더등을 활용해 주변 상황의 정보를 인식 수집하고 주변 상황 정보를 빠르고 정확하게 파악한다.
2) 판단 단계 : 인지 정보를 바탕으로 주행 전략 결정한다.
3) 제어 단계 : 엔진 구동과 주행 방향 등을 결정해 본격적으로 주행한다.
위 세단계가 끊임없이 반복됨
- Semantic Segmentation은 무엇인가요?
=> 사진에 있는 모든 픽셀을 해당하는 (미리 지정된 개수의) class로 분류하는 것입니다.
- Visual Q&A는 무엇인가요?
=> 이미지(Visual, 영상으로도 확장 가능)와 그 이미지에 대한 질문(Question)이 주어졌을 때, 해당 질문에 맞는 올바른 답변(Answer)을 만들어내는 task이다.
- Image Captioning은 무엇인가요?
=> 이미지의 캡션을 달아주는 일, 즉 이미지를 보고 어떤 이미지인지 언어로 설명하는 작업이다.
- Fully Connected Layer의 기능은 무엇인가요?
=> Fully connected layer의 목적은 Convolution/Pooling 프로세스의 결과를 취하여 이미지를 정의된 라벨로 분류하는 데 사용하는 것입니다.
1. 2차원 배열 형태의 이미지를 1차원 배열로 평탄화
2. 활성화 함수(Relu, Leaky Relu, Tanh,등)뉴런을 활성화
3. 분류기(Softmax) 함수로 분류
1~3과정을 Fully Connected Layer라고 말할 수 있습니다.
- Neural Style은 어떻게 진행될까요?
=>
- CNN에 대해서 아는대로 얘기하라
- CNN이 MLP보다 좋은 이유는?
=> MLP는 FC layer로 이루어져 있는데 이는 input image의 3차원 형상을 1차원으로 평탄화(flatten) 시킵니다. image안의 pixel끼리의 관계를 전혀 고려하지 않고 쭉펴버린 후에 그냥 filter와 연산을 진행한겁니다. CNN의 Convolution연산은 평탄화(flatten)를 하지 않습니다. CNN의 CONV layer는 image안의 pixel끼리의 관계를 그대로 고려합니다. MLP는 FC layer로만 이루어져 있고, CNN은 CONV layer와 FC layer로 이루어집니다. FC layer는 image를 1차원으로 만들기 때문에 image안의 공간적 형상을 무시(?)합니다.
- 어떤 CNN의 파라미터 개수를 계산해 본다면?
=> http://taewan.kim/post/cnn/
in/out filter 32/64 에 kernel size 가 3, stride 1 이면 (3 * 3 * 32) * 64
(kernel height * kernel width * input filter) * output filter
- 주어진 CNN과 똑같은 MLP를 만들 수 있나?
=> 공간정보를 저장할 수 있다면(인접 픽셀의 위치 등등)
- 풀링시에 만약 Max를 사용한다면 그 이유는?
=> parameter를 줄이기 때문에, 해당 network의 표현력이 줄어들어 Overfitting을 억제
2. Parameter를 줄이므로, 그만큼 비례하여 computation이 줄어들어 hardware resource(energy)를 절약하고 speedup된다. 강한 특징은 더 큰 활성화 값을 가질 것이라는 가정으로 avg pooling이나 랜덤 풀링보다 더 낫다는 믿음으로 사용한 것
conv pooling 을 제외하고는 제일 compute-wise 하기 때문에
- 시퀀스 데이터에 CNN을 적용하는 것이 가능할까?
=> TextCNN, WaveNet 같은 텍스트, 음성에 Conv1D 를 사용한 approach 들도 많다.
'My Study > Interview' 카테고리의 다른 글
라이브 코딩테스트 기출모음 (1) | 2023.03.11 |
---|