質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
アセンブリ言語

アセンブリ言語とは、機械語を人間にわかりやすい形で記述した低水準言語です。

CPU

CPUは、コンピュータの中心となる処理装置(プロセッサ)で中央処理装置とも呼ばれています。プログラム演算や数値計算、その他の演算ユニットをコントロール。スマホやPCによって内蔵されているCPUは異なりますが、処理性能が早いほど良いとされています。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Q&A

4回答

3783閲覧

ラズパイ3とOPENCVを用いて行動の予測がしたいです。

carnage0216

総合スコア194

アセンブリ言語

アセンブリ言語とは、機械語を人間にわかりやすい形で記述した低水準言語です。

CPU

CPUは、コンピュータの中心となる処理装置(プロセッサ)で中央処理装置とも呼ばれています。プログラム演算や数値計算、その他の演算ユニットをコントロール。スマホやPCによって内蔵されているCPUは異なりますが、処理性能が早いほど良いとされています。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

0グッド

1クリップ

投稿2018/03/23 07:30

ラズパイ3で画像処理(画像処理の何を行いたいかは後に書かせて頂きます。)を行いたいと考えています。osはLinuxです。
画像処理に扱うソフトはopencvです。
過去に度々質問していたので察しがつくと思いますが、ラズパイは現在のpcのcpu、例えばIntelのcorei7などに比べたら性能は低いと思います。
しかし、アセンブリ言語でプログラムを組めばラズパイの性能を引き出し、滑らかに画像処理が行えるのではないかと考えています。
(ラズパイのcpuはARMなので、Intelのcpuとは構造は違いますが。また、pcのcpuでは構造が複雑すぎ、使うならば小規模な cpuのラズパイが適応と考えました。)

次に、どの様な画像処理が行いたいかを書きます、ボクシングなどの格闘において相手の体の動きから、繰り出してくる攻撃を予測したり、その攻撃が本気かフェイントであるのかを予測して判断すると言った画像処理です。(機械学習というか、大量の画像データを参考に判断するといったものです。)
画像処理だけでは厳しい場合はKinectなどのセンサーも使います。
わたしには機械学習になんする知識はないですが、格闘技に関するフェイントのアルゴリズムを学ばせる事で実現できるのではないかと考えています。

簡単な作業ではありませんが、まずは小さなものからと言う考えと資料を集め考えた結果、学習用と作品用にラズパイ3を使おうと至りました。
もし、ラズパイ3で、かつアセンブリプログラムで書けたとしても、そんな行動を予測する様な物は出来ないならば、使っているpcのcpuかgpuで行いたいと考えています。

質問としては、ラズパイ3の性能でもアセンブリ言語でプログラムを組めば以上の事が実現できるかの意見を聞きたいと考えています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

アセンブリ言語でプログラムを組めばラズパイの性能を引き出し、滑らかに画像処理が行えるのではないかと考えています。

アセンブリ言語を使えば性能を引き出せるという考えは誤りです。gcc並みのコンパイラーを自作できるぐらいに最適化に精通しているなら別ですが、そうではないでしょう? 私はx86に関してはそれなりに知識はあると思っていますが、コンパイラーが生成するコードよりも高パフォーマンスなアセンブリコードを現実的なコーディング時間で書ける程の自信はありません。仮に頑張って書いたとしても数パーセント程度(下手すれば誤差の範囲程度)でしょう。まったく労力に見合いません。

性能云々の前に、まずはちゃんと動くものを作りましょう。動くものを作って性能評価をして、それで満足できないとなれば、それから性能を上げるためにはどうすれば良いかを考えれば良いのです。

質問としては、ラズパイ3の性能でもアセンブリ言語でプログラムを組めば以上の事が実現できるかの意見を聞きたいと考えています。

やってみなければ判らないでしょう。少なくとも、C/C++でできることならアセンブリ言語を使う必要はありませんし、C/C++でできないことならアセンブリ言語を使ってもできません。

投稿2018/03/23 12:52

catsforepaw

総合スコア5938

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

