반응형

그림 참고 1:

Early Warning Model of Wind Turbine Front Bearing Based on Conv1D and LSTM | IEEE Conference Publication | IEEE Xplore

그림 참고 2:

Understanding 1D and 3D Convolution Neural Network | Keras | by Shiva Verma | Towards Data Science

 


1. 데이터셋 가정

0. 가속도계 데이터셋 가정

Batch size : 100000

Sequence : 10

Feature : 3 (x-axis, y-axis, z-axis)

 

Dataset shape : (100000, 10, 3) = (Batch size, Sequence, Feature) = (B, S, F)

 


2. 모델 구성

1. 모델 구성

1. Conv1D

  CNN은 convolution layer, pooling layer, fully connected layer로 주로 구성된다. 그 중 convolution layer와 pooling layer는 두 개의 특수 신경망 레이어로 주로 유효 특징 추출을 담당한다. 원본 데이터에서 벡터를 추출하고 원본 기능의 공간적 정보를 마이닝할 수 있다. 가속도계와 같은 1차원 데이터를 1차원 컨볼루션 신경망(Conv1D)을 사용하여 서로 다른 변수를 결합하고 변수 간의 공간적 상관 관계를 추출한다.

 

2. Conv1D

  Conv1D는 그림 2와 같이 한 차원에 대해 커널 슬라이딩을 통해 공간적 상관 관계를 추출한다.

 

 

2. LSTM

  LSTM은 시계열 데이터를 처리하기 위한 고전적인 딥 러닝 네트워크이다. 순환 신경망이 긴 시계열을 어느 정도 처리할 때 기울기 소실(Vanishing gradient) 문제를 해결하는 순환 신경망의 변형입니다. 장기 및 단기 기억 네트워크의 셀 구조는 그림 3과 같이 망각 게이트, 입력 게이트 및 출력 게이트가 있다.

3. LSTM

 

  3. Conv1D + LSTM 

  Conv1D + LSTM 모델은 그림 1과 같이 Conv1D 기반의 특징 융합 레이어, LSTM 기반 시계열 예측 레이어, output layer로 구성된다. Input layer에는 그림 0과 같은 시공간적 특성행렬이 입력된다. 각 변수는 CNN에 의해 ​​가중치가 부여되고 변수 간의 정보가 결합된다. 과적합(Overfitting)을 피하기 위해 dropout layer가 네트워크에 추가됩니다. 모델 파라미터는 그림 4와 같이 구성한다.

 

4. 모델 파라미터

 

모델을 구성하게 되면 아래의 코드와 같이 구현할 수 있다. 

import torch.nn as nn


class Conv1d_LSTM(nn.Module):
    def __init__(self, in_channel=3, out_channel=1):
        super(Conv1d_LSTM, self).__init__()
        self.conv1d_1 = nn.Conv1d(in_channels=in_channel,
                                out_channels=16,
                                kernel_size=3,
                                stride=1,
                                padding=1)
        self.conv1d_2 = nn.Conv1d(in_channels=16,
                                out_channels=32,
                                kernel_size=3,
                                stride=1,
                                padding=1)
        
        self.lstm = nn.LSTM(input_size=32,
                            hidden_size=50,
                            num_layers=1,
                            bias=True,
                            bidirectional=False,
                            batch_first=True)
        
        self.dropout = nn.Dropout(0.5)

        self.dense1 = nn.Linear(50, 32)
        self.dense2 = nn.Linear(32, out_channel)

    def forward(self, x):
	# Raw x shape : (B, S, F) => (B, 10, 3)
        
        # Shape : (B, F, S) => (B, 3, 10)
        x = x.transpose(1, 2)
        # Shape : (B, F, S) == (B, C, S) // C = channel => (B, 16, 10)
        x = self.conv1d_1(x)
        # Shape : (B, C, S) => (B, 32, 10)
        x = self.conv1d_2(x)
        # Shape : (B, S, C) == (B, S, F) => (B, 10, 32)
        x = x.transpose(1, 2)
        
        self.lstm.flatten_parameters()
        # Shape : (B, S, H) // H = hidden_size => (B, 10, 50)
        _, (hidden, _) = self.lstm(x)
        # Shape : (B, H) // -1 means the last sequence => (B, 50)
        x = hidden[-1]
        
        # Shape : (B, H) => (B, 50)
        x = self.dropout(x)
        
        # Shape : (B, 32)
        x = self.fc_layer1(x)
        # Shape : (B, O) // O = output => (B, 1)
        x = self.fc_layer2(x)

        return x

 

