U-netによる画像セグメンテーション(Image segmentation)の解説

         関連記事: OpenCVで顕著性検出(Saliency Detection) 先日の記事はOpenCVに入っている顕著性(Saliency)について解説しました。今回は、深層学習を用いた 教師有り学習で行う場合の画像Segmentationについて紹介していきます。 画像セグメンテーションとは、画像を複数の部分または領域に分割する処理です。画像全体や画像の一部の検出ではなくピクセル1つひとつに対して、そのピクセルが示す意味をラベル付けしていきます。 目次 1. U-Netの概要 2. 実験・コード __2.1 環境設定 __2.2 データ読み込み __2.3. データ前処理 __2.4. ネットワーク設定 __2.5. モデル学習 __2.6. 推論 1. U-Netの概要 U-Netとは U-Netは、ドイツのフライブルク大学( Freiburg)のコンピュータサイエンスが開発された生物医学的な画像セグメンテーション(物体がどこにあるか)のための全層畳み込みネットワーク (Fully Convolution Networkです。 ネットワークの構成は、縮小したネットワーク層を連続して反対において拡大の情報を付加していきます。ただしプーリング操作はアップサンプリングオペレーターに置き換えられます。 したがってこれらのレイヤーは出力の解像度を高めていきます。 後続の畳み込み層は、この情報に基づいて正確な出力を組み立てることを学習できます。つまり、畳み込まれた画像を decode する際に,encode で使った情報を活用している点が挙げられます。 左右対象でアルファベットの「U」に似ていることから、「U-net」と呼ばれているそうです。 2. 実験・コード 環境:Google Colab GPU データセット:オックスフォード大学のペットデータセット(37カテゴリー) モデル:U-netネットワーク モデル評価:Accuracy 2.1 環境設定 Tensoflowのサンプルデータをインストールします。 !pip install -q …

U-netによる画像セグメンテーション(Image segmentation)の解説 Read More »

LogitBoostの解析

関連記事: NGBoost CatBoost LightGBM      目次 1. LogitBoostの概要 __1.1 LogitBoostとは __1.2 LogitBoostのライブラリ 2. 実験・コード __2.1 環境の準備 __2.2 ライブラリのインポート __2.3. データロード __2.4. データ加工 __2.5. モデル学習 __2.6. モデル評価 1. LogitBoostの概要 1.1 LogitBoostとは LogitBoostは、バイナリまたはマルチクラス分類アルゴリズムの一つになります(一応回帰も可能です)。LogitBoost と AdaBoost は、どちらも加法ロジスティック回帰を行うという点で似ています。違いは、AdaBoost が指数損失を最小化し、LogitBoost がロジスティック関数の損失関数を最小化するように学習する事です。 1.2 LogitBoostのライブラリ 下記のようにScikit-learnライクに使う事ができます。 logitboost.LogitBoost(base_estimator=None, n_estimators=50, weight_trim_quantile=0.05, max_response=4.0, learning_rate=1.0, bootstrap=False, random_state=None) パラメータの意味です。 base_estimator (object, optional (default=None)) classifierまたはregressorを指定することができます。 base_estimatorが指定されていない場合は、decision stump(分ける時に2値のフラグでわけます)が使用されます。 n_estimators …

LogitBoostの解析 Read More »

Kaggle新型コロナウイルスの感染人数を予測するコンペ(COVID19 Global Forecasting)

関連記事: kaggleの記事   昨年末から始まった新型コロナウイルス感染症(COVID-19)感染者拡大の影響は、いまや世界中に広がっています。世界中のさまざまな業界の組織はCOVID-19の対策を支援しています。やはりデータサイエンティストや機械学習エンジニアもCOVID-19)の感染対策や治療方針の策定を支援しています。今回の記事は世界中のデータサイエンティストの競い合うプラットフォームKaggleからの「COVID19 Global Forecasting」について紹介したいと思います。 目次 1.  COVID19 Global Forecastingの概要 ___1.1 コンペの概要 ___1.2 データセットの概要 2. モデル作成 ___2.1 データの理解 ___2.2 モデル 1. ASHRAE 消費エネルギー予測のコンペの概要 1.1 コンペの概要 概要 Kaggleでは今回の一連のコンペを通じて、感染者数の推移の予測によって世界保健機関(WHO)と全米科学・工学・医学アカデミー(NASEM)が抱える新型コロナウイルスに関連する疑問にも答えることです。 今回のKaggleのコンペでは、米ホワイトハウスらを通じて集められた感染者数などの各種関連データを使って、1ヶ月後の感染者数を予測するモデルを構築することになります。 賞金: - 期間: 2020/3/19 ~ 第1週目のの評価:RMSLE nは観測の総数です piは予測値です aiは実測値です log(x)はxの自然対数です 最終スコアは、すべての列のRMSLEの平均です 詳細:RMSLE を用いた評価指標 第5週目の評価:Weighted Scaled Pinball Loss (WSPL) y は実測値です。 y^ は予測値です。 τ は分位予測です。 例 [0.05, 0.50, 0.95] Nf …