carnage0216

2018/03/23 13:12

ラズパイを使うよりもGPU、CPUを搭載したPCを使ったほうがよさそうです。
catsforepaw

2018/03/23 13:23

PCでも同じことです。性能を引き出したいのならアセンブリ言語ではなくC/C++を使うべきです。最適化の理解が浅いままアセンブリでプログラムを作ったところで、途轍もない時間がかかる割にはパフォーマンスが低いものしか作れませんから。
carnage0216

2018/03/23 13:31

>>最適化の理解が浅いままアセンブリでプログラムを作ったところで、途轍もない時間がかかる割にはパフォーマンスが低いものしか作れませんから。 に関してですが、ハードの知識が浅いため、アセンブリで最適化が組めなないなら、C/C++を使えということでしょうか? また、性能を引き出すならばアセンブリ言語を使うのではないのですか?
catsforepaw

2018/03/23 13:59

性能を気にするなら使用する言語はC/C++が最も相応しいです。今時のコンパイラーはとても賢いので、下手に自分でアセンブリコードを書くよりもコンパイラーに最適化させた方がパフォーマンスに優れたコードになります。 極限まで性能を引き出すためにアセンブリで書くことはあります。ただし、ロジック全体をアセンブリで書くようなことはまずしません。ネックとなっているごく限定された部分をインラインアセンブラや組み込み関数で書くという程度です。そして、その場合でもまずは動くものを作って性能評価をして、結果に満足できなければコードやアルゴリズムを見直して再度性能評価をし、それでもダメなら最終手段としてアセンブラの利用を検討する、という段階を踏むのが普通です。
carnage0216

2018/03/23 14:01

おっしゃる通りだと思います。 参考になります。どうもありがとうございます。
guest

0

アセンブリ言語でプログラムを組めば以上の事が実現できるかの意見を聞きたい

不可能です。

ターゲットがラズパイか、PCか、GPUかは、関係ありません。アセンブリ言語で太刀打ちできる規模を、とっくに超えたことをやろうとしているからです。性能云々以前に、動作する状態まで持っていくことすらできないでしょう。

普通に経験や力量がある人なら、アセンブリ言語でやろうなんて最初から考えもしません。しかも貴方はC言語のプログラミング能力に大きな疑問符が付くレベルです(私はそう見る。根拠もある)。C/C++で実際に使い物になるレベルのモノを作るのに、どれだけの作業が要るのか知りもしないで、というか、知らないが故に、とてつもない夢を語っている。身の程知らずと言うのではありませんか。

どうしてもご自分で作りたいなら、時間をかけて、C/C++で、ある程度大きなプログラムを自分自身の手で作りあげるなどの経験を積みながら考えるべきでしょう。
アセンブリ言語も、もちろん勉強したほうが良い。実際に自分でプログラムを書き、デバッグしてみるべきです。なぜなら、アセンブリ言語でやろうという考えが、いかにナンセンスかを身を以って実感できるから。知らないが故に抱く幻想を破るには、現実を知るのが一番です。

いや、遠回りしている時間は無い、ボクシングの画像解析は何時までに出来なければならない、試合の期日は迫っているのだ・・・といった事情があるなら、作れる人を探して作成を依頼してください。もちろんタダで頼めるようなことじゃありません。

投稿2018/03/24 04:57

rubato6809

総合スコア1380

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

carnage0216

2018/03/24 05:05

解答ありがとうございます。 試合があるわけではなく、対人間用の戦闘兵器が作りたいと考えているだけです。(お遊びではなく、真剣に考えています。) 今はアセンブリ言語も頭の片隅に置きながら、catsforepawさんの意見を参考に中身の理解は別に動くものを作ることに専念して機械学習を行うためにC言語とC++で書かれたdarknetをvisual studio 2015で使っています。 ruboto6809さんのおっしゃる通り私はもっといい意味で叩きのめされて現実を知ったほうがいいです。
carnage0216

2018/03/24 05:08

