LoginSignup
11
8

ChatGPT追加) CLIPを用いた画像のテキストによる説明と、その発展可能性に関する試行 (オントロジー・知識グラフの代替可能性?.画像を介する文章ベクトルの適正化とラベルなし解像度変換、婉曲表現変換の可能性? 今後はstable diffusionをベースとして) ついで,ChatGPT APIなど組み合わせた自動学習ロボット作成への興味

Last updated at Posted at 2021-06-04

きっかけと概要

  • textとimageの適切な橋渡し、CLIP技術が公開された。

  • CLIPにより、textが備える概念が適切にimageへと転移できているならば、imageからtextへの変換、imageのtextによる説明も、より適切にできるのではないか、と興味を持った。

  • もしこれができるのであれば、自らの興味の一つである「文章を読まず概要理解する」につながる技術となる可能性があるのかもしれない。かもしれない。

  • また,特許からその特許を実施した製品を検索することは難しいわけだが、これは特許が製品の一投影、一つの視点における影に過ぎないから、とも言える。もし、この影に、(言い換え、解像度変換、婉曲表現変換など行い)適切な肉付けができるなら、特許から製品をより適切に検索することも可能だろう。画像変換を経ることにより、それが可能となれば面白い。(製品に限らず文献などでもよいが)(抽象型文章生成と変わらないかもしれないけれど、画像生成を介すと生成分布が規定できる感覚がある)

  • literature-based discoveryっぽいことができると面白い。

  • オントロジー・知識グラフは,作成に時間がかかり,繋がりは強固だが一般化されすぎていることもあるところ,web上から知識を形成したCLIPが,オントロジーや知識グラフの代わりとなるなら面白い.(特許SDI用AIでは知識グラフの適用をしているが,CLIPのような技術で置き換えるのも面白いかとは感じている.CLIPは個の認知の代わりにはならないだろうけど.)
    *Symbolic Knowledge Distillation: from General Language Models to Commonsense Models
    https://arxiv.org/abs/2110.07178
    GPT-3 から常識抽出,知識グラフを作成

→・202207関連文献の公開あり
Exploring CLIP for Assessing the Look and Feel of Images
https://deepai.org/publication/exploring-clip-for-assessing-the-look-and-feel-of-images
「〜特に、CLIPはプロンプトの選択に敏感であることが知られており [41]、知覚は抽象的な概念であり、特に画像の感触については標準的な形容詞がない。また、言語的な曖昧さ [23](例えば、「きれいな画像」はノイズのない画像を指す場合と、掃除の動作に関連した画像を指す場合がある)は、知覚評価に重大な影響を与える可能性がある。その結果、このタスクにおけるCLIPの性能は、プロンプトの選択の違いによって非常に不安定になる可能性がある。
本研究は、知覚評価という困難かつ有意義なタスクにおけるCLIPの可能性を調査する最初の試みである。
我々は、言語的な曖昧さによる潜在的な曖昧さを最小化するために、プロンプトの選択について掘り下げることから調査を開始する。この目的のために、我々はプロンプトのペアリング戦略を導入し、反意語のプロンプトをペアで採用する(例:「良い写真」と「悪い写真」)。この手法により、CLIPはタスクに依存しない視覚認識評価に適用可能であることを示す2 。品質知覚に関しては、CLIPが "good "と "bad "をプロンプトとして用いるだけで画像の全体的な品質を評価できることを示し、一般的なIQAデータセット[8, 10, 15]において人間の知覚と高い相関を達成することを実証する。さらに、明るさやノイズの有無など、きめ細かい品質を評価するCLIPの能力を調査する。一般的な復元ベンチマーク[4,43,55,57]や、きめ細かい属性を用いた合成データに対してCLIPを適用し、CLIPが画像のきめ細かい品質を判断できることを示す(図1-(a))。また、CLIPの汎用性は、抽象的な知覚への拡張からも見て取れる。特に、画質に関するプロンプトを抽象的な属性(例えば、「嬉しい」「悲しい」)に置き換えた場合にも、CLIPは優れた性能を発揮する。CLIPは、美的ベンチマーク[35]とそれに対応するユーザスタディを行った結果、人間の知覚に従って、異なる感情を持つ画像を区別することに成功した(図1-(b))。このように、CLIPは様々な視覚タスクで成功を収めており、我々の研究は時宜を得たものであると考えています。画像評価には、強力で汎用性の高い手法が不可欠です。この方向性に関する最初の研究として、我々は、慎重に設計されたプロンプトペアリング戦略を用いてCLIPを画像評価に直接適応させることから始め、その後、CLIPの能力境界を調べるための広範な実験を行う。我々は、CLIPが画像の見た目だけでなく、感触も満足に評価できることを示す。さらに、CLIPのタスクにおける限界を分析し、議論することで、今後の研究を触発する。」

環境

基本的に
Windows10
Python 3.7
tensorflow == 2.4.1
torch == 1.7.1+cpu
DALL-E == 0.1
のnon-CUDA環境を用いるが、

現実的な処理速度を得るにはまたはCUDA必須である場合には、次の環境とした。
Google Colab(Pro)
Python 3.7.10
CUDA Version: 11.2
tensorflow == 2.5.0
torch == 1.8.1+cu101 *CLIPを使用するには1.7.1とする必要がある→githubのreadmeに記載はないが制限が解除されているかもしれない。

参考。というかほとんど

openai/CLIP
https://github.com/openai/CLIP
https://openai.com/blog/clip/
CLIP (Contrastive Language-Image Pre-Training) is a neural network trained on a variety of (image, text) pairs.
*non-CUDA可

・HuggingFace transformers CLIP
https://huggingface.co/transformers/model_doc/clip.html
*まだ試していない

openai/DALL-E
https://github.com/openai/DALL-E
https://openai.com/blog/dall-e/
This is the official PyTorch package for the discrete VAE used for DALL·E.
*non-CUDA可

