VOTTの出力するJSONからDarknet学習用のTXTデータを作成する
VOTT->YOLO変換用プログラムの作成で参考にしたのは以下です
https://qiita.com/clerk67/items/faecbbbcbe26537cb42c
Darknet/YOLOで学習させる定義はオブジェクトの中心と幅高さを0-1に正規化したものが
必要。
YOTTからエクスポートしたVOCのJSON定義は、
画像のサイズや、オブジェクトの左上、右上、右下、左下座標がが出力されるのでそれから変換しています。
const fs = require('fs'); var path = require('path'); // アノテーションデータに含まれる全てのタグ(この順番にタグ番号を付与する) const tags = ['flower', 'seed']; const repo_name = 'endo_kun'; let counter = 0; const trainLists = []; const testLists = []; const lines = []; const files = fs.readdirSync(__dirname); let j=0; for (let i = 0; i < files.length; i++) { // カレントディレクトリに存在する全ての JSON ファイルを取得する if (!files[i].match(/\.json$/)) continue; if (files[i].match('package.json')) continue; console.log(files[i]); const data = JSON.parse(fs.readFileSync(files[i], 'utf8')); console.log(data.asset.name); data.regions.forEach((region) => { var columns = []; columns.push(...[ tags.findIndex(tag => tag === region.tags[0]), // タグ番号 (((region.points[0].x + region.points[1].x) / 2 ) / data.asset.size.width).toFixed(6), // 中心のx座標 (((region.points[0].y + region.points[2].y) / 2 ) / data.asset.size.height).toFixed(6), // 中心のy座標 ((region.boundingBox.width) / data.asset.size.width).toFixed(6), // Obj幅 ((region.boundingBox.height) / data.asset.size.height).toFixed(6), // Obj高さ ]); lines.push(columns.join(' ')); }); const txt = './data/' + path.basename(data.asset.name, path.extname(data.asset.name)) + '.txt'; console.log(txt); fs.writeFileSync(txt, lines.join('\n')); if ((j++ % 10) == 0) { testLists.push ( repo_name + '/data/' + data.asset.name); } else { trainLists.push ( repo_name + '/data/' + data.asset.name); } } fs.writeFileSync('./train.txt', trainLists.join('\n')); fs.writeFileSync('./test.txt', testLists.join('\n'));nc('./test.txt', testLists.join('\n'));
スナックエンドウの実の部分を検出したい
FireBeetle ESP32 + EPD 1.54inch
ピンのつなぎ方
ePaper ESP32
VCC 3V3
GND GND
SDI 23
SCLK 18
CS 26
DC 25
Reset 13
Busy 27
Resetを33から13と変更して繋げる、プログラムも33から13へ変更する。
土壌湿度計を屋外に設置したい
1からケースを作ることを考えたけど、めんど臭いし恐らく割高になるので製品を調べたら
いかが良さそう。
箱に穴を開ける加工もめんどくさいので、ノックアウトといって簡単に穴が開けられる加工がされているものを
選べば良いらしい。
電池の消費を抑えたいが・・
ディープスリープから起きた後は、最初からやり直しかぁ。データを変数に保存しても失われてしまうのかぁ・・
Git ファーストコミットユーザを一覧にしたい
共同で原稿を書くとして、記事のオーサーを一覧で表示したい時どうやるか?
土壌水分センサーを野外駆動したい
センサーについて
アナログ読み込み ピンについて
rikoubou.hatenablog.com
センサーのデータシート
互換品は反応が遅い可能性あり
野外での電池駆動
USB充電用電池ボックスというのが100円ショップであるらしい。これ良さそう。
結露対策
qiita.com