๋ฐ์ํ
Object Detection & Segmentation์ ์ํ ๋ค์ํ ํจํค์ง๋ค
Object Detection & Segmentation์ ์ํ ๋ค์ํ ํจํค์ง๋ค์ด ์์ต๋๋ค.
- Keras์ Tensorflow ๊ธฐ๋ฐ์ ๋ค์ํ ์คํ์์ค ํจํค์ง๋ค
- ์ฌ์ด ํ์ฉ๊ณผ Customization ๊ฐ๋ฅํ ์ฅ์ ์ด ์์ต๋๋ค.
- ๋ค๋ง Object Detection ์๊ณ ๋ฆฌ์ฆ ๋ณ๋ก ์๋ก ๋ค๋ฅธ ํจํค์ง๋ค์ ์ ์ฉํด์ผ ํ๋ ๋จ์ ์ด ์์ต๋๋ค.
- OpenCV ์ DNN(Deep Neural Network) ๋ชจ๋
- ๊ฐํธํ๊ฒ Object Detection Inference๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
- ๋ค๋ง ํ์ต์ด ๋ถ๊ฐ๋ฅํ๋ฉฐ ์ฃผ๋ก CPU ์์ฃผ๋ก GPU ํ์ฉ์ด ์ด๋ ต๋ค๋ ์ ์ด ์์ต๋๋ค.
- Tensorflow Object Detection API
- ๊ฐ์ฅ ๋ง์ Detection ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค.
- ๋ค๋ง, ๋ค๋ฃจ๊ธฐ๊ฐ ์ด๋ ต๊ณ ํนํ ํ์ต์ ์ํ ์ ์ฐจ๊ฐ ๋๋ฌด ๋ณต์กํฉ๋๋ค.
Keras์ Tensorflow ๊ธฐ๋ฐ์ ๋ค์ํ ์คํ์์ค ํจํค์ง๋ค
ํฌ๊ฒ, YOLO, Retinanet, Mask R-CNN 3๊ฐ์ ๋ฐํ์ฌ ์์๋ณด๊ฒ ์ต๋๋ค.
YOLO
- ๊ฐ์ธ ๊ฐ๋ฐ์๊ฐ ๋ง๋ ํจํค์ง. ์ฌํํ๋ฉด์๋ ์ข์ ์ฑ๋ฅ์ ๋ณด์ ํ๊ณ ์์ต๋๋ค.
- Tensorflow 1.13, Keras 2.2 ๋ฒ์ ์ด ํ์ํฉ๋๋ค.
- Git์์ค: https://github.com/qqwweee/keras-yolo3
Retinanet
- ์ ๊ตํ ๊ฒ์ถ ์ฑ๋ฅ์ผ๋ก ๋ง์ ์ฌ์ฉ์์๊ฒ ๊ฐ๊ด ๋ฐ๊ณ ์์ต๋๋ค.
- Tensorflow 1.15, Keras 2.3 ๋ฒ์ ์ด ํ์ํฉ๋๋ค.
- Git์์ค: https://github.com/fizyr/keras-retinanet
Mask R-CNN
- Segmentation์์ ๋งค์ฐ ๋ง์ด ํ์ฉ๋๊ณ ์์ต๋๋ค. ๋ค์ํ ๊ธฐ๋ฅ๊ณผ ํธ๋ฆฌํ ์ฌ์ฉ์ฑ์ผ๋ก ์ฌ๋ฌ ํ๋ก์ ํธ์ ์ ์ฉ๋ฉ๋๋ค.
- Tensorflow 1.13, Keras 2.2 ๋ฒ์ ์ด ํ์ํฉ๋๋ค.
- Git์์ค: https://github.com/matterport/Mask_RCNN
OpenCV์ Deep Learning ์ง์ - DNN Package
OpenCV๋ Computer Vision ์ฒ๋ฆฌ๋ฅผ ์ํด ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋ฒ์ฉ Library ์ ๋๋ค.
์คํ ์์ค ๊ธฐ๋ฐ์ ์ค์๊ฐ ์ด๋ฏธ์ง ํ๋ก์ธ์ฑ์ ์ค์ ์ ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ฉฐ C/C++ ๊ธฐ๋ฐ์ Library์ด์ง๋ง Python, Java๋ฑ๊ณผ์ Interface๋ ์ ๊ณตํฉ๋๋ค.
- Image Classification, Object Detection, Segmentation ๋ฑ์ ๋ถ์ผ์ Machine learning ๊ธฐ๋ฅ์ ํฌํ ํ๊ธฐ ์์ํ์ต๋๋ค.
- Deep Learning ๊ธฐ๋ฐ์ Computer Vision ์ญ์ ๋ณ๋ DNN ๋ชจ๋๋ก ๊ตฌํ๋์ด OpenCV์ ํฌํ ๋ฉ๋๋ค.
- DNN ๋ชจ๋์ OpenCV 3.1์์๋ ์ถ๊ฐ ๋ชจ๋ ํํ๋ก ์ง์๋์๊ณ , OpenCV 3.3 ๋ฒ์ ๋ถํฐ ๊ธฐ๋ณธ ๋ชจ๋์ ํฌํจ๋ฉ๋๋ค.
- ๋ณ๋์ Deep Learning ํ๋ ์ ์ํฌ๊ฐ ํ์ํ์ง ์์ผ๋ฉฐ ํ ํ๋ ์ ์ํฌ์ ๋ชจ๋ธ์ ๊ทธ๋๋ก ๋ก๋ํ์ฌ Inference๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
- ๊ทธ๋ฌ๋ ๋ชจ๋ธ ํ์ต์ด ๋ถ๊ฐ๋ฅํ๋ฉฐ, GPU ํ์ฉ์ด ์ด๋ ต์ต๋๋ค. ์ฃผ๋ก CPU ์์ฃผ๋ก ํ์ฉํฉ๋๋ค.
Tensorflow Object Detection API ์ง์ ๋ชจ๋ธ
ํ ์คํ ์์ค ํจํค์ง ๋๋น ๊ฐ์ฅ ๋ง์ Object Detection ์๊ณ ๋ฆฌ์ฆ์ ์ง์ํฉ๋๋ค.
- MS-COCO ๋ฟ๋ง ์๋๋ผ Open-Image๊ธฐ๋ฐ์ Pretrained ๋ชจ๋ธ๋ ์ง์ํฉ๋๋ค.
- Faster RCNN, SSD, FRCN, MASK-RCNN ์ง์. Backbone๋ Mobilenet, Inception, Resnet ๋ฑ ๋ค์ํ๊ฒ ์ง์ํฉ๋๋ค.
- 2020๋ 2์ ๊ธฐ์ค, YOLO Model์ ๋ํ ์ง์์ ํ์ง ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ Retinanet์ ๋ํ ์ง์๋ ์ฝํฉ๋๋ค.
Tensorflow Object Detection์ ๋ฌธ์ ์
- Tensorflow Object Detection์์๋ ์ด๋ฌํ ๋ฌธ์ ์ ๋ค์ด ์์ต๋๋ค.
- ๋ถํ์ํ๊ฒ ํ์ต ๊ณผ์ ์ด ๋ณต์กํฉ๋๋ค.
- Tensorflow Vesion 2์ Version 1์ด ์๋ก ์ถฉ๋ ํ ์๋ ์์ต๋๋ค.
- ๋ง์ API๊ฐ ์ฌ์ฉ๋์ง๋ง Document๋ Tutorial์ด ๋ถ์กฑ ํ๋ค๋ ํน์ง์ด ์์ต๋๋ค.
- Research ํํ์ ๋ชจ๋๋ก ์์ ํ๊ฐ ๋์๋์ง์ ๋ํ ์๋ฌธ์ ๋ ์กด์ฌํฉ๋๋ค.
CUDA
CUDA๋ ๋ฌด์์ผ๊น์?
CUDA(Compute Unified Device Architecture)๋ NVIDIA์์ ๊ฐ๋ฐํ ๋ณ๋ ฌ ์ปดํจํ ํ๋ซํผ์ด์ ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ ๋๋ค.
์ฃผ๋ก NVIDIA์ GPU(Graphics Processing Unit)๋ฅผ ํ์ฉํ์ฌ ์ฐ์ฐ ์์ ์ ์ํํ ์ ์๊ฒ ํด์ค๋๋ค.
- ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ํฝ ์ฒ๋ฆฌ ์ฅ์น(GPU)์์ ์ํํ๋ (๋ณ๋ ฌ ์ฒ๋ฆฌ) ์๊ณ ๋ฆฌ์ฆ์ C ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ๋น๋กฏํ ์ฐ์ ํ์ค ์ธ์ด๋ฅผ ์ฌ์ฉํ์ฌ ์์ฑํ ์ ์๋๋ก ํ๋ ๊ธฐ์ ์ ๋๋ค.
- CUDA๋ ๊ณ ์ฑ๋ฅ ์ปดํจํ , ๋ฅ ๋ฌ๋, ๊ณผํ ๊ณ์ฐ ๋ฑ ๋ค์ํ ๋ถ์ผ์์ ์ฌ์ฉ๋ฉ๋๋ค.
- ๋ํ CUDA๋ ์ด๋ฌํ ํน์ง์ด ์์ต๋๋ค.
- GPU ๊ฐ์: CUDA๋ GPU์ ๋ณ๋ ฌ ์ฒ๋ฆฌ ๋ฅ๋ ฅ์ ํ์ฉํ์ฌ CPU๋ณด๋ค ํจ์ฌ ๋น ๋ฅธ ์ฐ์ฐ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ์ด๋ ํนํ ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ๋ณต์กํ ๊ณ์ฐ ์์ ์ ์ ๋ฆฌํฉ๋๋ค.
- ์ค๋ ๋ ๋ณ๋ ฌ์ฑ: CUDA๋ ์์ฒ ๊ฐ์ ์ค๋ ๋๋ฅผ ๋ณ๋ ฌ๋ก ์คํํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๊ณ์ฐ ์์ ์ ๋งค์ฐ ์ธ๋ฐํ๊ฒ ๋ถํ ํ๊ณ ๋ณ๋ ฌ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ ๊ณ์ธต ๊ตฌ์กฐ: CUDA๋ ๋ค์ํ ๋ฉ๋ชจ๋ฆฌ ๊ณ์ธต์ ์ ๊ณตํฉ๋๋ค. ๊ธ๋ก๋ฒ ๋ฉ๋ชจ๋ฆฌ, ๊ณต์ ๋ฉ๋ชจ๋ฆฌ, ๋ ์ง์คํฐ ๋ฑ์ ํ์ฉํ์ฌ ํจ์จ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ๊ณผ ๊ด๋ฆฌ๋ฅผ ํ ์ ์์ต๋๋ค.
- ์ปค๋ ํจ์: CUDA ํ๋ก๊ทธ๋จ์ ์ปค๋ ํจ์๋ฅผ ํตํด ๋ณ๋ ฌ ์์ ์ ์ํํฉ๋๋ค. ์ปค๋ ํจ์๋ GPU์์ ์คํ๋๋ฉฐ, ๋ง์ ์ค๋ ๋๊ฐ ๋์์ ๋์ผํ ์ปค๋ ํจ์๋ฅผ ์คํํฉ๋๋ค.
CUDA Interface
ํ๋ฒ CUDA์ Interface์ ๋ฐํ์ฌ ์ค๋ช ํด ๋ณด๊ฒ ์ต๋๋ค.
CUDA
- ์ค์์ ์์นํ CUDA๋ ๋ณ๋ ฌ ์ปดํจํ ํ๋ซํผ์ด์ ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ ๋๋ค.
- CUDA๋ GPU์ ๋ณ๋ ฌ ์ฒ๋ฆฌ ๋ฅ๋ ฅ์ ํ์ฉํ์ฌ ์ฐ์ฐ ์์ ์ ์ํํ ์ ์๋๋ก ํด์ค๋๋ค.
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด
- C/C++: ์ผ์ชฝ์ ์์นํ C/C++์ CUDA ํ๋ก๊ทธ๋๋ฐ์์ ์ฃผ๋ก ์ฌ์ฉ๋๋ ์ธ์ด์ ๋๋ค. C/C++ ๊ธฐ๋ฐ์ผ๋ก ์ปค๋ ํจ์๋ฅผ ์์ฑํ๊ณ , ์ด๋ฅผ GPU์์ ์คํํฉ๋๋ค.
- Python: ์ค๋ฅธ์ชฝ์ ์์นํ Python์ CUDA๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ๋์์ฃผ๋ ์ฌ๋ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(PyCUDA, Numba ๋ฑ)๋ฅผ ํตํด GPU ํ๋ก๊ทธ๋๋ฐ์ ์ง์ํฉ๋๋ค.
Toolkit
- CUDA ํดํท์ ๊ฐ๋ฐ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ๋ค์ํ ๊ฐ๋ฐ ๋๊ตฌ๋ฅผ ํฌํจํฉ๋๋ค.
- Development: CUDA ๊ฐ๋ฐ์ ์ํ ์ปดํ์ผ๋ฌ, ๋๋ฒ๊ฑฐ, ํ๋กํ์ผ๋ฌ ๋ฑ์ ์ ๊ณตํฉ๋๋ค.
- Libraries: cuBLAS, cuFFT, cuDNN ๋ฑ ๋ค์ํ ์ํ, ๊ณผํ, ๋ฅ๋ฌ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํฌํจํฉ๋๋ค.
Runtime
- CUDA ๋ฐํ์์ GPU ์์ ๊ด๋ฆฌ, ์ปค๋ ์คํ, ๋ฐ์ดํฐ ์ ์ก ๋ฑ์ ํฌํจํ ๋ฐํ์ ํ๊ฒฝ์ ์ ๊ณตํฉ๋๋ค.
- CUDA Driver: CUDA ๋๋ผ์ด๋ฒ๋ ํ๋์จ์ด์ ์ํํธ์จ์ด ๊ฐ์ ์ธํฐํ์ด์ค ์ญํ ์ ํฉ๋๋ค. GPU ์์ ๊ด๋ฆฌ, ์ปค๋ ์คํ ๋ฑ์ ์ฒ๋ฆฌํฉ๋๋ค.
cuDNN ์๊ฐ
- cuDNN ์ CUDA์ DL Library. Deep-Neural Network๋ฅผ ๊ตฌ์ฑํ๊ณ ํ์ต์ํฌ ์ ์๋ ๊ธฐ๋ฅ์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
- Convolution, Pooling, Softmax, ReLU, Sigmoid, TANH, Batch Normalization(๋ฐฐ์น ์ ๊ทํ) ๊ธฐ๋ฅ ๋ฑ์ด ํฌํจ๋์ด ์์ต๋๋ค.
CUDA/CudNN ๊ธฐ๋ฐ์ Deep Learning Framework
CUDA์ cuDNN์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๋ฅ ๋ฌ๋ ํ๋ ์์ํฌ์ ์ํํธ์จ์ด ์คํ์ ์๊ฐ์ ์ผ๋ก ํํํ์ต๋๋ค.
- Deep Learning Framework(์: TensorFlow)๊ฐ GPU์ ๋ณ๋ ฌ ์ฒ๋ฆฌ ๋ฅ๋ ฅ์ ์ต๋ํ ํ์ฉํ ์ ์๋ค๋๊ฑธ ์๊ฐ์ ์ผ๋ก ๋ณด์ฌ์ค๋๋ค.
- ๊ฐ ๋ ์ด์ด๋ ํน์ ์ํํธ์จ์ด ๊ตฌ์ฑ ์์๋ฅผ ๋ํ๋ด๋ฉฐ, ์ด๋ค์ด ์ด๋ป๊ฒ ์ํธ์์ฉํ๋์ง๋ฅผ ๋ณด์ฌ์ค๋๋ค.
- CUDA 9.0์ GPU์ ์ฐ์ฐ ๋ฅ๋ ฅ์ ํ์ฉํ ์ ์๊ฒ ํด์ฃผ๋ ๊ธฐ๋ณธ์ ์ธ ํ๋ซํผ์ ๋๋ค. ์ด๋ฅผ ํตํด ๊ณ ์ฑ๋ฅ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ์ํํ ์ ์์ต๋๋ค.
- cuDNN์ ๋ฅ ๋ฌ๋ ์ฐ์ฐ์ ์ต์ ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, TensorFlow์ ๊ฐ์ ํ๋ ์์ํฌ๊ฐ GPU์ ์ฑ๋ฅ์ ์ต๋ํ ํ์ฉํ ์ ์๋๋ก ๋์์ค๋๋ค.
- TensorFlow๋ ์ด๋ฌํ ํ๋์จ์ด ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฑ๋ฅ์ ํ์ฉํ์ฌ ๋ฅ ๋ฌ๋ ๋ชจ๋ธ์ ๊ตฌ์ถํ๊ณ ํ์ต์ํต๋๋ค.
- Virtualenv๋ Python ํ๊ฒฝ์ ๋ ๋ฆฝ์ ์ผ๋ก ๊ด๋ฆฌํ์ฌ ๊ฐ ํ๋ก์ ํธ๊ฐ ๊ณ ์ ํ ์์กด์ฑ์ ๊ฐ๋๋ก ํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ค์ํ ํ๋ก์ ํธ๋ฅผ ๋์ผํ ์์คํ ์์ ์ถฉ๋ ์์ด ์ด์ํ ์ ์์ต๋๋ค.
๋ฐ์ํ
'๐ Computer Vision' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[CV] SPPNet - Spatial Pyramid Pooling Net (0) | 2024.05.25 |
---|---|
[CV] Object Detection Network ๊ตฌ์กฐ, R-CNN ๊ฐ์ (0) | 2024.05.22 |
[CV] OpenCV ์์์ฒ๋ฆฌ ๊ฐ์ (0) | 2024.05.19 |
[CV] OpenCV ๊ฐ์ (0) | 2024.05.18 |
[CV] Object Detection & Segmentation์ ์ํ ์ฃผ์ Dataset (0) | 2024.05.17 |