'잡동사니'에 해당되는 글 13142건

  1. 2024.01.15 NMS, soft-NMS
  2. 2024.01.15 opencv를 이용한 다중 템플릿 추적
  3. 2024.01.14 장보기
  4. 2024.01.13 피곤피곤 오늘도 피곤
  5. 2024.01.12 개 피곤
  6. 2024.01.11 VGG-16 / VGG-19
  7. 2024.01.11 MobileNetV2 SSD FPN-Lite
  8. 2024.01.11 mobilenet v2 ssd
  9. 2024.01.11 gstreamer parse_launch
  10. 2024.01.11 ipython notebook -> jupyter notebook

NMS는 하나로 억제하기 때문에

겹칠 경우 하나의 객체를 인식하지 못하게 되므로 이를 개선한 것이 soft-NMS 라고 

 

[링크 : https://hongl.tistory.com/180]

[링크 : https://ctkim.tistory.com/entry/Non-maximum-Suppression-NMS]

 

'프로그램 사용 > yolo_tensorflow' 카테고리의 다른 글

VGG-16 / VGG-19  (0) 2024.01.11
MobileNetV2 SSD FPN-Lite  (0) 2024.01.11
mobilenet v2 ssd  (0) 2024.01.11
ssd-mobilenetv2 on jupyter notebook  (2) 2024.01.10
텐서플로우 v1 을 v2로 마이그레이션은 실패 -_-  (0) 2024.01.10
Posted by 구차니
Programming/openCV2024. 1. 15. 10:48

 

일반적인 템플릿 매칭은 가장 매칭되는 하나의 녀석만 찾는데

트럼프 카드와 같이 여러개의 도형이 있을 경우 여러개를 다 찾는 방법을 제공함.

[링크 : https://pyimagesearch.com/2021/03/29/multi-template-matching-with-opencv/]

 

yolo 외에도 쓸 수 있는 방법이었나?

[링크 : https://pyimagesearch.com/2014/11/17/non-maximum-suppression-object-detection-python/]

 

openCV 문서에서도 발견

minMaxLoc을 안쓰면 되다고. (응?)

    res = cv.matchTemplate(img,template,method)
    min_val, max_val, min_loc, max_loc = cv.minMaxLoc(res)
    cv.rectangle(img,top_left, bottom_right, 255, 2)
res = cv.matchTemplate(img_gray,template,cv.TM_CCOEFF_NORMED)
threshold = 0.8
loc = np.where( res >= threshold)
for pt in zip(*loc[::-1]):
    cv.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (0,0,255), 2)

[링크 : https://docs.opencv.org/3.4/d4/dc6/tutorial_py_template_matching.html]

 

아래 그림 하나로 설명.

원래 내가 원하던 건데.. x86이 아닌 arm에서도 되려나?

[링크 : https://medium.com/quantrium-tech/object-detection-multi-template-matching-2c9c9fc1a867]

[링크 : https://pypi.org/project/Multi-Template-Matching/]

'Programming > openCV' 카테고리의 다른 글

MTM + webcam  (0) 2024.01.16
opencv cv2.imshow() error  (0) 2024.01.16
cv2.imshow cv2.waitKey  (0) 2022.03.14
virtual mouse  (0) 2022.01.25
opencv-3.4.0 어플리케이션 빌드  (0) 2021.01.14
Posted by 구차니

설이 다가와서 이것저것 살게 많아진다.

아내친구랑 같이 장보러 가서 술을 잔뜩 샀는데

10만원 넘으면 신원확인해야 한다고.. 아니 그런게 있었어?

'개소리 왈왈 > 육아관련 주저리' 카테고리의 다른 글

병원  (0) 2024.01.20
TOP FRUIT 망고젤리 맛이 다르다?!  (4) 2024.01.18
피곤피곤 오늘도 피곤  (0) 2024.01.13
lilgadget 헤드폰 단돈 21.95$  (0) 2024.01.09
집 도착 콜밴  (0) 2024.01.08
Posted by 구차니

장보고 와서는 완전 피곤해서 한 3시간 넘게 기절했던 것 같다.

원래 자전거 좀 손보고 타려고 했는데 끄응..

'개소리 왈왈 > 육아관련 주저리' 카테고리의 다른 글

TOP FRUIT 망고젤리 맛이 다르다?!  (4) 2024.01.18
장보기  (0) 2024.01.14
lilgadget 헤드폰 단돈 21.95$  (0) 2024.01.09
집 도착 콜밴  (0) 2024.01.08
바나힐 테마파크  (0) 2024.01.07
Posted by 구차니

운전하면서사도 꾸벅꾸벅.

외근 다녀왔더니 줄서서 기다리는 진기한 풍경 -_ㅠ

'개소리 왈왈 > 직딩의 비애' 카테고리의 다른 글

소득공제?  (0) 2024.02.13
으아아아아아  (0) 2024.01.24
일이 안풀린다  (0) 2023.11.23
리듬깨짐  (0) 2023.11.05
누가 외근이란걸 발명한거야?  (0) 2023.10.06
Posted by 구차니

Visual Geometry Group

VGG 뒤의 숫자는 CNN 레이어의 갯수

CNN(Convolutional Neural network) - 나선형의/복잡한 신경망으로 해석이 되나?

 

[링크 : https://wikidocs.net/164796]

 

탐지도 되긴 하나본데...

[링크 : https://github.com/zubairsamo/Object-Detection-With-Tensorflow-Using-VGG16]

 

keras에 있는 VGG16을 그냥 바로 써서 간단하게 되네..

게다가 save load도 되는데 왜 난 안될까.. ㅠㅠ

# lets import pre trained VGG16 Which is already Builtin for computer vision
from tensorflow.keras.applications import VGG16
from tensorflow.keras.layers import Input
     

# Imagenet is a competition every year held and VGG16 is winner of between  2013-14
# so here we just want limited layers so thats why we false included_top 
vgg=VGG16(weights='imagenet',include_top=False,input_tensor=Input(shape=(224,224,3)))


# lets save model 
model.save('detect_Planes.h5')     

from tensorflow.keras.models import load_model
model=load_model('/content/detect_Planes.h5')

[링크 : https://github.com/zubairsamo/Object-Detection-With-Tensorflow-Using-VGG16/blob/main/Object_Detection_Using_VGG16_With_Tensorflow.ipynb]

'프로그램 사용 > yolo_tensorflow' 카테고리의 다른 글

NMS, soft-NMS  (0) 2024.01.15
MobileNetV2 SSD FPN-Lite  (0) 2024.01.11
mobilenet v2 ssd  (0) 2024.01.11
ssd-mobilenetv2 on jupyter notebook  (2) 2024.01.10
텐서플로우 v1 을 v2로 마이그레이션은 실패 -_-  (0) 2024.01.10
Posted by 구차니

모델 zoo 에서 보다보면 먼가 주르르륵 붙는데

솔찍히 mobilenet v2가 무엇인지, ssd는 또 무엇인지 몰라서 헷갈려서 조사

근데.. FPN은 전에 검색해둔 기억이 있는데 가물가물하네..

 

base network (MobileNetV2)

- 신경망(neural network)로 구성되어 있으며 분류(classification)나 탐지(detection)에 사용이 가능함

- 네트워크의 마지막에 softmax 레이어가 있으면 분류로 작동

 

detection network (Single Shot Detector or SSD)

- SSD(Single ShotDetection)나 RPN(Regional Proposal Network / R-CNN)를 이용하여

- 이미지 내의 여러 물체를 감지하고, 지역을 제안(ROI)함.

- R-CNN : Regions with Convolutional Neural Networks

[링크 : https://kr.mathworks.com/help/vision/ug/getting-started-with-r-cnn-fast-r-cnn-and-faster-r-cnn.html]

 

feature extractor (FPN-Lite)

SSD의 경우 너무 가깝거나(즉 너무 크거나, 일부만 확대되어 보일 경우) 작은경우(멀거나, 원래 작거나) 탐지를 못하는 경우가 있어

피라미드 모양으로 쌓은 FPN(Feature Pyramid Network)를 통해 특징을 추출하여 다양한 규모의 물체를 감지

 

SSD 에서는 Pyramid Feature Hierachy 라는 방식을 이용하여, 서로 다른 스케일의 특징 맵을 이용하여 멀티 스케일 특징을 추출

FPN 모델은 Region Proposeal Network (RPN) 와 Fast R-CNN을 기반으로 한다.

[링크 : https://eehoeskrap.tistory.com/300]

 

근데 내용만 봐서는 SSD + mobilenet v2 + FPN이 조합이 가능한건지 모르겠다?

 

In the MobileNetV2 SSD FPN-Lite, we have a base network (MobileNetV2), a detection network (Single Shot Detector or SSD) and a feature extractor (FPN-Lite).

Base network:
MobileNet, like VGG-Net, LeNet, AlexNet, and all others, are based on neural networks. The base network provides high-level features for classification or detection. If you use a fully connected layer and a softmax layer at the end of these networks, you have a classification.


 
Example of a network composed of many convolutional layers. Filters are applied to each training image at different resolutions, and the output of each convolved image is used as input to the next layer (source Mathworks)
But you can remove the fully connected and the softmax layers, and replace it with detection networks, like SSD, Faster R-CNN, and others to perform object detection.

Detection network:
The most common detection networks are SSD (Single Shot Detection) and RPN (Regional Proposal Network).
When using SSD, we only need to take one single shot to detect multiple objects within the image. On the other hand, regional proposal networks (RPN) based approaches, such as R-CNN series, need two shots, one for generating region proposals, one for detecting the object of each proposal.
As a consequence, SSD is much faster compared with RPN-based approaches but often trades accuracy with real-time processing speed. They also tend to have issues in detecting objects that are too close or too small.

Feature Pyramid Network:
Detecting objects in different scales is challenging in particular for small objects. Feature Pyramid Network (FPN) is a feature extractor designed with feature pyramid concept to improve accuracy and speed.

[링크 : https://docs.edgeimpulse.com/docs/edge-impulse-studio/learning-blocks/object-detection/mobilenetv2-ssd-fpn]

'프로그램 사용 > yolo_tensorflow' 카테고리의 다른 글

NMS, soft-NMS  (0) 2024.01.15
VGG-16 / VGG-19  (0) 2024.01.11
mobilenet v2 ssd  (0) 2024.01.11
ssd-mobilenetv2 on jupyter notebook  (2) 2024.01.10
텐서플로우 v1 을 v2로 마이그레이션은 실패 -_-  (0) 2024.01.10
Posted by 구차니

이전에꺼는 save를 못해먹겠어서 (checkpoint를 pb로 변환하거나 해야 하는데 그것도 안되고...)

다른 것 찾는 중

 

[링크 : https://www.kaggle.com/code/suraj520/mobilenet-v2-ssd-scratch-without-tfod]

 

위에껀 아래와 같이 sequential 이라던가 이런게 없어서.. 또 저장안되는거 아닌가 걱정중..

def create_model():
  model = tf.keras.Sequential([
    keras.layers.Dense(512, activation='relu', input_shape=(784,)),
    keras.layers.Dropout(0.2),
    keras.layers.Dense(10)
  ])

  model.compile(optimizer='adam',
                loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
                metrics=[tf.keras.metrics.SparseCategoricalAccuracy()])

  return model

# Create a basic model instance
model = create_model()

[링크 : https://www.tensorflow.org/tutorials/keras/save_and_load?hl=ko]

[링크 : https://www.tensorflow.org/hub/exporting_tf2_saved_model?hl=ko]

Posted by 구차니

nnstreamer python 예제를 보다보니, 아래와 같이 pipeline 문자열을 이용해서 구성하고

이름으로 싱크를 찾아 콜백을 연결해 주는걸 보니, 일일이 element 생성해서 연결할 필요가 없을 것 같아서 검색중

        gst_launch_cmdline += "tensor_sink name=tensor_sink t. ! "

        self.pipeline = Gst.parse_launch(gst_launch_cmdline)

        # bus and message callback
        bus = self.pipeline.get_bus()
        bus.add_signal_watch()
        bus.connect("message", self.on_bus_message)

        self.tensor_filter = self.pipeline.get_by_name("tensor_filter")
        self.wayland_sink = self.pipeline.get_by_name("img_tensor")

        # tensor sink signal : new data callback
        tensor_sink = self.pipeline.get_by_name("tensor_sink")
        tensor_sink.connect("new-data", self.new_data_cb)

    # @brief Callback for tensor sink signal.
    def new_data_cb(self, sink, buffer):
        """Callback for tensor sink signal.

        :param sink: tensor sink element
        :param buffer: buffer from element
        :return: None
        """

 

parse쪽은 c 로는 아래의 함수를 쓰면 될 것 같은데

gst_parse_launch 
GstElement *
gst_parse_launch (const gchar * pipeline_description,
                  GError ** error)
Create a new pipeline based on command line syntax. Please note that you might get a return value that is not NULL even though the error is set. In this case there was a recoverable parsing error and you can try to play the pipeline.

To create a sub-pipeline (bin) for embedding into an existing pipeline use gst_parse_bin_from_description.

Parameters:

pipeline_description – the command line describing the pipeline
error – the error message in case of an erroneous pipeline.
Returns ( [transfer: floating]) – a new element on success, NULL on failure. If more than one toplevel element is specified by the pipeline_description, all elements are put into a GstPipeline, which than is returned.

[링크 : https://gstreamer.freedesktop.org/documentation/gstreamer/gstparse.html?gi-language=c]

 

아래의 함수를 이용해서 찾으면 될...지도?

GObject
    ╰──GInitiallyUnowned
        ╰──GstObject
            ╰──GstElement
                ╰──GstBin
                    ╰──GstPipeline

gst_bin_get_by_name 
GstElement *
gst_bin_get_by_name (GstBin * bin,
                     const gchar * name)
Gets the element with the given name from a bin. This function recurses into child bins.

Parameters:

bin – a GstBin
name – the element name to search for
Returns ( [transfer: full][nullable]) – the GstElement with the given name

[링크 : https://gstreamer.freedesktop.org/documentation/gstreamer/gstbin.html?gi-language=c#gst_bin_get_by_name]

'프로그램 사용 > gstreamer' 카테고리의 다른 글

nnstreamer  (0) 2023.12.20
gst-device-monitor-1.0  (0) 2023.12.06
gstremaer videobox + videomixer  (0) 2023.04.10
gst-inspector.c  (0) 2023.04.06
gstreamer videomixer 반쪽 성공  (0) 2023.03.27
Posted by 구차니

interactive python 해서 ipython인가?

notebook은 ipython 꺼였는데 jupyter의 일부가 되었다고 한다.

Installing IPython

There are multiple ways of installing IPython. This page contains simplified installation instructions that should work for most users. Our official documentation contains more detailed instructions for manual installation targeted at advanced users and developers.
If you are looking for installation documentation for the notebook and/or qtconsole, those are now part of Jupyter.

[링크 : https://ipython.org/install.html]

[링크 : https://pypi.org/project/ipython/]

[링크 : https://yujuwon.tistory.com/m/entry/ipython-노트북-설치하기]

'Programming > python(파이썬)' 카테고리의 다른 글

python tcp 서버 예제  (0) 2024.01.22
파이썬 소켓 예제  (0) 2024.01.17
파이썬 가상환경  (0) 2024.01.09
pyplot legend picking  (0) 2023.10.05
matplotlib  (0) 2023.10.04
Posted by 구차니