[ICCV 2015] Learning Spatiotemporal Features with 3D Convolutional Networks

2023. 11. 23. 20:00·📰논문 리뷰
목차
  1. Learning Features with 3D ConvNets
  2. Exploring kernel temporal depth
  3. Spatiotemporal feature learning
  4. Action recognition
  5. Action Similarity Labelling
  6. Scene and Object Detection

안녕하세요! 첫 논문리뷰입니다. 이 논문은 3D ConvNet 을 이용하여 비디오의 시공간적 특성을 학습하는 방법에 대한 논문 입니다. 이 방법을 사용하면 여러 video analysis tasks 에서 좋은 성능을 낼 수 있기에, 그 결과를 실험을 통해 보여줬습니다.

 

Abstract

이 논문에서는 Spatio-temporal featrue learning, 즉, 시공간적 특성 학습을 위한 단순하고 효과적인 방법을 제안합니다. 간략하게 설명하자면, deep 3d convolutional networks 를 사용하여 large scale 의 supervised video dataset 으로 train 시켜서 시공간적 특성을 학습합니다.

이 논문의 finding 3가지는 다음과 같습니다.

  1. Spatio-temporal feature learning 에는 2D ConvNets 보다 3D ConvNets 이 적합하다.
  2. 3D ConvNets 중에서는, 모든 layer 가 small 3*3*3 convolutional kernel 을 가진 architecture 가 성능이 제일 좋다.
  3. 간단한 linear classifier 를 이용해서 학습된, C3D (Convolutional 3D)는 기존의 최신 방법들 보다 성능이 좋다.

또한 이 network의 features 는 compact 하고, conceptually simple 해서 학습하고 사용하기에 쉽다고 합니다.

Intro

우선 Computer vision 커뮤니티에서 다루는 문제들에는

  • Action recognition
  • Abnormal event detection
  • Activity understanding

등이 있다고 합니다.

이런 video tasks 들을 해결하는데 필요하기 때문에, 효과적인 generic video descriptor 에 대한 수요가 증가하고 있다고 해요. 이때, 효과적인 descriptor 가 되기 위해서는 아래의 4가지 특성이 필요하다고 합니다.

  1. generic
    • 서로 다른 종류의 videos 들을 잘 표현하고, 구별하기 위해서
  2. compact
    • processing, storing, and retrieving 등을 더 쉽게 수행하기 위해
  3. efficient to compute
    • 빠르게 실행하기 위해
  4. simple to implement
    • 간단한 모델에서도 잘 작동하기 위해

그런데, image based deep features 는 motion modeling 이 부족하기 때문에 videos 에 적합하지 않다고 해요. (이건 Section 4,5,6을 통해 확인 수 있다고 합니다.) 그래서 이 논문에서는 deep 3D ConNet 을 사용해서, spatio-temporal fatures 를 배울 것을 제안합니다. 이때 간단한 linear classifier 를 이용하여, 이 learned features가 여러 video analysis tasks 에서 좋은 성능을 내는 것을 실험적으로 보여줍니다.

Learning Features with 3D ConvNets

해당 섹션에서는, 3D ConvNets 의 basic operations 에 대해 설명하고, 실험적으로 3D ConvNets의 여러 구조에 대해 분석을 하고, feature learning 을 위해 이 3D ConvNets 들을 어떻게 train 해야 하는지에 대해 정교하게 설명합니다.

3D convolution and pooling

2D ConvNet 과 비교했을 때, 3D ConvNet 은 3D Convolution / pooling operations 을 사용하기 때문에 temporal 정보를 더 잘 model 하는 능력을 갖고 있다고 합니다.

 

2D Convolution

 

(a) 하나의 이미지에 대해 2D Convolution 하면 하나의 이미지를 output 으로 내보내고

(b) 여러 개의 이미지 (채널) 에 대해 2D Convolution 해도 하나의 이미지를 output 으로 내보냅니다.

→ 2D ConvNets 는 convolution operation 을 적용한 후에는 input signal 의 temporal 정보를 잃게 됩니다. 즉, spatial 정보만 갖게 되는 것이죠.

 

3D Convolution

 

(c) 반면, 3D Convolution 은 input signal 의 temporal 정보를 보존하여 output volume 을 내보냅니다.

