Takunojiの日記

自分が勉強したプログラム技術メモ

Javaをススメる理由

イントロダクション

Javaをススメはしたけれど、具体的な事は何も記載していませんでした。

そんなわけで記載します。特に「どの言語にしようか?」と悩んでる方などは特に…

だけど、結局はやってからじゃないと「何もわからない」と思います。

やりやすい(と思う)サンプルコードもリンク先にあります。

なにはともあれ、はじめのプログラム「ハローワールド」をやってからどの言語をやるか考えてみるのも良いのではないでしょうか?

理由と具体例

1.JavaC言語に比べて分かりやすい

→ポインタ、オペレーターなど操作可能な分、理解するのが難しい。つまりなんでもできるけど、難しい。

 

2.Javaを使えるようになったら、大体のプログラム言語は読めるようになる、つまりはJavaは色んな言語やOSにアクセスしやすいのでJavaから(C言語、)SQLJava Script、コマンドプロンプトなどを使う事が多い。

→母体がC言語なので他言語のライブラリを読み込みJavaで使用できる

JDBC〜CORBAなどネットワーク処理がデフォルトでついてくる(JDK)

などのライブラリが豊富なので、その他の言語に触れる機会が多い

 

3.コンソール〜スマホアプリまでハローワールドが簡単にできる、つまりチュートリアルなどがネットに沢山あるという事です。

→コンソール(OpenGL)

JOGL OpenGL in Java Lv1〜JOGLでハローワールド〜 – PGボックス

 

→その他のプラットホーム(git 連携)

Java Git clone in Eclipse 〜サンプルの取得〜 – PGボックス

 

→ネットワーク通信で様々な機器へ

Java Network Socket〜極小サーバー〜 – PGボックス

 

でわでわ。。。

 

Java OpenCVのチュートリアルをやるために

イントロダクション

今までもOpenCVには触れたのですが、機械学習までやらなかったので今回は機械学習めがけてやっていこうと思います。参考にするサイトはこちらです。

  1. Java OpenCV 環境セットアップ(on Mac)
  2. Java OpenCv Lv1 〜入門写真の表示〜
  3. Java OpenCV Lv2 〜画像を表示する〜
  4. Java OpenCV Lv3 〜画像の平滑化(smooth())

TensorFlowでわかったこと

  1. 学習用データを読み込むがそれは画像データと似ている(数値型の配列)
  2. 学習モデルを組めるようにならないと自力で使うことができない
  1. Tensorflow Keras〜初めのトレーニング_1
  2. Tensorflow Keras〜初めのトレーニング_2:前処理〜
  3. TensorFlow Keras〜テキストの分類〜

OpenCVでやること

  1. 機械学習の元になるKNNやコンボリューションを理解する
  2. 画像の変換などで使用する「アルゴリズム」について理解を深める
  3. これらのアルゴリズムを使用して学習モデルを組めるようになる(理想)

ここら辺をターゲットにして学習していこうと思っています。

でもその前に。。。

参考にするチュートリアル(Java版)はJavaFXを使用しています。なので作成できたらスタンドアロンアプリケーションとして使うことができます。

トーゼンプラットホームは選びません。(Javaですから)

ちょっとJavaFXの復習をしてからチュートリアルをやりました。

ただし、FXMLと言うものを使用するので下のリンクのように全て作成するようなことはしません、付随するツールなどを使用します。無料です。

  1. EclipseにSceneBuilderを追加する
  2. JavaFX SceneBuilder 〜EclipseとSceneBuilder連携~
  3. Java OpenCv Lv1 〜入門: 写真の表示〜
  4. Java OpenCV Lv2 〜JavaFXでの画像表示〜
  5. Java OpenCv ビデオキャプチャ〜カメラからの入力を表示〜

チュートリアルのポイント

JavaFXでカメラからの入力を画面に表示して、もしくは画像(IMGファイル)を表示して画像データの分析(ヒストグラムの表示)などをやっている。これを基本にして

  1. フーリエ変換=「画像データの内容を理解する→3Dモデルにも使える」
  2. 顔検出と追跡=「ガンタンク自動照準機能で使用」
  3. 画像の輪郭抽出=「背景除去など」
  4. オブジェクト検出=「対象物を画像から切り抜く」
  5. カメラキャリプレーション=「パターン認識

内容のトピックだけ見てみると「機械学習」でもよく聞く言葉が出てきています。

ちなみに「ガンタンク〜」は機会を見て作ろうと思っている機能です。

サイトマップ

zenryokuservice.com

 

OpenCV Java ビデオキャプチャを実装する

Java OpenCVビデオキャプチャ

今までに機械学習を学ぶためにTensowFlowなどいじったりなんだりやりました。

でも肝心の学習処理のために何をするのか?と言う部分がわからなかったので再度OpenCV機械学習の基本を学ぼうと思っている次第です。

参考サイトはこちらです。

そして、参考にしたコードはこちら(GIT)

Java + OpenCV

JavaOpenCVを扱う方法に関して、APIを使うと言うことですが。。。下のような感じで使用することができます。

www.youtube.com

以前の続きをやります

前回までのOpenCv関連のやったこと

  1. EclipseにSceneBuilderを追加する
  2. JavaFX SceneBuilder 〜EclipseとSceneBuilder連携~
  3. Java OpenCv Lv1 〜入門: 写真の表示〜
  4. Java OpenCV Lv2 〜JavaFXでの画像表示〜