・Thoughts on DeepDaze, BigSleep, and Aleph2Image
https://rynmurdock.github.io/2021/02/26/Aleph2Image.html
Aleph2Image uses the VQ-VAE discrete decoder from DALL-E.
*non-CUDA可

・lucidrains/big-sleep
https://github.com/lucidrains/big-sleep
A simple command line tool for text to image generation, using OpenAI's CLIP and a BigGAN.
*non-CUDA不可
*BigGANは動物種の生成が得意とされている。特に犬の特徴が生成されやすいとのこと。

・Tour of the Sacred Library
https://moultano.wordpress.com/2021/07/20/tour-of-the-sacred-library/
Genera imágenes desde frases de texto con VQGAN y CLIP (método z+quantize con augmentations).
https://colab.research.google.com/drive/1go6YwMFe5MX6XM9tv-cnQiSTU50N9EeT?fbclid=IwAR30ZqxIJG0-2wDukRydFA3jU5OpLHrlC_Sg1iRXqmoTkEhaJtHdRi6H7AI#scrollTo=CppIQlPhhwhs

追加
・FuseDream
https://github.com/gnobitab/FuseDream
FuseDream uses pre-trained GANs (we support BigGAN-256 and BigGAN-512 for now) and CLIP to achieve high-fidelity text-to-image generation.

openai/glide-text2im
https://github.com/openai/glide-text2im
GLIDE:テキストからの画像生成と画像編集.

ほか,「補足: 続々と追加される様々なtext-to-image技術」参照

試行

入力テキスト

例えば、

input_text = """human in the loop"""

 

text-to-image:テキストからの画像生成

例えば、
image.png
 

image-to-text:生成画像のテキストによる説明(現状は単語による説明)

  • CLIPのGithubにあるサンプルコードZero-Shot Predictionを改変。
  • CIFAR-100 datasetの100分類(語彙)を、NGSL単語の約2800語彙に拡張。

#CLIPのインストール
import subprocess
CUDA_version = [s for s in subprocess.check_output(["nvcc", "--version"]).decode("UTF-8").split(", ") if s.startswith("release")][0].split(" ")[-1]
print("CUDA version:", CUDA_version)
if CUDA_version == "10.0":
    torch_version_suffix = "+cu100"
elif CUDA_version == "10.1":
    torch_version_suffix = "+cu101"
elif CUDA_version == "10.2":
    torch_version_suffix = ""
else:
    torch_version_suffix = "+cu110"
!pip install torch==1.7.1{torch_version_suffix} torchvision==0.8.2{torch_version_suffix} -f https://download.pytorch.org/whl/torch_stable.html ftfy regex
#Google colab使用時、ランタイムの再起動が必要かもしれない。
! git clone https://github.com/openai/CLIP.git
%cd /content/CLIP/

import os
import clip
import torch

import matplotlib.pyplot as plt
from PIL import Image
import numpy as np

# Load the model
device = "cuda" if torch.cuda.is_available() else "cpu"
print(device)
model, preprocess = clip.load('ViT-B/32', device)


#画像入力
image = Image.open("/content/3.png").convert("RGB")
plt.imshow(np.array(image))

image_input = preprocess(image).unsqueeze(0).to(device)


#カテゴリをNGSLに変更
!wget -P /content/ http://www.newgeneralservicelist.org/s/NGSL-101-by-band-qq9o.xlsx
import pandas as pd
df_ngsl1 = pd.read_excel('/content/NGSL-101-by-band-qq9o.xlsx', header=None, sheet_name=[0,1,2])
ngsl_catlist = []
for i in range(3):
    ngsl_catlist += df_ngsl1[i].iloc[:,0].values.tolist()
ngsl_catlist += []#任意の語彙追加

text_inputs = torch.cat([clip.tokenize(f"a image of {c}") for c in ngsl_catlist]).to(device)#表現を変更


# Calculate features
with torch.no_grad():
    image_features = model.encode_image(image_input)
    text_features = model.encode_text(text_inputs)

# Pick the top 20 most similar labels for the image
image_features /= image_features.norm(dim=-1, keepdim=True)
text_features /= text_features.norm(dim=-1, keepdim=True)
print(image_features.shape, text_features.shape)
similarity = (100.0 * image_features @ text_features.T).softmax(dim=-1)
values, indices = similarity[0].topk(20)

# Print the result
print("\nTop predictions:\n")
for value, index in zip(values, indices):
    print(f"{ngsl_catlist[index]:>16s}: {100 * value.item():.2f}%")

例えば、
input_text = """human in the loop"""
とした場合の生成画像と説明は
image.png

意味深
右が前の青いケンタウロスのように見えていたが、左が前の腰回りに何かが絡みつき引きづられるヒト、とみなすべきなのかもしれない。
これは"human in the loop"の概念なのか、"human" in "the loop"の概念なのか。
 

気を取り直して他の例、
input_text = '''Clip art of a man in a red car'''
とした場合の生成画像と説明は
image.png
画像から赤い車に乗るヒトと読み取れなくもない。説明語彙はred, carで正しい。
 

さらに他の例、
input_text = '''寺'''
とした場合の生成画像と説明は
image.png
説明語彙に'temple','寺'を追加している。
どのように判断すべきか悩みどころ。画像から寺と読み取れなくもない。説明語彙は日本語の'寺'で正しい(日本語認識もする理由はCLIPの学習データを厳密に英語のみとしなかったからであろうか。もしかしたら、言語限定なく学習したなら簡単にマルチモーダルが達成されるのかな語彙の問題はあるが)。ただし、templeの説明は弱い。全体的には寺を説明する単語が並んでいるように見える。

 

さらに他の例、
input_text = '''an illustration of a baby daikon radish in a tutu walking a dog'''
とした場合の生成画像と説明は
image.png
説明語彙に入力テキスト語彙を追加。
なんだろうかこのコソ泥感

