전체 글 42

DETR에 대해 자세히 파헤쳐보자!

안녕하세요!오늘은 DETR의 자세한 개념을 정리하고 RTSP 영상에 실시간 객체 탐지를 구현해보도록 하겠습니다.글을 작성하기 전 구현해 본 결과... 탐지 정확도는 많이 떨어지더라구요 😂😂그래도 DETR만의 뚜렷한 장점과 활용 방안이 있기때문에 정리해보고자 합니다! DETR이란?DETR은 CNN 백본으로 이미지를 특정 맵으로 뽑고, Transformer(인코더-디코터) 를 이용해 이미지 전체의 전역적 관계를 고려하여 end-to-end로 객체(클래스+바운딩박스)를 예측하는 ai 모델입니다.anchor나 NMS 같은 별도 후처리 없이 set-prediction(한 이미지에 대해 고정 개수의 예측 쿼리)을 수행합니다. 아키텍처 (구성 요소)Backbone (e.g. ResNet-50)이미지 => feat..

컴퓨터비전 2025.09.24

[C#] WPF 설치하고 시작하기!

저번 글에 이어서 Visual Studio Community 2022에서 WPF를 실행해보도록 하겠습니다. 1. Visual Studio 환경 설정PC에 Visual Studio가 설치되어 있다는 가정 하에 작성해보겠습니다.Visual Stduio Installer 실행 및 수정 항목을 선택합니다. 워크로드의 .NET 데스크톱 개발을 선택합니다. 2. 새 프로젝트 만들기 WPF 애플리케이션 (.NET Core 버전에 맞춰서) 프로젝트를 선택합니다. 위 사진에서 보이는 WPF 애플리케이션과 WPF 앱(.NET Framework)의 차이점은 다른 대상 런타임을 가진다는 것입니다. WPF 애플리케이션 : .NET 5 이상 (현재는 .NET 6/7/8/9)WPF 앱(.NET Framework) : .NET Fr..

C# 2025.08.27

[C#] WPF를 이용하여 C# 개발 시작하기

안녕하세요!제 포스트를 보면 아시겠지만 C#을 활용하여 .NET Framework 환경에서 ASP.NET / WinForms 으로 GUI를 구현해왔습니다.이에 더해 회사 실습 중 WPF를 활용한 GUI 과제를 전달받아 공부를 시작하게 되었습니다. 따라서 오늘은 WPF의 기본 개념과 WinForms과의 차이점을 정리해보도록 하겠습니다.마지막엔 WinForms과 WPF를 각각 동일한 기능을 가지도록 구현하여 비교해볼 것입니다! WPF(Windows Presentation Foundation) 란?WPF는 마이크로소프트가 .NET Framework 3.0 (2006)에서 처음 도입한 차세대 UI 프레임워크입니다.WinForms의 한계를 극복하고, 보다 풍부하고 유연한 사용자 인터페이스(UI)를 구현하기 위해..

C# 2025.08.27

텐서플로우 함수의 모든 것: 자동 미분, 그래프, 트레이싱까지 알아보자!

이전 글에 이어서 파이썬 저수준 API를 활용하는 텐서플로우에 대해서 알아보겠습니다. *자동 미분으로 그레이디언트 계산하기자동 미분을 사용하여 그레이디언트를 자동으로 계산하는 방법을 이해하기 위해 간단한 함수를 살펴 봅시다.def f(w1 , w2): return 3 * w1 ** 2 + 2 * w1 * w2 미적분을 알고 있다면 w1에 대한 이 함수의 도함수가 6 * w1 + 2 * w2라는 것을 구할 수 있습니다.또한 w2에 대한 도함수는 2 * w1입니다. 예를 들어 포인트 w1, w2 = 5, 3에서 이 도함수의 값은 각각 36, 10입니다.따라서 이 포인트의 그레이디언트 벡터는 36, 10입니다. 신경망은 보통 수만 개의 파라미터를 가진 매우 복잡한 함수입니다.손으로 직접 도함수를 계산하는..

TensorFlow를 사용한 딥러닝: 저수준 API와 커스텀 훈련 전략!

이전 글까지는 텐서플로우의 고수준 API인 케라스만을 알아보았습니다.앞으로 만나게 될 딥러닝 작업의 95%는 케라스 외에 다른 것이 필요하지는 않습니다. 하지만 이번 글에서는 텐서플로우를 자세히 알아보고 저수준 파이썬 API를 살펴보겠습니다.자신만의 손실 함수, 지표, 층, 모델, 초기화, 규제, 가중치 규제 등을 만들어 세부적으로 제어하고 싶을 때 필요하기 때문입니다.그레이디언트 특별한 변환 또는 규제를 적용하거나 네트워크의 부분마다 다른 옵티마이저를 사용하는 등 훈련 반복문 자체를 완전히 제어하고 싶을 수도 있습니다. 이번 글에서는 위와 같은 내용들을 정리하고, 텐서플로우의 자동 그래프 생성 기능을 사용해 사용자 정의 모델 훈련 알고리즘의 성능을 향상하는 방법도 알아봅시다! *텐서플로우 훑어보기텐서플..

케라스를 활용한 심층 신경망: 과대적합 방지를 위한 딥러닝 규제 전략 4가지!

*규제를 사용해 과대적합 피하기수백만 개의 파라미터가 있으면 동물원 전체를 그려낼 수 있을지도 모릅니다.심층 신경망은 전형적으로 수만 개, 때로는 수백만 개의 파라미터를 가지고 있습니다.이 때문에 네트워크의 자유도가 매우 높습니다.즉, 대규모의 복잡한 데이터셋을 학습할 수 있다는 뜻입니다. 하지만 이런 높은 자유도는 네트워크를 훈련 세트에 과대적합되기 쉽게 만듭니다.따라서 규제가 필요합니다.이미 최상의 규제 방법인 조기 종료를 구현했었습니다. 또한 배치 정규화는 불안정한 그레이디언트 문제를 해결하기 위해 고안되었지만 꽤 괜찮은 규제 방법으로 사용될 수 있습니다.이번 글에서는 신경망에서 널리 사용되는 다른 규제 방법을 알아보겠습니다.L1과 L2 규제, 드롭아웃, 맥스-노름 규제입니다. *L1과 L2 규제전..

케라스를 활용한 심층 신경망: 학습 안정화를 위한 스케줄링 전략!

*학습 스케줄링좋은 학습률을 찾는 것은 매우 중요합니다.학습률을 너무 크게 잡으면 훈련이 발산할 수 있습니다.너무 작게 잡으면 최적점에 수렴하겠지만 시간이 매우 오래 걸릴 것입니다.만약 조금 높게 잡으면 처음에는 매우 빠르게 진행하겠지만 최적점 근처에서는 요동이 심해져 수렴하지 못할 것입니다.컴퓨터 자원이 한정적이라면 차선의 솔루션을 만들기 위해 완전히 수렴하기 전에 훈련을 멈추어야 합니다. 매우 작은 값에서 지수적으로 학습률을 증가시키면서 모델훈련을 수백 번 반복하여 좋은 학습률을 찾을 수 있습니다.학습 곡선을 살펴보고 다시 상승하는 곡선보다 조금 더 작은 학습률을 선택합니다.그다음 모델을 다시 초기화하고 이 학습률을 훈련합니다.그러나 일정한 학습률보다 더 나은 방법이 있습니다.큰 학습률로 시작하고 학..

케라스를 활용한 심층 신경망: 훈련 중 데이터 부족과 훈련 속도 문제 해결하기!

딥러닝 훈련 도중 생기는 데이터 부족과 훈련 속도 문제에 대한 여러 가지 해결 방법을 정리해 보겠습니다. *비지도 사전 훈련레이블 된 훈련 데이터가 많지 않은 복잡한 문제가 있는데, 아쉽게도 비슷한 작업에 대해 훈련된 모델을 찾을 수 없다고 가정해 봅시다.먼저 레이블 된 훈련 데이터를 더 많이 모아 봅시다.이것이 어렵다면 비지도 사전 훈련(unsupervised pretraining)을 수행할 수 있습니다. 사실 레이블이 없는 훈련 샘플을 모으는 것은 비용이 적게 들지만 여기에 레이블을 부여하는 것이 비쌉니다.레이블 되지 않은 훈련 데이터를 많이 모을 수 있다면 이를 사용하여 오토인코더나 생성적 적대 신경망과 같은 비지도 학습 모델을 훈련할 수 있습니다.그런 다음 오토인코더나 GAN 판별자의 하위 층을..

케라스를 활용한 심층 신경망: 그레이디언트 클리핑으로 학습 안정화 시키기!

훈련 중 그레이디언트를 안정화시키는 마지막 기법인 그레이디언트 클리핑을 알아보겠습니다. *그레이디언트 클리핑그레이디언트 폭주 문제를 완화하는 또 다른 방법은 역전파 될 때 특정 임곗값을 넘어서지 못하게 그레이디언트를 잘라내는 것입니다.이를 그레이디언트 클리핑(gradient clipping)이라고 합니다.이 기법은 일반적으로 배치 정규화를 사용하기 까다로운 순환 신경망에서 사용됩니다.케라스에서 그레이디언트 클리핑을 구현하려면 다음과 같이 옵티마이저를 만들 때 clipvalue와 clipnorm 매개변수를 지정하면 됩니다.import tensorflow as tffrom tensorflow import keras#모델 정의model = keras.Sequential([ keras.Input(shape..

케라스를 활용한 심층 신경망: 배치 정규화로 학습 안정화 시키기!

이전 글에서는 불안정한 그레이디언트 문제를 해결하기 위한 방법 중 하나인 활성화 함수를 알아보았습니다.이번 글에서는 완전히 다른 방법인 배치 정규화에 대해 정리하겠습니다. *배치 정규화ReLU와 함께 He 초기화를 사용하면 훈련 초기 단계에서 그레이디언트 소실이나 폭주 문제를 크게 줄일 수 있지만,훈련하는 동안 다시 발생하지 않으리란 보장은 없습니다. 2015년 논문에서 그레이디언트 소실과 폭주 문제를 해결하기 위한 배치 정규화(batch normalization) - BN 기법을 제안했습니다.이 기법은 각 층에서 활성화 함수를 통과하기 전이나 후에 모델에 연산을 하나 추가합니다.이 연산은 단순하게 입력을 원점에 맞추고 정규화한 다음, 각 층에서 두 개의 새로운 파라미터로 결괏값의 스케일을 조정하고 이동..