投稿

11月, 2020の投稿を表示しています

~11/15までの活動報告

イメージ
 Jetson Nanoのセットアップについて、SDカードをフォーマットしてSwapfileを作成するところまで進めていましが、やはりopencvのバージョン確認のところで躓いてしまい、再度SDカードの初期化を行いました。ご指導頂きながら、opencvのバージョン確認、YOLOのテストまで終えることができたので、ここまでの記録をまとめたいと思います。 まず、opencvのバージョン確認について セットアップの初めのころは作業手順がばらばらであったためにエラーが出ているのかと思っていましたが、今回のバージョン確認で原因が分かったように思います。 前回の作業報告でnanoについて理解が深まったと書いていましたが、まだ甘かったようです。 build_opencv.shファイルの編集の際に、テキストエディタ―ではなく、nanoで書き換えるということを学んで、自宅で実践しましたが、 $nano build_opencv.sh このコードの返答は、空のファイルのみで何のコードも書かれておらず、編集不可能でした。この理由は単純でbuild_opencv.shが存在するディレクトリで上記のコードを入力する必要があったのに、デスクトップなどの適当なディレクトリで、 $nano build_opencv.sh と入力していたからでした。 そこで、ディレクトリをbuild_opencv.shが格納されているnano_build_opencvに変更しnanoを開くと編集可能になりました。同様のミスがのちのYOLOインストールのとき、.bashrcの編集の際に起きてしまいました。 次回からは、実行するファイルは現在のディレクトリに存在するのかしっかり確認してから作業していきたいと思います。 このような問題を解決した後は $./build_opencv.sh と入力して6時間ほど待ち、最後のバージョン確認へと移るわけですが、 $python >>>cv2.__versiion__ の結果は前回と同じく 'cv2' is not defined でありました。 エラーの原因としては色々考えられたのですが、最終的には、 >>>cv2.__version__ の前に >>>import cv2 を入力する必要がありました。 $py

~11/12までの活動報告

イメージ
 11/11(水) 会社での活動報告: Jetson nanoについて Jetsonのセットアップの状況を確認して頂きましたが、opencvのバージョン確認ができなかったので、最初からセットアップすることになりました。自宅でセットアップしていたときは、 nano とは何であるのか、 git clone の意味など分からずにコピペで作業を進めていましたが、実際に打ち込んだコードとその結果を見せて頂いたのでコードの意味を理解することができました。具体的にはnanoとはテキストエディタであって、隠しファイルなどもターミナル上で編集できるのだと分かりました。また、 git clone URL とすることでマウスを使ってダウンロードから解凍まで行っていた部分をコンピュータに任せることでミスなくディレクトリを作成することができる便利なものなんだと理解することができました。 また、ディレクトリへの理解不足がセットアップの失敗を招いただろうと思われます。 $./build_opencv.sh のコードをデスクトップなどの適当なディレクトリで行っていたので、opencvでエラーが起きたのだろうと思います。正しくはbuild_opencv.shが格納されているディレクトリでターミナルを開きカーレントディレクトリに指定する必要がありました。. がカーレントディレクトリを表すので、デスクトップなどの適当なディレクトリで実行してもその中にbuild_opencv.shは存在しないのでエラーが起きるのは必然でありました。 今回の作業を通して、実際に失敗する機会を与えて頂いたので、ディレクトリ把握の重要性を身に染みて感じることができました。しかし、失敗をして時間を食うというのは何回も行っていたらキリがないので次のセットアップでは、コマンド・ディレクトリ・エラーコード・作業手順を必ず守ることを意識して成功させたいと思います。 Fusion360について 今回提出させて頂いた実際の図面のスケッチは各部分がすべて連結していて、一塊のボディとなっていたので、各部分を分けて一つ一つのボディに分ける必要がありました。一塊のボディの状態では、押し出したときに連動して動作するので扱いにくいですが、小分けのボディとして準備していれば、1つの制作物をつくるときに最後に連結するだけで完成させることができるみたいです。

~11/9までの活動報告