→ 3D ConvNets 은 convolution operation 을 적용한 후에도 spatio-temporal 정보를 잃지 않습니다.

위의 이미지는 convolution 에 대한 것이지만, 같은 현상은 2D / 3D polling 에 대해서도 마찬가지입니다. (convolution 은 학습될 수 있다는 것을 제외하면, 어쨌든 유사한 operation 이니까요)

이것보다 먼저 나온 논문들에서 발췌한 내용을 살짝 언급하자면, 아래와 같습니다.

  • 해당 논문에서 temporal stream network 에 multiple frames 를 input 으로 집어 넣더라도, 2D Convolution 때문에 첫 번째 convolution layer 에서 temporal 정보가 완전히 collapsed 된다. [K. Simonyan and A. Zisserman. Two-stream convolutional networks for action recognition in videos. In NIPS, 2014.]
  • 해당 논문에 2D convolutions 을 사용하는 fusion models 들이 나오는데, 대부분의 networks 들이 첫번째 convolution layer 이후에 input 의 temporal signal 을 잃게 된다. 그런데 이 논문에 나오는 모델 중에 Slow Fusion model 은 처음 2개의 convolution layer에서 3D convolution / pooling 을 사용하고, 성능이 가장 좋다. 그래서 우리는 성능이 좋은 key reason 이 바로 3D convolution / pooling 을 사용했기 때문이라고 본다. 아무튼, 이 모델 또한 세번째 convolution layer 이후에 temporal 정보를 모두 잃기는 한다. [A. Karpathy, G. Toderici, S. Shetty, T. Leung, R. Sukthankar, and L. Fei-Fei. Large-scale video classification with convolutional neural networks. In CVPR, 2014.]

3D ConvNets 를 위한 good architecture 를 identify 하려고 하는데, large-scale dataset 에 대해 사용하면 시간이 너무 많이 드니까, 우선 medium-scale dataset 인 UCF101에 대해 실험을 해봤다고 합니다.

* UCF101

  • UCF101 is an action recognition data set of realistic action videos, collected from YouTube, having 13320 videos from 101 action categories

Notation

video clip 의 사이즈는 c * l * h * w 로 설정한다.

  • channel 수, length (frames 수), height, width (각 frame 의 size))

3D convolution / pooling kernel size 는 d * k * k 로 설정한다.

  • d = kernel 의 temporal depth
  • k = kernel 의 spatial size

Common Network Settings

우리가 train 시킨 모든 networks 에 적용한 network settings 를 describe 하는 내용이다.

  • network의 input은 video clips 이고, class labels (101 different actions) 를 predict 한다.
  • video frames 는 128 * 171 로 resize 된다. (UCF101 frames 의 대략 절반 정도의 resolution 이라고 한다. 아마 시간을 줄이기 위해 이렇게 하지 않았나 싶다.)
  • videos 는 networks 의 input 으로 사용될 때 non-overlapped 인 16-frame clips 로 split 되어 사용된다.
  • 따라서, input dimension 은 3 * 16 * 128 * 171 가 된다.
  • training 할 때, 3 * 16 * 112 * 112 의 input clips으로 random crop 을 해서 jittering 을 사용한다.
  • networks 는 5개의 convolution layer 와 5개의 pooling layer 가 있고, (각 conv 뒤에 pool 하나씩 있음.)
  • 2개의 fully-connected layer와 1개의 softmax loss layer 가 있어서 action label을 predict 한다.
  • 5개의 convolution layer 1 ~ 5 에 대한 filters의 갯수는 각각 64, 128, 256, 256, 256 이다.
  • 모든 convolution kernels 는 d size 이다. (d 는 kernel temporal depth) (+ 나중에 d 의 값을 바꾸면서, 좋은 3D architecture 를 찾아볼 것임)
  • 모든 convolution layer 는 시공간적으로 적절한 padding 을 갖고 있고, stride 는 1 이다. (이렇게 하면, input 을 conv 에 태운 후에 output 으로 내보냈을 때 size가 안 바뀜)
  • 모든 pooling layers 는 kernel size 가 2 * 2 * 2 이고 (첫번째 layer 를 제외하고는) stride 가 1인 max pooling layer 이다. 따라서 output 의 size는 input 의 1/8로 줄어들게 된다.
  • 1st pooling layer 는 kernel size 가 1 * 2 * 2 인데, 이건 temporal size를 너무 일찍 merge 하지 않기 위한 의도를 담고 있다고 한다. 또한, 16 frames 의 clip length 를 만족하기 위함이다. (설명을 추가하자면, convolution layer 가 5개니까, 1/2 로 줄어드는 pooling 을 4번 하려면 5번 중 1번은 안 해야하는데, 그걸 1st pooling layer 에서 안 하는 것이다. d = 1 로 만들어서! 즉, L (16) 또한 d (2) 값에 의해 16, 8, 4, 2, 1로 점점 줄어들게 될 것인데, 그걸 1st pooling 에서 안 하는 것이라고 이해했다.)
  • 2개의 fully connected layers 는 2048 outputs 을 내보낸다.
  • 우리는 초기 learning rate 은 0.003 으로, mini-batches of 30 clips 를 사용해서, networks를 맨 처음부터 훈련시킨다.

