2020-01-01から1年間の記事一覧

Dockerでコンテナの作成、削除

Dockerを用いて仮想環境を構築する。 Dockerはインストール済みとする。 仮想環境を作るにはまずイメージ(image)が必要だ。このイメージを見て環境が作られる。 $ docker images ですでにインストールされているイメージが確認できる。 また、Docker Hubから…

TypeError: cannot perform reduce with flexible type

pythonコードをはしらせ、以下のようなエラーが出た場合、 TypeError: cannot perform reduce with flexible type intやstrに注意するべき。 自分の場合、ある関数にint型の引数を与えるべきところにstr型を与えてしまい、このようなエラーが出た。 関数に適…

YUViewを用いたYUV動画の再生

YUViewはオープンソースのYUVプレイヤーである。 インストール方法は以前の記事、 YUViewでHMの符号化によるbinファイルの考察 - jskangarooのブログ に示す。 インストールが完了すれば、左側にあるOpenボタンから動画を読み込む。 だが、読み込んでも動画…

RuntimeError: output with shape [1, 28, 28] doesn't match the broadcast shape [3, 28, 28]の対処法

pytorchでMNISTデータセットを用いる際に RuntimeError: output with shape [1, 28, 28] doesn't match the broadcast shape [3, 28, 28] というエラーが出るかもしれない。 これはデータセットの準備をする際のtransformの部分に原因がある。 transform = t…

pythonで文字列の一部を変更するには

例えばstring = "abracadabra"があったとする。 string[5]は'a'であり、これを'k'に変更したいとする。 C言語などでは単純にstring[5]='k' とすればよいが、pythonではそのような操作はサポートされていない。 よってできることは2つだ。 1. 一度リストにお…

MATLABでPSNRの計算

MATLABでは2枚の画像のPSNRを計算する関数が準備されている。 以下のように書くことでPSNRが計算できる。 ref = imread('画像1へのパス'); target = imread('画像2へのパス'); ans = psnr(target, ref) 実行ボタンをを押すと結果が出力される。

pythonでディレクトリを作成する際のテクニック

ターミナル(端末)からディレクトリを作成するように、pythonのプログラムからディレクトリを作成することができる。 それを行うにはまずはimport osを始めに書く必要がある。 次に os.mkdir("作成したいディレクトリ") これで作れる。 また一つテクニック…

HMのcfgファイルのフレーム番号、POC、QPfactorについて

HEVC参照ソフトウェアであるHMは圧縮を行う際、cfgファイルをもとに行う。 cfgファイルには圧縮を行う方法などが書かれている。 例えばRandom Accessには # Type POC QPoffset QPfactor Frame1: B 8 1 0.442 Frame2: B 4 2 0.3536 Frame3: B 2 3 0.3536 Fram…

HEVC参照ソフトウェアHMのrandom accessのGOPを4にするには

HEVC参照ソフトウェアHMのrandom accessコンフィギュレーションでは、デフォルトでGOPは8となっている。 HMのドキュメントではGOPを4にした場合の例が載っていたので、それを実装する。 具体的にはCoding Structureの部分を以下のように書き換える。 #=====…

PILを用いた画像圧縮(jpeg, jpeg2000)

pythonのライブラリPIL(Python Imaging Library)を用いてjpegやjpeg2000による圧縮を行う方法を示す。 from PIL import Image Image.open('org_img.png').save('new_img.jpg', format='jpeg', quality=50, optimize=True) qualityの値を変化させることで精度…

tensor() takes 1 positional argument but 2 were given

pytorchのtensorにおいて import torch t = torch.tensor([1,2,3], [4,5,6.]) のようなコードを実行すると、 tensor() takes 1 positional argument but 2 were given というエラーが出る。 これはtensorには1つのアーギュメントを認識するのにも関わらず、…

覚えておきたいターミナルのコマンドのメモ

ディレクトリ内のファイル数 現在のディレクトリ $ ls -1U | wc -l ディレクトリを指定 $ ls -1U (ディレクトリ)| wc -l ファイルサイズ $ ls -dl (ファイル)

CLICチャレンジへの参加

CLICでは毎年動画圧縮に関する大会が開かれる。 Workshop and Challenge on Learned Image Compression Challenge>tasksからタスクが確認でき、今年は 1. Low-rate Compression 2. P-frame Compression の2つだった。 今回は2番のP-frame Compressionに参…

AVC参照ソフトウェアJMでMax. number of reference frames exceeded. Invalid streamエラーの対処法

