- スプラトゥーン2の試合中に表示されるイカメーターの生存アイコンを検出する、分類器を生成するリポジトリです
- このリポジトリには、正解要素のマーキングを支援WEBアプリと、opencv_traincascadeへの入力データを生成する機能を同梱しています
- 実際に生成した分類器の結果です。精度(体感)は80%くらいです。過学習している気がするし、パラメータ調整の試行錯誤が足りない気もする
- webpackerを後で頑張る
- build datをfind_in_batchesにして省メモリ化する
- bundle install
- install mysql@5.7
- リストアする
- bundle exec rails s
- ブラウザを開いてマーキングする
bundle exec rails r Build.execute && bundle exec rails r "Create.execute true" | sh
tmp/model/cascade.xml
を使う
bin/dump_db.sh
リストア
bin/restore_db.sh
Dir.glob("#{Rails.root}/lib/assets/20210521/*jpg").map.with_index(1) do |filename, index|
file = File.open(filename)
digest = Digest::MD5.hexdigest(file.read)
if Dataset.find_by(digest: digest)
Rails.logger.warn "skip!!!!!!!!!"
else
name = "#{Time.now.tap { |x| break "#{x.to_i}#{x.usec}" }}.jpg"
file.rewind
Dataset.create(image: { io: file, filename: name }, digest: digest )
end
end
min = OpenCV::CvSize.new(64, 64)
scale_factor = 1.1
detector = OpenCV::CvHaarClassifierCascade::load("#{Rails.root}/ika-meter-training-assistant/tmp/model/cascade.xml")
Dir.glob("#{Rails.root}/lib/assets/0531/*.jpg").map do |filename|
file = File.open(filename)
digest = Digest::MD5.hexdigest(file.read)
if Dataset.find_by(digest: digest)
Rails.logger.warn "skip!!!!!!!!!"
else
image = OpenCV::CvMat.load(filename).copy
croped_image = Crop.ikatako_meter_with_padding(image)
name = "#{Time.now.tap { |x| break "#{x.to_i}#{x.usec}" }}.jpg"
file.rewind
ActiveRecord::Base.transaction do
ImageProcessor::DeathMarkOverrider.new(croped_image).override!
dataset = Dataset.create!(image: { io: file, filename: name }, digest: digest )
detector.detect_objects(croped_image, min_size: min, min_neighbors: 5, scale_factor: scale_factor).each do |rect|
dataset.dataset_temporary_positions.create!(x: rect.top_left.x + 450, y: rect.top_left.y, width: rect.bottom_right.x - rect.top_left.x, height: rect.bottom_right.y)
end
end
end
end
# DBからpositive.datを生成
be rails r Build.execute
# トレーニング
be rails r "Create.execute true" | sh
- OpenCVでSplatoonのイカ分類器を作ってみた
- opencv_traincascade についての説明が書いている
- 仏像顔分類器
- OpenCVリファレンス
- 分類器を造ってみた記事
- イカちゃんを物体検知した yolo
- featureType
- たちぶんるい
- http://opencv.jp/opencv-2.2/py/objdetect_cascade_classification.html
- パラメータの説明
- minneighborsの説明
- scalefactorの説明 http://workpiles.com/2015/04/opencv-detectmultiscale-scalefactor/
- detectMultiScaleの説明
- 公式