728x90
반응형
반응형

 

microchipdeveloper.com/wireless:start

 

Wireless Communications - Developer Help

Microchip offers a broad portfolio of wireless solutions which are cost effective and very easy to implement. Depending on your application requirements, you can choose the product that fits your needs from our various transmitters, receivers, transceivers

microchipdeveloper.com

IEEE Develope Document를 통해 스터디를 하며, 개발에 필요한 부분을 위주로 이야기하겠습니다. 

 

BLE Architecture

IEEE에서 소개하는 BLE Architecture 계층으로 Application Layer, Host Layer, Controller Layer로 구성되며,

Host Layer는 만들고자 하는 서비스에 중요한 내용이 아니므로, Controller Layer에서 Physical Layer, Link Layer 위주로 글을 작성하겠습니다. 

 

BLE RSSI 신호를 이용한 Indoor Position(실내 측위) 프로젝트를 수행했습니다. 몇 년 전부터 많이 개발되었으며, BLE의 Architecture(Physical Layer)의  BLE의 한계를 설명하고, 하나의 논문을 보려고 합니다. 

coding-yoon.tistory.com/123?category=910542

 

[무선 통신] 실내 측위를 위한 삼변측량

안녕하세요. Bluetooth Low Energy를 이용해 실내 측위에 대해 알아보겠습니다. 실내에 iBeacon 4개가 설치되어 있습니다. iBeacon는 Advertise의 Payload가 30bytes입니다. (일반 ble는 31bytes) Payload에는 Tx..

coding-yoon.tistory.com

 

 

< Physical Layer >

 

1. Frequency Band

    ① 2.4GHz 대역 (2.402 GHz ~ 2.4835 GHz) : 2 MHz간격으로 40개 채널로 구성

    ② Advertising Channels : 37, 38, 39 (2402 MHz, 2426 MHz, 2480 MHz)

        - Device Discovery

        - Connection Establishment

        - Broadcast Transmissions

    ③ Data Channels : 0 ~ 36

        - 연결된 장치 간 양방향 통신 

        - Adaptive Frequency Hopping 

 

BLE Frequency Band

 

2. Data rate

    ① 1 Mbps 이하

    ② GFSK (Gaussian Frequency-Shift Keying) : Gaussian Filter 사용

 

 

 

 

 

< Application 설명>

 

실내 측위 어플리케이션에서 GAP, GATT의 Connection을 통한 데이터 송수신보다 Advertiser ChannelBroadcaster Transmissions을 사용합니다. 

 

블루투스 처럼 페어링을 하지 않고, 패킷을 간소화하여 Connection-less Service를 통해 저전력 통신이 가능합니다.

 

Advertiser Channel의 Broadcaster Transmissions은 목적지가 존재하지 않고, 모든 기기로 Advertiser Packet을 전송합니다. ( 해당 서비스에는 Advertiser Packet에 대한 Ack는 필요하지 않습니다. ) 

Broadcaster, Observer는 Link Layer의 Role에 관한 내용이므로 다음 글에 자세히 설명하며, 우선 Broadcaster는 Packet을 송신, Observer는 Packet을 수신하는 역할로 이해하면 충분합니다. 

 