今回は以前作成したJavaFXOpenCVを使ったビデオキャプチャにバグがあったのでそいつを退治しました。結局のところコーディングもれだけだったので大したことはしていませんが、上の動画のように画面が表示されました。

そしてここから。。。

OpenCVのき補填的なことを学び、画像処理で扱う以下のような項目に関して理解します。

  1. イメージファイルの色、カラーチャンネル
  2. ヒストグラム(現状は名前だけ知っている状態です。)
  3. 画像変換処理。。。

学習中に色々と出てきそうなのでとりあえずわかっている部分を記載しました。

そして、以下のような順序で学習していこうと思っています。

  1. KNN(近傍法)を理解(上の色などの理解が前提になります。)
  2. コンボリューション(畳み込み)を理解。。。
  3. 機械学習の理解

こんなイメージです。

とりあえずは、以前のバグ改修をやりました。

※見た目的にアレなんで。。。同じリンクです。。。

Java OpenCv ビデオキャプチャ〜カメラからの入力を表示〜 – PGボックス

zenryokuservice.com

 

Mecabを使って文章解析をするために〜Mecabのインストールから〜

イントロダクション

最近(結構前からですが。。。)は、人工知能が流行っていますね。じゃやってみようとやってみました。やっぱり難しい、と思いましたが。。。

「数学的な部分が難しい!APIの扱い自体はそんなに難しくない」

と言うのが全体的な感想です。

上のリンクは初めの部分です、全体のやったことは以下のようなものです。

  1. Tensorflow Keras 〜初めてのKeras
  2. Tensorflow Keras Errors”python is not installed as a framework.”
  3. Python Tensorflow 〜初めての人工知能(TensorFlowインストール)
  4. Tensorflow Keras〜初めのトレーニング_1
  5. Tensorflow Keras〜初めのトレーニング_2:前処理〜
  6. TensorFlow Keras〜テキストの分類〜
    1. TensorFlow Keras 実行結果〜テキストの分類〜
  7. Python TensorFlow tutorial〜チュートリアルを進めるコツ、ワンポイント〜
  8. TensorFlow Keras〜回帰、準備から予測まで〜
  9. TensorFlow Java 環境構築〜JavaでもTensorFlow〜

TensorFlowのチュートリアルをやってみて

結局のところ以下のような手順で操作を行いました。

  1. データセットの準備
  2. データセットを読んで、学習するモデルを作る
  3. 学習処理の実行
  4. 予測処理を行い、判定結果を表示する

Pythonでの実装を行ったのですが、最後の「判定結果」を表示するときに結果が「NumPy」→数値配列だったので意味が理解できませんでした。

結論

TensorFlowを使いこなすために必要な知識は、以下のようになると思いました。

  1. 上記の「4」に当たる「予測処理」での結果を理解するための「数学力」
  2. モデルを作るための「数学力」※計算結果が何を示すのか、わかるレベル
  3. モデルの構築方法(レイヤーの組み合わせかた)

そして、細かい計算方法はわからないけど、自分なりに文章解析を行うための方法を考えています。そこで使用するのが「Mecab」文を品詞分解したり単語に分割してくれるプログラムです。(日本製オープンソース)

taku910.github.io

Mecabのインストール方法>※表示されている文言が違う

zenryokuservice.com

 

Python Mecab〜日本語を分解してみよう〜 – PGボックス

JavaからMecabを起動する

Mecabの使い方(ワンポイント)

 

プログラミング教育について〜自分の思い〜

プログラミング教育について我思う

自分は「プログラミングの布教」をしたいと思っているので「これはチャンス!」と思いました。実際にプログラミングを通して学べることは多く人生を歩む上で役に立つことがとても多いと思います。

大切なことはやってみること

世間では「論理思考」「スマートに行こう」などと言う言葉が沢山聞かれますが論理思考もスマートにやるのも「経験ありき」だと思いますので「やって@失敗に学ぶ」と言うことが前提なように思えて仕方ありません。

だからPDCA

早い話が「計画」して「実行」して「反省」して。。。の繰り返し。。。

Javaの開発で言うところの「エクストリーミング開発」とか「アジャイル開発」などの手法と同じだと自分は思っています。

何が言いたいのか?

「やりたいことをやりましょう!」と言うことです。よくあるケースとして「時間がない」「やる気が出ない」「休みに作業したくない」などありますが、楽しいと思います。

「やりたいことができない」原因の1つに「一人ではできない」と言うのがあります。なので「仲間(チーム)作り」が初めのミッションとして出て来ることが多いのではないでしょうか?人により出てくる問題は違うので何んとも言えませんが「プログラミング教育」の目的も「問題回活力」にあると自分は思いました。

 <Javaを始めるのにいかがでしょうか?>

Java Basic

  1. Java Basic Level 1 Hello Java
  2. Java Basic Level2 Arithmetic Calculate
  3. Java Basic Level3 About String class
  4. Java Basic Level 4Boolean
  5. Java Basic Level 5If Statement
  6. Java Basic Summary from Level1 to 5
  7. Java Basic Level 6 Traning of If statement
  8. Java Basic Level8 How to use for statement
  9. Java Basic Level 8.5 Array
  10. Java Basic Level 9Training of for statement
  11. Java Basic Level 10 While statement 
  12. Java Basic Swing〜オブジェクト指向〜
  13. Java Basic Swing Level 2〜オブジェクト指向2
  14. サンプル実装〜コンソールゲーム〜
  15. Java Basic インターフェース・抽象クラスの作り方
  16. Java Basic クラスとは〜Step2_1
  17. Java Basic JUnit 〜テストスイートの作り方〜