GENZITSU / UsefulMaterials

34 stars 0 forks source link

weekly useful materials - 10/26 - #74

Open GENZITSU opened 3 years ago

GENZITSU commented 3 years ago

AIカメラやエッジデバイスに組み込める20個のAIアルゴリズム集

AI Dynamics Japanの「Package20」は、AIカメラやエッジデバイスなどで動作する、画像認識アプリケーション用のAIアルゴリズム集である。人数のカウントやナンバープレートの読み取りなど、カメラ映像を画像解析するアルゴリズム20個で構成する。

ソラコムのAIカメラ「S+ Camera」にインストールして利用する形に限られる。その後、NVidia JetsonやRaspberry Piなどのエッジデバイスでも利用できるようになる。

価格: 9800円

スクリーンショット 2021-10-20 21 08 21

装備されているアルゴリズム。

スクリーンショット 2021-10-20 20 53 09

スクリーンショット 2021-10-20 20 53 20

コメント

エッジデバイスにどのような機能が装備されているかの参考事例となりそう。
段ボールや犬・猫・トラックなどの検知機能もあり、幅広いユースケースに対応しようという気概を感じる。

出典

元記事

GENZITSU commented 3 years ago

論文紹介 / It's About Time: A View of Crowdsourced Data Before and During the Pandemic (CHI 2021)

クラウドソーシングの結果が、時流の出来事に影響を受けるかどうかを調べた論文。
調査の結果、確かに影響を受けることが確認され、考えられる対策を述べている。

以下特徴的なスライドを抜粋

スクリーンショット 2021-10-20 21 57 06

スクリーンショット 2021-10-20 21 57 14

スクリーンショット 2021-10-20 21 59 07

スクリーンショット 2021-10-20 21 57 36

スクリーンショット 2021-10-20 21 57 47

スクリーンショット 2021-10-20 21 57 58

スクリーンショット 2021-10-20 21 58 03

スクリーンショット 2021-10-20 21 58 08

コメント

特にツイートなどの文書に対してトレンドの影響をもろにうけるデータに、アノテーションするときは意識しておくべきかもしれない。
考えられるバイアスを事前に取り除く努力などがいるかも。

出典

元記事

GENZITSU commented 3 years ago

The great attrition stems from a great disconnect

雇用主側が考える退職理由と被雇用者が考える退職理由にはギャップがありましたよという調査報告。

以下の図が示すように、 雇用主側は報酬やキャリア開発、ヘッドハンティングなどが理由と考えているが、
実態は、組織に認められているかや、所属意識、信頼できるチームなど、関係性に起因するものが大事だったりする。

スクリーンショット 2021-10-20 22 22 34

スクリーンショット 2021-10-20 22 22 41

コメント

こういうギャップがあるのは面白い。
働いていて心地よい環境づくりや関係性が大事なのかもしれない。

出典

元記事

GENZITSU commented 3 years ago

AI画像処理を用いたソーシャルプロジェクト 「TEHAI」が「2021年度グッドデザイン賞」を受賞 -指名手配被疑者の「過去の写真」から「今の姿」を予測-

株式会社電通デジタル(本社:東京都港区 代表取締役社長執行役員:川上 宗一 以下、電通デジタル)、ヤフー株式会社、PARTYと共同で警察庁から写真や情報提供などの協力を得て実施したAI(画像解析・⽣成技術)を⽤いて指名⼿配被疑者の現在の姿を予測するプロジェクト「TEHAI」

コメント

アイデアは面白いが実用的なのかどうかは大いに怪しい。

出典

元記事

GENZITSU commented 3 years ago

富士通、防犯カメラ画像から位置や角度を算出して対象人物の身長を推定する技術

夜間など鮮明ではない防犯カメラの映像から人物を特定するための技術を開発したと発表した。移動中の人物を同じカメラで撮影した複数枚の画像から、カメラの位置、角度、焦点距離を算出し、対象人物の身長を推定する仕組み。これにより、長さの基準となるものが映り込んでいない場合でも身長を推定し、対象人物の特定を可能にする

スクリーンショット 2021-10-21 23 13 22

