Tensorflowのsess.run()で複数の値を取得する方法

以下のサイトを参考にsess.run()で複数の値を取得する方法を確認した。 https://www.buildinsider.net/small/booktensorflow/0001 このサイトにはTensorflowの計算グラフのことについても説明されているので、非常に参考になる。 sess.run()で複数の値を取得…

Tensorflow 学習 Day 1

以下のサイトを参考に学習を始めた。 https://tokkan.net/python/tf2.html Tensorflowはpytorchとは違い、 定数、変数の定義 → 計算式の定義 → 計算の実行 という流れで行われる。 定数、変数の定義の例 定数の定義:tf.constant(3.0, dtype=tf.float32) 変…

BAIR Robot Pushing Datasetについて

BAIR Robot Pushing Datasetは、ロボットを押す動画で構成されたデータセットである。 約44,000の例を含む。 Tensorflowの公式サイトにも説明がある。 bair_robot_pushing_small | TensorFlow Datasets 公式サイトにも示されている様に、1つのデータの集ま…

numpyのリストにおいてこの様な点々(コロン、ピリオド)の意味 [1,:] [1, ..., 1]

numpyリストにおいて、コロン(:)やピリオド(.)の意味を説明する。 コロン コロンはよく[1, :]の様な形で見かける。 :は言い換えればすべて、という意味だ。 よって[1, :]では[1,0]、[1,1]、[1,2]などを返す。 以下の様なプログラムを実行する。 import numpy…

HEVCのプロファイルとレベルについて

HEVCにはプロファイルとレベルというものがある。 以下の文献に説明がある。 https://www.jstage.jst.go.jp/article/itej/67/7/67_553/_pdf ここでもより簡単に説明する。 プロファイル プロファイルとは: 「特定の符号化ツールやアルゴリズムのセット」 「…

VVCの参照ソフトウェアVTMのインストール方法

Linux環境にVTMのインストールを行う方法を解説する。 VTMのインストールを行うにはgcc 7.4以上が必要となる。 (gcc 5.4ではビルドに成功しなかった) よってdockerhubなどからdockerの環境でVTMをインストールしようとする際も、新しめのdocker imageを利…

バックグラウンドでscpの処理を行う

バックグラウンドでscpの処理を行う。 scpコマンドは $ scp -r ./aaa/bbb/ xxx.xxx.xxx.xxx:/ccc/ddd のように利用される。 また、バックグラウンドでの処理は $ nohup python myfile.py & のように行える。 しかしこれをバックグラウンドで行おうと $ nohup…

module 'numpy' has no attribute 'array'エラーについて

pythonコードで例えば import numpy as np a = np.array([1,2,3])print(a) のようなコードを書いても module 'numpy' has no attribute 'array'エラーが出たことがあった。 原因を調べると、ファイル名をnumpy.pyとしていた事に問題があったようだ。 なので…

ConvTranspose2Dの出力

pytorchにおいてConv2DとConvTranspose2Dの出力の高さの計算式をここにまとめておく。 Conv2Dについては色々な文献で見つかるが、ConvTranspose2Dの出力について書かれている文献が少ないように感じる。 Conv2D OH=((H+2P-FH)/S) + 1 H: 入力の高さ P: padd…

dockerが急に動かなくなった件

dockerが急に動かなくなった事があったので、ここにその詳細と解決法を記載しておく。 コンテナを起動しようとすると以下のようなエラーをはくようになった。 docker: Error response from daemon: OCI runtime create failed: container_linux.go:346: star…

HEVC参照ソフトウェア"HM"をmacで動かし、opencvも利用可能にする

HMの環境構築は以前の記事を参照。 HEVC参照ソフトウェア"HM"をmacで動かす - jskangarooのブログ opencvをxcodeに導入するのも以前の記事を参照。 Xcodeでc++のopencvを使えるようにするまで - jskangarooのブログ この2つの記事で行ったことを組み合わせ…

HEVC参照ソフトウェア"HM"をmacで動かす