Kaggle新型コロナウイルスの感染人数を予測するコンペ(COVID19 Global Forecasting) Read More »

tf-keras-visでの特徴部位特定(Saliency・GradCAM)

  関連記事: OpenCVで顕著性検出(Saliency Detection)  TensorFlow 2.0 主な変更点 前回の記事はOpenCVに入っている顕著性(Saliency)について解説しました。今回の記事はkeras-visでの特徴部位特定(Saliency・GradCAM)について解説したいと思います。 目次 1. tf-keras-visの特徴部位特定の概要 __1.1 Saliencyとは __1.2 tf-keras-visのSaliencyのライブラリ 2. 実験・コード __2.1 環境の準備 __2.2 モデルの読み込み __2.3. データロード __2.4. Vanilla Saliency __2.5. SmoothGrad __2.6. GradCAM 1.keras-visの特徴部位特定の概要 1.1 Saliencyとは Saliencyの背景にあるアイデアは今となっては かなりシンプルです。 入力画像に対する出力カテゴリの勾配(変化率)を計算します。入力の小さな変化に関して出力値がどのように変化するかを可視化します。 出力の最も大きな変化の要因となる入力領域を強調するために、勾配(変化率)を使うことができます。 1.2  tf-keras-visのライブラリ tf-keras-visは、Tensorflow2でtf.kerasモデルを可視化するための視覚化ツールキットです。ただしtf-keras-visの機能はkeras-visに基づいていますが、tf-keras-visのAPIは通常のTensorflowのラッパーの独立していた時のKerasとのAPIとの互換性を備えていません。 tf-keras-visの可視化は3つの大きな特徴があります。 1. 高密度レイヤーを視覚化(Visualize Dense Layer) 2. 畳み込みレイヤーの可視化(Visualize Convolutional Filer) 3. 顕著性マップとGradCAM(Saliency Map and GradCAM) 今回は3番目の変化率の計算をしている顕著性マップ(Sileancy Map) …

tf-keras-visでの特徴部位特定(Saliency・GradCAM) Read More »

ニューラルネットワークのプルーニング(Pruning・枝刈り)

  関連記事:TensorFlow 2.0 主な変更点 今回の記事はTensorFlow モデル最適化ツールキットにあるPruning APIを解説と実験を行います。 目次 1.  ニューラルネットワークのプルーニングとは ___1.1 プルーニングの概要 ___1.2 TensorFlow モデル最適化ツールキット — Pruning API 2. 実験 ___2.1 環境構築 ___2.2 データのロード ___2.3 NNモデル ___2.4 プルーニングモデル ___2.5 モデルの評価 ___2.6 TensorFlow Liteでモデル圧縮 3. まとめ 1. ニューラルネットワークのプルーニング(枝刈り)とは 1.1 プルーニングの概要 ニューラルネットワークのプルーニングとは、機械学習アルゴリズムを最適化する方法の一つとして、ニューラル ネットワークのレイヤー間のつながり(パラメーター)を削除することです。これにより、パラメーターの数を減らして計算を高速化します。 実際には、ニューラル ネットワークのパラメーターの値をゼロにすることで、ニューラル ネットワークのレイヤー間の不要なつながりと見なしたものを削除します。この処理はトレーニング プロセスで行います。繋がりを消すもの以外に、重みを0にすることでプルーニング(枝刈り)とも言います。 1.2 TensorFlow モデル最適化ツールキット — Pruning API 重みのプルーニングを行う API は、Keras をベースに構築されています。そのため、このテクニックはどんな既存の Keras …

ニューラルネットワークのプルーニング(Pruning・枝刈り) Read More »

LiteMORTの解説