もういっちょ
image.png
説明語彙に入力テキスト語彙を追加。
画像から、夫の大根が畑で取れた赤ちゃんをtutuを履いた妻に見せにゆく情景、と読み取れなくもない。
犬は見当たらない。見当たらないが認識できない形で表現されているのだろうかと説明語彙を探すも、犬を示す単語も見つからない。
どうも、入力テキストの概念を忠実に画像に移しているわけではなさそうだ。(文脈考慮としても犬を失うことはあるまい)
オリジナルの実装ではどのような工夫がなされているのだろうか。

input_text = '''most beautiful japan'''
image.png
説明語彙に入力テキスト語彙を追加していない。
日本ぽい画像の場合sakeと表現されやすいようだ。

より長文。
text_input = '''Flying Fin Tommi Makinen on the 23rd stage and his final stage of the Rally of Australia in Perth, Western Australia September 7, 2003. Petter Solberg of Norway finished first ahead of France's Sebastien Loeb and Great Britain's Richard Burns in second and third position respectively. '''
https://www.alamy.com/flying-fin-tommi-makinen-on-the-23rd-stage-and-his-final-stage-of-the-rally-of-australia-in-perth-western-australia-september-7-2003-petter-solberg-of-norway-finished-first-ahead-of-frances-sebastien-loeb-and-great-britains-richard-burns-in-second-and-third-position-respectively-reutersmal-fairclough-mftw-image380686821.html
image.png
説明語彙に入力テキスト語彙を追加していない。
きちんとRally Australiaに見える。
長文のほうがそれっぽい?。
しかしこの文章ならば青いスバルぐらいは表示してほしいものだが。
中央と中央左の溶けたような痕はなんだろうか。
image.png
説明語彙に入力テキスト語彙を追加。
2003.?。うーむ?どこが?

画像を介して重要語彙を抜き出したとも言える。
文章ベクトルそのものから重要語彙を抜き出すことは従来から行っていたが、ここまできれいに抜き出せなかったように感じる(直接比較しないとわからないが)。なぜ画像を介するほうがより良く(見える)のだろうか。CLIPはdisentangle効果ぐらいしかないと思っていたが、なにか本質的な整理をしているとも言えるのだろうか。
(文章ベクトルの生成モデル自体が手持ちのモデルよりより適当であっただけかもしれない。)
(先の例ではdogが消え本例ではBurnsが消えたが。双方文末に置かれた単語であるという共通点はある。)
(本家のDALLEと構造が異なる点になにか意味があるのであろうか)
(ある単語に対し相当する画像の頻度と種類の重みは、その単語の重要度を再評価していると言えるのかもしれない。画像上の正規分布で整理された? )

より専門的な画像ではどうか?
text_input = '''X-ray imaging for COVID-19 patients'''
image.png

自ら生成していない画像では?
引用元: https://www.corporate.siemens-healthineers.com/perspectives/mso-x-ray-imaging-for-covid-19.html
image.png
ふむ
語彙X-ray imaging for COVID-19 patientsを足すと?
image.png
X-rayは採用、COVID-19は不採用。
chestは正解。diseaseは正解。
coughは正解の症状だろう。
健常人の肺でも同じように連想されてしまうかもしれない・・・えーっと、確かデータセットが・・・

(画像省略)

健常人。
流石にそのドメインに適合した情報を含むデータセットを用いた学習(事前・事後)がなされていないだろうモデルで、そのドメインの予測、ここでは病態を見分けろ、と言っても無理だよね。

*転移学習は医用画像タスクの分類精度向上にあまり効果がない
https://ai-scholar.tech/articles/%E8%BB%A2%E7%A7%BB%E5%AD%A6%E7%BF%92/Transfusion
Transfusion: Understanding Transfer Learning for Medical Imaging
https://arxiv.org/abs/1902.07208
特に病態はかけ離れすぎているか?

 

生成された画像のどの部分が、単語の根拠となっているのか

もう少し、画像のどの部分が単語を説明しているといえるのか確認してゆく。
手法は非常に単純。いくらかのウインドウで画像を切り、スライドさせてゆき、その単語を最も強く說明する画像を抜き出すだけ。(結局スライディングウインドウは使わなかった)

その結果、
'makinen'に関わる部分は、
image.png

下部をよく見るとmakinenと書いてあるような・・・

'2003'に関わる部分は
image.png

・・・??
ああなるほど。これは少し考えないといけないな。

画像を9分割した場合、
それぞれの分割画像に対する説明は、

prime, Perth, city, 
Australia, Rally/campaign,  Rally/Makinen,
stir, Makinen, enhance

妥当に見える。

'''an illustration of a baby daikon radish in a tutu walking a dog'''生成画像を9分割した場合
image.png
妥当に見える。

・202107CLIP GradCAMなど公開あり
kevinzakka/clip_playground
https://github.com/kevinzakka/clip_playground
CLIP GradCAM
Naive Zero-shot Detection Smarter Zero-shot Detection
Captcha Solver

image.png
CLIP image caption 'the cat'

位置情報は文章に(直接は)含まれていないはず。
画像生成する際、どのように位置を決めているのであろうか?。
最初のランダムノイズしだい?
しかし上記ダイコン画像では再現性があるように見える。
学習されている文脈に位置も内包されている?
画像生成を介すと正規化できる感覚があるが、その正規化の一つの現れだろうか。
最も特徴的な要素が中央に来るという仮定は、学習データであるweb上の画像と説明文の関係からすると妥当には思える。
→画像をブロックに分けブロックごとにベクトルを生成し左上から順番にconcatしている.学習画像では中央にキャプションの主題が来ることが多いであろうことからするに,生成ベクトルの中央に主題が来るような構造となっているだろう.つまり位置情報は文章と画像から学習した生成ベクトルに含まれているのであろうな.文章による説明も,画像中央を主題とみなしてなされやすいのだろう.
なにかに使えるかな? 文章ベクトルの中央を連続的に変化させ最終的には反転させ,生成される画像の変化を確認しつつ考えてみるか・・・

disentanglementされていると思われるCLIP文章ベクトルの各部分を消去し、文章の内容がどう変化しているじか、生成画像から類推してみる