HEVC参照ソフトウェア"HM"をmacで動かす際はxcodeを用いる。 HMのマニュアルは以下のリンクの"HM software manual"からアクセスできる。 https://hevc.hhi.fraunhofer.de それに沿って行う。 上のサイトからHM Gitlab Pageに行く。 そしてローカルの環境にク…

c++で他のファイルから関数を呼び出す方法

c++

以下の記事を参考にする。 c++ - How to call functions from one .cpp file in another .cpp file? - Stack Overflow まずは関数を含むコード書く。 //MyFunctions.cpp #include "MyFunctions.h" int myFunction1(int a, int b){ //your code } int myFunct…

Xcodeでc++を動かす際のエラー

c++

"Not a Doxygen trailing comment"という警告が出た場合、 PROJECT → Build Setting → Documentation Commentsを"No"に変更する. (PROJECTは画面の左にあるプロジェクト名と青いアイコンが目印) https://codebass.blogspot.com/2017/11/xcodeopencvnot-doxy…

Xcodeでc++のopencvを使えるようにするまで

c++

作業の手順は以下のサイトを参考にした。 [1]https://www.yukisako.xyz/entry/opencv-mac まずはopencvとcmakeのインストールを行う。 (すでにインストール済みであれば飛ばす) brew install opencvbrew install -v cmake インストールできたかを確認する。 …

HEVC参照ソフトウェアHMのコードの内部(4) TEncGOP.cppについて

ここではTEncGOP.cppを見ていく。 https://hevc.hhi.fraunhofer.de/HM-doc/_t_enc_g_o_p_8cpp_source.html TEncGOP.cppには具体的に符号化を行うための関数が含まれる。 符号化の関数は1155行目の Void TEncGOP::compressGOP である。 具体的なフレームごと…

HEVC参照ソフトウェアHMのコードの内部(3) HMの出力について

HMを用いてyuv動画、画像を圧縮した場合、 SUMMARY -------------------------------------------------------- Total Frames | Bitrate Y-PSNR U-PSNR V-PSNR YUV-PSNR 1 a 150.7200 34.5559 39.2416 40.1600 35.6956 I Slices----------------------------…

HEVC参照ソフトウェアHMのコードの内部(2)

HEVC参照ソフトウェアHMのコードの内部(1)では /App/TAppEncoder/TAppEncTop.cpp /Lib/TLibEncoder/TEncTop.cpp のencoder functionをおもに見てきた。 /App/TAppEncoder/TAppEncTop.cppの633行目のm_cTEncTop.encode() (encoding function for one frame)に…

HEVC参照ソフトウェアHMのコードの内部(1)

HEVC参照ソフトウェアであるHMのコードは以下のリンクから確認することが出来る。 https://hevc.hhi.fraunhofer.de/HM-doc/files.html App/TAppEncoder/encmain.cppというファイルが存在する。 https://hevc.hhi.fraunhofer.de/HM-doc/dir_24fac828c35f1d449…

画像処理の際のValueError: invalid literal for int() with base 10

2枚の画像を足し合わせる、などのようなコードを書いている際、 ValueError: invalid literal for int() with base 10 このようなエラーが出たら、示されたコードの部分のint、float、stringのミスがあるということ。 特に画像処理では cv2.imread()をせず…

takes exactly 2 arguments (3 given)のようなエラーの対応

pythonのコードを動かす際に "takes exactly 2 arguments (3 given)" あるいは "takes 2 positional arguments but 3 were given" のようなエラーに直面したら、これはクラスのメソッドの引数にselfを書き忘れたからだと考えられます。 例えば class myClass…

pythonで入力がある限りループする(while文)

pythonで入力がある限り値を取得し、処理を行うにはwhile文を用いる。 C言語では入力がEOFでない限りループ、のような書き方ができるが、僕の知っている限りではpythonではできない。 代わりにwhileループの中で入力を取得し、それが値かEOFかを判断する。 E…

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…