関連記事: Xgboost、LightGBM 今回の記事はヒストグラムベースの特徴の新たなLiteMORTを解説します。         目次: 1.  LiteMORTとは 2.  LiteMORTの特徴 3. 実験・コード __3.1 データ読み込み __3.2 LiteMORT xgboost lightGBM __3.3 モデル評価 4. まとめ 1.  LiteMORTとは LiteMORT(A memory efficient gradient boosting tree system on adaptive compact distributions)は、分割の際にヒストグラムを用いていきます。ノイズの多い特徴をよりコンパクトで堅牢に評価します。このアルゴリズムにより、速度が向上し、メモリ使用量が大幅に削減され、精度が維持されます。 LiteMORTの論文 LiteMORT: A memory efficient gradient boosting tree system on adaptive compact distributions  2. LiteMORTの特徴 2.1 適応的なサイズ変更されたビンでの機能の分布。 ヒストグラムのビンは、実際にはさまざまな変数の分布を計算する基礎です。 より洗練されたビンを使用すると、より良い分布パラメーターを取得できます。 一部のビンがより重要な場合は、そのサイズを縮小するか、2つのビンに分割します。 …

LiteMORTの解説 Read More »

T-GANでテーブルデータ拡張

関連記事: 深層学習 前回の記事は「KerasでのData Augmentationの解説」画像のデータ拡張について解説しました。今回の記事はテーブルデータ拡張するT-GANについて解説したいと思います。 目次 1. T-GANの概要 __1.1 TGANとは __1.2 モデルパのラメータ 2. 実験・コード __2.1 データロード __2.2 ライブラリの設定 __2.3. 前処理 __2.4. モデルを訓練 __2.5. 前処理 __2.6. サンプル作成 3. サンプルデータ確認 __3.1 モデルテストの関数 __3.2 モデル検証 1. T-GANの概要 1.1 TGANとは TGANまたは、table-GANは、Table Generative Adversarial Networkの略称です。敵対的生成ネットワークで数値などの連続変数だけではなく、カテゴリ変数にも対応しています。 ネットワークの構成は下記になります。 テーブルデータから生成モデルを学習して、生成者(Generator)と識別者(Discriminator)を競わせます。 1.2 モデルパのラメータ tgan = TGANModel(continuous_columns, output=’output’, max_epoch=5, steps_per_epoch=10000, save_checkpoints=True, restore_session=True, batch_size=200, z_dim=200, noise=0.2, l2norm=0.00001, learning_rate=0.001, num_gen_rnn=100, num_gen_feature=100, num_dis_layers=1, num_dis_hidden=100, optimizer=’AdamOptimizer’ ) max_epoch (int, default=100): エポックの数 steps_per_epoch (int, default=10000): 各エポックで実行するステップの数 save_checkpoints(bool, default=True): …

T-GANでテーブルデータ拡張 Read More »

OpenCVで顕著性検出(Saliency Detection)

関連記事: 画像解析 今回の記事はOpenCVに入っている顕著性(Saliency)について解説したいと思います。 目次 1. Saliency Detectionの概要 2. 実験・コード __2.1 データロード __2.2 サリエンシーディテクションの関数 __2.3. SpectralResidualの顕著性 __2.4. FineGrainedの顕著性 1. Saliency Detectionの概要 顕著性を検出するには多くの方法があります。 OpenCVでは、顕著性検出用に提供されているアルゴリズムは3つのカテゴリに分類されます。 Static saliency : 画像から検出するモジュールです。Motion saliency : 動画のフレームに依存するモジュールです。今回は static saliencyについて解説します。static saliencyのアルゴリズムは、画像の人が良く注目する部分を検出できるようにするさまざまな画像機能を使用します。 OpenCVには、スペクトル残差と細粒度の2つのアルゴリズムがすでに実装されています。 Spectral Residual このアルゴリズムは、入力画像の対数スペクトルを分析し、スペクトルドメイン内の画像のスペクトル残差を抽出し、プロトオブジェクトの位置を示唆する顕著性マップを構築する高速な方法が実装されています。 Fine Grained 人間の目の網膜は神経節細胞で構成されています。 神経節細胞には、オンセンターとオフセンターの2種類があります。 オンセンターは、暗い背景に囲まれた明るい領域に反応します。 オフセンターは、明るい背景に囲まれた暗い領域に反応します。 このアルゴリズムは、オンセンター(on-center )とオフセンター(off-center)の違いに基づいて顕著性を計算します。 opencv/opencv_contribのモジュール: cv2.saliency.StaticSaliencySpectralResidual_create() cv2.saliency.StaticSaliencyFineGrained_create() 2. 実験・コード 概要: 入力データ: ウィキペディアからの画像 環境:Google Colab GPU ライブラリ: OpenCV …