Varying network architectures

이 논문의 주요 관심사는 deep networks 를 통해 어떻게 temporal information 을 종합하는지에 있습니다. 이때 좋은 3D ConvNet architecture를 찾기 위해서, 아까 언급했던 다른 세팅들은 다 고정해두고, kernel 의 temporal depth 인 d 값만 조정하여 실험합니다.

이 때 실험하는 architectures 는 2가지 types 이 있습니다.

  1. homogeneous temporal depth : 모든 convolution layers 는 같은 kernel temporal depth 를 가짐
    • d = 1, 3, 5, 7 인 4가지 networks를 살펴봄 (depth-d 라고 각각 부를 예정)
    • 이때, depth-1 net은 separate frames 에 대해 2D convolutions 를 적용하는 것과 같다.
  2. varying temporal depth : kernel temporal depth 는 layers 에 따라 달라짐
    • temporal depth 가 증가 / 감소하는 2가지 networks 를 살펴봄 (순서대로 1st ~ 5th layers 의 depth)
    • increasing 하는 경우 : 3-3-5-5-7
    • decreasing 하는 경우 : 7-5-5-3-3

이 networks 모두 last pooling layer 의 output signal 이 같은 size를 갖게 되는데, 이건 fully connected layers 의 parameters 수와 동일합니다. 따라서 이 network 들 모두 fully connected layer 의 parameter 수가 같게 되죠. networks 들의 parameters 수는, 오직 convolution layers 에서 서로 다른 kernel temporal depth 때문에 달라지는데, 이 차이는 fully connected layers 의 millions of parameters 에 비교하면 상당히 작은 편이라, architecture search 의 결과에 영향이 없을 것이라고 합니다.

Exploring kernel temporal depth

UCF101 의 train split 1 에 대해 networks 를 train 시켰을 때, different architectures 에 대한 clip accuracy 는 Figure 2. 의 이미지처럼 나왔다고 합니다.

 

 

따라서, 이 결과를 통해 아래의 2가지를 알 수 있습니다.

  1. 2D ConvNet (depth-1) 보다 3D ConvNet(나머지) 이 성능이 좋다.
  2. 3D ConvNet 중에는 3 * 3 * 3 kernel (depth-3)이 성능이 가장 좋다.

더 큰 spatial receptive field (e.g. 5 × 5) 를 갖거나, full input resolution (240 × 320 frame inputs) 을 가진 경우를 실험해도 비슷한 양상을 보였다고 합니다.

Spatiotemporal feature learning

Network Architecture

이제, 3*3*3 kernel 의 3D ConvNet 이 가장 좋은 선택이라는 걸 알게 됐기 때문에, Figure 3. 과 같은 C3D architecture 라는 모델을 디자인 했습니다.

 

Dataset

Spatiotemproal features 를 학습하기 위해서, Sports-1M dataset 으로 C3D 를 train 시킵니다.

*Sporst-1M

  • It is currently the largest video classification benchmark. The dataset consists of 1.1 million sports videos. Each video belongs to one of 487 sports categories. Compared with UCF101, Sports1M has 5 times the number of categories and 100 times the number of videos.

Sports-1M Classification Results

 

