본문 바로가기
딥러닝

AI 기반 아동 미술심리 진단을 위한 그림 분석 - SSD512

by 짱태훈 2024. 12. 6.
728x90

이전 게시물에서 정확한 아동 미술심리 진단을 위한 그림을 진행하기 위해 Faster R-CNN을 이용해서 이미지 디텍션을 진행했다. 이번에는 SSD512를 이용해서 이미지 디텍션을 진행해보려고 한다.

Faster R-CNN을 이용해서 '나무', '집' 두 개의 카테고리에 대해서 훈련을 진행했을 때 높은 정확도를 보여주었지만 시간이 오래 걸렸다. 반면 SSD512를 이용해 '남자 사람'을 훈련했을 때 훈련 시간이 기존 5시간 50분에서 4시간 10분으로 줄었다. 하지만 정확도에 있어서 상대적으로 낮은 정확도를 보여주었다. 

또한, 사전 훈련된 모델을 사용했지만 아래와 같이 데이터 증강 부분은 수정해서 비활성화 하거나 최소화했다.

cfg.data.train=dict(
        type='RepeatDataset',
        times=5,
        dataset=dict(
            type='KittyTinyDataset',
            ann_file='/kaggle/working/train.txt',
            img_prefix='/kaggle/input/art-picture/Training/image/TS_남자사람',
            pipeline=[
                dict(type='LoadImageFromFile'),
                dict(type='LoadAnnotations', with_bbox=True),
                dict(
                    type='Expand',
                    mean=[123.675, 116.28, 103.53],
                    to_rgb=True,
                    ratio_range=(1, 1)),
                dict(
                    type='MinIoURandomCrop',
                    min_ious=(0.3, 0.5, 0.7, 0.9),
                    min_crop_size=0.1),
                dict(type='Resize', img_scale=(512, 512), keep_ratio=False),
                dict(type='RandomFlip', flip_ratio=0.0),
                dict(
                    type='PhotoMetricDistortion',
                    brightness_delta=32,
                    contrast_range=(1.0, 1.0),
                    saturation_range=(1.0, 1.0),
                    hue_delta=0),
                dict(
                    type='Normalize',
                    mean=[123.675, 116.28, 103.53],
                    std=[1, 1, 1],
                    to_rgb=True),
                dict(type='DefaultFormatBundle'),
                dict(type='Collect', keys=['img', 'gt_bboxes', 'gt_labels'])
            ],
            data_root='/kaggle/input/art-picture/Training'))

 

훈련에 사용된 데이터셋

  • 남자 사람
Training Validation
image: 14000장 image: 1400장
label: 14000개 label: 1400개
  • 예측 사진:

그림1

  • 결과:

 

mAP:

+----------+------+------+--------+-------+
| class    | gts  | dets | recall | ap    |
+----------+------+------+--------+-------+
| 손       | 2794 | 5123 | 0.989  | 0.981 |
| 입       | 1400 | 2340 | 0.955  | 0.943 |
| 운동화   | 2802 | 4957 | 0.993  | 0.960 |
| 팔       | 2800 | 4011 | 0.996  | 0.992 |
| 눈       | 2800 | 5152 | 0.935  | 0.904 |
| 코       | 1400 | 3262 | 0.866  | 0.818 |
| 얼굴     | 1400 | 1515 | 0.999  | 0.998 |
| 머리     | 1400 | 1558 | 0.999  | 0.999 |
| 귀       | 2790 | 3769 | 0.989  | 0.984 |
| 사람전체 | 1401 | 1544 | 0.999  | 0.999 |
| 머리카락 | 1400 | 1790 | 0.996  | 0.992 |
| 상체     | 1400 | 1881 | 0.997  | 0.997 |
| 단추     | 1449 | 2970 | 0.940  | 0.888 |
| 남자구두 | 2804 | 5198 | 0.993  | 0.960 |
| 다리     | 2798 | 3970 | 0.993  | 0.973 |
| 주머니   | 2622 | 4432 | 0.977  | 0.964 |
| 목       | 1400 | 1868 | 0.983  | 0.976 |
| 발       | 2800 | 4443 | 0.988  | 0.975 |
+----------+------+------+--------+-------+
| mAP      |      |      |        | 0.961 |
+----------+------+------+--------+-------+
mmdet - INFO - Epoch(val) [6][1400]	AP50: 0.9610, mAP: 0.9613

SSD512의 mAP는 0.961로, Faster R-CNN(0.975~0.979)에 비해 약간 낮지만 비교적 높은 성능을 보였다. 학습 소요 시간을 비교하면 SSD512는 약 4시간으로 Faster R-CNN(5시간 50분)보다 더 효율적이다. 따라서 속도가 중요한 프로젝트에서는 SSD512가 적합하며, 반대로 정확도가 중요한 프로젝트에서는 Faster R-CNN이 더 적합할 수 있다. 모델 선택은 프로젝트 목표에 따라 달라질 것이다.

 


현재까지 진행한 결과

  • 나무 -> Faster R-CNN
Training Validation
image: 14000장 image: 1400장
label: 14000개 label: 1400개
  • 나무 - 예측 사진:

  • 결과 - 나무:

 

mAP:

+----------+------+------+--------+-------+
| class    | gts  | dets | recall | ap    |
+----------+------+------+--------+-------+
| 나무전체 | 1400 | 1451 | 0.999  | 0.999 |
| 기둥     | 1400 | 1557 | 0.994  | 0.992 |
| 수관     | 1490 | 1767 | 0.987  | 0.985 |
| 가지     | 2143 | 3228 | 0.959  | 0.937 |
| 뿌리     | 1416 | 1544 | 0.992  | 0.989 |
| 나뭇잎   | 4050 | 5398 | 0.935  | 0.917 |
| 꽃       | 2821 | 3230 | 0.986  | 0.982 |
| 열매     | 4824 | 6344 | 0.956  | 0.942 |
| 그네     | 1409 | 1585 | 0.996  | 0.993 |
| 새       | 1506 | 1863 | 0.977  | 0.971 |
| 다람쥐   | 1418 | 1698 | 0.984  | 0.979 |
| 구름     | 2605 | 2948 | 0.994  | 0.992 |
| 달       | 1406 | 1604 | 0.996  | 0.996 |
| 별       | 4402 | 4517 | 0.983  | 0.983 |
+----------+------+------+--------+-------+
| mAP      |      |      |        | 0.975 |
+----------+------+------+--------+-------+

mmdet - INFO - Epoch(val) [12][1400]	AP50: 0.9750, mAP: 0.9754

 


  • 집 -> Faster R-CNN
Training Validation
image: 14000장 image: 1400장
label: 14000개 label: 14000개
  • 집 - 예측 사진

  • 집 - 결과

 

mAP:

+--------+------+------+--------+-------+
| class  | gts  | dets | recall | ap    |
+--------+------+------+--------+-------+
| 길     | 1443 | 2478 | 0.987  | 0.971 |
| 굴뚝   | 1405 | 1593 | 0.990  | 0.988 |
| 산     | 1651 | 2937 | 0.984  | 0.954 |
| 연기   | 1406 | 1670 | 0.982  | 0.976 |
| 연못   | 1407 | 1677 | 0.996  | 0.993 |
| 나무   | 1695 | 2040 | 0.991  | 0.988 |
| 집벽   | 1420 | 1539 | 0.995  | 0.994 |
| 문     | 1425 | 1627 | 0.991  | 0.990 |
| 태양   | 1404 | 1555 | 0.994  | 0.992 |
| 창문   | 2434 | 2714 | 0.986  | 0.982 |
| 잔디   | 5811 | 7818 | 0.943  | 0.924 |
| 지붕   | 1417 | 1562 | 0.997  | 0.997 |
| 집전체 | 1401 | 1449 | 0.999  | 0.999 |
| 울타리 | 2044 | 3145 | 0.973  | 0.956 |
| 꽃     | 2922 | 3335 | 0.979  | 0.975 |
+--------+------+------+--------+-------+
| mAP    |      |      |        | 0.979 |
+--------+------+------+--------+-------+

mmdet - INFO - Epoch(val) [12][1400]	AP50: 0.9790, mAP: 0.9786

앞으로 예정

여자 사람

Training Validation
image: 14000장 image: 1400장
label: 14000개 label: 1400개

 

여자 사람의 경우 Yolov5를 이용해 학습을 할 예정이다.


 

요약

1. Faster R-CNN

  • 대상: 나무, 집
  • mAP:
    • 나무: 0.975
    • 집: 0.979
  • 장점:
    • 높은 정확도(mAP)
    • 객체 탐지에서 비교적 정밀한 결과 제공.
  • 단점:
    • 학습 시간이 길다(대략 5시간 50분 소요).
    • 연산량이 많아 리소스 소모가 크다.

2. SSD512

  • 대상: 남자 사람
  • mAP:
    • 남자 사람: 0.961
  • 장점:
    • 학습 시간이 더 짧음(대략 4시간 10분).
    • 실시간 처리가 가능한 빠른 속도.
  • 단점:
    • Faster R-CNN에 비해 정확도가 약간 낮음.

3. 앞으로의 계획

  • 여자 사람: YOLOv5로 학습 예정.
    • YOLOv5는 속도와 정확도의 균형이 뛰어난 모델로, 이번 데이터셋과 목적에 적합한 선택으로 보임.

모델 선택 기준

  1. 정확도 우선
    • 높은 정확도가 중요한 경우, Faster R-CNN 사용.
  2. 속도와 효율성 우선
    • 학습 시간 단축 및 실시간 처리가 필요한 경우, SSD512나 YOLOv5 사용.
  3. 객체 복잡성
    • 나무나 집처럼 다양한 세부 요소를 포함하는 객체는 Faster R-CNN 사용.
    • 사람처럼 단일 요소 중심의 객체는 SSD512, YOLOv5 적합.

앞으로 계획

1. 여자 사람 학습 (YOLOv5)

  • 동일한 Training/Validation 데이터셋(14,000장)을 활용.
  • 데이터 증강을 통해 다양한 상황에 대응 가능하도록 구성.
  • cfg 설정 시 다음을 고려:
    • 이미지 크기 조정: YOLOv5는 다양한 입력 크기를 지원하지만, 512x512 사용 시 SSD512와 결과 비교가 용이.
    • 데이터 증강 활성화: YOLOv5는 기본적으로 데이터 증강 기능(AutoAugment)을 제공.
    • Pretrained Model: COCO dataset으로 사전 학습된 가중치 사용.

 

728x90