OpenCVで顕著性検出(Saliency Detection) Read More »

kaggle1位の解析手法 「ASHRAE 消費エネルギー予測」2. 1位の解析手法

目次 1.  ASHRAE 消費エネルギー予測のコンペの概要 ___1.1 コンペの概要 ___1.2 データセットの概要 ___1.3 データの理解 2. 1位の解析手法 ___2.1 前処理 ___2.2 フィギュア・エンジニアリング ___2.3 モデル 2. 1位の解析手法 Isamu & Mattのチームのコメントを解説します。 https://www.kaggle.com/c/ashrae-energy-prediction/discussion/124709 2.1 前処理 2.1.1 異常値削除(Remove anomalies) このコンペでは、データのクリーンアップが非常に重要でした。 想定されているのは、データに予測不可能な、したがって学習不可能な異常があり、トレーニングされた場合、予測の品質が低下するということです。 3種類の異常を特定して除外しました。 1.長い定数値 2.大きな正/負のスパイク 3.目視検査によって決定された追加の異常 これらの異常のいくつかは、サイトの複数の建物にわたって一貫していることがわかりました。 サイト内のすべての建物を使用して潜在的な異常を検証しました。複数の建物で同時に異常が発生した場合、これが実際に真の異常であると合理的に確信できます。 これにより、必ずしも一定値の長いストリークや大きなスパイクの一部ではない異常を取り除くことができました。 2.1.2 温度のデータを欠損値代入法Impute Missing Temperature Values 温度メタデータに多くの欠損値がありました。 線形補間を使用して欠落データを補完することがわかりました。 2.1.3 タイムゾーンの加工(Local Time Zone Correlation) トレイン/テストデータのタイムゾーンは、気象メタデータのタイムゾーンとは異なりましたので、タイムゾーンのデータを加工しました。 2.1.4 ラベルの加工(Target Transformations) 最初はlog1p(meter_reading)を予測しました。site 0のkBTUをkWhに変換します。最後はlog1p(meter_reading/square_feet)の標準化にしました。(スコアが0.002上がった) …

kaggle1位の解析手法 「ASHRAE 消費エネルギー予測」2. 1位の解析手法 Read More »

kaggle1位の解析手法 「ASHRAE 消費エネルギー予測」1.コンペの概要

前回はkaggleコンペの「Home Credit Default Risk 債務不履行の予測」の1位の解析手法を話しました。今回は「ASHRAE 消費エネルギー予測」の1位の解析手法をまとめたいと思います。内容が長いなので、2つの記事に分けました。 関連記事:「メルカリにおける値段推定」「Cdiscount 画像分類」「Home Credit Default Risk 債務不履行の予測」 目次 1.  ASHRAE 消費エネルギー予測のコンペの概要 ___1.1 コンペの概要 ___1.2 データセットの概要 ___1.3 データの理解 2. 1位の解析手法 ___2.1 前処理 ___2.2 フィギュア・エンジニアリング ___2.3 モデル 1. ASHRAE 消費エネルギー予測のコンペの概要 1.1 コンペの概要 ビルでの省エネの施策を実施した場合の効果を見積もるために、冷水、電気、温水、蒸気などのセンサーデータに基づいて、エネルギー使用量を予測するコンペでした。 賞金: 1位 10,000米ドル、2位7,000米ドル、3位5,000米ドル、4位2,000米ドル、5位1,000米ドル 期間: 2019/10/16 ~ 2019/12/20 参加チーム数:7,190 評価:評価指標はRMSLE(Root Mean Squared Logarithmic Error) RMSEとか平均平方二乗誤差といいます。すべての誤差の平方根の平均です。連続値の値でどれぐらい離れているかを平均を取り、平方根で評価します。 詳細: RMSLE を用いた評価指標 1.2 データセットの概要 train.csv 学習データで、各センサーの時間、量数のデータ(ビルのデータに紐付ける) building_meta.csv 各ビル、活動の分類、建物の面積、築年、建物の階数のデータ(天気のデータとセンサーのデータに紐付ける) …

kaggle1位の解析手法 「ASHRAE 消費エネルギー予測」1.コンペの概要 Read More »