(施行中)

 

コメント

  • 入力テキストと生成画像から示されるテキスト(単語)は類似していると感じる。非常に面白い。
  • ただし、text側で文脈を読めていないのかimage側で含められていないのか、一部の概念が失われる事はあるようである。
  • また、画像からテキスト(単語)を予想できるか=文章を読まず概要理解することができるか、に関しては、どうだろうかと。受け手の認知と統合する過程が現状はどこにもないからそりゃそうだとも言える。
  • さらなる工夫をせず使用する場合には、用途は限定的だろうと感じる。CLIPの学習データがwebの画像とキャプションであり語彙も制限されているので、おのずから限界はあるだろう。
  • CLIPは、特許から製品を探す目的において解像度変換を行う場合において、トピックモデルによる変換よりも言語モデルによる抽象型要約などによる変換よりも、よりグラウンディングが改善された良い変換手段となるのかもしれない。確認してみよう。
    →ただ単に、標準語彙(文献語彙と特許語彙の双方を混ぜた語彙の上位頻出語でも良い)分散表現リストを作り、元の単語の分散表現をそれぞれそのリスト中から最も類似する分散表現に置き換えるだけでも同じか? 

追加

  • image-to-textにつき、説明語彙を増やせばより適切な説明が得られうる。入力テキストに固有名詞を用いたなら、説明語彙にもその固有名詞を加えてみる、と面白い。(単に入力テキストをリストに変換し語彙リストに加えるだけ。)→実装
  • image-to-textにつき、現状はtextではなくwordsであるわけだが、textに・・・しようかどうしようか。単語間の関係は画像を見れば予想(妄想)できるわけで、画像と単語が同時に提供されている範囲であれば、textに変換する意味はあまり・・・
     要すれば,image-captioningを行えば良いけれど,CLIPベクトルからvec2seqする意味はあるのかな・・・語彙の限界を超えられるのだろうか
     image.png
     例えば,これはimage(vec)2seqですが,こんな感じでできますね.
     https://www.kaggle.com/code/mdteach/image-captioning-with-attention-pytorch

 →vec2seqによる新規特許の生成テスト
https://qiita.com/kzuzuo/items/8a80d8974bf3a7db7e54#%E4%BD%BF%E7%94%A8%E4%BE%8B%EF%BC%91%EF%BC%95%E5%8D%98%E8%AA%9E%E3%83%AC%E3%83%99%E3%83%AB%E3%81%BE%E3%81%9F%E3%81%AF%E6%96%87%E7%AB%A0%E3%83%AC%E3%83%99%E3%83%AB%E3%81%AE%E6%A6%82%E5%BF%B5%E6%A4%9C%E7%B4%A2%E6%A6%82%E5%BF%B5%E3%81%AE%E5%BC%95%E3%81%8D%E7%AE%97%E3%82%82%E5%8F%AF%E8%83%BD

text = 'fireworks'
image.png