Table 2. 를 보면 C3D networks 가 DeepVideo’s networks의 성능을 능가함을 알 수 있었습니다. [29]이 C3D 보다 성능이 좋기는 한데, 이 메소드는 더 긴 120 frames 을 사용하기 때문에 C3D랑 DeepVideo 와 직접적으로 비교하기에는 좀 무리가 있다고 합니다. 여기서 주목해야하는 건, [29] 의 Clip hit@1 과 Video hit@1 의 차이가 1.6% 으로 작다는 것입니다. 실제로, [29] 를 C3D features 에다가 적용시키면 video hit performance 를 더 향상시킬 수 있다고 합니다.

C3D Video Descriptor

training 이 끝나면, C3D 는 video analysis tasks 에 대해 feature extractor 로 사용될 수 있습니다. C3D feature를 뽑기 위해서, 하나의 비디오를 16 frame 의 clips 로 쪼갭니다. 이 때 두개의 연속적인 clips 사이에는 8-frame overlap 이 있다고 합니다. (이건 왜 이렇게 하는 지에 대해서는 안 나와있지만, 추측컨데 이렇게 하면 clips 수가 거의 2배가 되니까 학습을 더 잘하기 위해서가 아닐까 싶습니다.) 이 클립들은 fc6 activations 를 뽑아내기 위해 C3D network 에 전해집니다. 클립 fc6 activations 들은 4096-dim video descriptor 를 형성할 수 있도록 averaged 되고, 그 다음에 L2-normalization 이 수행됩니다. 이렇게 해서 만들어진 representation (표현)을 C3D video descriptor/feature 라고 말합니다.

What does C3D learn?

C3D가 내부적으로 뭘 학습하고 있는지 이해하기 위해, deconvolution method 를 사용해봤다고 합니다. 이를 통해, C3D 는 처음 몇 프레임의 모습에 집중하는 걸로 시작하고, 그리고 그 다음 프레임들의 salient (두드러진) motion 을 track 한다는 걸 알 수 있었다고 합니다.

 

첫 번째 예시 (Figure 4. 의 위쪽 그림)

feature 는 우선 whole person에 집중하고, 그 다음 나머지 프레임들에서 pole valut performance 하는 motion 을 track 합니다.

두 번째 예시 (Figure 4. 의 아래쪽 그림)

feature 는 우선 eyes에 집중하고, 그 다음 make up 을 받는 동안 eyes 주변에서 일어나는 motion 을 track 합니다.

따라서, C3D 는 motion 과 appearance에 선택적으로 attend 한다는 것을 알 수 있었습니다. 이는 standard 한 2D ConvNet 와는 다른 점이라고 하네요!

그리고 다음 섹션에서부터는 learned feature 에 대한 insight 를 주기 위한 시각화 보충 자료입니다. 앞에서 언급했던 3가지 video tasks를 순서대로 다룹니다.

Action recognition

Dataset

  • UCF101

Results

  • 세 가지의 nets 을 사용하여 뽑아낸 C3D descriptor 에 대해 실험을 해보았는데, I380K 으로 trained 되고 Sports-1M으로 fined-tuned 된 C3D 가 가장 성능이 잘 나와서 (약 1% 정도) 이걸로 결과를 냈다고 합니다.

 

여기서 주목할 만한 것은, C3D 가 iDT 와 합쳐졌을 때 accuracy 가 90.4%로 (+ 5.2%) 올랐다는 것입니다. 반면 C3D 가 ImageNet과 합쳐졌을 때는 0.6% 올랐다고 합니다. 이건 C3D 가 appearance 와 motion 정보를 잘 capture 했기 때문에, appearance based deep feature 인 ImageNet 과 합쳐졌을 때 이점이 별로 없었음을 의미합니다.

이와 다르게, C3D 를 iDT와 서로를 보완하는 효과가 있어 합치는 것에 이점이 있다고 합니다. 실제로 iDT 는 optical flow tracking 과 low-level gradients 에 대한 histograms 에 based 된 hand-crafted features 인데, 반대로 C3D 는 high level abstract / semantic 정보를 capture 하기 때문에 높은 accuracy 를 낼 수 있었습니다. (low-level 과 high-level 이기 때문에, 서로 보완한다는 뜻으로 이해했습니다.)