ただ、すべてをアセンブリで書くといっていましたが、改めて考えると無理(精神的にも技術的にも)なので一旦は動くものを作ってから、納得のいかない部分のみをアセンブリ言語や、C/C++で改良するといった方法をとることにしました。
keicha_hrs

2018/03/24 09:51 編集

> 対人間用の戦闘兵器が作りたいと考えている おいおい。さらっととんでもないことを言ってのけているが、これってヘタしたらテロ等準備罪にも抵触しかねない重大発言なんじゃないのかい?
carnage0216

2018/03/26 06:14 編集

そんな危険なものを作ろうとしているわけではありませんのでご心配なく。 私にはそれをつくる頭も技術もないのですので。 ただ映画に影響されただけです。ご心配をおかけして申し訳ありません。
guest

0

学習した結果をもとに画像を判定するくらいならばラズパイでも行けるかもしれません(おそらくそれでも非力かと思います)。
学習については、ラズパイでは無理、と言い切ります。
学習には、けっこういいGPUを積んだグラフィックボードが不可欠です。CPUの10倍以上の性能が出ます。
それで学習を実行してまる何日、というオーダーの時間がかかります。

投稿2018/03/23 08:26

kazto

総合スコア7196

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

carnage0216

2018/03/23 08:33

やはり、無理がありますよね。 pcの、例えばエヌビディアのgpuを使うにしてもcpuとどの様に連携して動いているのかまずは理解しないとgpuを使うのは難しいですね。 だとしたら、osがLinuxであれど、エヌビディアのgpuを搭載したpcでないと不可能でしょうね。 cudaを用いてgpuに働かせるプログラムをアセンブリ言語で書いたりなどする勉強をしてみます。
ikapy

2018/03/23 12:21

この投稿を初見して、オーすごいガッツのあるなとはおもいました。 でもすぐ方法論に走り大丈夫かなとも思いました。アセンブラで行うという発想はとても良いとは思いますが、言うは易くとても壁が高いですよ。 アセンブラ言語を使うには相当のコストがかかることも含んでおいてください。 私から言えるのは、あなたが考えているボクシングのアルゴリズムを明確にすることではないでしょうか。紙でもコードでもポンチ絵でもかまいません。解る人がみれば、アーそれはこうすればできるねというようなレスポンスがあると思います。はじめからラズパイやOpenCVに拘らない方がよいと思いますよ。 たとえばそれがLinuxでもWindowsでもIBMのホストでもあなたが動くシステムがベータ版でも動けば、ラズパイに移植するのは割合簡単ですよ!
carnage0216

2018/03/23 12:51

解答ありがとうございます。 確かに非現実的な内容なので、ラズパイではなくGPUとCPUを搭載したPCを使って、やっと再現できるものなのではと考え直しています。 もちろん、そうなったとしてもアセンブリ言語でゴリゴリ書いていきたいとおもいます。メモリ量は多量になると思いますが高速化を考えると仕方ありません。 またアルゴリズムについては相手の肩と足の動きを分析するなど、フェイントの動画を機械学習で学習させ、あえてフェイントのみに特化したデータで相手の攻撃がフェイントか本気かを見極めるなどを考えていますが。そこにたどり着くまでには数年かかりそうです。
guest

0

ボクシングの動きを学習できるかどうかはおいといて。

計算量的には、学習用にはRaspberryPiは相当厳しいでしょうね。
Corei7でも厳しい可能性があるので、GPUを使うことになるでしょう。

学習済みの重みを使ってRaspberryPiで判定だけしたいとしても、
この計算は行列計算などですから、非常にチューニングされきったライブラリを使っています。
アセンブラ言語を使って、更にこのライブラリを高速化することは不可能ではありませんが、
世の中にそんなことができるのは限られた数人になるのではないでしょうか?

個人的にはそのようなことができる自信はありませんので、無理だと考えてしまいますが、
類まれな努力によって誰かが成し遂げているわけですので、挑戦することの妨げにはなりたくありませんが…

投稿2018/03/23 08:25

mkgrei

総合スコア8560

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問