サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
災害への備え
rest-term.com
PyTorch 1.11からβ版として追加された functorch と呼ばれる機能を試してみました。PyTorch 1.9くらいのときから試験版として本体に組み込まれて提供されていましたが、どうやらfunctorchという別モジュールに切り出して提供されるようになったようです。 pytorch/functorch: functorch is JAX-like composable function transforms for PyTorch. functorchとは PyTorch公式サイトには以下のように説明されています。 functorch is a library that adds composable function transforms to PyTorch. It aims to provide composable vmap (vectorization) and a
ひさしぶりのエントリー。今年度になってから家庭環境がガラッと変わってなかなかプライベートの一人の時間が取れず時間が空いてしまいました。 今回はPyTorch関連のメモ的な記事になります。最近仕事で古いPyTorchで作られたプロダクトを最新のPyTorchにアップグレードする対応をしていたのですが、バージョン1.4からいきなり最新バージョンと1.9に上げたのでちょっと大変でした。ここでは1.9から入った新機能の一つを紹介したいと思います。地味ではありますが、意外と気になる人が多そうな機能を調べてみました。 * PyTorch 1.9 Release, including torch.linalg and Mobile Interpreter | PyTorch Inference Mode Inference Mode API allows significant speed-up for
YAMAHA RTX830 最近引っ越ししまして、ネット回線もいろいろと変わりました。IPv6対応もだいたい終わったので備忘録も兼ねて。今回はヤマハ製ルーターでv6プラス(IPv6 IPoE + IPv4 over IPv6)接続についてメモしてます。 v6プラスについて v6プラス(IPv6/IPv4インターネットサービス) | 日本ネットワークイネイブラー株式会社 「v6プラス」は、NTT東西の次世代ネットワーク(NGN)を利用しインターネット接続を提供するISP事業者が、IPv6及びIPv4の設備を持たずに、インターネット接続をお客さま(エンドユーザ)にご提供いただくためのサービスです。 本サービスは、「IPoE方式」によるIPv6インターネット接続とIPv6ネットワーク上で実現するIPv4インターネット接続のデュアルスタックのローミングサービスです。 v6プラスはJPNE(日本ネッ
先日、OpenCV 4.0が正式リリースされました。リリースノートの内容を載せます。 OpenCV 4.0 * OpenCV is now C++11 library and requires C++11-compliant compiler. Minimum required CMake version has been raised to 3.5.1. * A lot of C API from OpenCV 1.x has been removed. * Persistence (storing and loading structured data to/from XML, YAML or JSON) in the core module has been completely reimplemented in C++ and lost the C API as well. * N
PythonのWebアプリケーションフレームワークについて、Flaskからの移行先としてSanicが有力そうなので調べています。 Sanic is a Flask-like Python 3.5+ web server that’s written to go fast. Sanicは著名なイベントループライブラリであるuvloopを利用しており、Node.jsのように非同期I/Oによる高効率なHTTPリクエスト処理が可能です。また、SanicはFlaskとよく似たシンタックスを提供しているため、他のフレームワークよりも移行コストを抑えることができそうです。 環境 サーバ環境 Ubuntu 16.04 (x86_64) CPU 3.30GHz 4core / 8GB RAM Python 3.6.4 Sanic 0.7.0 / Flask 0.12 クライアント環境 macOS High
今回は高速省メモリな画像処理ライブラリである libvips を使ってみます。 libvips is a demand-driven, horizontally threaded image processing library. Compared to similar libraries, libvips runs quickly and uses little memory. It has around 300 operations covering arithmetic, histograms, convolution, morphological operations, frequency filtering, colour, resampling, statistics and others. – libvips: A fast image processing library
少し間が空いてしまいましたけど、今回はGradient Boosting (勾配ブースティング)と呼ばれる機械学習アルゴリズムを試してみます。機械学習関連のコンペでも大人気の手法ですね。かなり昔(2011年)に決定木をJavaScriptで実装したことはあるので勾配ブースティングも併せて学んでおこうと思います。 JavaScriptで決定木 Gradient Boosting (勾配ブースティング) ブースティングについてWikipediaを引用すると、 ブースティング(英: Boosting)とは、教師あり学習を実行するための機械学習メタアルゴリズムの一種。ブースティングは、Michael Kearns の提示した「一連の弱い学習機をまとめることで強い学習機を生成できるか?」という疑問に基づいている[1]。弱い学習機は、真の分類と若干の相関のある分類器と定義される。- ブースティング –
Facebook AI Research (FAIR)が開発したGPU対応の類似検索ライブラリ Faiss に関する2回目の紹介エントリーとなります。前回は、FaissのインストールとC++チュートリアルの説明を行いました。今回はGPUを利用した検索処理を試してみます。 Faissのインストール方法については前回のエントリーを参照してください。 GPU対応の類似検索(最近傍探索)ライブラリ Faissの紹介 part1 導入/チュートリアル 環境 Amazon Linux AMI release 2017.03 Intel Xeon CPU E5-2686 v4 @ 2.30GHz NVIDIA GK210GL [Tesla K80]
Facebook AI Research (FAIR)が開発したGPU対応の類似検索ライブラリ Faiss を紹介します。 [06/25追記] Faiss GPU版の検索についてエントリーを書きました。 GPU対応の類似検索(最近傍探索)ライブラリ Faissの紹介 part2 GPUを利用した検索 論文は以下で公開されています。 [1702.08734] Billion-scale similarity search with GPUs 論文タイトルの通り、10億スケールの大規模データに対してGPUを駆使した効率的な最近傍探索アルゴリズムの研究事例となっています。分量が多くなりそうなので複数の記事に分けて紹介しようと思います。 環境 Amazon Linux AMI release 2017.03 Intel Xeon CPU E5-2686 v4 @ 2.30GHz NVIDIA GK
ここ半年くらいは機械学習関連技術のJavaScript実装を行ってきましたが、今回は久しぶりに画像処理関連の要素技術を調べました。 Line Segment Detector (LSD) と呼ばれるアルゴリズムになります。 LSD: a Line Segment Detector (元論文PDF) 画像: 東京ガーデンテラス紀尾井町 – Tokyo Garden Terrace Kioicho LSDによりデジタル画像中から高精度に直線(line segmentなので厳密には線分)を検出することができます。直線検出と言えば、Hough(ハフ)変換と呼ばれる古典的なアルゴリズムが著名かと思いますが、LSDはHough変換よりも検出精度が高い手法となっています。LSDの論文が出たのが2012年のようなので思ってたより新しいですね。直線検出のようなシンプルかつ重要な要素技術もまだ枯れてなくて、地
前回 JavaScriptで機械学習の実装 3 AROW に引き続きオンライン学習アルゴリズムを試しています。Node.js勉強中なのでJavaScriptを使ってこつこつ学んでいきましょう。 今回は SCW (Soft Confidence Weighted Learning) と呼ばれるアルゴリズムを扱います。 SCW (Soft Confidence Weighted Learning) 2012年に提案された、CW (Confidence Weighted Learning)と前回紹介したAROW (Adaptive Regularization of Weight Vectors)の特徴を備え持つ手法です。SCWはCWと同様に重みベクトルの各重みが正規分布に従って生成されていると考えます。 SCWのアルゴリズムは以下のようになっています(元論文から引用)。 μが信頼している重み、
今回はオンライン機械学習アルゴリズムとして知られている AROW (Adaptive Regularization of Weight Vectors) を試してみました。内容的には以下のエントリーの続きになりますが、今回からタイトル文言を少し変えようと思います。TypeScript入門という段階はそろそろ脱したかなと思うのと、TypeScriptよりも直接JavaScriptで書く量の方が増えてきたためです。 TypeScript入門 – 機械学習の実装 1 Denoising Autoencoder TypeScript入門 – 機械学習の実装 2 Logistic Regression 前回のエントリー内で、次はブースティング系アルゴリズムを実装してみたいと書いたのですが、オンライン機械学習 (機械学習プロフェッショナルシリーズ)を読んでいたらこの分野への興味が強くなってしまったので
前回はLinuxの namespace(名前空間) についてCプログラムやツールを使っていろいろと確認できましたので、今回は cgroups についても調べます。 Linuxカーネル Docker関連 namespaceのメモ namespaceは生成したプロセスに対してリソース体系を割り当てる(隔離空間を作る)のに対して、cgroupsは指定したプロセスのグループに対してリソース制限をかけます。似ているようで全然別の機能ですね。 環境 * CentOS 7.2 (kernel-3.10.0-327.4.5.el7.x86_64) * Ubuntu 14.04 (3.13.0-77-generic) * Docker 1.9.1 cgroups Control Groups provide a mechanism for aggregating/partitioning sets of t
前回はTypeScript入門ということで、TypeScriptで Denoising Autoencoders という種類のニューラルネットワークを作ったのと、AngularJSやAngular Materialの使い方を少し学ぶことができました。 TypeScript入門 – 機械学習の実装 1 Denoising Autoencoder このDenoising Autoencoderを構成要素として何層も積み重ねるとStacked Denoising Autoencoderとなり、Deep Learning(深層学習)とも呼ばれます。Denoising Autoencoderを実装してあれば、残りは出力層での教師有り学習で用いるロジスティック回帰やソフトマックス関数など小さな部品を作るだけです。実はそれとは別に、前回の記事の後に小規模なConvolutional Neural Net
最近はやっとまともにDockerを使い始めたということもあり、基盤技術を追う必要性も強く感じてきました。Linuxカーネルのコンテナ技術周りのコードリーディングを再開しているのですが楽しいです。 環境 * CentOS 7.2 (kernel-3.10.0-327.4.5.el7.x86_64) * Ubuntu 14.04 (3.13.0-77-generic) 読んでいるのはほとんどnamespaceとcgroup周りですけれど、この2つは違う機能なのでごっちゃにして覚えないようにしたいところです。このエントリーではnamespaceについて、利用方法やカーネルの実装なども含めてメモしておきます。 namespace (名前空間) Linuxにおける namespace(名前空間) はプロセスに対して以下の6種類のリソースを分離するための機能として提供されています。 名前空間 定数 概
opencv_contrib レポジトリに dnn という名前のディレクトリがひそかに出来ており、中を覗いてみると cv::dnn モジュールにDeep Learning関連の実装が含まれていたので軽く試してみました。Google Summer of Code (GSoC) 2015で発表され、GitHubにて実装が公開されたという経緯のようです。 It would be cool if OpenCV could load and run deep networks trained with popular DNN packages like Caffe, Theano or Torch. – Ideas Page for OpenCV Google Summer of Code 2015 (GSoC 2015) * 2015/12/22 追記 12/21にOpenCV3.1がリリースされ
TypeScript lets you write JavaScript the way you really want to. TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. Any browser. Any host. Any OS. Open Source. TypeScriptとは TypeScript はマイクロソフトによって開発されたフリーでオープンソースのプログラミング言語である。TypeScript は JavaScript に使用するかどうかが任意の静的型付けとクラスベースオブジェクト指向を加えたスーパーセットとなっている。C# のリードアーキテクトであるアンダース・ヘルスバーグが TypeScript の開発に関わっている。- Wikipedia とのことです
Packt Publishing という出版社がイギリスにあるんですが、多種多様な技術書を数多く出版しています。O’Reilly本のように翻訳はされてないので日本のエンジニアにはあんまり知られていない(? のかなと思います。 日本の出版社だとまず企画が通りそうにないマニアックなラインナップになっており、例えば scikit-learn や matplotlib などPythonモジュール単体のみを扱ったエッジの効いたタイトルも多いです。表紙のデザインはO’Reillyよりクールな感じで僕は好きです。 Mastering Machine Learning with scikit-learn matplotlib Plotting Cookbook 今回は OpenCV for Secret Agents という著名なコンピュータビジョンライブラリのOpenCVに関する技術書のレビューをしまし
去年の内に公開することが出来ず、ずっと下書き状態だったエントリーをちょっとずつ消化していきたいと思います。ネタとして古いものも含まれていたりすると思いますがしばらくご辛抱ください。。 Redis 2.8.9から追加された HyperLogLog をちょっと触ってみました。 環境 * CentOS 7.0 (x86_64) / Intel Xeon E312xx (Sandy Bridge) 2.4GHz 仮想3コア / 2GB RAM * Redis 2.8.17 * redis-py (Python 2.7.5) HyperLogLogとは HyperLogLog (以下HLL)というアルゴリズムはデータマイニング(トラフィックデータの分析等)とか自然言語処理をやってる人ならともかく、Webアプリケーション開発者にはあまり馴染みがないかもしれません。 HyperLogLog – Wiki
ねこと画像処理。 (みかん – 吉祥寺 きゃりこ) 前回の ねこと画像処理 part 2 – 猫検出 では画像内の猫の顔を検出する方法を紹介しましたが、今回はディープラーニングの技術を用いて猫の品種を識別したいと思います。 学習データ ねこと画像処理 part 1 – 素材集めでは、自分で撮影した写真を学習データとして使うと書いたのですが、都内の猫カフェ等で出会える猫に限ってしまうと品種の偏りが大きくなってしまうので、ここではしぶしぶ研究用のデータセットを使うことにします。。ただ、Shiba Inuがあるのに日本が誇るMike Nekoが含まれていないのでデータセットとしての品質は悪いと思います。 The Oxford-IIIT-Pet dataset オックスフォード大学が公開している動物画像のデータセットです。その内猫画像は2400枚、クラス数は12で1クラスにつき200枚あります。今
ねこと画像処理。 (アイシャ – 池袋 ねころび) 前回のねこと画像処理 part 1 – 素材集めでは猫画像の集め方について整理しました。今回はその集めた猫画像を使って猫検出用の学習モデル(分類器)を作成したいと思います。それにはいろいろと準備が必要です。 モデル(分類器)の配布についてはこのエントリーの後半で説明します。 アノテーションデータの収集 学習モデルを作る前に猫のどの部分を検出するかを決める必要がありますが、今回は猫の顔(頭)部分の検出を行おうと思います。そのためのアノテーションデータ作成補助ツールを作成したのでそれを使ってひたすらデータを集めます。僕一人の作業だと限界があったのですが、クラウドソーシングによりネット上の顔も知らない有志達の協力のおかげであっという間にデータが集まりました。 アノテーションデータ作成補助ツールの作成にあたっては以下のサイトを参考にさせてもらいま
## ソースコードの取得 $ git clone git://github.com/cpputest/cpputest.git $ cd cpputest $ mkdir workspace && cd workspace ## cmakeを実行 ## お試しなのでユーザーディレクトリ以下にインストール、カバレッジ(gcov)をサポート $ cmake28 -DCMAKE_INSTALL_PREFIX=./install -DCOVERAGE=ON .. ------------------------------------------------------- CppUTest Version 3.4 Current compiler options: CC: /usr/bin/cc CXX: /usr/bin/c++ ... 省略 Features configure in CppU
Tech Crunchで紹介されていて、国内外の方からのお問い合わせが僕の方にもいくつか来てたのでご紹介を。 これはまたクールで不気味なアプリ―FaceSubはそのうち他人の顔を借りてビデオチャットができる? Face substitution (デモへのリンク) 以前、このブログで JavaScriptでPoisson Image Editingによる滑らかな画像合成 というエントリーを書きましたが、そこで公開したJavaScriptのモジュールをノルウェーの方に上記のデモで使っていただきました。Webカメラで取り込んだ画像を解析して、顔の特徴点をトラッキングしながら他人の顔テクスチャをPoisson Image Editingアルゴリズムで合成するデモになっています。ただ、白人さんモデルに黒人さんの顔テクスチャを綺麗に合成するのはさすがに難しいようです。 Poisson Image E
※ 本エントリーには技術的な内容はありません。 ねこが写った画像に対していろいろな画像処理を施していく。今回はデータセットとして利用する画像素材集めに関するエントリー。 素材集め 機械学習系のタスクも想定しているので、大量にデータセットを集めておこう。Web上から取ってくるのでは味気なくてつまらない、邪道である。それに著作権の問題もある。自分の足を使ってたくさん集めて回るんだ。もふもふするんだ。 飼いねこを撮る 野良/地域ねこを撮る ねこカフェのねこを撮る 僕は実家で2匹のねこを飼っているが、今は東京で一人暮らしなので帰省時にしか撮れない。23区内でも世田谷や練馬などの住宅街には意外と地域ねこがいる(区の住民ボランティアによって世話/治療、去勢手術等が施されているねこ)。しかし地域ねこばかりでは海外種のデータは集まらないだろう。やはりこつこつとねこカフェに通うのが一番効率的だ。 カメラにつ
今や構成管理ツールは百花繚乱、何を使ったらいいのかよくわからないのが正直なところなのですが、以前から気になっていたAnsibleをちょっと触ってみました。まだ入門レベルのことしか試していませんが感想などを書きたいと思います。 Ansible is a radically simple IT orchestration engine that makes your applications and systems easier to deploy. Avoid writing scripts or custom code to deploy and update your applications— automate in a language that approaches plain English, using SSH, with no agents to install on rem
The machine learning toolbox’s focus is on large scale kernel methods and especially on Support Vector Machines (SVM) * The SHOGUN Machine Learning Toolbox サイトのデザインどうにかしたらいいのにとか将軍ってなんだよとかいろいろあるかと思いますけども、プロダクトとしては素晴らしいという噂を聞くので今回このSHOGUNという機械学習ライブラリを試してみました。目的は一般物体認識における分類タスクでMultiple Kernel Learning(MKL)やLatent SVMの実装を試すことなのですが、まずはインストール方法と簡単な使い方を調べるところから始めます。 また、この記事の内容はQiitaにも投稿しています。 * 機械学習ライブラ
pixel clustering using k-means++ 前回のJavaScriptでPoisson Image Editingによる滑らかな画像合成に引き続き、HTML5 Canvasを使ったJavaScriptによる画像処理の一例を紹介します。 今回は画像の画素値に対するクラスタリング(分類)を画像加工用途に応用します。クラスタリングには各画素のRGB値を特徴ベクトル(次元数3)としてk-means法と呼ばれる手法を使って行います(実装上はk-means法の初期値選択アルゴリズムを改良したk-means++法を利用)。以下のサイトでOpenCVを利用した実装例が紹介されています。 k-meansクラスタリングによる画像分割,減色 – opencv.jp 上記サイト内でも言及されているように、k-means法による画像の領域分割や減色処理はあまり良い結果が得られないことが知られて
Redis関連の監視/データ分析系ツールについてメモしておきます。 随時追記予定。実務で有用なツールが他にありましたら教えていただけると嬉しいです。 環境 CentOS 5.9, Ubuntu 12.04 (x86_64) Redis 2.6.10 (※ CentOSの6.x系への移行は足踏み状態。相当大変ですよね。。) 以下の順に紹介していきます。 Redisコマンド Redis Sentinel Redis Live Redis Faina Redis Sampler redis-top Nagiosプラグイン Zabbixテンプレート Muninプラグイン Cactiプラグイン 最後のCactiプラグイン以外は実際に導入して試してみました。以降、見出しに各プロダクトへのリンクを貼っておきます。 Redisコマンド ツール紹介の前にまずは基本から。Redisには監視やデータ解析用途で使
the Lua interpreter built into Redis 僕のRedisについての知識はv2.2くらいで止まっていたので、それ以降のRedisに備わった機能を調べているんですけど、その中でもv2.6からサポートされたLuaスクリプト実行環境について今回は整理します。 技術Wikiの方にもRedisについてのメモを残しています。 * Redis – Tech Note 環境 CentOS 5.8 (x86_64) Redis 2.6.10 (malloc=jemalloc-3.2.0 bits=64) Pythonクライアント (redis-py 2.7.2) ※ Redis 2.6で利用できるLuaのバージョンは5.1です。 Lua言語について Lua – Wikipediaによると、 Lua は、C言語のホストプログラムに組み込まれることを目的に設計されており、高速な動作
次のページ
このページを最初にブックマークしてみませんか?
『Rest Term – Web関連技術の話など』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く