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

Raspberry Pi対応ロボットAlphabot2をC++から動かす

Raspberry Piから制御できるロボットであるAlphabot2を手に入れたので,組み立ててC++から動かしてみる. (adsbygoogle = window.adsbygoogle || []).push({}); 組み立ててみるとこんな感じ 電源を入れるとLEDが光る 電池で動く 最初ニッケル水素電池を挿し…

ベイズ推論の概要(パラメータの事後分布と予測分布)

ベイズ学習の基本であるパラメータの事後分布および未観測データの予測分布の計算についての概要. 一般的に,機械学習モデルのもつパラメータをデータから決定することを学習と呼ぶ. ベイズ推論の枠組みでは,パラメータも何らかの不確実性を持っているよ…

Edge TPU USB Acceleratorでモデルの再学習を試してみた

Edge TPUを用いて,自作データセットによるClassifierの再学習(転移学習)を試してみた. (adsbygoogle = window.adsbygoogle || []).push({}); Edge TPUでは,サーバで分類モデルを再学習する代わりに,ImprintingEngine APIを使用してEdge TPU上で転移学…

機械学習における正則化

一般的に教師あり学習モデルは,任意の損失関数に対してデータの「当てはまり具合」を最適化するように関数を選択する. しかし,この関数が与えられたデータに対してあまりに複雑すぎると,今現在手元にある学習データのみに適合してしまい,未知のデータに…

tqdmでプログレスバーの隣に標準出力する