Broadcaster가 신호를 모든 기기로 전송하면, Observer에서 신호를 수신하며, 수신한 신 세기(RSSI)를 구할 수 있습니다. RSSI를 통해 Distance를 구할 수 있으며, 3개의 Distance가 모이면 삼변측량을 통해 좌표를 구할 수 있습니다. 

 

 

 

 

<BLE 한계>

 

DIstance별 RSSI 

실제로 BLE 실내 측위는 굉장히 어려운 일입니다.

 

RSSI는 실수가 아닌, 정수 값으로 약 -60~- 90 dBm 사이로 존재합니다. 

 

0~30m의 Distance가  -60~- 90 dBm로  결정됩니다. 

 

실제 방해물이 없는 빈 공간에서 테스트를 하면, 5m를 넘어 -80 ~90 dBm 사이 값으로 불규칙으로 존재하며, 실제 Distance를 구하기 어렵습니다. 

 

(참고)

coding-yoon.tistory.com/137

 

[무선 통신] Dependency between RSSI and Distance - BLE

Dependency between RSSI and Distance - BLE vctec.co.kr/product/nrf52832-%EC%95%84%EB%91%90%EC%9D%B4%EB%85%B8-%ED%98%B8%ED%99%98-ble-%ED%94%BC%EB%8D%94-%EB%B3%B4%EB%93%9C-adafruit-feather-nrf52-bluef..

coding-yoon.tistory.com

(참고)

무선 통신이므로 RSSI 굉장히 불안정하고, 장애물, 반사에 굉장히 취약합니다.

www.davidgyoungtech.com/2020/05/15/how-far-can-you-go

 

How Far Can You Go?

The Challenge of Bluetooth Distance Estimation Estimating distance with Bluetooth has long been a source of befuddlement and controversy.  Developers often have trouble making it work and there is debate about whether it works well enough to be useful. 

www.davidgyoungtech.com

위 블로그는, RSSI를 통해 Distance를 구하는 것이 아이디어는 쉽지만, 정확성을 올리는 것이 굉장히 어렵다고 소개하고 있습니다. 뿐만 아니라, 기기에 대한 안테나 차이로 RSSI가 제대로 나오지 않을 수 있습니다. 

 

그래서 RSSI 정확성을 향상시키기 위한 논문과 연구가 많이 나왔습니다. 

 

논문 중 Filter Smoothing, Kalman Filter, Deep Learning 을 통한 성능향상이 많습니다. 

 

그 중 가장 눈에 띄는 논문으로...

 

www.mdpi.com/1424-8220/20/5/1350

 

Detecting and Correcting for Human Obstacles in BLE Trilateration Using Artificial Intelligence

One of the popular candidates in wireless technology for indoor positioning is Bluetooth Low Energy (BLE). However, this technology faces challenges related to Received Signal Strength Indicator (RSSI) fluctuations due to the behavior of the different adve

www.mdpi.com

위 논문의 아이디어는 Advertiser Channel에서 37, 38, 39 Channel이 Random하게 Hopping 하므로, 채널의 주파수 차이로 인해 수신세기가 다르게 측정된다는 것입니다. ( 37, 38, 39 (2402 MHz, 2426 MHz, 2480 MHz) )

 

Channel 37, 38, 39 RSSI

위 표를 보면 Channel 별 RSSI가 다르다는 것을 알 수 있습니다.

 

각각 37, 38, 39 channel의 거리별 RSSI를 딥러닝을 이용하여 성능을 향상시켰습니다.

Channel RSSI Input Deep Learning
Deep Learning Performance

 

그 밖에도 많은 Indoor Positioning Algorithm이 있으며 , Fingerprinting 혹은 Map Matching 을 통해 정확성을 올리는 방법이 있습니다.

 

RSSI가 아닌, 기기 간 통신 속도를 통해 Distance를 구하는 UWB가 있습니다. UWB는 오차범위가 [m]인 BLE와 달리 [cm]입니다. 

728x90
반응형

+ Recent posts