用いてデータフレームを作成し、操作する方法を学びます。データフレームとは、データ分析を行う上で便利な表形式のデータ構造を指します。体を管理することができます。condaでは、環境設定をYAML形式で書き出すことで、そこから簡単に環境を再構築することができます。NotebookPythonのコードを含んだWebページ(ドキュメント)を作成できる機能です。Pythonコードは単純なテキストではなくきちんとPythonコードとして実行されるため、実行可能なコードとその結果を併せて保存しておくことができます。その上Webページのリッチな装飾で解説を入れ、公開/共有できる。体を管理することができます。condaでは、環境設定をYAML形式で書き出すことで、そこから簡単に環境を再構築することができます。留意事項PyPIに登録されている全てのパッケージがcondaでインストールできるわけではありません。condaでインストールできないパッケージは、従来通りpipでインストールすることが可能です。実行することで、環境設定をYAML形式で書き出すことができます。ノートブックと呼ばれる形式で作成したプログラムを実行し、実行結果を記録しながら、データの分析作業を進めるためのツールです。同時にインストールされています。Notebook」を選択します。データフレームは、テーブルとして出力できます。出力したグラフをノートブック内に表示させることも可能です。形式でメモとして残すことが可能です。形式でエクスポートして共有することが可能です。ファイルとして出力することもできます。Notebookも含まれています。それ以外にも、データ分析や機械学習で使用される最も一般的なPythonディストリビューションの1つです。Anacondaインストールパッケージをここから選択してください。パッケージをダウンロードしてインストールします。3と適切なすべての依存関係の環境を作成できます。information.ターミナルプロンプトで次のコマンドを実行してOpenCVを取得します。NotebookあなたはJupyterノートブックでこのプロジェクトを完了します。RossantのJupyterノートブックとPythonの基礎を調べてみてください。Jupyterは、コードブロックを実行して結果をインタラクティブに見ることができるipythonノートブックです。このプロジェクトのすべてのコードは、Jupiterのノートブックに含まれています。notebook現在のディレクトリの内容を示すブラウザウィンドウが表示されます。「P1.ipynb」というファイルをクリックします。ノートブックを表示する別のブラウザウィンドウが表示されます。ノートブックの指示に従ってプロジェクトを完了します。TensorFlowとの最初のやりとりについて読むことができます。多かれ少なかれ、図書館についてもっと知ることは私の遊び場です。前提条件このプロジェクトを実行するには、Minicondaがインストールされている必要があります(クイックインストールの手順については、このリンクをご覧ください)。インストールこのプロジェクトの環境を作成するには、次のコマンドを使用します。notebook現在のディレクトリにJupyterのブラウザが開きます。Labノートブックのインストール(https://github.com/udacity/CarND-TensorFlow-Lab)このプロジェクトの環境を作成するには、次のコマンドを使用します。environment.yml環境が作成された後、次のコマンドで起動する必要があります。Labのインストール(https://github.com/udacity/CarND-LeNet-Lab)このプロジェクトの環境を作成するには、次のコマンドを使用します。cardnd-term1-environment.yml環境が作成された後、次のコマンドで起動する必要があります。モデル予測制御(MPC)プロジェクト概要このプロジェクトはUdacityのシミュレータの車を制御するモデル予測コントローラ(MPC)を実装しています。(ここでダウンロードできます)。シミュレータはWebSocketを使用して車のテレメトリ情報(ここではデータの仕様)をMPCに送信し、ステアリングの角度とスロットルを受信します。WebSocket実装を使用します。Udacityは、このプロジェクト(ここ)から始まる種のプロジェクトを提供します。このプロジェクトを実行するには、Minicondaがインストールされている必要があります。(このリンクをクリックすると、簡単にインストールできます)。インストールこのプロジェクトの環境を作成するには、次のコマンドを使用します。environment.yml環境が作成された後、次のコマンドで起動する必要があります。carnd-term1プロジェクト目標このプロジェクトの目標/手順は次のとおりです。類子をトレーニングします。リニアSVM分類子オプションで、カラー変換を適用して、色分けされたカラーフィーチャとカラーのヒストグラムをHOGに追加することもできます特徴ベクトル。注:最初の2つのステップでは、フィーチャを正規化し、トレーニングとテストのために選択範囲をランダム化することを忘れないでください。スライドウィンドウ技術を実装し、訓練された分類器を使用して画像内の車両を検索します。project_video.mp4に実装する)フレームごとに定期的な検出のヒートマップを作成して異常値を拒否し、検出された車両に従います。検出された車両のバウンディングボックスを見積もります。ルービックポイントここでは、ループリックポイントを個別に検討し、実装で各ポイントにどのように対処したかを説明します。READMEを提供します。あなたは、マークアップまたはpdfとしてあなたの書き込みを提出することができます。ここでは、このプロジェクトのテンプレートの書き方を紹介し、出発点として使用できます。Detectionノートブックにあります。非車両列車の画像数:8968これらの画像の例を次に示します。このセルには、イメージからフィーチャを抽出するためのUdacityの講義によって提供される一連の関数が含まれています。extract_features関数は、他の関数を組み合わせて、FeatureParametersクラスを使用して、すべてのパラメータを1つの場所に保持します。[19]で計算された車両と非車両のHOGの例を示しています。HOGパラメータの最終的な選択についてどのように解決したかを説明します。パラメータは手動で変更し、モデルの精度を最大化し、フィッティング時間を最小限に抑えるように試すことで検出されました。最後のパラメータは次のとおりです。range(0,256)ClassifierLinearSVCScalerStandardScalerこのパラメータを用いて、分類器の精度は99.41%であり、訓練には2.97秒かかった。抽出を適用して、車を含むウィンドウを見つけ出すことでした。[8]で実装されています。セル[9]と[10]にはテスト画像をロードするためのコードが含まれており、分類子を画像と描画ボックスに適用しています。スケールと重なりパラメータは、成功した結果が見つかるまでそれらを試して見つけます。次の図は、テスト画像に対するこの実験の結果を示しています。そこで見つかったボックスを組み合わせ、いくつかの偽陽性を排除するために、しきい値で実装されたヒートマップとscipy.ndimage.measurementsの関数ラベル()を使用して、車の場所を見つけました。[13]にあり、次のイメージはテストイメージの結果を示しています。イメージはテストイメージに対するこの実験の結果を示しています。そこで見つかったボックスを組み合わせ、いくつかの偽陽性を排除するために、しきい値で実装されたヒートマップとscipy.ndimage.measurementsの関数ラベル()を使用して、車の場所を見つけました。[13]にあり、次のイメージはテストイメージの結果を示しています。イメージはテストイメージに対するこの実験の結果を示しています。1.最終ビデオ出力へのリンクを提供します。あなたのパイプラインはプロジェクトビデオ全体で合理的にうまく動作するはずです。(誤検知を最小限に抑えてほとんどの車両を識別している限り、やや不安定な、あるいは不安定なバウンディングボックスは大丈夫です)。2.誤検出のためにいくつかのフィルタを実装し、重複するバウンディングボックスを組み合わせる方法を記述して(コード内のどこに特定するか)記述します。パイプラインでヒートマップとしきい値を使用して誤検知を最小限に抑えるためにいくつかの努力がすでに行われていましたが、十分ではありませんでした。重なり合う境界ボックスは、scipy.ndimage.measurementsの関数label()を使用して車を見つけることによって解決されました。偽陽性をフィルタリングするために、画像ヒートマップマップは3つの連続フレームにわたって平均化された。前提条件このプロジェクトを実行するには、Minicondaがインストールされている必要があります。(このリンクをクリックすると、簡単にインストールできます)。インストールこのプロジェクトの環境を作成するには、次のコマンドを使用します。environment.yml環境が作成された後、次のコマンドで起動する必要があります。目標このプロジェクトの目標/手順は次のとおりです。1組のチェスボード画像を与えられたカメラの較正行列と歪み係数を計算する。生の画像に歪み補正を適用します。色変換、グラデーションなどを使用して、しきい値付きバイナリイメージを作成します。パースペクティブ変換を適用してバイナリイメージ(「鳥瞰図」)を修正します。レーンピクセルを検出し、レーン境界を見つけるために適合する。レーンの曲率とセンター上の車両の位置を決定する。検出された車線境界を元の画像に戻します。車線境界の視覚的な表示と、車線の曲率および車両位置の数値推定を出力します。READMEを提供します。あなたは、マークアップまたはpdfとしてあなたの書き込みを提出することができます。ここでは、このプロジェクトのテンプレートの書き方を紹介し、出発点として使用できます。あなたはそれを読んでいる!カメラキャリブレーション1.カメラマトリックスと歪み係数の計算方法を簡単に説明します。歪み補正された較正画像の一例を提供する。カメラ較正コードは、01カメラ較正ノートブックに記載されています。cv2.findChessboardCornersを使用すると、コーナーポイントは、チェス盤が見つかる可能性のある各較正画像の配列のイメージポイントに格納されます。'z'座標としてゼロを持つことになります。オブジェクトポイントはobjpointsという配列に格納されます。その後、出力objpointとimgpointを使用して、cv2.calibrateCamera関数を使用してカメラの較正と歪み係数を計算しました。READMEを提供します。あなたは、マークアップまたはpdfとしてあなたの書き込みを提出することができます。ここでは、このプロジェクトのテンプレートの書き方を紹介し、出発点として使用できます。カメラキャリブレーション1.カメラマトリックスと歪み係数の計算方法を簡単に説明します。歪み補正された較正画像の一例を提供する。カメラ較正コードは、01カメラ較正ノートブックに記載されています。cv2.findChessboardCornersを使用すると、コーナーポイントは、チェス盤が見つかる可能性のある各較正画像の配列のイメージポイントに格納されます。'z'座標としてゼロを持つことになります。オブジェクトポイントはobjpointsという配列に格納されます。その後、出力objpointとimgpointを使用して、cv2.calibrateCamera関数を使用してカメラの較正と歪み係数を計算しました。私はこの歪み補正をcv2.undistort関数を使ってテスト画像に適用し、この結果を得ました。Linesノートブックにあります。歪み補正画像の一例を示す。カメラ較正計算は、01カメラ較正ノートブックで行った。[2]にpickleがロードされます。次の図は、テスト画像の1つにカメラのキャリブレーションを適用した結果を示しています。2.しきい値変換されたバイナリイメージを作成するために、色変換、グラデーション、またはその他の方法をどのように使用したかを記述し(コード内のどこに識別するか)示します。バイナリ画像の結果の例を提供する。Thresholdノートブックにあります。HLSへの色変換は[6]で行われ、Sチャネルが選択されたのは、次の図に示すように、より多くの契約を車線に表示するためです。色変換が行われた後、勾配の時間がありました。次の図では、いくつかのテスト画像にさまざまなグラデーションが並べて表示されます。これらの勾配の完全な組み合わせは、「ノイズの多い」二値画像をもたらす。Linesノートではなぜですか。Yの組み合わせのみが使用されました。次の画像は、その組み合わせでテスト画像に得られたバイナリ画像を示しています。例を提供してください。遠近法変換コードは、03-Perspective変換ノートブックで見つけることができます。第1の画像上で透視変換のソースとして選択された4点。トランスフォーメーションの目的地は、通りをはっきりと見える場所です。宛先(585,455)(200,0)(705,455)(maxX-200,0)(1130,720)(maxX-200、maxY)(190,720)(200、maxY)cv2.getPerspectiveTransformを使用して、変換行列を計算し、ポイントを元の空間に戻す逆変換行列も計算しました。テスト画像の変換の結果は次のとおりです。使用して格納されていました。次の図は、透視変換後のバイナリ画像の結果を示しています。アルゴリズムは、X軸上のヒストグラムを計算する。画像の右側と左側のピックを見つけ、それらのウィンドウに含まれる非ゼロ点を集めます。すべての点が収集されると、(np.polyfitを使用して)線形モデルを見つけるために多項式近似が使用されます。同じコード上で、後で曲率計算に使用するために、ピクセルをメーターに変換する同じ点で別の多項式フィットが行われます。次の図は、各ウィンドウ、ウィンドウおよび多項式で見つかった点を示しています。ステップ4では、曲率を計算するためにここで使用されるメートル空間上で多項式を計算した。数式は次のとおりです。fitは多項式を含む配列、yRangeは最大Y値、ym_per_pixはピクセルあたりのメーター値です。最大Yで左と右の多項式を評価し、中点を見つけることによって車線中心を計算します。車両の中心を計算して、画像の中心をピクセルからメートルに変換します。レーンセンターと車両センターとの間の距離の間の符号は、車両が左側または右側にある場合に与えられる。6.車線区域が明確に識別されるように、道路上にプロットされた結果の例示的なイメージを提供する。画像上にレーン線を表示するために、多項式はY座標の線形空間上で評価される。生成された点は、透視変換によって生成された逆変換行列を使用して画像空間にマップされる。パイプライン(ビデオ)1.最終ビデオ出力へのリンクを提供します。あなたのパイプラインはプロジェクトビデオ全体で十分にうまくいくはずです。(ぐらつきのある線は大丈夫ですが、車が道路から追い出される致命的な失敗はありません)。[21]で見つかったコードのリファクタリングの後、プロジェクトビデオが処理され、video_output討論1.簡単に、このプロジェクトの実装で直面した問題や問題について話し合ってください。頑強にするために何ができますか?反復計算によるプロセスのパフォーマンスにはいくつかの改善があります。プロセスの堅牢性を向上させるために、より多くの情報をフレームごとに使用することができます。ライン検出を改善するために、他の勾配(例えば、ラプラシアン)を使用することができる。Vehicleプロジェクト概要このプロジェクトは、幼児ロボット(車)問題に適用されるパーティクルフィルタを実装しています。シミュレータはUdacityによって提供されています(ここでダウンロードできます)。Filterまでのノイズの多いランドマーク観測を生成します。WebSocket実装を使用して、この観測値に推定された車の位置で応答します。Udacityは、このプロジェクト(ここ)から始まる種のプロジェクトを提供します。前提条件プロジェクトには次の依存関係があります(Udacityのシードプロジェクトから)。5.4Udacityのシミュレータ。これらのコンポーネントを異なるオペレーティングシステムにインストールする方法については、Udacityのシードプロジェクトを参照してください。OSに焦点を当てます。私はそれを制限して申し訳なく思っています。必要なライブラリをインストールするには、install-mac.shを使用します。26262の傘下にあるレーンアシスタンスシステムの機能安全に関する文書を作成することから成り立っています。26262は、生産自動車の電気および/または電子システムの機能安全に関する国際規格です国際標準化機構(ISO)によって承認されました。レーンアシスタンスシステムは、次の機能を備えたアドバンストドライバーアシスタンスシステム(ADAS)の一部です。車線逸脱の警告:運転手が車線の端に向かってドリフトすると、ハンドルが振動して運転手に警告します。レーンキープアシスト:ドライバーがレーンの端に向かってドリフトすると、ステアリングホイールがレーンの中心に向かって回転し、現在のレーンにカーを保ちます。Udacityは、ドキュメントテンプレート、アーキテクチャー図、プロジェクトへのアプローチ方法に関する指針を提供するシードプロジェクトを提供しています。++を実装することで構成されています。[UKF]はそれらの測定値を融合して物体の位置を予測する必要があります。シミュレータとUKFの間の通信は、UKF側のuWebSockets実装を使用してWebSocketを使用して行われます。このプロジェクトを開始するために、Udacityはここにある種のプロジェクトを提供します。前提条件プロジェクトには次の依存関係があります(Udacityのシードプロジェクトから)。5.4Udacityのシミュレータ。ェクトを参照してください。OSに焦点を当てます。私はそれを制限して申し訳なく思っています。必要なライブラリをインストールするには、install-mac.shを使用します。交通標識クラシファイアこのレポには、Udacity自己運転車Nanodegree第1項の第2プロジェクトが含まれています。プロジェクトは交通標識を認識するための畳み込みニューラルネットワークの訓練にあります。プロジェクトの定義はここで見つけることができます前提条件このプロジェクトを実行するには、Minicondaがインストールされている必要があります。(このリンクをクリックすると、簡単にインストールできます)。インストールこのプロジェクトの環境を作成するには、次のコマンドを使用します。environment.yml環境が作成された後、次のコマンドで起動する必要があります。carnd-term1./data/train.p.zipファイルを./dataに解凍します。このファイルにはトレーニングのための交通標識が含まれています。圧縮することなくgithubに入れるには大きすぎます。Simplified.ipynbです。他にも重要なディレクトリがあります:data:ニューラルネットワークのトレーニング、検証、テストのための交通標識画像が含まれています。model:トレーニングから保存されたモデルが含まれます。webimages:Web上に見つかった5つの画像を含み、それらの画像をテストします。画像とネットワークを前処理するために使った別のノートがあります。Simplified.ipynbで見つけることができます。それは5つのステップで構成されています。ステップ0:データをロードするこのステップでは、提供されたデータがpickleライブラリを使用してロードされます。画像には、それらの表現を認識するためのラベルが付いています。ラベルは数字ですが、ラベルと画像のテキスト名との間のマッピングを含む.csvファイルがあり、より人間に優しいものになります。ステップ1:データセットの概要と調査ここでデータセットを調べます。いくつかの一般的な数字を示します。4343種類の交通標識があります。配布には最初のラベルに画像が多すぎます。私はモデルを訓練するためにもっと多くのイメージを持つ必要がありました。プロセスはデータ増強と呼ばれます。新しい画像は、小さい分布で画像を変換することによって訓練データから生成される。[-90,90]度であった。architecture前処理ニューラルネットワークは、入力(特徴)分布が平均ゼロを有する場合にはより良好に機能する。128を適用して各ピクセルを操作することでした。イメージの品質を向上させるためにできる前処理はたくさんあります。(私はここでいくつかのテストを行いました)が、画像をグレースケール化するためだけに決めました。使用される最終的な前処理は、次の2つのステップで構成されます。OpenCVを使用して画像をグレースケールに変換する。128を引いてピクセル値を[-1,1]の範囲に変換し、128で除算します。モデルアーキテクチャ開始モデルはUdacityによって提供されたLeNetでした。このモデルは、認識手書きや文字の印刷でうまくいくことが証明されました。交通標識の分類に適しています。カラー画像で標準モデルの作業を修正した後、私は現在のデータセットと15エポックで90%以上の精度を得ることができませんでした。これを改善するには、最初の2つの畳み込みレイヤーをさらに深くしてから、完全に連結されたレイヤーのサイズを大きくします。これらの変更により、私は90%以上の精度を得ました。進めるために、0.7の確率で2つのドロップアウトレイヤーを追加し、トレーニングエポックを40に増やしました。最終的なモデルは次のように記述されます。43ドロップアウトの導入はトレーニングプロセスを安定させるのに役立ちます。モデルのトレーニング、検証、テスト私は15回のエポックでトレーニングを始め、40回に増やしました。学習率0.001を使用し、学習速度を変更する必要のないAdamオプティマイザを使用します。エポックによるネットワークの正確さは次のとおりです。%ステップ3:新しい画像でモデルをテストするこのステップでは、Web上に見つかった5つの新しい画像が分類されます。最初に、画像がロードされて表示されます。ニューラルネットワークが識別するために複雑にすべき唯一の画像は、訓練に使用される道路作業画像の垂直反転であるため、road_work.jpgです。私はそれを知らなかったが、それがどのように機能するのか興味深いかもしれない。同じ前処理がそれらに適用されます:そしてそれらはニューラルネットワークに供給される。私はアウトプットバリューの分配について興味がありました:5枚の画像のうち4枚が正しく分類されています。それはこの画像上でネットワークを80%正確にします:ここでは、それらの上位5つのsoftmax確率とその名前値を示します。Yieldステップ4(オプション):ニューラルネットワークの状態をテスト画像で視覚化するこれはオプションのステップでしたが、各レイヤーに焦点を当てている機能を確認するのは面白いです。++で実装することで構成されています。Udacityによって提供されるシミュレータ(ここでダウンロード可能)は、物体の位置および速度のノイズのあるRADARおよびLIDAR測定値を生成し、拡張カルマンフィルタ[EKF]はそれらの測定値を融合して物体の位置を予測する必要があります。シミュレータとEKF間の通信は、EKF側のuWebSockets実装を使用してWebSocketを使用して行われます。このプロジェクトを開始するために、Udacityは(ここで)(https://github.com/udacity/CarND-Extended-Kalman-Filter-Project)見つけることができる種子プロジェクトを提供します。前提条件プロジェクトには次の依存関係があります(Udacityのシードプロジェクトから)。5.4Udacityのシミュレータ。OSに焦点を当てます。私はそれを制限して申し訳なく思っています。必要なライブラリをインストールするには、install-mac.shを使用します。象物の状態を推定します。プロジェクトに合格するには、プロジェクトルーブリックに記載されている許容値よりも低いRMSE値を取得する必要があります。このリポジトリには、LinuxシステムまたはMacシステム用のuWebSocketIOのセットアップとインストールに使用できる2つのファイルが含まれています。Bashを使用してuWebSocketIOをインストールすることができます。必要なバージョンとインストールスクリプトについては、このコンセプトを教室でご覧ください。uWebSocketIOのインストールが完了したら、プロジェクトのトップディレクトリから次のように実行して、メインプログラムをビルドして実行できます。SimulatorUdacityの自走車シミュレータへようこそこのシミュレータは、深層学習を使用して道路コースをナビゲートする方法を学習する方法を学生に教えるためにUdacityの自己運転車Nanodegreeのために作られました。プロジェクトの詳細はこちら。このリポジトリ内のすべてのアセットにはUnityが必要です。完全な設定については、以下の手順に従ってください。Builds(シミュレータのプリコンパイル済みビルド)手順:zipファイルをダウンロードして解凍し、exectutionファイルを実行します。LFSを使用してください。あなたがすでにそれを持っていない場合、無料のゲーム作成エンジンUnityをインストールしてください。すべての資産をロードするには、統合が必要です。Unity、プロジェクトを終了してロードを選択し、self-driving-car-simフォルダを選択します。/シーン]フォルダに移動してシーンをロードします。レイクトラックなどのシーンの1つをロードするには、ファイルLakeTrackTraining.unityをダブルクリックします。シーンがロードされると、マウスを右クリックして回転させ、マウスをスクロールしてズームすることによって、シーンビューイングウィンドウでそのシーンを回ることができます。表示ウィンドウのすぐ上にあるトップ再生ボタンの矢印をクリックするだけで、いつでもゲームモードにジャンプできます。スクリプトを表示します。最初のものは、ほとんどがUIとソケット接続に関連するAssets/1_SelfDrivingCar/Scriptsです。Assets/Vehicle/Car/Scriptsで、車とのさまざまなやり取りをすべて制御します。新しいトラックを作る。Assets/RoadKit/Prefabsにある事前に構築された道路プレハブを使用して簡単に新しいトラックを構築することができます。道路プレハブをクリックしてエディタにドラッグすると、「v」を押しながらドラッグして頂点スナップを簡単に組み合わせることができます別のピースに近い道路ピース。概要このプロジェクトでは、Udacityが提供するシミュレータのハイウェイに車を運転するための経路計画アルゴリズムを実装する必要があります。(シミュレータはここでダウンロードできます)。シミュレータは、自動車のテレメトリ情報(車の位置と速度)と、高速道路の他の車に関するセンサ融合情報(例:車のID、速度、位置)を送信します。クルマの軌道を表す時間間隔0.02秒の点集合が必要です。シミュレータとパスプランナー間の通信は、WebSocketを使用して行われます。WebSocket実装を使用します。Udacityは、このプロジェクト(ここ)から始まる種のプロジェクトを提供します。前提条件プロジェクトには次の依存関係があります(Udacityのシードプロジェクトから)。1.12.0Udacityのシミュレータ。これらのコンポーネントを異なるオペレーティングシステムにインストールする方法については、Udacityのシードプロジェクトを参照してください。OSに焦点を当てます。私はそれを制限して申し訳なく思っています。必要なライブラリをインストールするには、install-mac.shを使用します。プロジェクトのコンパイルと実行プロジェクトをビルドするには、repoルートに./build.shスクリプトがあります。それは./buildディレクトリを作成し、コードをコンパイルします。次に、このスクリプトの出力例を示します。path_planningプロジェクトは./build/path_planningを使って直接実行できます。次のステップは、Udacityのシミュレータを開くことです。シミュレータの最初の画面"選択"ボタンをクリックし、ハイウェイで最高のものを願って...まあ...実際には...私たちはキャッチしていません、そうですか?私は始めましたが、今はうまくいきます!ルービックポイント編集コードは正しくコンパイルされます。cmake構成に変更はありませんでした。spline.hが追加されました。これは、Cubicスプライン補間の実装です:単一の.hファイル多項式の代わりにスプラインを使用することができます。教室のQAビデオからの素晴らしい提案でした。それは素晴らしい作品です。車は事故なく少なくとも4.32マイル走行することができます。車は制限速度に従って運転する。速度制限のない赤いメッセージが表示されました。最大加速度とジャークは超過しません。最大ジャーク・レッド・メッセージは見られませんでした。車には衝突がありません。車は車線変更の間を除いてその車線にとどまります。車はほとんどの時間車線にとどまりますが、交通のために車線が変更されたり、中央の車線に戻ることがあります。中央車線を戻すのが安全な場合は安全です。反射シードプロジェクトから提供されたコードに基づいて、パス計画アルゴリズムはsrc/main.cpp行246から行416まで開始します。コードは、プロセス全体を示すために異なる関数に分けることができますが、ファイルや他のファイルの異なる部分にジャンプすることを避けるために単一の場所。複雑な環境および異なる要件では、より多くの構造を使用することができる。今のところ、コードの可読性を向上させるコメントが提供されています。コードは3つの部分で構成されています。予測線255から線290コードのこの部分はテレメトリとセンサの融合データを扱います。それは、環境を推論することを意図している。この部分は何をすべきかを決定します:私たちの前に車があれば、車線を変えますか?私たちはスピードアップしたり減速したりしますか?私たちがいる状況の予測に基づいて、このコードはスピードを増やしたりスピードを落としたり、安全なときに車線を変えたりします。コードのこの部分で速度を上げる代わりに、コードの最後の部分に軌跡を生成するときにspeed_diffを作成して速度の変更に使用します。このアプローチは、衝突の原因となるブレーキをかけようとする車のような変化する状況に、より速く応答するように車を応答させます。線317から線416このコードは、行動、車の座標および過去の経路点からの速度および車線出力に基づいて軌道の計算を行います。前回の軌道の最後の2点(先行軌道がない場合のかごの位置、線321~345)を遠方の3点(線348~350)と組み合わせてスプライン計算を初期化する(線370および371)。これらの点に基づいてスプライン計算が複雑にならないように、座標はローカルの車座標(361〜367行)に変換(シフトおよび回転)されます。軌道上の連続性をより確実にするために(パス軌跡の最後の2点をスプライン調整に加えることに加えて)、パス軌跡点が新しい軌道にコピーされる(線374〜379)。残りの点は、スプラインを評価し、出力座標をローカル座標ではない線(388〜407行)に変換することによって計算されます。393行目から398行目までのカーの速度の変化に気づくのは価値があります。速度の変化はコードのビヘイビアの部分で決まりますが、その部分では軌道上の点を増減するために使用されます完全な軌道。Nanodegreeの最初のプロジェクトを完了するために書かれたコードが含まれています。このプロジェクトは、道路上の車線をビデオ上で識別するためのアルゴリズムで構成されています。ビデオは、車両の中央のカメラから撮影されます。前提条件このプロジェクトを実行するには、Minicondaがインストールされている必要があります。(このリンクをクリックすると、簡単にインストールできます)。インストールこのプロジェクトの環境を作成するには、次のコマンドを使用します。environment.yml環境が作成された後、次のコマンドで起動する必要があります。P1.ipynb概要repoには、処理パイプラインが実装されているjupiterノートP1.ipynbが含まれています。パイプラインは、6つの異なる機能で表される6つのステップから構成されます。grayAction:cv2.cvtColorメソッドを使用して入力イメージのグレースケールバージョンを返します。blurAction:cv2.GaussianBlurメソッドを使用して、提供された画像にガウスぼかしを適用します。cannyAction:Canny変換を使用して、イメージのエッジをcv2.Cannyメソッドを使用して検索します。maskAction:行の検出に関して面白くない部分(現在は...)を取り除きます。houghAction:ハフ変換を使用して、マスクされたイメージ上の線をcv2.cv2.HoughLinesPを使用して検索します。np.polyfitメソッドを使用して道路線をより明瞭に2行表示するために、ハフ変換によって返された行のセットに合わせて行を調整します。weighted_img:houghActionの出力を元の画像にマージして、その上の線を表します。最初に、パイプラインは、test_imagesに含まれているイメージを再度テストします。レクトリに保存されます。test_images_graytest_images_blurtest_images_cannytest_images_regiontest_images_houghtest_images_mergedこのテストの後、パイプラインは単一の関数process_imageに統合され、ビデオフレームに適用されます。サンプルビデオはここにあります。[test_videos_output]ディレクトリに保存されます。出力のHTMLバージョンがここにあります。ライセンスこのプロジェクトの著作権は、MITライセンスに基づいています。Nanodegreeの最初のプロジェクトを完了するために書かれたコードが含まれています。このプロジェクトは、道路上の車線をビデオ上で識別するためのアルゴリズムで構成されています。ビデオは、車両の中央のカメラから撮影されます。前提条件このプロジェクトを実行するには、Minicondaがインストールされている必要があります。(このリンクをクリックすると、簡単にインストールできます)。インストールこのプロジェクトの環境を作成するには、次のコマンドを使用します。environment.yml環境が作成された後、次のコマンドで起動する必要があります。ジュピターノートP1.ipynb概要repoには、処理パイプラインが実装されているjupiterノートP1.ipynbが含まれています。/staパイプラインは、6つの異なる機能で表される6つのステップから構成されます。grayAction:cv2.cvtColorメソッドを使用して入力イメージのグレースケールバージョンを返します。blurAction:cv2.GaussianBlurメソッドを使用して、提供された画像にガウスぼかしを適用します。cannyAction:Canny変換を使用して、イメージのエッジをcv2.Cannyメソッドを使用して検索します。maskAction:行の検出に関して面白くない部分(現在は...)を取り除きます。houghAction:ハフ変換を使用して、マスクされたイメージ上の線をcv2.cv2.HoughLinesPを使用して検索します。np.polyfitメソッドを使用して道路線をより明瞭に2行表示するために、ハフ変換によって返された行のセットに合わせて行を調整します。weighted_img:houghActionの出力を元の画像にマージして、その上の線を表します。最初に、パイプラインは、test_imagesに含まれているイメージを再度テストします。各ステップの出力はディレクトリに保存されます。test_images_graytest_images_blurtest_images_cannytest_images_regiontest_images_houghtest_images_mergedこのテストの後、パイプラインは単一の関数process_imageに統合され、ビデオフレームに適用されます。サンプルビデオはここにあります。[test_videos_output]ディレクトリに保存されます。出力のHTMLバージョンがここにあります。ライセンスこのプロジェクトの著作権は、MITライセンスに基づいています。CarND-Object-Detection-LabMobileNetsと分離可能な深さ方向の畳み込みについて学んでください。Detection)アーキテクチャ予め訓練されたTensorFlowオブジェクト検出推論モデルを使用してオブジェクトを検出する異なるアーキテクチャを使用して、トレードオフを評価してください。オブジェクト検出パイプラインをビデオに適用します。pipのインストールをtensorflow-gpuからtensorflowに変更してください。Anaconda環境での作業に関する追加ドキュメント。Markdownは、Markdown言語を使い(Codeや処理結果への)説明をつける時に選択。P1.ipynb」による道路上の車線を探すこのプロジェクトでは、レッスンで学んだツールを使用して道路の車線を特定します。一連の個々の画像でパイプラインを開発し、後で結果をビデオストリーム(実際には一連の画像)に適用することができます。"raw-lines-example.mp4"(このリポジトリにも含まれています)をチェックしてください。「raw-lines-example.mp4」に似ているような結果が得られたら、あなたは創造的になり、あなたが検出した線分を平均化および/または外挿して、車線の全範囲をマッピングする必要がありますライン。"P1_example.mp4"に行っている結果の例を見ることができます。右側に1行だけ描画したいと考えています。solidWhiteRight.jpg'というイメージを見てみましょう。"再生"ボタンを押して)イメージを表示します。注記任意の時点で、凍った表示ウィンドウやその他の混乱する問題が発生した場合は、上記の「カーネル」メニューに移動し、「再起動とクリア出力」を選択することで、常にクリーンスレートで再開することができます。Tranformのライン検出です。レッスンでは提示されなかった他のテクニックを自由に試して試してみることもできます。あなたの目標は、画像内の線分を検出し、それらを平均/外挿して表示するために画像上に描画するパイプライン(以下のように)です。作業パイプラインが完成したら、以下のビデオストリームで試してみてください。以下は、始めるためのヘルパー関数です。"test_images"内のイメージを操作するパイプラインを構築する必要があります。ビデオを試す前に、これらの画像でパイプラインがうまく機能することを確認する必要があります。ビデオ上に車線を描く!提供された2つのビデオでソリューションをテストできます:solidWhiteRight.mp4solidYellowLeft.mp4最初に右の白い車線を試してみましょう...ビデオをインラインで再生するか、ファイルシステム内のビデオを同じディレクトリに置いておきたい場合は、選択したビデオプレーヤーで再生します。ハフ変換で特定した線分に基づいて目に見えるレーンの全長を走らせるラインを定義することを考えてみましょう。それに応じてdraw_lines関数を変更し、パイプラインを再実行してみてください。今度は、左に黄色の黄色い車線がある車のために。私たちはあなたの車線のパイプラインを見つける上であなたの考えを共有することをお勧めします...具体的には、あなたのアルゴリズムをより強く/より堅牢にすることを想像できるでしょうか?あなたの現在のアルゴリズムはどこで失敗するでしょうか?あなたの考えを以下に加えてください。あなたのパイプラインをより堅固にするためには、下にスクロールして、以下のオプションのチャレンジ動画をチェックしてください!特定のケースでは、黄色のレーンラインとグレーの道路が実際に同じ輝度レベルを持つため、グレースケール画像変換は使用していません。私はカラー画像のエッジ検出でより良い結果を見ています。私は、勾配閾値を調べることによってハフ変換線をフィルタリングしています。線がフィルタリングされると、最も支配的な線は、その左右の長さに基づいて求められます。このドミナントラインの開始点と終了点は、各ビデオフレームで平均化されます。最後の20回の読み取りでは移動平均があります(1秒は一般的に24フレームを含み、1秒の平均化を行います)。アルゴはおそらく1秒分のデータの移動平均による車の位置の突然の変化のために失敗するでしょう。私は以下の挑戦を試み、親切にそれも出力を見直します。ありがとう!提出あなたのビデオ出力に満足している場合は、提出する時間です!レビューのためにこのipythonノートブックを提出してください。下のビデオであなたのレーンでパイプラインを見つけることを試みてください。パッケージは科学技術計算での共通の問題のための多様なツールボックスがあります。サブモジュール毎に応用範囲が異なっています。ツールボックスのような他の標準的な科学技術計算ライブラリと比較されます。密接に協力して動作しています。実装されているかを確認した方がいいでしょう。したがります、これはバグが多く最適でなく、共有が難しく、メンテナンスできないコードに陥りがちです。ルーチンは最適化され、テストされていてるので、利用できるときには利用すべきです。VIEWSCarlのフォトアルバムファインダー越しの絶景を集めて。