2020-01-01から1年間の記事一覧
FORCIAさん主催のオンライン勉強会 RustのLT会 Shinjuku.rs #13 に参加してきました。オンライン開催です。 forcia.connpass.com LT#1: RustでPostgresの拡張を書く ( @matsu7875 さん) 発表資料は https://speakerdeck.com/matsu7874/write-postgres-extens…
信頼できない環境で稼働するアプリケーションには、リトライ処理が不可欠です。 難しくはないので自前で実装してしまうのですが、特定の例外のみリトライしたい・リトライ間隔を指数関数的に増やしたい・リトライ時はログ出力したいなどの細かなリクエストを…
機械学習工学研究会 本番適用のためのインフラと運用WGが主催するカンファレンスにて、最近のお仕事について発表しました。 mlxse.connpass.com 資料はこちらです。 speakerdeck.com
お仕事にてDocker (Pythonアプリケーション) のイメージサイズの削減に挑戦する機会がありました。その調査で用いた dive について紹介します。 diveとは diveを使った調査 diveとは diveはイメージやレイヤのコンテンツ (ファイル) を可視化するためのツー…
Pythonで安全にコーディングしようとすると、リンタ (ex. flake8) やフォーマッタ (ex. black) 、型チェッカ (ex. mypy) など、コミット前に実行するコマンドが増えていきます。 今回は、コミット時にコマンドを自動的にフックするPythonのツールとしてpre-c…
仕事で既存のコードへmypyの導入を試みる機会がありましたので、使い方とtipsの備忘録としてまとめます。 mypyとは インストール 型チェックの実行 Tips: 型チェック対象を限定する 設定 Tips: スタブが無いパッケージのエラーは無視させる コードの修正 Tip…
以前AWS CodeBuildでPythonアプリケーションをビルドしてS3へアップロードする方法を紹介しました。 AWS CodeBuildでGitHubと連携してPythonアプリをビルドする - け日記 今回はDockerイメージをビルドして、ECRにプッシュする方法について見ていきたいと思…
大量のSQLのリストやログから特定テーブルへのUPDATEを行うクエリだけを抽出したいといったケースが、しばしばあります。1つのアプリケーションからアクセスされるDBであればコードを追っていくことでどうにかなるのですが、異なる言語やORMで構成された複数…
pandasのDataFrameは柔軟なテーブル構造を提供してくれますが、時に柔軟すぎて困ることもしばしばです。本番運用するアプリケーションですとなおさらこの欠点が目立ちます。 入力データに依存して意図しない型に変わってしまったり... ex. [1, 2, 3]だとint6…
テーブルのレコードをコピーしたい、だけどちょっとカラムの定義や値を変えたいケースがあります。 例として、以下の要件を満たしつつ、postsからcopied_postsへコピーしたいとします。 コピーした日時 (copied_at) を追加したい emailをNULLにしたい mysql>…
最近はお仕事でKubeflow Pipelinesを触り始めています。 PythonでDAGを定義し、SDK (KFP) を使ってArgo Workflowのマニフェストを出力して、それをKubeflowにアップロードしてパイプラインを作る、という流れで開発しています。 サンプルパイプライン proces…
畳み込みニューラルネットワークが持つ座標変換の問題に着目してCoordConvを提案したAn intriguing failing of convolutional neural networks and the CoordConv solution (NeurIPS'18, arXiv) について紹介します。 @incollection{NIPS2018_8169, title = …
今回はテーブルデータをParquetファイルで扱う方法について2つ紹介します。 Apache Parquet サポートされるデータ型 Pandas DataFrameを用いたParquetファイルの変換 Apache Arrow pyarrowを用いたParquetファイルの変換 まとめ コードは以下の環境で動作確…
私はこれまでPythonのパッケージ管理として pyenv + pipenv を主に使ってきました。が、最近はpipenvは色々あって使いづらさを感じていました。 pipenv lockやpipenv syncが遅い (気がする) pipenv自体の更新が怪しかった (参考、今年に入って4月と6月にリリ…
一時的に使うファイルやディレクトリを作成して、処理が終わったら削除する、という手続きを実装する機会はしばしばあると思います。 簡単なことではあるのですが、処理の例外ハンドラで削除の実装を忘れてゴミファイルができてしまったり、並列実行したとき…
先週に引き続き顔ランドマーク推定に関わる論文として、CVPR2020で提案された LUVLi Face Alignment: Estimating Landmarks’ Location, Uncertainty, and Visibility Likelihood (arXiv) を紹介します。 LUVLi Face Alignment: Estimating Landmarks’ Locati…
今回は顔ランドマーク推定に関係する論文を取り上げます。 Adaptive Wing Loss for Robust Face Alignment via Heatmap Regression ヒートマップ回帰 損失関数にMSEを用いた場合の問題点 提案 Adaptive Wing Loss Weighted loss mapで前景画素を強調 実験 考…
複数の画像を組み合わせたオーグメンテーションであるmixupとCutMixについてまとめます。 mixup CutMix mixup 2枚の画像をラベルともどもブレンドするのがmixup1です。次に紹介するCutMixの論文の図がわかりやすいです。 [2] Table 1 抜粋 入力 と を重みλで…
今回はハイパパラメータチューニングを自動化するOptunaを触りながら紹介していきます。 Optuna BayesianOptimizationのかゆいところ Optunaを用いた実装 1変数関数の最適化 分散最適化 scikit-learnの最適化 まとめ Optuna 勾配ブースティング木やニューラ…
画像の一部をマスクすることでオーグメンテーションする手法について代表的なものをまとめました。 そもそも: なぜ画像の一部をマスクするのか? Random erasing Cutout Hide-and-Seek GridMask まとめ そもそも: なぜ画像の一部をマスクするのか? オーグメ…
物体検出の分野では、検出した物体をバウンディングボックス (BBox) で囲んで、それぞれに信頼度 (スコア) を算出します。 このとき重複したBBoxを除去あるいは集約するアルゴリズムにはバリエーションがあります。物体検出モデルの後処理やコンペなどでよく…
前回に引き続きEMRについてです。今回はEMRのステップを用いてPySparkのバッチアプリケーションを実装していきます。 ohke.hateblo.jp EMRのステップ 前回は、JupyterノートブックからSpark環境へジョブをリクエストしていました。これは分析やモデリングの…
Jupyter Notebookなどで作業中に、メモリに乗り切らないような大量のデータに対して何らか処理が必要になるケースがしばしばあります。 これを解決するツールの一つとしてAmazon EMRをきちんと知っておきたいというモチベーションで、今回はAmazon EMRでSpar…
Rustの行列演算ライブラリ rust-ndarray についての紹介です。ほとんどが備忘録的なコード例となります。 rust-ndarray Rustの行列演算ライブラリはいくつかあります。rust-ndarrayもその1つで、概ねプリミティブな行列演算のみをサポートしたものです。 git…
姿勢推定の分野でブレイクスルーとなったHRNetを、顔ランドマーク推定タスクなどに適用した High-Resolution Representations for Labeling Pixels and Regions (arXiv) についてのメモです。 @misc{sun2019highresolution, title={High-Resolution Represen…
お仕事で触れる機会が増えてきたHDF5について調べて整理します。また、h5pyを使ってWFLWデータセットをHDF5へ変換してみました。 HDF5 HDF (Hierarchical Data Format) は大量のデータを格納するファイルフォーマットで、The HDF Groupによって開発・メンテ…
EKSのおかげでEC2・ASG・ELBなどが一式揃ったKubernetes環境を楽に構築できるようになりました。 一方で、上記以外のAWSマネージドサービスに依存したアプリケーションの場合、それらマネージドサービスもKubernetes (つまりマニフェストファイル) の管理下…
今回はCVPR'18で提案されたWing Loss for Robust Facial Landmark Localisation with Convolutional Neural Networks1 (arXiv) という論文を紹介します。 ポイント 顔ランドマーク検出の損失関数として新たにWing Lossを定義 正面向き以外の画像をオーバサン…
仕事で顔ランドマーク推定について調査・検証などを行い始めているのですが、各手法の学習・評価で使われているデータセットについてかなり混乱しました。 元々は何を目的として (= 評価したくて) 作られたデータセットなのか? ランドマークの点数や位置、…
今回はyacsを用いたパラメータ管理について整理します。 yacs yacsはPythonコード + YAMLファイルで実験条件などのパラメータを管理できるようにするPythonライブラリです。 Pythonでyamlの設定ファイルを読み込むようなライブラリとしてはPyYAMLやruamel.ya…