Merge remote-tracking branch 'origin/master'

This commit is contained in:
JiatongSun
2019-05-02 10:46:09 +08:00
20 changed files with 12486 additions and 172 deletions

View File

@@ -1,34 +1,34 @@
cmake_minimum_required(VERSION 3.5)
CMAKE_MINIMUM_REQUIRED(VERSION 3.5)
project(AutoAim)
set(CMAKE_CXX_STANDARD 11)
SET(CMAKE_BUILD_TYPE DEBUG)
PROJECT(AutoAim)
SET(CMAKE_CXX_STANDARD 11)
SET(CMAKE_BUILD_TYPE RELEASE)
SET(CMAKE_CXX_FLAGS "-DPROJECT_DIR=\"\\\"${PROJECT_SOURCE_DIR}\\\"\"")
FIND_PROGRAM(CCACHE_FOUND ccache)
IF(CCACHE_FOUND)
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
message("< Use ccache for compiler >")
SET_PROPERTY(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
SET_PROPERTY(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
MESSAGE("< Use ccache for compiler >")
ENDIF()
FIND_PACKAGE(OpenCV 3 REQUIRED)
FIND_PACKAGE(Eigen3 REQUIRED)
FIND_PACKAGE(Threads)
include_directories( ${EIGEN3_INCLUDE_DIR} )
include_directories( ${PROJECT_SOURCE_DIR}/energy/include )
include_directories( ${PROJECT_SOURCE_DIR}/armor/include )
include_directories( ${PROJECT_SOURCE_DIR}/others/include )
INCLUDE_DIRECTORIES(${EIGEN3_INCLUDE_DIR})
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/energy/include)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/armor/include)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/others/include)
FILE(GLOB_RECURSE sourcefiles "others/src/*.cpp" "energy/src/*cpp" "armor/src/*.cpp")
add_executable(run main.cpp ${sourcefiles} )
ADD_EXECUTABLE(run main.cpp ${sourcefiles} )
TARGET_LINK_LIBRARIES(run ${CMAKE_THREAD_LIBS_INIT})
TARGET_LINK_LIBRARIES(run ${OpenCV_LIBS})
TARGET_LINK_LIBRARIES(run ${PROJECT_SOURCE_DIR}/others/libMVSDK.so)
# Todo
# ADD_CUSTOM_TARGET(bind-monitor COMMAND "")
ADD_CUSTOM_TARGET(train COMMAND "gnome-terminal" "-x" "bash" "-c" "\"${PROJECT_SOURCE_DIR}/tools/TrainCNN/backward.py\"" )
# Todo
# ADD_CUSTOM_TARGET(train COMMAND "")
# ADD_CUSTOM_TARGET(bind-monitor COMMAND "")

View File