長さの基準となるものが映り込んでいない場合でも人物の身長を推定可能な、マーカーレスな人物照合技術を開発した。同社のAI技術「行動分析技術Actlyzer」によって認識した人物の骨格情報を活用し、映像の中で常に同じ身長になるようにカメラの位置や設置角度を導出する仕組み

スクリーンショット 2021-10-21 23 14 36

コメント

同じようなアイデアが別プロジェクトでも使えそうだ。

出典

元記事

GENZITSU commented 3 years ago

論文紹介: An Audit of Misinformation Filter Bubbles on YouTube: Bubble Bursting and Recent Behavior Changes (RecSys 2021)

youtubeのすの推薦アルゴリズムの検証をbotで行い、フィルターバブルから抜け出すことが可能かを議論した論文。

スクリーンショット 2021-10-27 17 54 47 スクリーンショット 2021-10-27 17 54 30

コメント

botを使用して、推薦システムを検証するというアイデアが面白い。

出典

元記事

GENZITSU commented 3 years ago

Linuxで90日前の日付をYYYYMMDDの形式で得る方法

DATE=`date -d '90 days ago' '+%Y%m%d'`;
echo $DATE;

macの場合は

DATE=`date -v-90d +%Y%m%d`;
echo $DATE;

コメント

定期実行処理をする際に便利そう。

出典

元記事

GENZITSU commented 3 years ago

ThilinaRajapakse / simpletransformers

haggingface transformersをさらに使いやすくしたライブラリ。

使用例 モデルをinitializeして、train_modelしてeval_modelするだけでよい

# Preparing eval data
eval_data = [
    ["Theoden was the king of Rohan", 1],
    ["Merry was the king of Rohan", 0],
]
eval_df = pd.DataFrame(eval_data)
eval_df.columns = ["text", "labels"]

# Optional model configuration
model_args = ClassificationArgs(num_train_epochs=1)

# Create a ClassificationModel
model = ClassificationModel(
    "roberta", "roberta-base", args=model_args
)

# Train the model
model.train_model(train_df)

# Evaluate the model
result, model_outputs, wrong_predictions = model.eval_model(eval_df)

# Make predictions with the model
predictions, raw_outputs = model.predict(["Sam was a Wizard"])

Named Entity Recognitionの使い方も簡単で以下のようにデータを渡してあげるだけでよい。

# from https://github.com/ThilinaRajapakse/simpletransformers/blob/master/examples/named_entity_recognition/named_entity_recognition.py

# Creating train_df  and eval_df for demonstration
train_data = [
    [0, "Simple", "B-MISC"],
    [0, "Transformers", "I-MISC"],
    [0, "started", "O"],
    [0, "with", "O"],
    [0, "text", "O"],
    [0, "classification", "B-MISC"],
    [1, "Simple", "B-MISC"],
    [1, "Transformers", "I-MISC"],
    [1, "can", "O"],
    [1, "now", "O"],
    [1, "perform", "O"],
    [1, "NER", "B-MISC"],
]
train_df = pd.DataFrame(train_data, columns=["sentence_id", "words", "labels"])

コメント

NERタスクはデータ整形部分が結構大変なので、ここまで簡単に訓練できるようになるのは大きい。

出典

github

docs

GENZITSU commented 3 years ago

PyTorch 1.10の新機能「CUDA Graphs」のパフォーマンスを測定してみる

CUDA GraphsはCUDA 10で追加されたCUDAの機能の一つで、複数のCUDA Kernelの実行にかかるオーバーヘッドを減らすための機能です。

基本的には依存関係表すことができるグラフにCUDA Kernelを登録して、依存関係を考慮して順番にCUDA Kernelを実行するという仕組みです。このCUDA Graphsを通して実行すると普通にCUDA Knernelを実行するのに比べてCUDA Kernelの実行オーバーヘッドを減らすことができます。

使い方

このnotebookに詳しく書かれている。

コードを20行ぐらい書く必要がある。

制約

また、ディープラーニングにおいてすべてのレイヤーがグラフに登録できるものでなかった場合、ネットワークの一部部分だけグラフを構築する方法も用意されています。

入力のtensorのshapeが変えられないなど制約がいくつかあります。詳しくはこちらをご覧ください。