C3D is compact

C3D features 의 Compactness (효과적인 descriptor 에게 필요한 특성 중 하나) 를 평가하기 위해, PCA 를 사용하여 features 를 더 낮은 dimensions 로 project 시키고, linear SVM을 사용하여 projected features 의 classification accuracy 를 report 했습니다. 같은 process 를 iDT features 와 ImageNet features 에도 적용시켰고, 그 결과를 비교한 것이 Figure 5. 입니다.

 

이를 통해, C3D features 가 compact 하고 discriminative 함을 알 수 있었습니다. 이런 특성을 갖기 때문에 low storage cost 와 fast retrieval 이 중요한 large-scale retrieval application 에서 굉장히 도움이 된다고 합니다.

또한, learned C3D features 가 좋은 video 에 대해 generic feature 인지 평가하기 위해 다른 데이터셋에 대한 learned feature embedding 을 시각화 해봤다고 합니다. Figure 6 은 UCF101 데이터셋에 대한 Imagenet 과 C3D 의 feature embedding 을 시각화 한 것이고, 이때 원하는 결과를 얻기 위한 추가적인 fine-tuning 같은 건 하지 않았다고 합니다.

 

이를 통해 C3D 가 Imagenet 보다 좋다는 것을 확인할 수 있었습니다.

Action Similarity Labelling

Dataset

  • ASLAN
  • The ASLAN dataset consists of 3, 631 videos from 432 action classes. The task is to predict if a given pair of videos belong to the same or different action.

Results

 

Table 4. 에서, C3D 를 state-of-the-art methods 들과 비교해보았습니다. C3D의 성능이 Accuracy 와 AUC 둘 다 가장 좋음을 알 수 있었습니다.

* AUC

  • The Area Under the Curve (AUC) is the measure of the ability of a classifier to distinguish between classes and is used as a summary of the ROC curve. The higher the AUC, the better the performance of the model at distinguishing between the positive and negative classes.

Figure 7. 은 앞에 언급했던 메소드들, human performance, C3D의 ROC curves 를 비교하여 plot 해줍니다. C3D 는 human performance (98.9%) 절반 정도로, 다른 최신 메소드들과 비교했을 때 엄청난 발전을 보였습니다.

Scene and Object Detection

Datatsets

Scene recognition : 2가지 benchmark에 대해 C3D를 평가합니다.

  • YUPENN : 420 videos of 14 scene categories
  • Maryland : 130 videos of 13 scene categories.

Object recognition

  • egocentric dataset : 42 types of everyday objects. (이 데이터셋 모든 영상들이 1인칭 시점이라서 training dataset 에 있는 비디오들과 꽤 다른 appearance와 motion 특성을 갖고 있습니다.)

Results

 

Scene Recognition

Table 5. 를 통해 다른 메소드들에 비해 C3D의 accuracy 가 더 높다는 것을 알 수 있습니다. 주목할만한 점은, C3D는 clip features 를 단순히 averaging 하는 linear SVM 만 사용하는 반면에, [9] 는 complex feature encodings (FV, LLC, and dynamic pooling) 을 사용했다는 것입니다. 그럼에도 불구하고 C3D가 성능이 더 좋습니다.

Object Recognition

C3D 이 22.3%의 accuracy 로 메소드 [32] (X. Ren and M. Philipose. Egocentric recognition of handled objects: Benchmark and analysis. In Egocentric Vision workshop, 2009)보다 성능이 10.3% 좋다고 합니다. 주목할만한 점은, C3D는 아까도 언급했듯이 linear SVM 을 사용하는데, [32]는 RBF-kernel on strong SIFT-RANSAC feature matching을 사용한다고 합니다.
Imagenet baseline과 비교했을 때는 C3D 가 성능이 3.4% 더 안 좋은데, 이건 input resolution 이 C3D는 (128 × 128) 이고, Imagenet 은 full-size resolution (256 × 256) 을 사용하기 때문이라고 설명할 수 있습니다. 또한 C3D 는 fine-tuning 없이 Sports-1M videos (487 categories) 에 대해 train 하는 반면, Imagenet 은 1000 object categories 에 대해 fully trained 되기 때문에, 이 task 에서는 C3D의 성능이 낮은 것이 어찌보면 당연합니다.