@@ -2,47 +2,42 @@
// Created by xinyang on 19-3-27.
//
#include <log.h>
#include <options/options.h>
#include <show_images/show_images.h>
#include <opencv2/highgui.hpp>
#include <armor_finder/armor_finder.h>
ArmorFinder::ArmorFinder(EnemyColor color, Uart &u, string paras_folder) :
uart(u),
enemy_color(color),
state(STANDBY_STATE),
classifier(std::move(paras_folder)),
contour_area(0)
{
auto para = TrackerToUse::Params();
para.desc_npca = 1;
para.desc_pca = 0;
tracker = TrackerToUse::create(para);
if(!tracker){
LOGW("Tracker Not init");
}
uart(u),
enemy_color(color),
state(STANDBY_STATE),
classifier(std::move(paras_folder)),
contour_area(0)
{
}
void ArmorFinder::run(cv::Mat &src) {
cv::Mat src_use;
// if (src.type() == CV_8UC3) {
// cv::cvtColor(src, src_use, CV_RGB2GRAY);
// }else{
src_use = src.clone();
// }
src_use = src.clone();
cv::cvtColor(src_use, src_gray, CV_RGB2GRAY);
stateSearchingTarget(src_use);
return;
if(show_armor_box){
showArmorBox("box", src, armor_box);
cv::waitKey(1);
}
// stateSearchingTarget(src_use);
// return;
switch (state){
case SEARCHING_STATE:
if(stateSearchingTarget(src_use)){
if((armor_box & cv::Rect2d(0, 0, 640, 480)) == armor_box) {
cv::Mat roi = src_use.clone()(armor_box);
cv::threshold(roi, roi, 200, 255, cv::THRESH_BINARY);
contour_area = cv::countNonZero(roi);
auto para = TrackerToUse::Params();
para.desc_npca = 1;
para.desc_pca = 0;
tracker = TrackerToUse::create(para);
if(!classifier){
cv::Mat roi = src_use.clone()(armor_box), roi_gray;
cv::cvtColor(roi, roi_gray, CV_RGB2GRAY);
cv::threshold(roi_gray, roi_gray, 180, 255, cv::THRESH_BINARY);
contour_area = cv::countNonZero(roi_gray);
}
tracker = TrackerToUse::create();
tracker->init(src_use, armor_box);
state = TRACKING_STATE;
LOGW("into track");
@@ -50,7 +45,7 @@ void ArmorFinder::run(cv::Mat &src) {
}
break;
case TRACKING_STATE:
if(!stateTrackingTarget(src_gray)){
if(!stateTrackingTarget(src_use)){
state = SEARCHING_STATE;
//std::cout << "into search!" << std::endl;
}

View File

@@ -259,7 +259,7 @@ Classifier::Classifier(const string &folder) : state(true){
fc2_w = load_fc_w(folder+"fc2_w");
fc2_b = load_fc_b(folder+"fc2_b");
if(state){
LOGM("Load paras success!");
LOGM("Load para success!");
}
}

View File

@@ -7,7 +7,6 @@
#include "image_process/image_process.h"
#include <log.h>
#include <show_images/show_images.h>
#include <options/options.h>
typedef std::vector<LightBlob> LightBlobs;
@@ -32,11 +31,10 @@ static void pipelineLightBlobPreprocess(cv::Mat &src) {
}
static bool findLightBlobs(const cv::Mat &src, LightBlobs &light_blobs) {
static cv::Mat src_bin;
// static cv::Mat src_bin;
cv::threshold(src, src_bin, 80, 255, CV_THRESH_BINARY);
std::vector<std::vector<cv::Point> > light_contours;
cv::findContours(src_bin, light_contours, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);
cv::findContours(src, light_contours, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);
for (auto &light_contour : light_contours) {
cv::RotatedRect rect = cv::minAreaRect(light_contour);
if(isValidLightBlob(rect)){
@@ -117,7 +115,7 @@ static bool findArmorBoxes(LightBlobs &light_blobs, std::vector<cv::Rect2d> &arm
min_x = fmin(rect_left.x, rect_right.x);
max_x = fmax(rect_left.x + rect_left.width, rect_right.x + rect_right.width);
min_y = fmin(rect_left.y, rect_right.y) - 5;
max_y = fmax(rect_left.y + rect_left.height, rect_right.y + rect_right.height) + 5;
max_y = fmax(rect_left.y + rect_left.height, rect_right.y + rect_right.height);
if (min_x < 0 || max_x > 640 || min_y < 0 || max_y > 480) {
continue;
}
@@ -149,19 +147,21 @@ bool judge_light_color(std::vector<LightBlob> &light, std::vector<LightBlob> &co
}
bool ArmorFinder::stateSearchingTarget(cv::Mat &src) {
cv::Mat split, pmsrc=src.clone();
cv::Mat split, pmsrc=src.clone(), src_bin;
LightBlobs light_blobs, pm_light_blobs, light_blobs_real;
std::vector<cv::Rect2d> armor_boxes, boxes_one, boxes_two, boxes_three;
// cv::resize(src, pmsrc, cv::Size(320, 240));
imageColorSplit(src, split, enemy_color);
imagePreProcess(split);
cv::resize(split, split, cv::Size(640, 480));
cv::threshold(split, src_bin, 130, 255, CV_THRESH_BINARY);
imagePreProcess(src_bin);
// cv::imshow("bin", src_bin);
// cv::resize(split, split, cv::Size(640, 480));
// pipelineLightBlobPreprocess(pmsrc);
// if(!findLightBlobs(pmsrc, pm_light_blobs)){
// return false;
// }
if(!findLightBlobs(split, light_blobs)){
if(!findLightBlobs(src_bin, light_blobs)){
return false;
}
// if(!judge_light_color(light_blobs, pm_light_blobs, light_blobs_real)){
@@ -182,10 +182,7 @@ bool ArmorFinder::stateSearchingTarget(cv::Mat &src) {
for(auto box : armor_boxes){
cv::Mat roi = src(box).clone();
cv::resize(roi, roi, cv::Size(48, 36));
// cv::imshow("roi", roi);
// cv::waitKey(0);
int c = classifier(roi);
// cout << c << endl;
switch(c){
case 1:
boxes_one.emplace_back(box);
@@ -204,6 +201,8 @@ bool ArmorFinder::stateSearchingTarget(cv::Mat &src) {
armor_box = boxes_two[0];
}else if(!boxes_three.empty()){
armor_box = boxes_three[0];
} else{
return false;
}
if(show_armor_box){
showArmorBoxClass("class", src, boxes_one, boxes_two, boxes_three);
@@ -211,10 +210,6 @@ bool ArmorFinder::stateSearchingTarget(cv::Mat &src) {
}else{
armor_box = armor_boxes[0];
}
if(show_armor_box){
showArmorBox("box", src, armor_box);
cv::waitKey(1);
}
if(split.size() == cv::Size(320, 240)){
armor_box.x *= 2;
armor_box.y *= 2;

View File

@@ -5,17 +5,27 @@
#include <armor_finder/armor_finder.h>
bool ArmorFinder::stateTrackingTarget(cv::Mat &src) {
auto last = armor_box;
tracker->update(src, armor_box);
if(!tracker->update(src, armor_box)){
return false;
}
if((armor_box & cv::Rect2d(0, 0, 640, 480)) != armor_box){
return false;
}
cv::Mat roi = src(armor_box);
threshold(roi, roi, 200, 255, cv::THRESH_BINARY);
if(abs(cv::countNonZero(roi) - contour_area) > contour_area * 0.3){
return false;
cv::Mat roi = src.clone()(armor_box);
if(classifier){
cv::resize(roi, roi, cv::Size(48, 36));
if(classifier(roi) == 0){
return false;
}
}else{
cv::Mat roi_gray;
cv::cvtColor(roi, roi_gray, CV_RGB2GRAY);
cv::threshold(roi_gray, roi_gray, 180, 255, cv::THRESH_BINARY);
contour_area = cv::countNonZero(roi_gray);
if(abs(cv::countNonZero(roi_gray) - contour_area) > contour_area * 0.3){
return false;
}
}
return sendBoxPosition();
}

View File

@@ -13,32 +13,33 @@
#include <camera/wrapper_head.h>
#include <armor_finder/armor_finder.h>
#include <options/options.h>
#include <thread>
//#define DO_NOT_CNT_TIME
#include <log.h>
#include <thread>
#define PATH PROJECT_DIR
#define ENERGY_STATE 1
#define ARMOR_STATE 0
using namespace cv;
using namespace std;
#define ENERGY_STATE 1
#define ARMOR_STATE 0
int state = ENERGY_STATE;
int state = ARMOR_STATE;
float curr_yaw=0, curr_pitch=0;
float mark_yaw=0, mark_pitch=0;
int mark = 0;
void uartReceive(Uart* uart);
int main(int argc, char *argv[])
{
int main(int argc, char *argv[]){
process_options(argc, argv);
Uart uart;
thread receive(uartReceive, &uart);
bool flag = true;
while (flag)
{
while (flag){
int ally_color = ALLY_RED;
int energy_part_rotation = CLOCKWISE;
@@ -51,46 +52,50 @@ int main(int argc, char *argv[])
WrapperHead *video_armor;
WrapperHead *video_energy;
if(from_camera) {
// video_armor = new CameraWrapper();
video_energy = new CameraWrapper();
video_armor = new CameraWrapper(0);
// video_energy = new CameraWrapper(1);
}else {
video_armor = new VideoWrapper("r_l_640.avi");
video_energy = new VideoWrapper("r_l_640.avi");
video_armor = new VideoWrapper("/home/xinyang/Desktop/Video.mp4");
video_energy = new VideoWrapper("/home/xinyang/Desktop/Video.mp4");
}
if (video_energy->init()) {
if (video_armor->init()) {
cout << "Video source initialization successfully." << endl;
}
Mat energy_src, armor_src;
ArmorFinder armorFinder(ENEMY_BLUE, uart, "/home/xinyang/Desktop/AutoAim/tools/para/");
ArmorFinder armorFinder(ENEMY_BLUE, uart, PATH"/tools/para/");
Energy energy(uart);
energy.setAllyColor(ally_color);
energy.setRotation(energy_part_rotation);
while (video_energy->read(energy_src) && video_energy->read(armor_src))
{
if(show_origin) {
imshow("enery src", energy_src);
imshow("armor src", armor_src);
}
if(state == ENERGY_STATE){
if(from_camera==0){
energy.extract(energy_src);
bool ok=true;
while (ok){
CNT_TIME(WORD_LIGHT_CYAN, "Total", {
ok = video_armor->read(energy_src) && video_armor->read(armor_src);
if (show_origin) {
imshow("enery src", energy_src);
imshow("armor src", armor_src);
}
energy.run(energy_src);
}else{
CNT_TIME(WORD_LIGHT_BLUE, "Armor Time", {
armorFinder.run(armor_src);
});
}
if (waitKey(1) == 'q') {
flag = false;
break;
}
if (state == ENERGY_STATE) {
if (from_camera == 0) {
energy.extract(energy_src);
}
energy.run(energy_src);
} else {
CNT_TIME(WORD_LIGHT_BLUE, "Armor Time", {
armorFinder.run(armor_src);
});
}
if (waitKey(1) == 'q') {
flag = false;
break;
}
});
}
delete video_energy;
delete video_armor;
cout << "Program fails. Restarting" << endl;
}

View File

@@ -36,11 +36,7 @@ private:
public:
CameraWrapper();
CameraWrapper(const std::string &n);
CameraWrapper(int camera_mode);
CameraWrapper(const std::string &n,int camera_mode);
CameraWrapper(int camera_mode=1, const std::string &n="NULL");
~CameraWrapper() final;
bool init() final;

View File

@@ -9,39 +9,13 @@ using std::cout;
using std::endl;
using namespace cv;
CameraWrapper::CameraWrapper():
name("NULL"),
mode(1),
camera_cnts(2),
camera_status(-1),
iplImage(nullptr),
channel(3){
}
CameraWrapper::CameraWrapper(const std::string &n):
name(n),
mode(1),
camera_cnts(2),
camera_status(-1),
iplImage(nullptr),
channel(3){
}
CameraWrapper::CameraWrapper(int camera_mode):
name("NULL"),
mode(camera_mode),
camera_cnts(2),
camera_status(-1),
iplImage(nullptr),
channel(3){
}
CameraWrapper::CameraWrapper(const std::string &n,int camera_mode):
CameraWrapper::CameraWrapper(int camera_mode, const std::string &n):
name(n),
mode(camera_mode),
camera_cnts(2),
camera_status(-1),
iplImage(nullptr),
rgb_buffer(nullptr),
channel(3){
}
@@ -51,9 +25,9 @@ bool CameraWrapper::init() {
//枚举设备,并建立设备列表
int camera_enumerate_device_status = CameraEnumerateDevice(camera_enum_list, &camera_cnts);
//cout<<"camera enumerate device status: "<<camera_enumerate_device_status<<endl;
//cout<<"camera number: "<<camera_cnts<<endl;
if(camera_enumerate_device_status != CAMERA_STATUS_SUCCESS){
LOGE("CameraEnumerateDevice fail with %d!", camera_enumerate_device_status);
}
//没有连接设备
if (camera_cnts == 0) {
LOGE("No camera device detected!");
@@ -67,16 +41,17 @@ bool CameraWrapper::init() {
camera_status = CameraInit(&camera_enum_list[i], -1, -1, &h_camera);
if (camera_status != CAMERA_STATUS_SUCCESS) {
LOGE("Camera 0 initialization failed with code %d. See camera_status.h to find the code meaning.", camera_status);
return false;
goto stop;
}
CameraGetFriendlyName(h_camera, camera_name);
if(name=="NULL" || strcmp(name.data(), camera_name)==0){
break;
}
stop:
CameraUnInit(h_camera);
}
if(i >= camera_cnts){
LOGE("No device name %s!", name.data());
LOGE("No device name %s or device open error!!", name.data());
return false;
}
@@ -90,11 +65,11 @@ bool CameraWrapper::init() {
tCapability.sResolutionRange.iWidthMax * 3);
if(mode == 0){
// 不使用自动曝光
CameraSetAeState(h_camera, false);
CameraSetAeState(h_camera, true);
// 曝光时间10ms
CameraSetExposureTime(h_camera, 10000);
// CameraSetExposureTime(h_camera, 10000);
// 模拟增益4
CameraSetAnalogGain(h_camera, 63);
CameraSetAnalogGain(h_camera, 64);
// 使用预设LUT表
CameraSetLutMode(h_camera, LUTMODE_PRESET);
// 抗频闪
@@ -188,6 +163,7 @@ CameraWrapper::~CameraWrapper()
{
CameraUnInit(h_camera);
//注意先反初始化后再free
free(rgb_buffer);
if(rgb_buffer != nullptr)
free(rgb_buffer);
}

49
tools/TrainCNN/backward.py Normal file → Executable file
View File

@@ -1,9 +1,12 @@
#!/usr/bin/python3
print("Preparing...")
import tensorflow as tf
from progressive.bar import Bar
from tqdm import tqdm
import generate
import forward
import cv2
import numpy as np
print("Finish!")
def save_kernal(fp, val):
print(val.shape[2], file=fp)
@@ -51,7 +54,7 @@ def save_para(folder, paras):
STEPS = 20000
BATCH = 10
BATCH = 30
LEARNING_RATE_BASE = 0.01
LEARNING_RATE_DECAY = 0.99
MOVING_AVERAGE_DECAY = 0.99
@@ -85,18 +88,13 @@ def train(dataset, show_bar=False):
correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
acc = 0
with tf.Session() as sess:
init_op = tf.global_variables_initializer()
sess.run(init_op)
if show_bar:
bar = Bar(max_value=STEPS, width=u'50%')
bar.cursor.clear_lines(1)
bar.cursor.save()
for i in range(STEPS):
bar = tqdm(range(STEPS), dynamic_ncols=True)
for i in bar:
images_samples, labels_samples = dataset.sample_train_sets(BATCH)
_, loss_value, step = sess.run(
@@ -107,18 +105,21 @@ def train(dataset, show_bar=False):
if i % 100 == 0:
if i % 1000 == 0:
acc = sess.run(accuracy, feed_dict={x: test_images, y_: test_labels})
bar.set_postfix({"loss": loss_value, "acc": acc})
if show_bar:
bar.title = "step: %d, loss: %f, acc: %f" % (step, loss_value, acc)
bar.cursor.restore()
bar.draw(value=i+1)
# if show_bar:
# bar.title = "step: %d, loss: %f, acc: %f" % (step, loss_value, acc)
# bar.cursor.restore()
# bar.draw(value=i+1)
# video = cv2.VideoCapture("/home/xinyang/Desktop/Video.mp4")
# _ = True
# while _:
# _, frame = video.read()
# cv2.imshow("Video", frame)
# if cv2.waitKey(10) == 113:
# k = cv2.waitKey(10)
# if k == ord(" "):
# bbox = cv2.selectROI("frame", frame, False)
# print(bbox)
# roi = frame[bbox[1]:bbox[1]+bbox[3], bbox[0]:bbox[0]+bbox[2]]
@@ -131,6 +132,22 @@ def train(dataset, show_bar=False):
# res = sess.run(y, feed_dict={x: roi})
# res = res.reshape([forward.OUTPUT_NODES])
# print(np.argmax(res))
# elif k==ord("q"):
# break
# keep = True
# while keep:
# n = input()
# im = cv2.imread(n)
# im = cv2.resize(im, (48, 36))
# cv2.imshow("im", im)
# if cv2.waitKey(0) == ord("q"):
# keep = False
# im = im.astype(np.float32)
# im /= 255.0
# im = im.reshape([1, 36, 48, 3])
# res = sess.run(y, feed_dict={x: im})
# res = res.reshape([forward.OUTPUT_NODES])
# print(np.argmax(res))
vars_val = sess.run(vars)
save_para("/home/xinyang/Desktop/AutoAim/tools/para", vars_val)
@@ -139,5 +156,7 @@ def train(dataset, show_bar=False):
if __name__ == "__main__":
dataset = generate.DataSet("/home/xinyang/Desktop/DataSets")
print("Loading data sets...")
dataset = generate.DataSet("/home/xinyang/Desktop/DataSets/box")
print("Finish!")
train(dataset, show_bar=True)

View File

@@ -29,13 +29,13 @@ def max_pool_2x2(x):
CONV1_KERNAL_SIZE = 5
# 第一层卷积输出通道数
CONV1_OUTPUT_CHANNELS = 4
CONV1_OUTPUT_CHANNELS = 6
# 第二层卷积核大小
CONV2_KERNAL_SIZE = 3
# 第二层卷积输出通道数
CONV2_OUTPUT_CHANNELS = 8
CONV2_OUTPUT_CHANNELS = 10
# 第一层全连接宽度
FC1_OUTPUT_NODES = 16

View File

@@ -3,6 +3,9 @@ import os
import cv2
import random
from forward import OUTPUT_NODES
import sys
import os
from tqdm import tqdm
# 原图像行数
SRC_ROWS = 36
@@ -12,6 +15,7 @@ SRC_COLS = 48
# 原图像通道数
SRC_CHANNELS = 3
class DataSet:
def __init__(self, folder):
self.train_samples = []
@@ -21,10 +25,14 @@ class DataSet:
self.generate_data_sets(folder)
def file2nparray(self, name):
image = cv2.imread(name)
image = cv2.resize(image, (SRC_COLS, SRC_ROWS))
image = image.astype(np.float32)
return image / 255.0
try:
image = cv2.imread(name)
image = cv2.resize(image, (SRC_COLS, SRC_ROWS))
image = image.astype(np.float32)
return image / 255.0
except:
print(name)
sys.exit(-1)
def id2label(self, id):
a = np.zeros([OUTPUT_NODES])
@@ -36,13 +44,14 @@ class DataSet:
for i in range(OUTPUT_NODES):
dir = "%s/%d" % (folder, i)
files = os.listdir(dir)
for file in files:
if random.random() > 0.2:
self.train_samples.append(self.file2nparray("%s/%s" % (dir, file)))
self.train_labels.append(self.id2label(i))
else:
self.test_samples.append(self.file2nparray("%s/%s" % (dir, file)))
self.test_labels.append(self.id2label(i))
for file in tqdm(files, postfix={"loading id": i}, dynamic_ncols=True):
if file[-3:] == "jpg":
if random.random() > 0.2:
self.train_samples.append(self.file2nparray("%s/%s" % (dir, file)))
self.train_labels.append(self.id2label(i))
else:
self.test_samples.append(self.file2nparray("%s/%s" % (dir, file)))
self.test_labels.append(self.id2label(i))
self.train_samples = np.array(self.train_samples)
self.train_labels = np.array(self.train_labels)
self.test_samples = np.array(self.test_samples)

View File

@@ -1,5 +1,8 @@
#!/bin/sh
# usage: monitor.sh "<the exe file's absolute path and its shell parameter>"
# And then when ever the exe shutdonw it will be automatically restart
exe=$1
while true; do
state=`ps aux | grep "$1" | grep -v grep | grep -v $0`

7
tools/para/conv1_b Normal file
View File

@@ -0,0 +1,7 @@
6
0.6241298
1.1128483
0.92715627
2.6803706
-2.4037633
1.6914424

454
tools/para/conv1_w Normal file
View File

@@ -0,0 +1,454 @@
3
6
5
5
-1.8745673
-1.4418055
-0.68810487
-0.42730802
-0.019043377
-2.2401865
-1.5337001
-0.5666739
0.1119876
0.24716255
-2.2945662
-1.4734446
-0.298631
0.19550888
0.45057848
-2.4559898
-1.097164
-0.035884537
0.23402216
0.3693794
-1.7285618
-0.8927671
0.026205042
0.19274746
0.029146997
-1.3690577
-1.2756748
-0.32751036
0.3233031
0.55376107
-1.4835969
-1.3036382
-0.75256515
-0.13608748
0.2254278
-1.6409502
-1.4188147
-1.1627024
-0.62049645
-0.20085949
-2.2059698
-1.7030506
-1.5584862
-1.2325822
-0.6749467
-2.8320985
-2.3289032
-1.811129
-1.6702974
-1.0760157
-1.3135052
-0.90016854
-0.47004116
-0.17118637
-0.2732028
-1.3109291
-0.36519817
-0.10975292
-0.06533194
-0.559026
-0.8616304
-0.06857806
0.19276045
-0.14059812
-0.7283358
-0.57705516
0.20748538
0.26281402
-0.112977654
-0.6980696
-0.44812128
0.40235195
0.26663
-0.10336824
-0.5741328
-0.70127535
-1.1506568
-1.3301972
-1.4370873
-0.9951577
-0.3111034
-0.5350495
-0.78488415
-1.3619742
-1.2252145
0.10870424
-0.044690743
-0.33280057
-1.180621
-1.5130968
0.32003295
0.6245109
0.3391734
-0.45662346
-1.2023503
0.66186905
0.6943321
0.753682
-0.05385303
-0.69504744
-0.86241025
0.05611875
0.7984623
1.4339544
2.0078037
-0.6121641
0.3216552
0.7244501
1.4381241
1.9696213
-0.29659018
0.13415621
0.61756736
1.0113128
1.3834459
0.12413465
0.3135587
0.32853445
0.7981063
0.83142936
-0.004516094
0.32636595
0.55108666
0.6248727
0.60938156
-0.38326544
-1.2629062
-0.385575
0.11398253
0.40000448
-1.0602297
-1.1948771
-0.6945023
-0.4127804
0.029964926
-1.4086407
-1.3599807
-1.3076004
-1.1330422
-0.38810351
-2.1059783
-1.8239182
-1.7029382
-1.4902409
-0.91088384
-3.230572
-2.4590926
-1.9471443
-1.860621
-1.3370123
-0.5690341
-0.33530146
0.31661218
0.8375982
1.1338086
-1.3648574
-0.8348736
0.36666754
1.1275568
1.1844105
-1.8321881
-0.78104144
0.59508055
1.2501543
1.2034286
-1.6087818
-0.6121007
0.693586
1.2163337
1.1292332
-0.6255259
0.0911698
0.78314143
0.9095932
0.5689121
-3.2688649
-1.2751737
0.7530108
1.5721122
2.11933
-2.9633296
-1.3632398
0.11986004
1.1412225
1.8641368
-1.9467463
-0.9146176
-0.10545669
0.49356145
1.3669914
-1.7783622
-0.99905616
-0.28957212
0.13239379
0.9921155
-2.1976538
-1.0333587
-0.3801185
0.021550074
0.5849712
-0.7216267
-0.36925313
-0.5770921
-0.89754397
-0.9315221
-0.17996566
0.5721206
0.46629494
-0.11679081
-0.8407021
0.14923953
1.1722741
1.0859729
-0.08064234
-1.1707838
0.527985
1.556374
1.3262485
0.052869447
-1.0933924
0.8913072
1.8925939
1.1744183
-0.16056827
-0.96226853
-2.0482447
-2.1394062
-2.3160622
-1.5373954
-1.0280651
-1.0137186
-1.1347228
-1.2650911
-1.3904438
-1.4724954
-0.6152145
-0.38191465
-0.6525277
-1.2026839
-1.574993
-0.14897716
0.40652698
0.22212738
-0.7051095
-1.6179065
0.12883945
0.92052716
0.71651196
-0.1521632
-1.3601139
-1.3278087
0.091166034
0.70035547
0.85970676
1.4728521
-0.4685758
0.67533374
1.2041222
0.91583323
1.3638756
-0.21221842
0.46413553
0.6931065
0.5078553
1.0690873
-0.2822384
-0.18992352
-0.30851105
-0.48985106
-0.112165235
-0.6343776
-0.97740346
-1.2637299
-1.1870348
-0.65784734
-2.275478
-1.5841419
0.59182155
1.7027438
2.2658849
-2.0428355
-0.9335362
0.25750664
1.0987146
1.5473177
-0.8157582
-0.23004234
0.3001771
0.6583938
1.0895797
-0.093778014
0.08269198
0.17656319
0.3352879
1.0185977
-0.6558476
0.4106111
0.3651244
0.3434926
0.78885883
0.9312759
0.45665312
0.87845147
1.4286675
1.9387178
0.0055226237
-0.11264928
0.69314396
1.5066721
1.5526584
-0.15990084
0.10977341
0.7288155
1.5179793
1.5454628
0.42554915
0.6133954
1.1112447
1.4276886
1.3272578
1.5569048
1.5756388
1.9869299
1.8189707
1.3973557
-4.249913
-1.9120424
-0.0061387075
0.80639493
1.4316615
-3.410931
-1.7743304
-0.18588163
0.5619047
1.2757853
-2.25766
-1.1736825
-0.47299188
0.38950402
1.098909
-2.850165
-1.7250451
-0.7260333
-0.055943523
0.9642611
-4.005538
-2.295592
-1.041572
-0.24684854
0.6455168
1.1459881
1.4573389
1.4954526
1.2473075
1.0846232
1.2540116
1.9666128
1.9739157
1.2105061
0.7538055
1.2492738
2.14189
1.7544507
0.96942043
0.31504372
1.7381212
2.490894
1.6445026
0.26533163
-0.3193328
2.0120225
2.0718558
0.8759794
0.04767526
-0.41645908
1.2511733
0.5724159
0.37694663
1.2807285
1.8684267
1.8152616
1.280423
1.101077
1.197118
1.5331124
1.7447906
1.6138377
1.4156343
1.0536009
0.8561865
1.9363236
2.2086453
1.6627563
1.021228
0.60839254
2.1018016
2.1533952
1.9573407
1.29546
0.57359654
-0.29376534
0.9012422
1.1789744
0.710556
0.8737443
0.095544085
1.045074
0.9252817
0.471885
0.6031909
-0.2500516
0.14211257
-0.27518043
-1.0673013
-0.845284
-0.7930444
-1.1906688
-2.2155006
-2.8370302
-2.2175434
-0.9103819
-2.3526044
-3.3939815
-3.9634273
-2.9982874
-3.0668538
-1.9301875
0.46062958
1.1481701
1.6189759
-2.693133
-1.3168526
0.39946663
0.777253
1.2958935
-1.7610679
-0.87182975
0.015992796
0.35228586
0.825145
-2.3087604
-1.4618046
-0.49614725
-0.12511182
0.5606166
-3.9921951
-2.422155
-0.9274944
-0.43651518
0.110710315

11
tools/para/conv2_b Normal file
View File

@@ -0,0 +1,11 @@
10
2.4876857
-0.2729608
-2.472103
1.4380744
0.13707557
-0.38399124
-0.10049698
-0.44721037
-0.24111606
-0.05031827

544
tools/para/conv2_w Normal file
View File

@@ -0,0 +1,544 @@
6
10
3
3
1.5020652
0.18993415
0.09683844
0.42478532
0.5652113
-0.09654023
0.46004438
-0.32927218
-1.3090333
-0.03629563
-0.47720632
-0.049615752
-0.13462313
-0.1414031
-0.20201886
0.08700898
-0.2532898
-0.41091815
-2.6467288
-0.91942525
-0.07791335
-1.1988721
-2.5805545
-0.96260583
0.47473067
-3.1096683
-1.7033176
-0.5463688
-0.16640678
-0.23889092
0.92512184
0.56869555
-1.0851349
0.98314923
0.013738053
-1.0819626
-0.10545615
-0.8232357
-1.2379274
0.3877544
-0.053305604
-0.69254845
0.5536063
0.8405918
-0.27907613
-0.03274563
0.10089845
-0.4718397
-0.2080956
-0.19937462
-0.22588687
-0.10825909
-0.25839245
-0.13016544
-0.21170974
-0.105000235
-0.055992927
-0.24181439
-0.14309813
0.055603288
-0.20947735
-0.13805705
-0.011289219
-3.1311834
-0.7373151
2.1412795
-2.7957354
-0.53299326
1.4910551
-0.67892796
0.061242625
1.0142266
-0.30210808
-0.22511297
-0.34764558
-0.44355592
-0.23233292
-0.3309362
-0.19372638
-0.44694182
-0.26614943
-0.1855974
-0.113576986
-0.09121944
-0.13158984
0.012073785
-0.06931659
-0.13569477
-0.044836458
-0.21612994
0.3297727
-1.3531494
0.1984134
1.9814707
0.9562245
0.39023614
2.355978
1.9520823
0.09500724
-0.14697555
-0.2695747
-0.19498226
-0.19924545
-0.23994629
-0.2738438
0.03253718
-0.4405975
-0.120104544
-4.3073807
0.2020275
-0.5503787
-4.320714
-0.7776511
1.1284349
-2.5597017
-0.79974496
2.3943193
-2.4705906
-0.67554355
-0.7746615
-0.21265095
-1.4163647
0.50921655
0.8470739
-0.40889522
1.4251903
-0.79344493
-1.0633
-0.43276837
-0.35594717
-0.925617
-0.16571444
0.48405877
-0.060691416
-0.36661333
-0.081582114
0.05866104
-0.27885157
0.020201556
0.08026292
-0.2612855
-0.16771607
-0.07217326
-0.22424023
-0.05045426
-0.11125194
0.12680489
-0.3215598
-0.19570999
-0.06906672
-0.3656599
-0.21287394
0.08601797
0.88221467
1.8111526
2.5901568
0.49841857
0.7406666
1.9325773
-0.56068546
-0.5544755
1.1572238
-0.3588475
-0.16109748
-0.11979289
-0.208714
-0.22023945
-0.048370343
-0.24384555
-0.41836953
-0.16143581
-0.08112425
0.12876861
-0.18439032
-0.16903366
-0.15317251
-0.14610882
-0.02121364
-0.03730557
-0.06588184
-1.573095
-2.1102138
-2.791767
-1.2839516
0.18364334
-1.0566423
-2.936175
1.3333176
-2.569022
-0.19243743
-0.5396632
-0.39073667
-0.08940771
-0.41599658
-0.21406165
-0.11914874
0.0053107874
-0.34026533
-0.19902867
-1.5525646
-1.4867154
0.7785492
-0.07427133
-1.8370575
1.3299376
1.0611509
-1.457465
-0.34795722
0.1933098
0.38095564
-0.49252924
0.86735547
0.3377935
-0.5835429
0.46118125
0.09202047
-0.64125884
-1.0138168
-1.4562032
-0.34383684
-0.2197565
-0.55936724
-0.72665596
-0.055117708
-0.032901403
-0.2976792
-0.32156548
-0.30981004
-0.23365386
-0.56748354
-0.39124587
0.0584696
-0.52749497
-0.40699643
-0.1940885
-0.037750658
-0.14615804
-0.11365478
-0.07085398
-0.09038009
-0.16512215
-0.07511696
-0.40074205
-5.1477885
-2.3127253
0.6868194
-4.8400707
-0.8838848
0.84697765
-2.9693027
0.90324074
1.5448984
-0.06254911
-0.23538658
-0.098100856
-0.22640543
-0.3093498
-0.3921947
-0.4127525
-0.19800858
-0.30706027
-0.023742901
-0.012547765
-0.022648895
0.033385832
-0.16520245
-0.08068707
-0.15606274
-0.01918419
-0.20760387
0.4380362
0.7704153
-3.7217038
0.3071281
0.5547072
-2.9204123
-0.7863632
-0.3218954
-4.08438
-0.1704269
-0.48522842
-0.34706044
-0.06454638
-0.14191426
-0.5201403
-0.10787962
0.1142594
-0.3869569
0.09657354
-1.4832062
-3.2396731
0.3072946
-0.38548103
-3.8164542
-0.50314766
-0.033530306
-3.1886842
0.66873956
1.6643683
0.99080354
-1.2877836
0.71671844
0.4645308
-2.2703633
-0.9974806
-0.42078534
-0.30584887
-0.93159604
-1.2055197
-0.3104198
-0.23621848
-0.77678233
-0.7545622
-0.39329994
-0.19829883
-0.18581958
-0.10274275
-0.21223308
-0.22801906
-0.10956713
-0.15408704
-0.22964376
-0.21038757
0.003134985
-0.087081514
-0.20077498
-0.13176169
0.10705288
-0.16764928
-0.047713023
-0.25014165
-0.39079958
-0.3011907
-3.5580482
-1.8545792
0.1256421
-3.7077072
-1.3029686
-0.005157275
-3.2010386
0.38178772
0.9837942
-0.068351015
-0.36667752
-0.20250086
-0.40076578
-0.42409518
-0.25450817
-0.37642953
-0.17545642
-0.37250796
-0.11730237
-0.03561523
-0.03951029
-0.18142352
0.0054535097
-0.1708318
0.15000097
-0.055385202
-0.19415462
-0.40723643
-0.079323746
0.60454637
-0.84041554
0.23971762
1.2219191
-1.6282345
-0.6933169
0.40344524
0.08663297
-0.38227516
-0.5032992
-0.41386464
-0.44355136
-0.35756576
-0.40863183
-0.40098286
-0.36941025
-0.9236331
0.32647514
0.35148832
-1.0944152
0.6073528
0.9087426
-1.6470383
0.4317713
1.2342584
0.43612233
-0.62993884
0.2974378
-0.6633325
-0.67800444
1.0921708
-2.6063566
-2.0205736
0.17532487
-0.7795648
-0.5008028
-0.7370313
-0.35221562
-0.33727354
-0.17583118
-0.05256289
-0.16688262
-0.19191936
-0.46429542
-0.5084472
-0.457363
-0.20768711
-0.41373605
-0.48311797
-0.24757653
-0.31921867
-0.39365336
-0.321992
-0.28978324
-0.20284106
-0.1297369
-0.34363598
-0.2521751
-0.34354624
-0.25759906
-0.3418701
-3.4949255
-4.531625
-1.5090456
-4.0302067
-4.504042
-0.590934
-7.9731874
-6.7120776
-2.1059375
-0.12758178
-0.058909506
-0.18952405
-0.004923893
-0.06919461
-0.030514337
-0.0762774
-0.023049993
-0.12789033
-0.026053552
-0.027134173
-0.16900522
-0.02314374
-0.13830115
-0.018906182
-0.06166276
-0.115819514
0.029891966
0.78294903
-0.24488732
-0.39234003
2.2506793
1.2096143
-0.10086763
3.1884897
2.3008416
0.40546918
-0.2163068
-0.3414486
-0.098043695
-0.016555157
-0.1231604
0.1327601
0.10635556
-0.21275902
-0.07835169
-3.02146
1.3674593
0.614203
-3.471883
0.30260587
1.7752177
-1.9685831
0.28805226
2.9171088
-2.77233
-0.7610864
-2.173954
-0.9739102
-0.8951448
-0.7348445
-0.13843127
-2.7553678
-4.037929
-0.40669936
-0.55984896
-0.56030476
-0.38789842
-0.40184727
-0.11818772
0.5288938
-0.14943306
-0.30072457
0.09072567
-0.20110369
-0.10526498
-0.05925854
-0.1908625
0.01648614
-0.07096718
-0.036369618
-0.15528911
-0.11626164
0.047128793
-0.035411496
0.03015979
-0.10536637
-0.09063028
0.069158494
-0.055972695
-0.02230821
1.619881
2.5068073
2.1708288
1.8902549
2.1950085
2.1109314
1.0464481
1.3082289
1.6681985
-0.45436555
-0.39643508
-0.13680391
-0.22465855
-0.33752236
-0.37145287
-0.5340985
-0.23784201
-0.42311898
-0.12219668
0.012118651
-0.06717292
-0.056408852
-0.14742865
0.10230494
0.06558793
0.027565224
0.071604334

17
tools/para/fc1_b Normal file
View File

@@ -0,0 +1,17 @@
16
6.674671
-0.4621555
-0.35395312
-6.140842
-0.6383096
-0.0026992396
-0.105528705
-0.12171911
-0.039757866
-4.064281
-0.36199543
-0.06976157
-0.042993866
0.0015301058
-0.06826296
-0.0050806464

11202
tools/para/fc1_w Normal file

File diff suppressed because it is too large Load Diff

5
tools/para/fc2_b Normal file
View File

@@ -0,0 +1,5 @@
4
6.171619
-1.5262855
-4.09489
-2.3815227

66
tools/para/fc2_w Normal file
View File

@@ -0,0 +1,66 @@
16
4
0.70240104
-0.058500186
-0.23156737
-0.33127818
-3.6112761e-34
-3.3890292e-34
9.363116e-34
4.0197816e-34
-0.2575022
0.69736814
-0.2684227
-0.08991088
-0.3760809
-0.065089576
0.45981047
0.008204719
-4.8556375e-34
4.816393e-34
3.872484e-34
5.096778e-34
1.7445673e-19
1.2270845e-33
-2.260416e-25
1.0369542e-20
4.00948e-34
-5.999333e-34
3.7143163e-34
-4.228372e-34
-1.0954501e-34
-2.7085206e-34
8.016929e-34
9.2079354e-35
-3.945864e-34
1.98814e-34
2.3972646e-34
3.942207e-34
-0.14058167
-0.07198931
-0.38025984
0.5981627
4.3956684e-34
3.1032594e-34
3.4351758e-34
5.5414507e-34
-1.248324e-34
8.8546844e-35
6.8084945e-34
-1.1866068e-34
-3.865728e-34
1.8786859e-34
3.3450276e-34
-2.8077459e-34
0.0013890187
0.026067872
0.0082543865
-0.02225164
2.0089658e-34
-6.1273506e-34
-6.228039e-34
-5.0242814e-34
-4.3343494e-34
3.0939117e-34
1.2827092e-34
-4.305108e-34