イメージ
     ~11/9までの活動報告 Rで作成した正規分布 まずはお借りしていた書籍について マンガで分かる統計学 高橋信著 前回の続きから少しずつ進み読み終えることができました。確率密度関数のあたりから内容的には難しくなってきましたが、統計学の大枠は理解できたと思います。これまでも分散や標準偏差は学んだことがありましたが、数学的な意味はあまり気にしていませんでした。しかし、今回の書籍を読んで、少しデータに対する見方が変わったと思います。例えば、テストの点数でいうと、平均点よりどれくらい上か下かばかりを評価していましたが、標準偏差も考慮しないと無意味なことだったなぁと感じました。もし、英語の平均点が50点とした場合に自分が70点をとっても、標準偏差が5か15かで価値は異なってきます。標準偏差が15の場合、平均点±15点の間に全体の68%が含まれるため、自分の70点の価値はそこまで高くありません。しかし、標準偏差が5の場合、平均点±10点の間に全体の94.5%が含まれるので、自分の70点の価値は相当に高いものになります。このような分析は平均点±1σの間に68%、平均点±2σの間に94.5%分布しているという確率密度関数の性質を使えば簡単にできることですが、高校時代を振り返ってみても、学校側が平均と最高点、最低点ぐらいしか情報を開示しなかったということもありますが、平均点ばかりを見ていて標準偏差を全然見てなかったなぁと思います。 大学などで学んだ検定などは数式ばかりで理解が困難でしたが、マンガで具体的に説明してもらうことで、偏差値の本当の意味や、標準正規分布の便利さをよく分かることができました。 続いて、Jetson Nanoのセットアップについて 今回の作業はYOLOのインストールでしたが、これもなかなか上手くいきませんでした。 具体的には、まず 、 $sudo nvpmodel -m 0 $sudo jetson_clocks によりフルパワー化実行したのち、gitのdarknetをダウンロードしました。 その後 YOLOv3 と YOLOv3 Tiny の Pre-Trained Model をdarknetディレクトリにダウンロードする必要があるのですが、自分では上手くインストールできているつもりが、できていなかったので、コードを打っても正常に働いていませんでした

~11/6までの作業報告

イメージ
 Jetson Nanoの準備であまり進んではいないもののここまでの作業と失敗をまとめたいと思います。 まず資料の行程1は出社の際に済ませてもらっていたので自宅での作業は工程の2のJetson Nanoにopencvをダウンロードするところから。 まずzipファイルをGitHubからダウンロードする必要があるのですが、初めて使用するのでサインアップをしてから行いました。その後、zipファイルを解凍してからshファイルをテキストエディタで編集する必要があるのにも関わらず、Vimを使ってファイルを開き挿入で編集し、保存したつもりになっており、何度開いても変更が保存されずに困っていました。そこでファイルを開かずにターミナルからコマンドを用いてファイルの編集を試みました。 実際に用いたコードは以下。 sed -e "/-D WITH_GESTREAMER=ON/-D WITH_GESTREAMER=OFF/".build_opencv.sh  sed -i s/-D WITH_GESTREAMER=ON/-D WITH_GESTREAMER=OFF/build_opencv.sh sed -e /-D WITH_GESTREAMER=ON/-D WITH_GESTREAMER=OFF/build_opencv.sh などというようにONからOFFに変えることを意図してコードを書きましたが、返ってくるのはエラーコードばかりで戸惑いました。sedコマンドの使い方が間違っているのか、そもそもshファイルの編集にsedコマンドが使えるのか分からないまま似たようなコードを打ち続けて多くの時間を使ってしまいました。質問させて頂きなんとかテキストエディタを使って編集することができましたが、LinaxOS、ディレクトリの理解、コマンド操作など慣れていかなければならないことが多く見つかりました。 ./ファイルで実行した処理に4、5時間かかるので、Fusion360の動画を見て基本操作を学びました。 Fusion360 今回使用した書籍: Fusion360マスターズガイド改訂第2版  【超入門Fusion360 #1】スケッチで失敗しない6つのポイント というメーカーズラブの動画を見ながら実際に動かしてみたのですが、押し出しのときに単一のビューであると選択の反応が悪いです

11/4の作業報告

