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

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

ただいまの
回答率

90.49%

  • OpenCV

    1552questions

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

  • Raspberry Pi

    1083questions

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

  • 機械学習

    982questions

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

  • アセンブリ言語

    116questions

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

  • CPU

    54questions

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

受付中

回答 4

投稿

  • 評価
  • クリップ 0
  • VIEW 1,404

carnage0216

score 122

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

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

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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • 退会済みユーザー

    2018/03/26 17:28

    複数のユーザーから「やってほしいことだけを記載した丸投げの質問」という意見がありました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

回答 4

+8

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

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

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/03/23 22:12

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

    キャンセル

  • 2018/03/23 22:23

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

    キャンセル

  • 2018/03/23 22:31

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

    キャンセル

  • 2018/03/23 22:59

    性能を気にするなら使用する言語はC/C++が最も相応しいです。今時のコンパイラーはとても賢いので、下手に自分でアセンブリコードを書くよりもコンパイラーに最適化させた方がパフォーマンスに優れたコードになります。

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

    キャンセル

  • 2018/03/23 23:01

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

    キャンセル

+3

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

不可能です。

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

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/03/24 14:05

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

    キャンセル

  • 2018/03/24 14:08

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

    キャンセル

  • 2018/03/24 18:51 編集

    > 対人間用の戦闘兵器が作りたいと考えている

    おいおい。さらっととんでもないことを言ってのけているが、これってヘタしたらテロ等準備罪にも抵触しかねない重大発言なんじゃないのかい?

    キャンセル

  • 2018/03/26 15:14 編集

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

    キャンセル

+1

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

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/03/23 17:33

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

    キャンセル

  • キャンセル

  • 2018/03/23 21:21

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

    キャンセル

  • 2018/03/23 21:51

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

    キャンセル

同じタグがついた質問を見る

  • OpenCV

    1552questions

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

  • Raspberry Pi

    1083questions

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

  • 機械学習

    982questions

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

  • アセンブリ言語

    116questions

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

  • CPU

    54questions