いい感じのプログレスバーを作ってくれるPythonのライブラリであるtqdmで,プログレスバーの隣に標準出力を更新し続ける方法. github.com tqdm means "progress" in Arabic (taqadum, تقدّم) and is an abbreviation for "I love you so much" in Spanish (…

ニューラルネットワークの蒸留

大規模で複雑な教師ネットワークの出力をもとに,より小さなネットワークを学習する蒸留について. 機械学習モデルの性能評価で重要なのは,学習データに対する正解率ではなく,学習データに含まれていないようなデータに対する汎化性能の方. パラメータの…

SNIP: Single-Shot Network Pruning Based Oo Connection Sensitivity

ICLR2019採択論文"SNIP: Single-Shot Network Pruning Based Oo Connection Sensitivity"をレビュー. 元論文はこちら: openreview.net パラメータ数の多い畳み込みニューラルネットワークを,分類精度をほとんど落とさずに大幅にスパース化するnetwork prun…

Large Scale GAN Training for High Fidelity Natural Image Synthesis

ICLR2019採択論文"Large Scale GAN Training for High Fidelity Natural Image Synthesis"のレビュー. 元論文はこちら BigGANざっくり概要.GANsの規模を超でかくしたら超きれいな画像が作れた. Abstract Generative Adversarial Networks (GANs)の学習を…

Self-Attention Generative Adversarial Networks

GANsで高精細な画像を生成する手法を提案した"Self-Attention Generative Adversarial Networks"のレビュー. 元論文はこちら Abstract Convolutional GANsにself-attention mechanismを導入したSelf-Attention Generative Adversarial Networks (SAGANs)を…

PyTorch C++ FrontendでTensor <-> cv::Matの相互変換

PyTorchのC++ APIであるLibTorchのTensorとOpencvの行列を相互変換する方法. torch::Tensor -> cv::Mat torch::Tensorをcv::Matに変換する例 例えば,128x128の1ch行列を変換するには以下のようにする. cv::Mat mat(128,128, CV_32FC1, tensor. template d…

Defense against Adversarial Attacks Using High-Level Representation Guided Denoiser

CVPR2018採択論文"Defense against Adversarial Attacks Using High-Level Representation Guided Denoiser"のレビュー. 元論文はこちら Classifierの誤分類を誘発するAdversarial Attacksに対する防御手法の提案. 入力画像に載せられている,悪意のあるノ…

Adversarial Examples for Semantic Segmentation and Object Detection

ICCV2017採択論文"Adversarial Examples for Semantic Segmentation and Object Detection"のレビュー. 元論文はこちら. 分類タスクにおいて,ニューラルネットワークの誤分類を誘発する攻撃手法であるAdversarial AttacksがSemantic SegmentationおよびOb…

Decision-Based Adversarial Attacks: Reliable Attacks Against Black-Box Machine Learning Models

ICLR2018採択論文"Decision-Based Adversarial Attacks: Reliable Attacks Against Black-Box Machine Learning Models"のレビュー. 元論文はこちら 問題設定としては,クラウドでAPIとして提供されているような機械学習モデルに対して,最終的な分類結果の…

Universal adversarial perturbations

CVPR2017採択論文"Universal adversarial perturbations"のレビュー. 元論文はこちら 複数画像に対して汎用的に使えるuniversal perturbationを用いた分類機に対する攻撃が可能であることを示した論文. Abstract ニューラルネットワークに対して,一つのAd…

Boosting Adversarial Attacks with Momentum

CVPR2018採択論文"Boosting Adversarial Attacks with Momentum"のレビュー. 元論文はこちら 既存のAdversarial Attacksの手法にモーメンタムの概念を導入して,攻撃性能とtransferabilityの両立を達成. 同時に,攻撃手法のアンサンブル化によって複数モデ…

Facebookの可視化ツールVisdomを色々試す

visdomはFacebook AI Researchが公開しているオープンソースの可視化ライブラリ,Torchとnumpyに対応している. GitHub repo Visdom aims to facilitate visualization of (remote) data with an emphasis on supporting scientific experimentation. (adsby…

Practical Black-Box Attacks against Machine Learning

ニューラルネットワークのアーキテクチャおよび勾配情報なしに攻撃を行うBlack-Box Adversarial Attackについての論文. Adversarial Attackについての概要とPyTorchを用いた実装については以下の記事を参照. noconocolib.hatenablog.com 概要 paper link W…

PyTorchの便利な周辺ライブラリまとめ

PyTorchの便利な周辺ライブラリのメモ. CV系 NLP Audio 確率的プログラミング 可視化 その他 チュートリアル,入門など (adsbygoogle = window.adsbygoogle || []).push({}); CV系 torchvision: コンピュータビジョンで便利なtransforms, モデル,データセ…

Library not loaded: libmklml.dylib use c++ front

Mac OSでPyTorchのC++ APIのコードを実行しようとすると以下のエラーが出る. dyld: Library not loaded: @rpath/libmklml.dylib Referenced from: /Users/hzq/Documents/www/test/libtorch/lib/libcaffe2.dylib Reason: image not found Abort trap: 6 libm…

PyTorchでKerasのmodel.summary()みたいなやつ

pytorch-summaryを使うとKerasのmodel.summary()のようにモデルの表示ができる. GitHub repo Keras has a neat API to view the visualization of the model which is very helpful while debugging your network. Here is a barebone code to try and mimi…

TensorFlow推奨のデータ形式TFRecordを使う

概要 Tensorflow推奨のデータ形式.あらかじめ画像などをTFRecord形式で吐いておくとかなり効率的に学習・推論ができる. コンバータも簡単に書けるのでおすすめ.変換速度もまあまあ速い. 使い方 Convert Images to TFRecord def convert(data_root): image…

PyTorchでレイヤーごとに違う学習率を設定する

PyTorchで各レイヤーごとに違うLearning Rateを設定する方法. 例として,以下のようなネットワークを想定する. class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.fc1 = nn.Linear(784, 128) self.fc2 = nn.Linear(128, 256) s…

SaaS: Speed as a Supervisor for Semi-supervised Learning

ECCV2018採択論文"SaaS: Speed as a Supervisor for Semi-supervised Learning"の論文読みメモ. paper link 概要 ニューラルネットの学習スピードそのものを活用したsemi-supervised learningのアルゴリズムであるSaaSを提案.教師あり学習時の学習速度は学…

jupyter notebookでPyTorch C++ APIを試してみる

jupyter notebookでC++を動かすカーネルであるxeus-clingとPyTorchのC++ APIであるlibtorchを利用して,jupyter notebook上でPyTorchをC++から使ってみる. (adsbygoogle = window.adsbygoogle || []).push({}); 準備 LibTorchのインストール はじめに,PyTo…

ICLR2019気になった論文メモ(4)

ICLR2019採択論文のうち,気になったものをメモしていく. その3. noconocolib.hatenablog.com Efficient Augmentation via Data Subsampling AdaShift: Decorrelation and Convergence of Adaptive Learning Rate Methods A Closer Look at Few-shot Class…

PyTorchでGrad-CAMによるCNNの可視化.

Grad-CAMはConvolutional Neural Networksの可視化手法の一種.CNNが画像のどの情報を元にして分類を行なっているのかを可視化するのに用いられる. Arxiv Project page 今回はこのGrad-CAMをPyTorchで試してみる. (adsbygoogle = window.adsbygoogle || []…

PyTorch C++ APIでGPUを使ってみる

今回はPyTorchのC++ APIでGPUを使った学習と推論を試してみる. (adsbygoogle = window.adsbygoogle || []).push({}); GPUの使い方 C++でGPUが使えるかどうかは,以下のように確認できる torch::cuda::is_available() ここはpythonとほとんど変わらない GPU…

PyTorch C+ APIで自作データセットを定義する.

PyTorchのC++ APIで自作のデータセットの定義の仕方を紹介. 今回は以下のようなデータセットを作る, データセットクラス:ImageDataset(root, labelfile) 画像が格納されたルートディレクトリ:root 画像は以下のように格納 $ tree test_data/ test_data/ …

PyTorchでTorch Hubに自作モデルの登録

PyTorchの自作モデルをTorch Hubに登録してみる. GitHub repo hubconf.pyの設置 以下のようにhubconf.pyをレポジトリの直下に設置する. # -*- coding: utf-8 -*- from models import MobileNet_v2 def mobilenet_v2(pretrained=False, *args, **kwargs): m…

PyTorchのC++ APIを試してみる

PyTorchではC++ APIが提供されている. pytorch.org (adsbygoogle = window.adsbygoogle || []).push({}); 多層パーセプトロン版 ビルド $ mkdir build $ cd build $ cmake .. $ cmake -DCMAKE_PREFIX_PATH=/absolute/path/to/libtorch .. $ make #include <torch/torch.h> </torch/torch.h>…