이 결과는 C3D 가 video에서 appearance / motion 정보를 capture 하는데 얼마나 generic 한 descriptor인지 보여줍니다. (Scene / Object 2가지 문제에서 다 효과적이기 때문에, generic 하다고 이해했습니다.)

Runtime Analysis

UCF101 dataset 에 대한 C3D, iDT [44], Temporal stream network [36] 의 Runtime을 비교했습니다.

 

주목할 점은, 다른 메소드들은 processing speed가 4 fps 보다 낮은 반면, C3D는 313 fps 으로 훨씬 빠르다는 것입니다.

Conclusion

다시 한 번 말하자면, 이 논문에서는 large-scale video datasets 에 대해 train 시킨 3D ConvNet 으로 시공간적 특성을 학습하는 문제에 대해 다뤘습니다. 요약하자면 아래와 같습니다.

  • 2D ConvNet 보다는 3D ConvNet 이 좋다.
  • 3D ConvNet 중에는 3 * 3 * 3 의 kernel size 가 가장 성능이 좋다.
  • C3D features with linear classifier가 video analysis benchmarks 에 대해 여태껏 가장 좋았던 메소드의 성능을 능가하거나, 근접한다.
  • 제안된 C3D features 가 efficient, compact, simple to use 하다.

그럼 이상으로 논문 리뷰 마치겠습니다!

논문

  • https://openaccess.thecvf.com/content_iccv_2015/html/Tran_Learning_Spatiotemporal_Features_ICCV_2015_paper.html

참고자료

  • https://www.analyticsvidhya.com/blog/2020/06/auc-roc-curve-machine-learning/
저작자표시 (새창열림)

'📰논문 리뷰' 카테고리의 다른 글

[ACMMM 2007] Practical Elimination of Near-Duplicates from Web Video Search  (0) 2023.11.23
[AAAI 2021] BSN++ : Complementary Boundary Regressor with Scale-Balanced Relation Modeling for Temporal Action Proposal Generation  (0) 2023.11.23
BSN : Boundary Sensitive Network for Temporal Action Proposal Generation  (0) 2023.11.23
ViSiL: Fine-grained Spatio-Temporal Video Similarity Learning  (0) 2023.11.23
[arXiv 2021] Multimodal End-to-End Sparse Model for Emotion Recognition  (0) 2023.11.23
  1. Learning Features with 3D ConvNets
  2. Exploring kernel temporal depth
  3. Spatiotemporal feature learning
  4. Action recognition
  5. Action Similarity Labelling
  6. Scene and Object Detection
'📰논문 리뷰' 카테고리의 다른 글
  • [AAAI 2021] BSN++ : Complementary Boundary Regressor with Scale-Balanced Relation Modeling for Temporal Action Proposal Generation
  • BSN : Boundary Sensitive Network for Temporal Action Proposal Generation
  • ViSiL: Fine-grained Spatio-Temporal Video Similarity Learning
  • [arXiv 2021] Multimodal End-to-End Sparse Model for Emotion Recognition
힝님
힝님
힝입니다.
  • 힝님
    컴01기
    힝님
  • 전체
    오늘
    어제
    • 분류 전체보기 (86)
      • 📰논문 리뷰 (16)
      • 🍒회고록 (4)
      • 🖤네이버 ai tech (0)
      • ✨글쓰는힝 (1)
      • 🔥데이터 분석 (3)
      • 🎲유니티 (2)
      • 🔨삽질 (10)
      • 📚 서적 리뷰 (4)
      • 🐹알고리즘 (3)
      • 😎정리하는 카테고리 (4)
      • 📝CS 공부 (6)
        • 운영체제 (1)
        • 네트워크 (4)
        • 리팩토링 (1)
      • etc (22)
        • 혼공단 (7)
        • Spring (7)
        • JS (1)
        • OpenCV (2)
        • Unity (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • Github
  • 공지사항

  • 인기 글

  • 태그

    회고록
    unity
    github
    혼공학습단
    백준
    혼공머신
    혼공SQL
    혼공단
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
힝님
[ICCV 2015] Learning Spatiotemporal Features with 3D Convolutional Networks

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.