イメージ
  11月4の作業報告 会社での作業: 1.VRの体験 2m四方の空間でVRをセットして頂き、Google Earthのストーリービューと連携することで世界各国の様子を見ることができました。初めてのVRであったので、バーチャルの感覚に最初は戸惑いましたが、貴重な体験をさせて頂きました。また、VR技術には高度な計算処理が備わっており、人間が仮想空間でも不快に感じないように設計されているそうです。例えば、右の方向に振り向くスピードにバーチャルの視界が追い付かなければ、人は違和感を感じてしまいますが、ジャイロやそのほかの部品の処理を上手く設定することで、より現実的な世界を楽しむことができます。 2.Jetson Nanoのセットアップ Jetson Nanoのパフォーマンスを上げて、処理が固まったりすることを防ぐために以下のコマンドをはじめに打ち込みました。 $ sudo nvpmodel -m 0 $sudo jetson_clocks この二つをコマンドすることでFANの速度を最大化でき、処理速度が上がるそうです。 この他にもいろいろコマンドすることがあるので調べながら確認していきたいと思います。 3.コンパイル言語とスクリプト言語について コンパイル言語:JavaやC言語など スクリプト言語:JavaScriptやPythonなど 今までこの二つの違いについてあまり深堀せず、スクリプト言語の方が扱いやすく簡単なんだろうぐらいにしか考えていませんでした。 ご説明して頂き自分でも調べてみたところ、スクリプト言語を用いた場合、処理を実行しながら、人間に打ち込まれたプログラムを機械が分かるように翻訳していきます。動作が同時進行であるので、何万行といった式を処理していく場合は、コンパイルするのに多くの時間をとられてしまうので実行速度が遅くなるそうです。ただ、比較的少ない処理数であれば、処理速度には問題なく動作するようです。僕もJavaScriptを使ってプログラミングしていたころは、数百程度のコード処理では、動作のスピードが気にかかったことはなかったです。 対して、コンパイル言語を使うと、機械が分かるようにすべてのプログラムを機械が分かるように翻訳してから他の処理を行うので、コンパイルと処理が同時進行することはありません。そのため、何万という長文のコードを実行する場合でも処理

11/2の作業報告

イメージ
11月2日の作業報告 会社での作業 : 1.3Dプリンターを用いたZoom三脚台の作成 Fusion360を使って、軽くデザインを変更した円柱のsltファイルを3Dプリンターにエクスポートし、Zoomの三脚台を作成して頂きました。(完成に十数時間かかる) 2.AIやIoTについての説明 パワーポイントを用いて、AI、機械学習、深層学習についての説明をして頂きました。 3.Jetson Nanoのセットアップ・ケース作成 自宅で行ったセットアップの動作チェックと、自力で作成できなかったJetson Nanoのケースを作って頂きました。 4.SSHでJetson Nanoを操作する方法 iOSとWindowsにおけるSSHを使ったJetson Nanoの操作方法を学びました。 5.Arduinoと組み込みの説明 Arduinoをパソコンにセットアップして頂き、各種の組み込み用の機器などの説明をして頂きました。 6.ベイズ理論や数理モデルの書籍の貸し出し AIやIoTの概要を理解するための書籍を貸し出して頂きました。 自宅での作業: 早速貸し出して頂いた「図解・ベイズ統計「超」入門」という書籍を用いてベイズの定理と統計の関係を理解しました。「AかつB」=「BかつA」という誰もが当たり前に理解している前提条件から、誰も思いつかない定理を生み出したことにはコロンブスの卵のような凄みを感じました。また、人間の経験や知恵との相性がいいのもベイズの定理の面白いところだと思います。例えば、曇りの後はだいたい雨だからこの事前確率には0.8を設定してみようなどといった経験的な予測を実際の計算に取り入れることができたり、古いデータを新しいデータの事前確率として再活用することができたりします。非厳密的にみえるようなものでも意味のある値として利用できるからAI開発や深層学習などといった様々なデータを使う分野でもベイズの定理は重要な役割を果たせてるのかなぁと考えました。それと、高校時代に僕の頭を悩ました定期テストの条件付き確率もベイズの定理があればもっとスマートに短時間で解くことができたのになぁと思いましたし、今の高校生に教えてあげたら確率の世界をもう少し広い視野で俯瞰できるのではとも思いました。また、今回貸し出して頂いた本は会話形式でイメージしにくい抽象的な部分も分かりやすく説明されていたので