1. tf record 훝어보기
만약 공식 사이트 / 캐글에서 tf_record를 저장했다면
다음과 같이 하나의 tf_record에 담긴 정보를 읽을 수 있다.
import numpy as np # linear algebra
import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)
import matplotlib.pyplot as plt
import csv
import networkx as nx
from subprocess import check_output
# from wordcloud import WordCloud, STOPWORDS
import tensorflow as tf
plt.style.use('ggplot')
# Input data files are available in the "../input/" directory.
# For example, running this (by clicking run or pressing Shift+Enter) will list the files in the input directory
import os
print(os.listdir("./"))
import warnings
warnings.filterwarnings('ignore')
# Any results you write to the current directory are saved as output.
vid_ids = []
labels = []
frame_lvl_record = './test0000.tfrecord'
frame_lvl_record = './validate0143.tfrecord'
for example in tf.compat.v1.python_io.tf_record_iterator(frame_lvl_record):
tf_example = tf.train.Example.FromString(example)
vid_ids.append(tf_example.features.feature['id']
.bytes_list.value[0].decode(encoding='UTF-8'))
labels.append(tf_example.features.feature['labels'].int64_list.value)
print(tf_example)
print(vid_ids)
print(labels)
위 코드를 실행하면 tf_record 마다 저장된 비디오와 features를 받을 수 있다.
맨 밑에서 vid_ids, labels를 프린트해보면 다음과 같은 예시 결과가 나온다.
['a3xt', '0vxt', 'Tpxt', 'f9xt', 'Cmxt', 'Ogxt', 'odxt', 'LGxt', 'YJxt', '9Sxt', '8Hxt', 'jGxt', '3Zxt', 'J0xt', 'b1xt']
[[932], [533, 275, 25, 137, 607], [564, 239, 285, 811, 973], [325, 686], [772], [598, 232], [803, 204, 754, 678, 169, 663, 491, 888, 420, 73, 660], [738, 236], [603, 245, 913, 293, 648, 842, 858], [838, 499], [470, 759, 838, 239], [269, 401, 239, 294, 58, 27, 670], [274, 416, 75], [192, 892], [365, 811, 298, 713]]
이는 tf_record 안에 약 15개 정도 동영상이 있고
그에 대응되는 label이 각각 들어갔다는 것을 알 수 있다.
각 레이블은 'Car' , 'Art', ... 등 다양한 카테고리 값들이 담겨 있다.
2. 동영상 id 구하기
# With that video id, we can play the video
# apparently if you take the videoID, let's call it vvDD,
# then you can put the following in a browser:
# http://data.yt8m.org/2/j/i/vv/vvDD.js
# so for rec_id = 5 of the first validation example, vvDD = Kt00,
# so pointing a browser here: http://data.yt8m.org/2/j/i/Kt/Kt00.js
# yields this: i("Kt00","MZYaCFJogqo");
# I'd be interested in a more pythonic way of doing that.
https://www.kaggle.com/code/senorcampos/the-peak-muffin-moment
위에서 구한 'a3xt' 라는 동영상 id는 youtube에서 직접 접근할 수 있는 동영상 아이디가 아니다.
이를 진짜 동영상으로 접근하기 위해서는 특수한 사이트로 접근해서 읽어야 하는데 다음 주소와 같다.
a3xt -> http://data.yt8m.org/2/j/i/a3/a3xt.js
이처럼 a3xt를 두글자씩 끊어 봐서 a3 / a3xt 주소로 들어가면 된다. (이건 그냥 예시라서 없는 주소임)
만약 0vma라고 한다면?
0vma -> http://data.yt8m.org/2/j/i/0v/0vma/js
로 들어간다. (이건 그냥 예시라서 없는 주소임)
실제 동영상에 한번 접근해보자.
위 캐글 코드에서 얻은 비디오 아이디는 FF00이었다.
FF00 -> http://data.yt8m.org/2/j/i/FF/FF00.js
이건 진짜 있는 주소다.
들어가면 이렇게 i(아이디, ,진짜아이디) 이렇게 묶여 있다!!
저 아이디를 youtube.com/watch?v=여기에
붙이면..
이렇게 진짜 동영상으로 접근 가능하다!!!!
3. curl 사용하기
사이트 일일이 들어가지 않고 커맨드 라인으로 빠르게 보고 싶다하면..
https://askubuntu.com/questions/822139/how-to-output-web-page-html-source-code-into-a-file
curl로 하면 command line에 프린트 가능
curl http://data.yt8m.org/2/j/i/tm/tma.js
i("tma","NcujsdfZsw");
'머신러닝,딥러닝' 카테고리의 다른 글
Tensorflow 2.4.0을 설치할 때 라이브러리 계속 충돌 (0) | 2023.06.19 |
---|---|
Graph Execution Error 해결하기 : cuda에 맞는 tensorflow 버전 재설치하기 (0) | 2023.06.18 |
youtube-dl 사용하기 / 구간 별로 cut할 때 여러 명령어 (0) | 2023.06.01 |
youtube-dl 사용하기 / Error: Unable to extract uploader id 에러 해결하기 (0) | 2023.06.01 |
AttributeError: module 'tensorflow' has no attribute 'python_io' 에러 해결하기 (0) | 2023.05.17 |
[Error] onnx importerror (0) | 2023.05.08 |
pip install insightface 오류날 때 (onnx install 오류 해결) (0) | 2023.05.04 |
GPU를 차지하는 프로세스 찾기 nvidia-smi | ps -ef | grep {PID} (0) | 2023.05.03 |