パフォーマンス比較

計算処理がシンプルなGELUではあまりゲインがないが、Linear + Dropoutで構成されるモデルであれば3倍程度早くなる模様。

スクリーンショット 2021-10-24 18 16 08 スクリーンショット 2021-10-24 18 15 30

コメント

イメージ動的な計算グラフを静的にして高速化するかんじなのだろうか?
なんにせよ高速化テクが増えるの嬉しい。

出典

元記事

pytorch公式

実験結果

GENZITSU commented 3 years ago

現状では、量子コンピュータを使っても特に高速に組合せ最適化問題や量子化学計算、機械学習は解けない件

特に誇大広告として語られてしまっているのが、 1,組合せ最適化問題(誇大広告度大) 2,量子化学計算(誇大広告度中) 3,量子機械学習(誇大広告度小) の三種類となっています。実際には今の量子コンピュータではこれらの問題を効率的に解くことはできません。では、なぜ今量子コンピュータが注目されているのでしょうか?それは、10年後20年後を見据えてということになっています。今後を見据えて時間がかかるので、今から今後万が一より強力な量子コンピュータが出てきたときのために準備しましょうということです。

組合せ最適化問題も量子化学計算も高速には計算できないことが分かり、現在に至ります。量子機械学習も試されていますが、今のところ高速性は特に発揮されていません。

やはりすぐには使えない。10-20年はかかると覚悟をして学習や中長期の研究計画を立てるということでしょう。多くの企業は実用化をあきらめてこのような方針を取り始めています。

コメント

量子コンピュータの正しい現状がわかる良記事。

出典

元記事

GENZITSU commented 3 years ago

遠隔授業のスライドを自動でスクリーンショットする裏技

pyautoguiのスクリーンショット機能と画像の差分を用いて、画面のスクリーンショットを自動で撮るプログラムの紹介。

コメント

目の付け所が面白い。

出典

元記事

GENZITSU commented 3 years ago

[Python] プログラムの実行パフォーマンスを計測する

1. timeコマンド

mac / linux限定になるが、以下で測定可能

time python3 hoge.py

2. datetimeモジュール

以下のようなTimerコンテキストマネージャーを作るのもあり

# from https://www.yoheim.net/blog.php?q=20171005

from datetime import datetime

# 実行時間を計測するためのユーティリティ
class Timer(object):
    def __enter__(self):
        self.start = datetime.now()
    def __exit__(self, *exc):
        diff = (datetime.now() - self.start).microseconds / 1000
        print("time: {}ms".format(diff))

3. line_profilerの使用

# from https://www.yoheim.net/blog.php?q=20171005

$ kernprof -l -v perf3.py 
Wrote profile results to perf3.py.lprof
Timer unit: 1e-06 s

Total time: 0.874731 s
File: perf3.py
Function: get_images at line 12

Line #      Hits         Time  Per Hit   % Time  Line Contents
==============================================================
    12                                           @profile
    13                                           def get_images():
    14         1            4      4.0      0.0      images = []
    15        11           35      3.2      0.0      for index in range(500, 510):
    16        10       282544  28254.4     32.3          with urlopen("http://www.yoheim.net/image/{}.jpg".format(index)) as res:
    17        10       592147  59214.7     67.7              images.append(res.read())
    18         1            1      1.0      0.0      return images

4. memory_profilerの使用

# from https://www.yoheim.net/blog.php?q=20171005

Filename: perf4.py

Line #    Mem usage    Increment   Line Contents
================================================
    12   38.965 MiB    0.000 MiB   @profile
    13                             def get_images():
    14   38.965 MiB    0.000 MiB       images = []
    15   44.242 MiB    5.277 MiB       for index in range(500, 510):
    16   43.980 MiB   -0.262 MiB           with urlopen("http://www.yoheim.net/image/{}.jpg".format(index)) as res:
    17   44.242 MiB    0.262 MiB               images.append(res.read())
    18   44.242 MiB    0.000 MiB       return images

コメント

2017年記事だが、網羅性のある良記事

出典

元記事

GENZITSU commented 3 years ago

マスク着用時にも認証可能な顔認識モデルを作成した話