例えばBQMallという動画の31フレームをJMでエンコードするために、binファイル下で ./lencod.exe -f "../bin/HM-like/encoder_JM_RA_B_HE.cfg" -f "../bin/HM-like/per-sequence_JM/BQMall.cfg" -p InputFile="BQMall.yuv" -p FramesToBeEncoded=31 -p QPISl…

カレントディレクトリを変えずに別のディレクトリからプログラムを実行

カレントディレクトリを変更せずにコマンドを実行するためには $ (cd ./different/directory/ && ls) などのように、()でコマンドをくくることによりサブプロセスが生成され、可能となる。 また、スクリプトで別のディレクトリからプログラムを実行するには …

Command 'nvcc' not found の対処法

cudaがインストールされていてもnvccでバージョンなどが確認できない場合、 $ echo -e "export PATH=/usr/local/cuda-10.2/bin${PATH:+:${PATH}}$ " >> ~/.bashrc $ echo -e "export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64${LD_LIBRARY_PATH:+:${LD_LI…

ImportError: cannot import name 'imread' from 'scipy.misc' の対処法

scipyは $ apt-get install python-scipy $ pip install scipy でインストールできる。 しかしimreadがimportできないというエラーがでる場合がある。 これはバージョンが新しいものではサポートされなくなったからだ。 よって古いバージョンである1.1.0をイ…

pytorchのバージョンの確認

$ python $ import torch $ print(torch.__version__) で確認ができる。 また、pythonでは-cというオプションがあり、これを用いるとpythonコマンドとして渡されたpython文を実行する。 $ python -c コマンド これを用いると、pytorchのバージョンは $ pytho…

YUViewでHMの符号化によるbinファイルの考察

HEVC参照ソフトウェアであるHMの符号化によって得られるbinファイルをYUViewというソフトウェアで分析を行う。 以下はYUViewのGithubであり、 https://github.com/IENT/YUView 以下のリンクから最新のリリースを確認できる。 https://github.com/IENT/YUView…

Macでアプリを強制終了

Mac

アプリがフリーズしたとき、Quitできなくなったときは強制終了を行う。 OPTION + COMMAND + ESC で起動中のアプリのリストが表示される。 Quitしたいアプリを選び、Force Quitをクリック。 こうして強制終了が行える。

ValueError: I/O operation on closed file. の対処方法

ValueError: I/O operation on closed file. このようなエラーが出たらopenされていないファイルに書き込もうとしたということ。 1. コードで書き込む部分の前で f.close() をしてしまっていないか、確認する。 2. forループなどでファイルの処理を行ってい…

Independent JPEG Group のソフトウェアのインストールと利用

Independent JPEG Groupとは、JPEGを無料で提供している団体だ。 記事を書いている現在、最新のバージョンは9dとなっている。 ここからはソフトウェアのインストールについて解説する。 linux環境を想定する。 1. tar.gzファイルの取得 $ wget http://www.ij…

import os について

ここではpythonコードでimport osによって行えることを記述する。 linuxコマンドの実行 os.system("ls") パスの結合 os.path.join("/dir1/dir2","file.py") 詳しくはhttps://www.sejuku.net/blog/64408を参照。 ファイルサイズの取得 os.path.getsize("/dir1…

H.264/AVCの参照ソフトウェア"JM"のインストール方法

JMとはH.264/AVCの参照ソフトウェアである。 公式サイトはこちら:http://iphome.hhi.de/suehring/ JM reference manualにそって進める。 1. まずはzipファイルのインストール http://iphome.hhi.de/suehring/tml/download/ にあるzipファイルをクリック、あ…

CMakeのインストール方法

Cmakeは以下のサイトを参考にインストールが可能だ。 How to Install CMake on Ubuntu 18.04 LTS ここでもインストール方法を記述する。 1. CMakeのバージョン確認 Download | CMakeからCMakeのバージョンを確認する。 2. 最新のものをインストール 例えば $…

JPEG2000の参照ソフトウェア"OpenJPEG"のインストール方法

OpenJPEGとはJPEG2000の参照ソフトウェアである。 インストールには公式の https://github.com/uclouvain/openjpeg/blob/master/INSTALL.md と http://blog.k-tai-douga.com/article/174692342.html を参考にすると良いが、ここでも説明する。 1. CMakeのイ…

HEVC参照ソフトウェア"HM"のインストール

まずはじめにHMとはHEVCの参照ソフトウェアである。 https://hevc.hhi.fraunhofer.de がそのサイトで、HM software manualからマニュアルも見ることができる。 ここからはそのインストール方法を記述する。 1. まずはsubversionのインストールを行う。 $ apt…