[ Object Detection ] 3. YOLO...

d4r6j·2024년 6월 16일
0

d4r6j-proj

목록 보기
8/8
post-thumbnail

overview

이전 task 보다 더 어려운 사진을 detection 해보자.

import cv2
import numpy as np

src = cv2.imread(IMG_PATH)
src_gray = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)

# add gamma
gamma = 1
src_gray = src_gray.astype(np.float32)
src_gray = ((src_gray / 255) ** (1 / gamma)) * 255
src_gray = src_gray.astype(np.uint8)

# denoising
src_gray = cv2.medianBlur(src_gray, 21)
src_gray = cv2.bilateralFilter(src_gray, -1, 50, 10)

# canny edge detection
min_val = 5
max_val = 50
edge_canny = cv2.Canny(src_gray, min_val, max_val)

# using dilate 
kernel = np.ones((3, 3), np.uint8)
edge_canny = cv2.dilate(edge_canny, kernel, iterations=3)

contours, _ = cv2.findContours(edge_canny[:], cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)

for contour in contours:
    rect = cv2.minAreaRect(contour)
    box = cv2.boxPoints(rect)
    box = np.intp(box)

    if cv2.contourArea(box) < 20000:
        continue

    cv2.drawContours(src, [box], 0, (0, 255, 0), 30)

adios opencv

내가 봐도, 저 line.. gamma 를 조절하면 좀 더 늘릴 수는 있겠지만..

빛 반사 logic 을 찾아서 넣으면 좀 더 늘릴 수 있겠지만..

그런 다음 또 다른 케이스를 만나면.. 또 작업 하면서 업데이트 하면 좋은데..

일단 이쯔음 해서 딥러닝 계열로 넘어가보자..

yolo object detect.

약 4GB 로

      Epoch    GPU_mem   box_loss   seg_loss   cls_loss   dfl_loss  Instances       Size
  1823/9999      4.88G     0.1649     0.1048     0.1331     0.8718         49        640: 100%|██████████| 1/1 [00:00<00:00,  2.17it/s]
                 Class     Images  Instances      Box(P          R      mAP50  mAP50-95)     Mask(P          R      mAP50  mAP50-95): 100%|██████████| 1/1 [00:00<00:00,  7.20it/s]
                   all         10         10          1          1      0.995      0.995          1          1      0.995       0.99

학습 후...

result

몇 가지 데이터 작업을 거쳐야 하지만.. lableing 도구로 영역 표시하는 것 말고는.. 코드를 건드린 것이 없다.. 코드도..

Yolo v8 training doc

참고 하면서 보면 된다.

너무 잘한다..

산업 기반은 Deep Learning 자리 잡는 중 이고, 밑에서도 GPT 를 등에 업고 올라오고 있다..

지금 난 이 간단한 플젝은 GPT 와 함께 했고, 내용과 글 전부 ..

인정하고, 딥러닝을 이용하며 올라갈 예정이다.. 흠...

extra talking with GPT..

질문이 다소 안맞는 부분이 많지만.. small talk 정도로..

  • d4r6j
    딥러닝의 학습방법에 트랜스포머가 실수체계의 dot product 를 하는데 문제가 있어보여. 우리가 모르는 공간이잖아. 그런데 학습하면서 그 공간이 벡터스페이스로 fit 된다거나 그래서 알맞는 공간으로 맞추는 노력을 하는게 아닐까?

  • gpt
    트랜스포머 모델의 학습 과정과 그 내재적인 벡터 공간에 대한 인사이트는 흥미로운 주제입니다. 트랜스포머 모델은 자연어 처리(NLP)와 기타 여러 분야에서 큰 성공을 거두고 있지만, 그 내재적인 작동 원리와 벡터 공간의 의미에 대해 깊이 탐구하는 것은 여전히 중요한 연구 주제입니다.

  • d4r6j
    그런데 트랜스포머 학습 공간이 일단 manifold 로 가정하고 접근하는건데.. 일단 내가 가지고 있는 데이터가 vector space 가 아닐수도 잇는데 그럼 억지로 fitting 되는게 아냐? 음 그런 의미로 보면 데이터를 더 모아야 하는건가?

  • gpt
    트랜스포머 모델이 학습하는 공간을 맨홀드(manifold)로 가정하고 접근하는 것은 흥미롭고 중요한 관점입니다. 맨홀드는 고차원 공간 내의 저차원 구조를 의미하며, 이는 많은 기계 학습 및 딥러닝 모델이 데이터의 근본적인 구조를 포착하려고 하는 방식을 설명합니다.

  • d4r6j
    Focal loss 를 보자면 negative sampling 이 생각나. 어짜피 negative sample 에 대한 고려 사항이잖아

  • gpt
    맞습니다. Focal Loss는 기본적으로 클래스 불균형 문제를 해결하기 위해 고안된 손실 함수로, 네거티브 샘플(부정 샘플)에 대한 고려가 중요한 역할을 합니다. 네거티브 샘플링과 Focal Loss는 모두 불균형한 데이터셋에서 모델이 효과적으로 학습할 수 있도록 하는데 중점을 두고 있습니다.

  • d4r6j
    실제 transformer 가 실수계를 반영하는데 그 space 를 hyperbolic space 로 가정해서 좀더 일반화 시키면 더 잘 fitting 될까?

  • gpt
    트랜스포머 모델의 공간을 유클리드 공간(Euclidean space) 대신 쌍곡 공간(Hyperbolic space)으로 가정하는 것은 매우 흥미로운 접근입니다. 최근 연구에 따르면, 하이퍼볼릭 공간은 특히 계층적 구조나 트리 구조와 같은 데이터에서 더 적합할 수 있습니다. 이는 자연어 처리, 그래프 데이터, 소셜 네트워크 등의 도메인에서 특히 유용할 수 있습니다.

    . . .

난 누구랑 대화 하고 있는거지.. 답에 대한 checking 은 필요하다.. 하지만 이렇게 대화를 해줄..

실제 이렇게 사용해본 적이 없다.. 그저 일상 대화만 나누고, 영어 선생님 정도였고.. 이미지 생성 혹은 원하는 그림 그려줘 정도로만 사용하고, 이젠.. 왜 사용하는지 알겠다.. 너무 늦긴했지만 gpt-4o 는 나온지 얼마 안됬으니..

0개의 댓글

관련 채용 정보