私はh5f5を使ってhdf5にmp4ビデオのフレームを保存しようとしています。最初は、単にデータを圧縮しないようにしました。これにより、5000 MBのビデオがhdf5に格納されたときに約500 GBになりました。データセットを管理しやすくするためにgzip圧縮を試していますが、圧縮を使用するとビデオの1フレームを保存するのに約1分かかります。ここでは、最小限のコード例では、h5pyでgzip圧縮を高速化するにはどうすればよいですか?
import h5py
hdf5 = h5py.File(file, mode='a')
dset = hdf5.create_dataset(dset_name, shape=(70000, 1080, 1920, 3),
dtype=np.uint8, chunks=True, compression='gzip')
for i, frame in enumerate(video_stream):
dset[i] = frame
ある各ビデオは1080 RBG画像の70e3について持っています。 video_streamは、反復処理されたときに配列を返すオブジェクトです(1080,1920,3)。それが重要だと思うなら、それをhereで見ることができます。だから私はどのように妥当な速度でhdf5にこのデータを保存し、妥当なファイルサイズで終わることができますか? mp4圧縮に近づけることは可能ですか?
あなたは正しいビデオデータに関する多くの経験はありません。私はビデオデータのニューラルネットワークをトレーニングしています。現時点では、ビデオファイルから画像を取り出してニューラルネットワークに供給するためにVideoStreamを使用していますが、それを行うには時間がかかり、プログラムのボトルネックになります。 1つのビデオをhdf5に転送することをテストしました。それはずっと速いですが、余りにも多くのスペースを占めます。私は、各ビデオのストレージ容量を約半分にすることなく、ビデオから画像を素早く引き出す方法を見つけたいと考えています。 – mdornfe1
@ mdornfe1:まず、隣接するビデオフレームは非常に似ているので、MP4は個々のフレームを圧縮しないので、MP4から単一のフレームを伸張するのはかなり高価です。それでも、あなたのGPUは1バッチの画像(GPUでCNNを使用していますか?)を処理するのにかなり忙しくなりますので、CPU上の次の画像バッチを並行して伸張してください。 – MSalters
ありがとう、私はそれが解決策かもしれないと思います。 – mdornfe1