アプリとサービスのすすめ

アプリやIT系のサービスを中心に書いていきます。たまに副業やビジネス関係の情報なども気ままにつづります

機械学習

自作DPUをultra96v2で動かすまでの備忘録【Vitis-AI, hardware】

FPGA上でディープラーニングを動かすとき背後でDPUというものが動いていて、DPUないとFPGA上でディープラーニングが動かせない。今回はDPU IPコアから自作DPUを作って、ultra96v2上で動かすまでの備忘録をまとめた。 目次 1.DPUのデザインblockをvivadoで作…

Vitis-AIを使ってultra96v2上で学習済みモデルを動かすまで【hardware, FPGA, AI】

今回はultra96v2上で学習済みモデルを動かしてみる。この作業がすんなりできれば、論理回路の高位合成とか組み込み部分を除けば、学習済みモデルを作れればドローン制御、自動運転の制御とかいろんなことの礎になる。本家サイト「Ultra96V2向けVitis AI(2019…

PytorchのTransformerでテキストからの音声生成(TextToSpeech)をやってみた【機械学習】

今回はTransformerを改造して、文章から音声を生成してみた。俗に言う、エンコーダ・デコーダ形式のモデル。 プロセスが長くなりそうなので、要点だけ備忘録もかねてまとめようと思う。 目次 1.Transformer-TextToSpeechとは? 2.テキスト前処理 3.Transform…

強化学習で「手押し井戸ポンプ」で水をくむ動作をArduino Unoに学習させる【AI・Hardware】

「手押し井戸ポンプ」は、昔から田舎で使われてる「井戸から手動で水をくむポンプ」のこと(Amazonでも売ってる)。「手押し井戸ポンプ」の水をくむまでの大まかな動作は「押す(down)=>水をくむ(push pump)=>あげる(up)」の行動パターンを、シーソーのご…

webカメラ+Arduino Uno+CNN画像分類(AI)でカギの開錠・施錠システムを作ってみた【hardware,機械学習】

今回はArduinoに機械学習(AI)を埋め込んで、webカメラから読み込んだストリーミング画像の画像分類結果からカギを解錠・施錠できるシステムを作ってみた。機械学習(AI)をハードウェアで実際に取り込んで作ったのはVitis AI以来、今回がはじめて。Arduino系…

VirtualboxでwebカメラのストリーミングからYolov3のreal-time物体検出まで【hardware, AI】

VirtualbBox内でwebカメラを使って動画をスクリーミングしてみた。 またそのストリーミング動画を使ってyolov3のreal-timeの物体検出をやってみようとした。 けど、cudaのインストールが必要らしく、VirtualBox内ではcuda(とマッチするnvdiaドライバー)が…

Ultra96v2高速化の行列乗算IPの作り方とvivadoシュミレーションのやり方まとめ【FPGA,hardware,AI】

ultra96v2でyolov3の高速化をする必要が出てきたので、今回はそのコアになる浮動小数点行列乗算をvivadoで作成してハードウェア(XSAファイル)として出力するまでの流れをまとめた。yolov3高速化の詳細はこちらに簡単に乗ってる。ちなみにテストベンチのシュ…

GKEのkubenetes上でflaskを動かし、curlでPOSTした画像の予測結果を受け取る【機械学習】

flaskで機械学習の学習済みモデルを入れてkubenetes上で動かしてみた。curlで投げて、予測結果を受け取る形式だけど、envoyとかスケーラビリティも意識した構成になってる。kubenetes上での flask動作環境 目次 1.flaskアプリケーションの作成 2.Docker上でf…

PetaLinux上からultra96v2ボードでYolov3の物体検出【FPGA, hardware, AI】

前の記事「Vitis,Petalinuxのインストールから、Vivadoの起動まで【FPGA】-VitisPlatform作りpart2」でVivado, vitis, Petalinuxの環境構築をした。 PetaLinuxの環境構築をしておくことで、linux(PetaLinux)上から直接、ultra96ボードにアクセスできるらしい…

強化学習で三目並べ版の「AlphaZero」を作ったのでその仕組みまとめ【機械学習】

DeepMindが作った世界最強のゲームAIに使われているアルゴリズムが「AlphaZero」の仕組みを利用して、今回は「三目並べ」というゲーム版のAlphaZeroを作ってみた。今回は備忘録として「三目並べ版-AlphaZero」の仕組みを淡々とまとめていく。 目次 1.AlphaZe…

Efficient-Unetで天気画像の予測(パターン認識)リベンジ【機械学習】

今回はこの前の記事で書いた「signateの天気コンペ」の優勝者(天気の専門家ガチ勢)が実装したモデルを、既存のデータでも予測できる構成で個人的に作ってみた。 convLSTMを使わずにUnetにしたのは「予測」タスクではなく、「パターン認識」タスクにしたか…

学習済みのYOLOv3でオリジナルデータに転移学習(finetune)【物体検出】

オリジナルのデータセットにYOLOv3を使って物体検出した。 一から学習せずに、COCOデータセットの学習済みYOLOv3で転移学習してみたのでその備忘録 目次 1.オリジナルデータセットのclasses.txtと学習済みモデルの作成 2.訓練 3.学習結果 1.オリジナルデータ…

HOG+Adaboostで物体検出(object detection)【機械学習】

HOGとの組み合わせはSVMが有名だけど、今回はSVMじゃなく「HOG+AdaBoost」を使った。どっちも精度は同じくらいだけど、AdaBoostの方が2回目以降精度が増すし、汎用性が高いのが特徴。 目次 ・訓練データ・テストデータの収集 ・前処理 ・HOG+AdaBoostで物体…

GitでPR(pull request)を投げるまでと、チームでgitでのコード管理ログ

gitコマンドでbranchを作成してPR(Pull Request)を投げるなど、チームでコード管理したのでその備忘録。 git cloneしてPRを投げるまでの branchの流れ 目次 1. PRを投げるまで 2.PR作成作業 3.キレーなコードの書き方PRを投げるまで # コンソールのコマンド…

sagemakerのセグメンテーションを使って物体の長さを測るモデル構築から、運用MLops構築までの記録【機械学習、AWS】

今回取り組んだプロジェクトは、・sagemakerの組み込みアルゴリズムのセグメンテーションを使って、物体の長さを求めるモデルの作成・CloudFrontで作ったフロント側から画像をPOST→lambda関数→sagemaker→推論→長さ測定→結果を表示する流れのMLops構築 の2つ…

AWSでCloudFrontからlambdaとsagemakerを通り、推論結果を受け取るMLopsの構築【機械学習】

前回作ったCloudFrontのサーバからlambdaにアクセス、sagemakerのエンドポイントから推論結果を受け取り、表示するまでのMLopsをAWSで作成した。 CloudFrontも含めたMLops全体像 今回の推論部分のMLops その備忘録&作業手順をまとめてく。 目次 ・Serverles…

CloudFrontからS3にuploadしたコンテンツ(サイト)にアクセスする手順まとめ【AWS】

s3にuploadしたコンテンツ(html, css, javascriptで構成したwebUIのコード)にアクセスする手順をまとめた。これで、S3バケット上のコンテンツを、シンプルにCloudFrontのみからアクセスできるように設定できる。なので、node.jsとか余計なサーバを用意せず…

Unetを使った海氷領域セグメンテーションコンペの記録【機械学習】

SARという特殊な衛星画像から海氷領域を見つけるsignateのコンペで、その技術・やったこと等のログ。 コンペデータ構成画像 ・train画像:hh 80枚、hv80枚、アノテーション画像80枚 ・Test画像 hh 40枚、hv 40枚、アノテーションなし ラベル構成 ・Not sea i…

prednetで未来の画像予測、天気画像の予測コンペのログ【機械学習、python】

signateの雲画像予測コンペに初参加したので、そのログ。 個人の備忘録と技術メモのつもりで簡単にやったことつづってきます。まず結果は17位。1位との精度差は10%くらいだった。初参加にしては上々なできかな。レベル高くて驚いた。コンペのデータ構成デー…

anoGANで画像の高精度の異常検知(anoGAN, metric learning, VAE) 【機械学習】

今回は画像から異常を検知するタスクをやった。データセットはドイツの異常検知コンペのデータセット「DAGM 2007」。人が人為的に微細な傷をつけたかなりガチの異常検知用データセット。 精度出すのにやった過程とかを備忘録も兼ねてまとめてく。 目次 1.や…

BERTで6感情の感情分析モデルを作ってみた【機械学習、自然言語処理】

画像と違って文章から感情を予測すること(emotion prediction from text)は未だ自然言語処理(NLP)界隈では、うまくいった事例が少ない。特に、単純なネガポジ判定ではなく、6感情(怒り、驚き、幸せ、嫌悪、恐れ、悲しみ)を分析する感情分析は、研究が…

自然言語処理タクスでよく使うAttentionの出力のAttention weightを可視化してみた【機械学習】

Attentionといえば、すでに自然言語処理モデルではなくてはならない存在。 メカニズムは割愛。別名で注意機構とか呼ばれる。Attentionの仕組みは、(個人的に理解してる範囲では)簡単に言うと以下のポイントがある。・人間が特定のことに集中(注意)する仕…

日本語版keras BERTのfine tuningでlivedoorニュースのトピック分類

今回は日本語版keras BERTで、自然言語処理用の公開データセット" livedoorニュースコーパス "のトピック分類をしてみた。前回の記事で、英語版のkeras BERTでネガポジ判定をしたが、日本語版はやったことなかった。 テキストの前処理→日本語版keras BERT読…

学習済み英語版keras BERTのfine tuning(転移学習)でネガポジ判定の2値分類をしてみた【機械学習・自然言語処理】

googleの自然言語処理の高性能モデルBERTを使ってfine tuning(転移学習)をやった。BERT用のデータセットではなく、一般に公開されてるIMDBデータセット(映画レビュー)を使用。 2値分類用にBERTモデルを再構築して、ネガポジ判定したので、その過程をまてめ…

高性能版GANの「styleGAN」で本物そっくりの画像を生成してみた【keras・機械学習】

今回は論文で紹介されてたNVIDIAが開発したstyleGANを実装してみた。普通のGANとは生成過程も違うし、生成画像の出来の精度も比較にならないぐらい高くて、驚いた。 仕事で使う機会があったので、その生成過程をまとめてく。 目次 1.styleGANについて 2.styl…

Unet(Auto encoder)でスニーカー画像からロゴを生成してみた【機械学習】

よく元画像から別の画像を生成したりするのに使うautoencoderの亜種「Unet」を使ってみた。 今回やるのはadidasのスニーカーを入力して、ロゴを出力するように学習させるタスク。autoencoderを使うのは初めてなので、作業過程などをまとめてく。目次 1.概要 …

circleCIとgithubを連携して、簡単にコードをGCRにpushできるようにしてみた

コードとかの管理ツールとして、circleCIを使っている。というのもcircleCIを使えば、コードを書き換えて、githubにuploadすれば、circleCI経由で勝手にGCRにDocker imageがpushされるから。簡単に言うと便利すぎるから使ってる感じ。今回、githubとcircleCI…

Terraform × ApexでLambdaとCloudwatchログのスケジュールを管理してみた【機械学習・AWSインフラ】

Terraformが人気のインフラ管理ツールということで是非習得したかったので、TerraformとそのラッパーのApexを使って、LambdaとCloudwatchログのスケジュール管理をしてみた。Apexを使えばLambda管理がラクにできるので、運用をイメージしてTerraformでlambda…

Node.jsでサーバを構築し、Tensorflow.jsでCNNの画像分類してみた【機械学習・Javascript】

今回はgoogle colaboratory(colab)で訓練したCNNの訓練済みモデルとtensorflow.jsを使い、Node.jsのサーバ上で画像分類してみた。Node.jsを使ってjavascript用のサーバを立てたり、javascriptを使ったりと学ぶことが多かった。colab上で訓練→javascript上でm…

大容量データの音声認識(CNN)をCPU上でやった作業ログ【機械学習・ディープラーニング】

今回は音声認識のデータセット「ESC-50」をCNNで分類した。特にこだわったのが、GPUでも普通にやったらOOMエラーが出るくらいの大容量のデータセットを、kerasのfit_generatorメソッドを使ってCPU上でもできるようにしたこと。あとは音声認識は触れたことな…