マスク着用時でも顔認識をうまく機能させるため行った取り組みの紹介。 昨年よくみたアプローチではあるが、顔画像にマスクを人工的に後付けすることでデータを作成し、モデルの学習を行っている。

これを発展させた取り組みがMask Face Recognitionというコンペで3位に入賞しているようで、以下のように作成したとのこと。

employed ArcFace [15] to train a ResNet model. A1 Simple applied MaskTheFace [3] method to synthetically generate masked face images in the training dataset- MS1MV2. A1 Simple is trained with cosine annealing LR scheduling to adjust the learning rate. In the evaluation phase, A1 Simple used the provided landmark facial point and bounding box in the MFRC-21 to align and crop the face image to 112×112. The feature embedding of the presented solution is of size 512-D. The model is trained with ArcFace loss. During the training phase, three data augmentation methods are used- random resized crops, random horizontal flip, and color jittering.

ブログ中ではawsのface recognition serviceよりもマスク画像に対して好成績をとっているという記載がある。

コメント

わりとオーソドックスな手法で、ちゃんと性能が上がっているのがすごい。

出典

元記事

論文

GENZITSU commented 3 years ago

AI搭載のドラレコで道路点検 三井住友海上、自治体向け

三井住友海上火災保険が、AI 技術を搭載したドライブレコーダーを使い、道路の損傷を自動検知するサービスを12月に発売することが26日、分かった。自治体の道路点検業務の効率化につなげる。

スクリーンショット 2021-10-26 19 43 17

コメント

MoT社との動向が気になる。

出典

元記事

GENZITSU commented 3 years ago

鶏肉加工にもAI自動化の波 リサイクル部位の7割を唐揚げ用に──ニチレイの食品ロス削減術

同社ではこれまで、唐揚げなどの材料となる鶏肉を検査し、血合いを取り除く工程を、工場員の目視と手作業に任せていた。しかし従来の手法では端材が増えやすくフードロスにつながる他、工場員の負担にもなることから、画像認識AIを活用して自動化。食用にできず飼料や肥料にリサイクルしていた鶏肉を7割減らせたという。

ニチレイが開発したシステムでは、これまで目視と手作業で行っていた一連の工程を、(1)鶏肉を目視で確認する、(2)血合いの位置や有無を判断する、(3)実際に手で取り除く──という作業に分解。それぞれを自動化することで、フードロスの削減やスピードアップにつなげているという。

肉は形状が不安定で影ができやすく、血合いとそれ以外の色の違いもあいまいで、誤検知を起こしやすい。しかし、ディープラーニングなどを使って判断するとそういったあいまいな部分も判別できることが分かり、AIの活用を決めた

コメント

AIで検出した結果に応じて、その後処理のが自動で行えるようになっている点が素晴らしい。
工数7割減という大きな成果も注目に値する。

出典

元記事

GENZITSU commented 3 years ago

ハイフンに似ている横棒を全て統一するᅳㅡ˗𐆑–᭸‒-─−▬𐄐—━‐‑ー﹣―ー﹘-⁃➖⁻!

地味に見た目が似ているが、記号としては異なる横棒を全て統一するためのスクリプトが載っている。

# from https://qiita.com/non-caffeine/items/77360dda05c8ce510084

import re

def replace_hyphen(text, replace_hyphen):
    """全ての横棒を半角ハイフンに置換する
    Args:
        text (str): 入力するテキスト
        replace_hyphen (str): 置換したい文字列
    Returns:
        (str): 置換後のテキスト
    """
    hyphens = '-˗ᅳ᭸‐‑‒–—―⁃⁻−▬─━➖ーㅡ﹘﹣-ー𐄐𐆑'
    hyphens = '|'.join(hyphens)
    return re.sub(hyphens, replace_hyphen, text)

コメント

使う機会がありそうなのでメモ。

出典

元記事

GENZITSU commented 3 years ago

Python Notebooks for Fundamentals of Music Processing

Pythonで音楽を処理するための方法をstep by step notebook形式でstep by stepで学ぶことが可能。

スクリーンショット 2021-10-27 17 57 50

コメント

有用そうなのでメモ

出典

元記事