サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
iPhone 17
qiita.com/koshian2
C#で7zipの圧縮・解凍をする方法が探しても出てこなかったので書きました。 8年前から更新されていませんが、SevenZipSharpというラッパーライブラリがあります。これを使うのがわかりやすいです。なおこのライブラリ、ドキュメントがほぼ皆無なのでオブジェクトブラウザを見ながら解読しました。 SevenZipSharp http://sevenzipsharp.codeplex.com/ 「SevenZipSharp.dll」をダウンロードします この他に、7z.dllが必要です。7zipの公式ページからダウンロードしておきます。 7zip Download http://www.7-zip.org/download.html x86とx64のうち必要なほうをダウンロードします(以下、x86の場合で書きます)。デフォルトではC:\Program Files(x86)\7-Zipにインス
2021年のディープラーニング論文を1人で読むAdvent Calendar24日目の記事です。今日読むのは「超解像技術」の論文です。 この論文はESRGANという、2018年の論文のリファインなのですが、訓練時の低解像度データの作成方法(訓練時の前処理)を大きく変えて、モデルはそれほど変わっていないという面白い改善です。通常この手のリファインはモデル構造側を工夫することが多いのですが、「前処理を実際の画像劣化に合わせることで、現場で通用するような超解像モデルを作りましょうね」というのがコンセプトです。前処理を変えるとこんなに変わるというのをぜひ体感してほしいです。 ICCV2021のWorkshopに採択されています。著者の所属は主にテンセントと中国科学院です。 タイトル:Real-ESRGAN: Training Real-World Blind Super-Resolution Wi
※2019年8月時点の情報です。今後の機材アップデートやColabの方針次第では、この情報は変わる可能性があります。 きっかけ 条件を変えて別々のランタイムで訓練させると、1個は150エポックぐらい進んでいるのに、もう1個は50エポックぐらいしか進んでいないという現象がありました。 ほぼ同じ計算量なのに、条件によって2~3倍ぐらい計算時間が違う、これはおかしい――ということで調査してみました。 nvidia-smiしてみる どのGPUが割り当てられているかは「nvidia-smi」で確認できます。 1回目、Tesla K80が割り当てられています。これまで通りですね。ここでランタイムをリセットしてみます。 2回目、Tesla T4が割り当てられました。こちらは最新のGPUです。訓練が速かったケースは、このGPUを引けたときだったようです。 このように、2019年8月現在のColabにはラン
クラスAは5%下がってしまいましたが、クラスBは+10%、クラスCは+15%になりました。実は先程のmicro averageによる精度を計算すると、 5000×90% + 100×80% + 25×65% ÷ (5000+100+25) = 89.7% 5%近く下がっています。全体の精度が下がったほうが嬉しい、ちょっとおかしいですよね。 microとmacro この感覚のズレを解消するために、macro averageによる精度を計算します。macro averageとはクラス単位の精度を単純平均で求めます1。 前者:(95% + 70% + 50%) ÷ 3 = 71.7% 後者:(90% + 80% + 65%) ÷ 3 = 78.3% 直感と一致しました。microを使うか、macroを使うかは問題によりけりです。macro averageで集計するコンペもあります。不均衡データ対
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 2021年のディープラーニング論文を1人で読むAdvent Calendar4日目の記事です。今回紹介するのはData Augmentationの回転と物体検出です。画像の回転はData Augmentationでは一般的な方法ですが、物体検出では思わぬ副作用があります。物体検出におけるBounding Boxの回転について、問題点を指摘しより正確な回転方法や損失関数を提案、ICCV2021にアクセプトされた論文です。 タイトル:Towards Rotation Invariance in Object Detection URL:ht
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 1~2ヶ月ぐらいかけてNumPyの基礎~実装力をつけるための本を書きました。問題演習形式で221問収録してあります。 着想 以前この本を書いたのですが、ディープラーニングに行く前のNumPyでつまずいている方が結構多かったのです。例えば「np.meanのaxisってどうするの?」や「shapeが何だかわからない」というケース。そこをどうにかケアしようというのが今回の目的です。 NumPyの問題演習は昔からありまして、100 numpy exercisesが有名です。昔初心者の頃自分もやったことがあります。最初の方は良いのですが、あとの方
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
最近になって論文でたびたび目にする学習率のWarmupについて、CIFAR-10で実験してみました。その結果、Warmupを使うとバッチサイズの増加にともなう精度の急落を、ある程度緩和できることがわかりました。大きいバッチサイズで訓練したり、訓練を高速化したい場合は、このWarmupが非常に有効となるでしょう。 きっかけ Google I/O'19の講演を聞いていたら、学習率のウォームアップについて話していました。RetinaNetをTPUで訓練する話です。 曰く、「このケースではResNet50の訓練済みモデルを初期値として使い、レイヤーを固定せず、全てのレイヤーを訓練させる。大きいバッチサイズを使っているので、訓練済み係数が壊れてしまう可能性がある。学習の最初は低い学習率を使い、徐々にあげていくという学習率のコントロールを行う」(ビデオ39分付近)とのことです。 学習率のWarmup
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 自分が技術書典応援祭+技術書典8(+α)で買った技術系同人誌のなかでおすすめのものを書いていきたいと思います。データサイエンス、機械学習系が多めです。 買ったもの全部は書けなかったので、ここに書いていないのがおすすめではないというわけではないです。(最後以外は)全て自分で購入したものです。 A Primer on Adversarial Examples タイトル:A Primer on Adversarial Examples サークル:原理的には可能 著者:菊田遥平 ページ数:99ページ 電子版 https://techbookfe
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 3~4ヶ月かけてA4・195ページの薄くない薄い本を書きました。タイトルは『モザイク除去から学ぶ 最先端のディープラーニング』です。TensorFlow2.0全対応です。 Inpaintingとは 画像の一部を塗りつぶしてもっともらしく画像を復元するタスク。画像全体ではなく、白く塗りつぶした部分の生成を目標とします。 画像:https://github.com/JiahuiYu/generative_inpaintingより 関連: GLCICで無かったことにしたいアレコレ(GANを使った画像生成を Globally and Local
TensorFlow2.0とGoogle Colaboratoryの無料TPUを使って、DCGANを実装しました。 訓練経過の様子 pic.twitter.com/2qXowYMk6t — しこあん@『モザイク除去本』好評通販中 (@koshian2) October 21, 2019 何をやったか Google ColabのTPU+TF2.0でCelebA(約20万枚)をDCGANで生成 TF1.X系のTPUでは、同時に実行可能なグラフは1個の制約があったため、GANの訓練が容易ではなかった(こちらの記事にある通り、不可能であったわけではない。しかし、低レベルAPIが必須で決して容易ではなかった)。TF2.X系のTPUでは、もっと容易にGANを実装できた。 DCGANの論文通りのモデル(パラメーター数:G=12.7M, D=11.0M)で。64x64の画像20万枚を、1エポックを40秒程
TensorFlowのいろいろな書き方「Keras API」「Custom train loop」「Custom layer」についてMNISTの例を解説します。また、TF2.0+KerasでColab TPUを使った訓練方法も解説していきます1。 TensorFlow2.0での書き方 TensorFlow2.0の書き方は何種類かあります。Kerasの作者によるColab Notebookによると、 縦軸に注目してください。上に行くほど高レベルAPI、下に行くほど低レベルAPIとなります。各項目が何を表すかと言うと、 Built in training/eval loops : Kerasのfit()やevaluate()といった関数を使うものです。TF1.X時代のKerasとほぼ同じです。 Customized step-by-step loops : Kerasのfit()などを使わず
PandasでOne-HotベクトルをメモリケチるためにSparse行列(疎行列)として記録してGroupbyしたら値が消えて、1日分の処理丸々無駄にしまいました。疎行列のGroupbyで悲しい思いをする人が出ないように書いておきます。 環境:Pandas 0.23.4 Final 前置きが若干長いので、**†闇†**の部分だけ読みたい方は、「PandasのGroupbyとSparse行列の†闇†」まで飛んでください。 One-Hotベクトルとは あるカラムだけ1で他のカラムは0な行列の表現。カテゴリー変数でよく使います。古典的な統計の教科書では「ダミー変数」という言い方もします。PandasのOneHotベクトルを作る関数get_dummiesはこれが由来です。 例えば、3つのクラスがあったとして、それぞれ$0, 1, 2$としましょう。今データのラベルが、 $$y=(0,1,2,1,0
import tensorflow as tf import tensorflow.keras as keras import tensorflow.keras.layers as layers import numpy as np import os def conv_bn_relu(input, ch): x = layers.Conv2D(ch, 3, padding="same")(input) x = layers.BatchNormalization()(x) return layers.Activation("relu")(x) def create_network(): input = layers.Input((28, 28, 1)) x = conv_bn_relu(input, 32) x = layers.AveragePooling2D(2)(x) x = con
ディープラーニングのフレームワークを使って、アニメ本編から線画を生成します。ただし、一切訓練や訓練データを与えていません。アニメ1話分全4.3万フレームの線画化を1時間程度で終わらせることができました。 あらまし このようにアニメ本編から自動的に線画が生成できます。ディープラーニングのフレームワークを使うとできます。ただし、一切訓練をしていません。 OP https://t.co/52t0dFZNZL pic.twitter.com/7aCEJ9SkTc — しこあん@『モザイク除去本』(技術書典6)好評通販中 (@koshian2) 2019年7月1日 本編1 https://t.co/52t0dFZNZL pic.twitter.com/oicU8UPopS — しこあん@『モザイク除去本』(技術書典6)好評通販中 (@koshian2) 2019年7月1日 本編2 https://t
RTX 2080Tiを2枚使って頑張ってGPUの訓練を高速化する記事の続きです。TensorFlowでは複数GPU時に訓練が高速化しないという現象がありましたが、PyTorchを使うとRTX 2080Tiでもちゃんと高速化できることを確認できました。これにより、2GPU時はTensorFlowよりも大幅に高速化できることがわかりました。 前回までの記事 対決!RTX 2080Ti SLI vs Google Colab TPU ~Keras編~ TensorFlow/Kerasでchannels_firstにするとGPUの訓練が少し速くなる話 ハードウェアスペック GPU : RTX 2080Ti 11GB Manli製×2 SLI構成 CPU : Core i9-9900K メモリ : DDR4-2666 64GB CUDA : 10.0 cuDNN : 7.5.1 PyTorch :
RTX 2080Tiを2枚買ったので、どれぐらいの性能が出るかColabのTPUと対決させてみました。さすがにRTX 2080Tiを2枚ならTPU相手に勝てると思っていましたが、意外な結果になりました。 スペック GPU側 GPU : RTX 2080Ti 11GB Manli製×2 SLI構成 CPU : Core i9-9900K メモリ : DDR4-2666 64GB CUDA : 10.0 cuDNN : 7.5.1 TensorFlow : 1.13.1 GPUだけで30万円以上はします。2019年5月現在、ディープラーニングの環境構成としては相当強い部類です。GPUは1個250Wなので、GPU2枚をフルに動かしただけで500W近い電力消費が加算されます。 GPUの場合は、「ELSA GPU Monitor」を使って、GPUのロードや消費電力をモニタリングします(5秒ごとCSV
多クラス(Multi-class)分類は、複数のクラスに対して、各画像が1つのクラスに属する問題です。各画像が1つずつのクラスに属するのではなく、いくつかのクラスに属する場合を考えます。これを多ラベル(Multi-label)分類といいます。 多クラス分類の記事は多くあっても、多ラベル分類の記事はかなり少ないのでこれを見ていきます。 多クラス分類 vs 多ラベル分類 まずは多クラス分類から。これは単純で、クラスが複数(下の例の場合は4)あり、サンプルに対してどれかのクラス1つに対して割り当てるように最適化しなさいという問題。MNISTやCIFARなどはこれにあたります。 次は多ラベル問題ですが、クラスが複数あるというのは変わりないのですが、多クラス問題から「サンプルに対してクラスは1つ」という制約を取り除きます。つまり、サンプルに対してクラスを何個も割り当てて良いということになります。 今
Goodfellow先生が紹介していた面白い手法。シンプルかつ強力なCNNの計算コストの削減手法。精度も上がるらしい。サクッと実装できちゃったので試してみました。 OctConv is a simple replacement for the traditional convolution operation that gets better accuracy with fewer FLOPs https://t.co/5CSylHVdA2 pic.twitter.com/kTK96gNj1i — Ian Goodfellow (@goodfellow_ian) April 15, 2019 元の論文 Y. Chen, H. Fang, B. Xu, Z. Yan, Y. Kalantidis, M. Rohrbach, S. Yan, J. Feng. Drop an Octave: R
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? SQL初心者向けです。わかりそうでわからなかったSQL文を実戦形式で勉強できる素材を探していました。Paizaの記事(下記参照)で紹介されていたSQL Boltを試してみました。 初心者向け・SQLの練習問題をたくさん解ける学習サイトと本7選 http://paiza.hatenablog.com/entry/2018/01/22/%E5%88%9D%E5%BF%83%E8%80%85%E5%90%91%E3%81%91%E3%83%BBSQL%E3%81%AE%E7%B7%B4%E7%BF%92%E5%95%8F%E9%A1%8C%E
import tensorflow as tf from keras import layers from keras.models import Model import keras.backend as K from keras.optimizers import SGD from keras.applications import MobileNetV2 from keras.callbacks import LearningRateScheduler, ModelCheckpoint from keras.datasets import fashion_mnist import numpy as np from tqdm import tqdm from sklearn.metrics import euclidean_distances, roc_auc_score def cr
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? ざっくりいうと 学習率$B$とバッチサイズ$\epsilon$、モメンタムの係数$m$の間には関係があり、以下の2つの法則が成り立つ。 バッチサイズ$B$と学習率$\epsilon$は比例する($B\propto\epsilon$) バッチサイズ$B$とモメンタム係数$m$を1から引いた値は反比例する$B\propto \frac{1}{1-m}$ この式を元に異なるバッチサイズに対して効果的な学習率を決めたり、学習率を落とすのではなくバッチサイズを増やして学習の高速化ができるよというのが論文の主張。 元ネタ Samuel L. Smi
陰性のデータは1万件近く集めることができましたが、陽性のデータは100件しか集められませんでした。このように、陽性・陰性というクラス間でデータ数に明らかな偏りがあるケースを不均衡データ(inbalanced data)といいます。 不均衡データの問題点 評価上の問題 これは教科書的な問題で、「精度(Accuracy)が機能しない」という点です。例えば先程の例で陰性がデータ全体の99%なら、ありとあらゆるデータに対して陰性と判定($y=0$)する分類器を作れば、その時点で精度99%を達成してしまいます。 こんなイメージです。機械学習なんていらないですね。笑っちゃうかもしれませんが、実は機械学習を使っても「return 0」みたいな状態に最適化が向かうことがあります(後述)。 今最適化での解の問題はおいておくとして、あくまで評価上の問題なら、Precision, Recall, ROC曲線、F
import lightgbm as lgb import optuna, os, uuid, pickle from sklearn.datasets import load_breast_cancer from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score import numpy as np def train_optuna(): data = load_breast_cancer() X_train, X_test, y_train, y_test = train_test_split(data["data"], data["target"], test_size=0.3, random_state=19) def objectives(trial
画像や音声分類の汎化性能を向上させる目的で開発されたBetween-class Learning(BC-learning)というData Augmentationの効果をKerasで確かめます。「2つの画像を混ぜる」というアプローチを取るData Augmentationです。10層CNNでCIFAR-10に対して94.59%という素晴らしい性能を確認することができました。 BC-Learningとは? 2つの画像を混ぜるというData Augmetation。これにより、決定境界がより平滑化され、オーバーフィッティングが解消され、ValidationやTestでの汎化性能が向上する。 BC-learningのもともとの着想は音声認識からでした。人間でも、例えば英会話で2つの音を同時に聞くことで学習効率が向上する、というのは耳にします。2つの画像を混ぜても人間には特に意味はないかと思われま
Siamese Network+Triplet lossの論文として名高い「FaceNet」の論文を読んだのでその解説と実装を書いていきます。Train with 1000を使って実験もしてみました。 TL;DR FaceNetはある画像に対して、同一のクラス(人物)の画像、異なるクラスの画像の合計3枚の「Triplet」を作り、画像間の距離を学習する。 画像を特徴量のベクトルに変換し、プロットする一方で、k-Nearest Neighbor法の要領で未知の画像に対するクラスの推定もできる。またクラス数が後から追加されたり削除されたりするようなパターンでも、「画像間の距離」を学習しているため、新たに訓練する必要がなくロバストである。 行列の計算テクニックを使うことで、オンラインのTriplet選択が可能になり、計算量を大きく減らすことができる。 FaceNetをTrain with 100
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? Perfumeが紅白歌合戦でディープラーニングについて言及して話題になりましたが、それに関連する技術がGoogleのブログで公開されていたので再現してみました1。本来はColud Vision APIを使ったとのことですが、精度や速度を犠牲にすれば、普通のPCかつ1人でも実装できてしまいます。その方法を書いていきます。 訂正:Googleが使ったではなく、正しくはライゾマティクスに使っていただいただとのことです。失礼いたしました2。タイトルも訂正いたしました。 元ネタ こちらのブログに詳しく書かれています。 Perfume とライゾマテ
次のページ
このページを最初にブックマークしてみませんか?
『@koshian2のマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く