text = 'Blue colored fireworks'
image.png

  • 素晴らしく迂遠だけれど、入力テキストをNGSL単語の約2800語彙で言い換えた、とも言えるわけだ。解像度の変換(言い換え、婉曲表現変換)でもある。
    入力テキスト→文章ベクトル→画像ブロック→画像→類似テキスト→単語。入力テキスト→文章ベクトル→類似テキスト→単語、と同じと考えてよいのであろうか。
    →どうも同じではないようだ。画像を介することでより適切な整理がなされている?
    **ある画像に「対して付された」web上のキャプションは、たしかに複数の解像度で表現、婉曲表現がなされているはず。**そのためそれを統合できているのかもしれない。つまり、「より良い文章ベクトルに整えられている」のかもしれない。これはかなり面白そう。

  • 患者疾患病変推測教師なし学習 ConVIRT
    Contrastive Learning of Medical Visual Representations from Paired Images and Text
    https://arxiv.org/abs/2010.0074 
    のように、類義技術の特定ドメイン版もある(こちらはResNet50とBERT Encorderの組み合わせでlossの工夫となる)(BERT Encorderでなければさらに?

  • CLIP を用いた画像ランキングによるパラメータ最適化に基づいた絵本の挿絵生成
    https://must.c.u-tokyo.ac.jp/sigam/sigam27/sigam2702.pdf

  • OpenAi - CLIP Example
    https://www.kaggle.com/code/titericz/openai-clip-example/notebook?scriptVersionId=85404940

  • PetFinder.my - Pawpularity Contest
    Predict the popularity of shelter pet photos
    1st Place - Winning Solution - Full Writeup
    https://www.kaggle.com/c/petfinder-pawpularity-score/discussion/301686
    画像処理コンペにおけるCLIPの利用

  • 特許庁[Nishika] AI×商標コンペ参加記録
    https://qiita.com/kzuzuo/items/82ef280f9e6962eb00b2

  • 自然言語処理とビジョンと言語/NLPとビジョンと言語のチュートリアル
    https://speakerdeck.com/kyoun/a-tutorial-on-nlp-and-vision-and-language?slide=58

  • 【論文解説】自然言語処理と画像処理の融合 – OpenAI 『CLIP』を理解する(1)
    https://data-analytics.fun/2021/03/24/understanding-openai-clip/?amp=1

  • Evaluating CLIP: Towards Characterization of Broader Capabilities and Downstream Implications
    https://arxiv.org/abs/2108.02818

  • Exploring CLIP for Assessing the Look and Feel of Images
    https://deepai.org/publication/exploring-clip-for-assessing-the-look-and-feel-of-images

  • How DALL-E Mini Works
    Generating images from text using the DALLE-E model, from text prompt, through VQGAN, BART, and CLIP to the final image.
    https://towardsdatascience.com/understanding-how-dall-e-mini-works-114048912b3b
    位置情報はcnnベクトルとtransformerベクトル双方のdisentangle作業において学習画像の傾向から定められているって理解で良いのだよな。シンプルにベクトル前半に画像右上がコードされるように整理されていると。これを前提としないとCLIPの説明が理解できないので良いはずだが。
    画像の中央には文の主題が来るようになることが自然とすれば、例えば、「文書ベクトルの中央を強調」すれば、「文章の主題を強調」したことになるのか?

  • An Image is Worth One Word: Personalizing Text-to-Image Generation using Textual Inversion
    https://arxiv.org/abs/2208.01618
    「言語誘導モデルを使用して、猫を絵に変えたり、お気に入りのおもちゃに基づいて新製品を想像したりするにはどうすればよいでしょうか? ここでは、そのような創造的な自由を可能にするシンプルなアプローチを紹介します。」
    複数の画像から単語を取り出しその概念で新たな画像を生成する。実にシンプル

  • kansei AI
    https://www.kansei-ai.com/technologies-hapina
    「感性評価AIとは
    感性評価AIとは、人々の感性情報を学習したAIです。
    従来、人の印象や感覚を評価する時には何十問、何百問もの長いアンケートが必要となり負担の大きいものでしたが、単語、文章、オノマトペ、画像、物性データなど入力情報から、AIが質感(視覚+触覚)、味覚、パーソナリティの3つの切り口で瞬時に感性的な印象を数値化・評価します。
    ※オノマトペ…人が主観的な自分自身の経験や感性を他社に表現するときに用いる擬音語擬態語。」

オノマトペも重要だろう.日本語ならば・・・となるかな?

質感の科学―知覚・認知メカニズムと分析・表現の技術―
https://www.asakura.co.jp/detail.php?book_code=10274

*素材のオノマトペDBが開発されていた記憶があるのだが,ここが関連するだろうか・・・
清水祐一郎、土斐崎龍一,坂本真樹:オノマトペごとの繊細な印象を推定するシステム,人工知能学会論文誌、29(1),21-52(2014)
(https://www.jstage.jst.go.jp/article/tjsai/29/1/29_E-DSD414/_article/-char/ja/)
坂本真樹:オノマトペに表される複雑な味の認知過程,認知言語学研究,4,54-71 (2018)
權眞煥,吉野淳也,高佐原舞,中内茂樹,坂本真樹:質感を表現するオノマトペから見た自然感と高級感の関係,基礎心理学研究,36(1),40-49 (2018)
坂本真樹,田原拓也,渡邊淳司:オノマトペ分布図を利用した触感覚の個人差可視化システム,日本バーチャルリアリティ学会論文誌,21(2),213-216(2016)
鍵谷龍樹,白川由貴,土斐崎龍一,渡邊淳司,丸谷和史,河邉隆寛,坂本真樹:粘性知覚に関する音象徴性の検討,人工知能学会論文誌,30(1),237-245 (2015)
渡邊淳司,加納有梨紗,坂本真樹:オノマトペ分布図を利用した触素材感性評価傾向の可視化,日本感性工学会論文誌,13(2),353-359 (2014)
上田祐也,清水祐一郎,坂口明,坂本真樹:オノマトペで表される痛みの可視化,日本バーチャルリアリティ学会論文誌,18(4), 455-463 (2013)
渡邊淳司,加納有梨紗,清水祐一郎,坂本真樹:触感覚の快・不快とその手触りを表象するオノマトペの音韻の関係性,日本バーチャルリアリティ学会論文誌,16(3), 367-370(2011)

視覚と言語の融合モデルにおける知識の振る舞いを調査するための表と画像の生成タスクの提案及びその調査結果
上垣外英剛 林克彦 渡辺太郎 奈良先端科学技術大学院大学 北海道大学
https://www.anlp.jp/proceedings/annual_meeting/2023/pdf_dir/P2-14.pdf
 

補足: 続々と追加される様々なtext-to-image技術

DALL·E mini(craiyon)

”an illustration of a baby daikon radish in a tutu walking a dog”
image.png
"寺"
image.png
はて・・・寺はどこに
全体的にイマイチですね.

DALL·E 2

圧倒的です.

"寺"
image.png

"Winter mute, Neuromancer"
image.png
ずっと真夜中でいいのに
Screenshot_20220810-083351.png
「ずっと真夜中でいいのに」
というプロンプトから,
「読書の画像」が生成される。
そのような文章中に具体的に表現されていない暗黙的な含意。行間。多分、上位概念化や創造性のもと。これに強い興味がある。

stable diffusion

https://huggingface.co/spaces/stabilityai/stable-diffusion
https://github.com/CompVis/stable-diffusion

"寺"
ダウンロード (3).jpeg
"most beautiful Japan"
ダウンロード (2).jpeg
ずっと真夜中でいいのに
Fa2ddmTagAEUvzO.png
"Anime by Hayao Miyazaki, Wlop, and Rossdraws,The magical Prince, detailed environment by Thomas Kinkade"
image.png
アニメっぽい画像も生成できなくもない
image.png
アニメっぽい画像の生成が比較的難しい理由は,世の中にはデッサンの狂った写真や絵画は多くないがデッサンの狂ったアニメっぽい絵(子供の落書きなど)は多くありこれを学習してしまいやすい,ということだろうか.

stable diffusionのコードをちょっと改変

diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion.pyを改変.
複数の重み付きpromptから画像生成してみる.

prompt_kz = ['','winter']
prompt_kz_weight = [1,1]
prompt_kz_operator = [1,1]#1:plus 0:minus
with autocast("cuda"):
  image = pipe(prompt_kz=prompt_kz, 
                prompt_kz_weight=prompt_kz_weight, 
                prompt_kz_operator=prompt_kz_operator
                )["sample"][0]
image

1 * '寺' + 1 * 'winter'
image.png
連続的に重みを変化させた動画をつくっても面白そう

0.5 * 'a girl' + 0.4 * 'winter' + 0.1 * 'summer'
image.png
冬。狂い桜。強い光。
演算とすると,冬日和など,微妙な季節感も表現しやすいかもしれない.

transformerのattention任せとして自分の認知通りの画像出力ができるかというとそりゃ無理ですわな。attentionは真値というわけではないのだから。自分がどこに注意したいかは自分で任意に指定しないと。

elegantの重みを変化させた動画
combine-4.gif

エレガンスの究極はやはり人間じゃないらしい・・・
画像の間にモーフを入れたほうが見栄えは良いかな・・・

*官能評価に関する単語23単語について,どう変化するか検証済み(mp4をgifに変換する手間を惜しんでここにはおいていないがどこかに置くかも)(顧客に官能評価させる前に機械で官能評価スクリーニングをする,てのは開発スピードがますます重要となる中,十分あり得ると思う.それがこんな簡単にできるわけだ検証必要だけれど.)

吸血鬼0.2
ダウンロード (5).png

Midjourney

"most beautiful Japan"
image.png
"most beautiful japanase girls wearing kimono looked back"
女性の表現においては圧倒
image.png
ずっと真夜中でいいのに
image.png

ERNIE-ViLG

ずっと真夜中でいいのに
image.png
image.png
image.png
疲れてるな・・・

追記)chatGPT APIを受けて,自動学習ロボットの可能性について

chatGPTをAPI化するとのこと.chatGPTや画像生成,本件のような画像のテキストによる説明やimage captioningを利用すれば,自動学習ロボットが比較的簡単にできるのではないかな,と妄想したのでメモしておく.

ロボット制御の課題:

P1 命令と制御が1対1で必要であるところ,人による命令は,通常,制御と1対1で対応していない.1つの命令に対し1つの制御が必要である場合,プログラムの労力また予めの命令の登録の労力,行動の応用範囲の狭さ,などにより,可能となる行動に限界がある.
P2 命令の対象の確認と,命令の終了の評価が難しい
P3 汎化しての学習をしない

解決手段:

S1 ChatGPT APIを用い,命令を十分に細分化する.行動クラスを作成し,いくらかの基本制御を記載し,基本制御の組み合わせで命令を実行できるようにしておく.
命令を細分化し,細分化された命令が制御データベースにあればそのように実行し,なければ制御データベースから最も類似した制御を取り出し,これをもとにし細分化された命令に最適なパラメータをベイズ最適化などで求めパラメータに従い基本制御の組み合わせを実行し,S2で評価しつつ命令を達成する.
S2 細分化された命令につき,複数の画像生成を行い,一般化された命令の対象を得る.命令の終了状態に付き,複数の画像生成を行い,一般化された命令の終了状態を評価する画像を得る.行動の終了ごとに,終了時得られた画像と生成した画像の類似を調べ,命令の達成を確認する.命令が達成されていなければS1のようにパラメータの最適化を行う.命令が達成されていれば,命令と画像とパラメータを制御データベースに保存し,再利用できるようにしておく.
S3 S1で命令の十分な細分化,S2生成画像による多様な命令状態の理解,それら記録した制御データベースの柔軟な検索,これら組み合わせにより,汎化を達成する.

本を本棚に片付ける命令をした場合の例:

 本を取るように音声で命令
 命令をwhisper APIを用い,命令テキストに変換
 命令テキストをChatGPT APIを用い十分に細分化(本を確認する,本に近づく,本を拾う,本棚を見る,本棚に近づく,・・)
 細分化した命令ごとに,対象の画像候補を生成し,命令終了状態の画像候補を生成
 画像が示すテキストをCLIPなどで生成し,行動案を音声で提示
 基本行動クラスで用いるパラメータを制御データベースから検索して得る
 最も類似した行動を実行,評価,最適化しつつ再実行
 命令終了自体と評価されたら,終了を音声で提示
 命令テキスト,命令対象テキスト,命令対象画像,命令終了状態画像,制御パラメータを,制御データベースに保存

2回めに本を本棚に片付ける命令をした場合,
 制御データベースから本を取り出すために必要な情報を収集し,距離などの違いをパラメータ最適化で修正しつつ,行動.

皿を取る命令をした場合:
 制御データベースから本を取り出すために必要な情報を類似情報として取り出し,皿と本の違いにつパラメータ最適化で修正しつつ,行動.

対象の違いに対しどのようにパラメータを制御するか,行動をどのようにより共有するか,繊細な行動制御をどう行うか,などさらなる課題は多くあるであろうが,
自動学習ロボットが実現可能ではあろう.

プログラム可能な四足歩行カメラ付きロボットを持っている.
Adeept DarkPaw Bionic Quadruped Spider Robot Kit for Raspberry Pi 4/3 Model B+/B/2B, STEM Crawling Robot, OpenCV Tracking, Self-stabilizing
https://www.adeept.com/adeept-darkpaw-bionic-quadruped-spider-robot-kit-for-raspberry-pi-4-3-model-b-b-2b-stem-crawling-robot-opencv-tracking-self-stabilizing_p0125.html
これに実装してみようかな・・・

ChatGPTにより提案された問題点など:

言語モデルを利用性他ロボット制御にはほんの些細な問題がある.
言語モデルはある程度のコンセンサスのある表現を取るわけだが,ゴミを片付けて,と命令すると,世のお父さんが部屋から叩き出されるなどあり得るだろう.多分.

言語モデルに問題点を聞いてみた.

  • 「1 細分化された命令の数が膨大であり、処理するための計算資源や時間が必要になる可能性がある。
    2 細分化された命令の組み合わせによって、予期しない動作を引き起こす可能性がある。

    4 大規模言語モデルの使用による、データプライバシーや倫理的問題が生じる可能性がある。
    5 作成されたロボットが、不適切な命令や環境条件下での命令に対して学習してしまう可能性がある。
    6 ロボットの動作の安全性と信頼性を確保すること。
    7 ロボットの学習に必要なデータ収集と処理のための効率的な方法を開発すること。
    8 ロボットの学習において、環境の変化に対応できるようにすること。
    9 ロボットの行動を観察することで、その動作を理解することができるようにすること。
    10 ロボットの行動によって生じる倫理的・社会的問題に対処すること。
    11 複雑なシステム:このシステムは複雑で、多くのステップとAPIを必要とします。それゆえ、システムの開発、テスト、保守が困難になる可能性があります。
    12 パフォーマンスの問題:システムは多くのAPIとデータベースを使用しており、多くの時間を消費する可能性があります。ロボットのタスクを遂行するために必要なリアルタイム性が失われることがあります。
    13 画像認識の問題:画像候補の生成は、画像認識技術に依存しています。しかし、すべての本を正確に認識できるわけではありません。したがって、誤った命令を出す可能性があります。
    14 経験の問題:ロボットは、命令を実行するためにデータベース内のパラメータを使用していますが、経験に基づくパラメータの最適化が必要になります。データベース内のパラメータが不適切である場合、ロボットは正確な行動を実行できません。
    15 セキュリティの問題:システムは音声入力を使用しているため、セキュリティの問題が発生する可能性があります。ロボットが外部からの不正なアクセスに対して脆弱になってしまう可能性があります。」
    「16 複雑な環境下での動作:ロボットが書棚に近づくと、光の反射や物体の重なり合いなど、複雑な環境が発生する可能性があります。ロボットがこれらの問題を解決できるようにするためには、より高度なセンシング、パーセプション、およびコントロールアルゴリズムが必要になる場合があります。
    17 複雑な動作の実行:本を取り出す、書棚に戻す、本を並べるなどの動作は、ロボットにとって容易ではありません。これらの動作を実行するためには、高度な運動制御、物体認識、およびグリップ力制御の技術が必要です。
    18 ユーザーインタラクション:ロボットは、命令を正確に理解し、必要な情報を収集し、作業を完了する必要があります。これには、音声認識、自然言語処理、およびユーザーインタラクションの改善が必要になる場合があります。
    19 データの収集と処理:ロボットが自己学習するには、大量のデータが必要です。また、データの収集、整理、および分析には、高度なコンピューティングリソースが必要になる場合があります。
    20 セキュリティと倫理:ロボットが自己学習するにつれて、個人情報や機密情報を収集する可能性があります。また、自己学習アルゴリズムが人間の行動を模倣することがあり、それが倫理的な問題を引き起こす可能性があります。これらの問題に対処するためには、セキュリティと倫理の観点からシステムを設計する必要があります。」

1 命令はほぼAPIと制御用パソコンで行う.ロボット本体のRaspberry piで処理する部分は少ない.画像生成以外は,計算資源や時間はそれほどかからない
2 X ありえる
4 言語モデルは命令の細分化のみに用いるため,考えにくい
5 △ ありえるが,これに対応するため,画像生成やパラメータ化,達成時のみのデータベース登録としている.
6~10 課題である
11 シンプルなシステムであろう
12 1と同じ
13 画像生成で対応可能と考える
14 2と同じ
15 ありえるが,当面検討しない.最初にパスワードを音声で入力するなどあり得る.
16 13と同じ
17 基本動作をどう設計するかは大きな課題だろう
18 現時点では問題でない
19 2と同じ
20 制御データベースに保存される画像には個人情報が含まれる可能性がある 

  • 「解決策は存在しますが、完全に解決されたとは言えません。以下にそれぞれの課題と解決策を示します。
    P1: 命令と制御が1対1で必要であるところ、人による命令は、通常、制御と1対1で対応していない。1つの命令に対し1つの制御が必要である場合、プログラムの労力また予めの命令の登録の労力、行動の応用範囲の狭さ、などにより、可能となる行動に限界がある。
    解決策として、機械学習を利用した自己学習型のロボットシステムが考えられます。命令を受け取ったロボットは、その状況に応じて自らが学習し、必要な制御を生成することができます。また、命令を細分化して学習することで、命令の幅広い応用範囲に対応することもできます。
    P2: 命令の対象の確認と、命令の終了の評価が難しい。
    解決策として、センサー技術の発展やAI技術の進歩により、ロボットが自律的に環境を把握し、命令の対象を確認することが可能になりつつあります。また、命令の終了の評価についても、ロボットが自己学習し、最適な行動を選択することで、より正確に評価することができます。
    P3: 汎化しての学習をしない。
    解決策として、深層学習を利用することで、汎化性能の高いモデルを構築することができます。また、強化学習を用いることで、ロボットが自己学習を行い、未知の状況でも適切な行動を選択できるようになります。しかし、完全に汎化性能を持ったロボットの実現には、現在でも多くの研究課題が残されています。」
  • 「解決手段S1、S2、S3は新しい手法というわけではありませんが、これらの手法を組み合わせることで、より高度なロボット制御が可能になります。S1は、細分化された命令を作成し、それらを基本制御の組み合わせで実行することで、制御を容易にするための手法です。S2は、多様な命令状態を理解することで、命令の対象を確認し、命令の終了状態を評価するための手法です。S3は、制御データベースを柔軟に検索することにより、汎化を達成する手法です。これらの手法を組み合わせることで、より高度なロボット制御が可能になります。」
  • 「言語モデルベースのロボットが掃除をする場合において、世のお父さんがゴミと誤認識される可能性はあるかもしれません。しかし、ロボットがより精密な命令分割や画像認識技術を使用することで、このような誤認識を防ぐことができる可能性があります。また、制御データベースにおいて、世のお父さんが掃除の対象であることを正確に指示することで、ロボットが正しい行動を取ることができます。ただし、完全に誤認識を防止することは困難であり、ロボットが適切に判断するためには、多様な命令状態を生成し、その達成状態を学習する必要があります。」

・・・制御データベースにおいて、世のお父さんが掃除の対象であることを正確に指示することで、ロボットが正しい行動を取ることができます・・・

参考:
tfidf/mbart/mt5/CLIP embeddings cluster reconstructing vis: 特許など長文の、動的な文章間類似俯瞰可視化・迅速閲覧・解析・探索手段。および第三の特許検索手法、動的な知識抽出管理手法、特許自動生成
使用例1.2:概念からの文章の自動生成 -基本特許の自動生成-
https://qiita.com/kzuzuo/items/8a80d8974bf3a7db7e54#%E4%BD%BF%E7%94%A8%E4%BE%8B%EF%BC%91%EF%BC%92%E6%A6%82%E5%BF%B5%E3%81%8B%E3%82%89%E3%81%AE%E6%96%87%E7%AB%A0%E3%81%AE%E8%87%AA%E5%8B%95%E7%94%9F%E6%88%90-%E5%9F%BA%E6%9C%AC%E7%89%B9%E8%A8%B1%E3%81%AE%E8%87%AA%E5%8B%95%E7%94%9F%E6%88%90-

説明文生成を用いた動作行動予測
https://speakerdeck.com/supikiti/yan-jiu-hui-fa-biao-zi-liao

観測した周囲の状況を曖昧な発話に統合した対話ロボットによる気の利いた行動選択
https://www.anlp.jp/proceedings/annual_meeting/2023/pdf_dir/H6-1.pdf
「しかし実際には,ユーザ自身が持つ要求が曖昧で,ユーザから明示的な要求を示すことができない場合も多い [3, 4].“曖昧” とはユーザが何らかの潜在的な要求を持っているにも関わらず,その要求の条件を明確に言語化できない状況にあることを意味する [5].」

谷口 忠大 先生(立命館大学)
社会における分散的ベイズ推論としての記号創発 ~集合的予測符号化としての言語観~
https://www.youtube.com/@anlpyoutubechannel7888/streams
大規模言語モデルとの結合を試みているとのこと

八木 拓真 1 西村 太一 2 清丸 寛一 2 唐井 希 2
1 東京大学 生産技術研究所 2 京都大学大学院 情報学研究科
大規模言語モデルからの知識抽出に基づく画像からのスクリプト予測の検討
https://www.anlp.jp/proceedings/annual_meeting/2023/pdf_dir/P2-8.pdf

大規模言語モデルの活用による効率的なロボット制御の学習
高城 頌太 谷口 尚平 中野 聡大 上田 亮 松尾 豊 谷中 瞳 東京大学
https://www.anlp.jp/proceedings/annual_meeting/2023/pdf_dir/H10-2.pdf
同じ発想.ふむふむ・・・

text2motion
https://sites.google.com/stanford.edu/text2motion
image.jpg

ChatGPT追加

単語レベルでなく文章レベルで予想するに当たり,
ChatGPTに一般的なシナリオを作らせる方法もあり得る.
image.png
image.png
image.png
すごいなこれ・・・

GPT4V

画像のLLMを用いた説明
いやはやなんとも

⼤規模⾔語モデルとVision-and-Language
IBIS2023の企画セッション「Vision and Languageの最前線」
https://speakerdeck.com/kosuken/gui-mo-yu-moderutovision-and-language

Raspberry PiとChatGPTでつくるボイス・アシスタント・ロボット #1
https://zenn.dev/pon_dad/articles/6cdf4cf1ea5b30
VoiceAssistantRobot_GPT
https://github.com/PonDad/VoiceAssistantRobot_GPT/tree/main

ORGANA: A Robotic Assistant for Automated Chemistry Experimentation and Characterization
ORGANA - 自動化化学実験のためのロボットアシスタント
https://arxiv.org/abs/2401.06949
他多数対応。

  • 概要: ORGANA - 自動化化学実験のためのロボットアシスタント
  1. ORGANAの概要
    概念: ORGANAは、化学実験の多様なタスクを自動化するための人間に優しいロボットシステムです【8†source】。
    特徴: 大規模言語モデル(LLM)を用いて、自然言語での化学者との対話を通じて実験の目的を導出し、長いタスクとロボットアクションのシーケンスを計画します【9†source】。
    目的: 化学実験における材料の発見プロセスを自動化し、効率を向上させることです【11†source】。
  2. ORGANAの機能
    LLMベースの対話と推論: 化学実験のタスク記述を生成し、それを構造化された言語に変換します。ユーザーとの対話を通じて、曖昧さや予期せぬ結果に対応します【16†source】。
    タスクとモーション計画: 高スループット実験を実現するために、ロボットと装置の並行タスク実行を支援します【17†source】。
    実験スキル: ピック&プレース、挿入スキル、流体と粉体の注ぎ込みスキルなど、多様なロボットスキルを統合します【19†source】。
    自動データ分析とレポート生成: 実験の進行を推定し、包括的なユーザーレポートを生成します【20†source】。
  3. 実験結果
    実験の種類: 溶解度試験、再結晶化実験、pH測定、電気化学実験を含む多様な実験を実施しました【21†source】。
    溶解度実験: ロボットが水を追加し、溶解度を測定します。3種類の溶質での精度はそれぞれ7.2%、11.2%、12.3%でした【22†source】。
    再結晶化実験: 不純物を含む固体から純粋な化合物を抽出するプロセスです。アルムを使用し、水温の違いによる溶解度の変化をテストしました【23†source】。
    pH実験: 赤キャベツ液を用いてpHの変化を示しました【24†source】。
    電気化学実験: キノン溶液の赤ox電位を異なるpHで測定しました。機械的に研磨された電極を使用し、Pourbaix図を描きました【25†source】【26†source】。
  4. ユーザー研究
    目的: 実験化学者との対話を通じてORGANAの実用性を評価しました【30†source】。
    結果: ORGANAは手動実験よりも優れた性能を示し、ユーザーの作業負荷を軽減しました。誤検知の発生は限られていました【30†source】。
  5. 特別な点
    革新性: ORGANAは、電気化学実験において、キノン誘導体の電気化学的特性の特徴付けを初めて自動化しました。これは化学者にとって実用的な重要性を持ちます【15†source】。

自前の4本足ロボット、強化学習を組み込み記憶のベースを作ったうえで自動化する予定。
実装するに当たり十分研究不要とできる程度に情報が揃ってきたかな。

11
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
8