Skip to content

Commit b3e5885

Browse files
committed
wip
1 parent fea9d17 commit b3e5885

File tree

9 files changed

+34
-60
lines changed

9 files changed

+34
-60
lines changed

camera.py

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ def __init__(self):
7272
self.video_start_time = time.time() + 8640000
7373
self._image_time = 0
7474
self._cv_image_factor = int(config.Config.get().get("cv_image_factor", 4))
75-
#self._image_lock = Lock()
7675
self._image_refresh_timeout = float(config.Config.get().get("camera_refresh_timeout", 0.1))
7776
self._color_object_size_min = int(config.Config.get().get("camera_color_object_size_min", 80)) / (self._cv_image_factor * self._cv_image_factor)
7877
self._color_object_size_max = int(config.Config.get().get("camera_color_object_size_max", 32000)) / (self._cv_image_factor * self._cv_image_factor)
@@ -235,29 +234,23 @@ def find_line(self):
235234
return coords[0]
236235

237236
def find_signal(self):
238-
#print "signal"
239237
angle = None
240238
ts = time.time()
241-
#self._image_lock.acquire()
242239
img = self.get_image()
243240
signals = img.find_template(self._img_template)
244241

245242
logging.info("signal: " + str(time.time() - ts))
246243
if len(signals):
247244
angle = signals[0].angle
248245

249-
#self._image_lock.release()
250-
251246
return angle
252247

253248
def find_face(self):
254249
face_x = face_y = face_size = None
255-
#self._image_lock.acquire()
256250
img = self.get_image()
257251
ts = time.time()
258252
faces = img.grayscale().find_faces()
259253
logging.info("face.detect: " + str(time.time() - ts))
260-
#self._image_lock.release()
261254
if len(faces):
262255
# Get the largest face, face is a rectangle
263256
x, y, w, h = faces[0]
@@ -292,18 +285,15 @@ def path_ahead(self):
292285
coordY = 60 - ((y * 48) / (480 / self._cv_image_factor))
293286
logging.info("x: " + str(x) + " y: " + str(y) + " coordY: " + str(coordY))
294287

295-
#self._image_lock.release()
296288
return coordY
297289

298290
def find_color(self, s_color):
299291
image_size = self._camera.out_rgb_resolution
300292
color = (int(s_color[1:3],16), int(s_color[3:5],16), int(s_color[5:7],16))
301293
code_data = None
302294
ts = time.time()
303-
#self._image_lock.acquire()
304295
img = self.get_image()
305296
bw = img.filter_color(color)
306-
#self._image_lock.release()
307297
objects = bw.find_blobs(minsize=self._color_object_size_min, maxsize=self._color_object_size_max)
308298
logging.debug("objects: " + str(objects))
309299
dist = -1
@@ -330,9 +320,7 @@ def find_color(self, s_color):
330320
def find_text(self, accept, back_color):
331321
text = None
332322
color = (int(back_color[1:3],16), int(back_color[3:5],16), int(back_color[5:7],16))
333-
#self._image_lock.acquire()
334323
img = self.get_image()
335-
#self._image_lock.release()
336324
image = img.find_rect(color=color)
337325
if image:
338326
logging.info("image: " + str(image))
@@ -359,9 +347,7 @@ def cnn_classify(self, model_name=None):
359347
else:
360348
classifier = self._cnn_classifier_default
361349

362-
#self._image_lock.acquire()
363350
img = self.get_image()
364-
#self._image_lock.release()
365351
classes = classifier.classify_image(img.mat())
366352
s_classes = sorted(classes.items(), key=lambda x: x[1], reverse=True)
367353
return s_classes

cnn_manager.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,4 +127,6 @@ def prepare_images(self):
127127

128128
def clear_filesystem(self):
129129
shutil.rmtree(MODEL_TMP_PATH + "/" + self.model_name)
130+
#shutil.rmtree(MODEL_TMP_PATH + "/bottleneck")
131+
#shutil.rmtree(MODEL_TMP_PATH + "/retrain_logs")
130132

cnn_train.py

Lines changed: 24 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@ def __init__(self, manager, architecture):
138138
self.bottleneck_dir = "/tmp/bottleneck"
139139
self.model_dir = "/tmp/imagenet"
140140
self.final_tensor_name = "final_result"
141+
self.write_logs = False
141142

142143
# Needed to make sure the logging output is visible.
143144
# See https://github.com/tensorflow/tensorflow/issues/3047
@@ -223,11 +224,12 @@ def retrain(self,
223224

224225
# Merge all the summaries and write them out to the summaries_dir
225226
merged = tf.summary.merge_all()
226-
train_writer = tf.summary.FileWriter(self.summaries_dir + '/train',
227+
if self.write_logs:
228+
train_writer = tf.summary.FileWriter(self.summaries_dir + '/train',
227229
sess.graph)
228230

229-
validation_writer = tf.summary.FileWriter(
230-
self.summaries_dir + '/validation')
231+
if self.write_logs:
232+
validation_writer = tf.summary.FileWriter(self.summaries_dir + '/validation')
231233

232234
# Set up all our weights to their initial default values.
233235
init = tf.global_variables_initializer()
@@ -256,7 +258,8 @@ def retrain(self,
256258
[merged, train_step],
257259
feed_dict={bottleneck_input: train_bottlenecks,
258260
ground_truth_input: train_ground_truth})
259-
train_writer.add_summary(train_summary, i)
261+
if self.write_logs:
262+
train_writer.add_summary(train_summary, i)
260263

261264
# Every so often, print out how well the graph is training.
262265
is_last_step = (i + 1 == training_steps)
@@ -281,7 +284,8 @@ def retrain(self,
281284
[merged, evaluation_step],
282285
feed_dict={bottleneck_input: validation_bottlenecks,
283286
ground_truth_input: validation_ground_truth})
284-
validation_writer.add_summary(validation_summary, i)
287+
if self.write_logs:
288+
validation_writer.add_summary(validation_summary, i)
285289
tf.logging.info('%s: Step %d: Validation accuracy = %.1f%% (N=%d)' %
286290
(datetime.now(), i, validation_accuracy * 100,
287291
len(validation_bottlenecks)))
@@ -377,31 +381,23 @@ def create_image_lists(self, image_dir, testing_percentage, validation_percentag
377381
training_images = []
378382
testing_images = []
379383
validation_images = []
384+
testing_images_len = int(len(file_list) * testing_percentage / 100.0)
385+
validation_images_len = int(len(file_list) * validation_percentage / 100.0)
386+
while len(testing_images) <= testing_images_len:
387+
file_name = random.choice(file_list)
388+
file_list.remove(file_name)
389+
base_name = os.path.basename(file_name)
390+
testing_images.append(base_name)
391+
print ("testing: " + base_name)
392+
while len(validation_images) <= validation_images_len:
393+
file_name = random.choice(file_list)
394+
file_list.remove(file_name)
395+
base_name = os.path.basename(file_name)
396+
validation_images.append(base_name)
397+
print ("validation: " + base_name)
380398
for file_name in file_list:
381399
base_name = os.path.basename(file_name)
382-
# We want to ignore anything after '_nohash_' in the file name when
383-
# deciding which set to put an image in, the data set creator has a way of
384-
# grouping photos that are close variations of each other. For example
385-
# this is used in the plant disease data set to group multiple pictures of
386-
# the same leaf.
387-
hash_name = re.sub(r'_nohash_.*$', '', file_name)
388-
# This looks a bit magical, but we need to decide whether this file should
389-
# go into the training, testing, or validation sets, and we want to keep
390-
# existing files in the same set even if more files are subsequently
391-
# added.
392-
# To do that, we need a stable way of deciding based on just the file name
393-
# itself, so we do a hash of that and then use that to generate a
394-
# probability value that we use to assign it.
395-
hash_name_hashed = hashlib.sha1(compat.as_bytes(hash_name)).hexdigest()
396-
percentage_hash = ((int(hash_name_hashed, 16) %
397-
(MAX_NUM_IMAGES_PER_CLASS + 1)) *
398-
(100.0 / MAX_NUM_IMAGES_PER_CLASS))
399-
if percentage_hash < validation_percentage:
400-
validation_images.append(base_name)
401-
elif percentage_hash < (testing_percentage + validation_percentage):
402-
testing_images.append(base_name)
403-
else:
404-
training_images.append(base_name)
400+
training_images.append(base_name)
405401
result[label_name] = {
406402
'dir': dir_name,
407403
'training': training_images,

coderbot.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"move_tr_speed": "85", "move_fw_elapse": "1", "camera_color_object_size_min": "4000", "camera_jpeg_bitrate": "2000000", "load_at_start": "", "move_tr_elapse": "0.5", "sound_stop": "$shutdown.mp3", "show_control_move_commands": "true", "prog_level": "adv", "prog_scrollbars": "true", "move_fw_speed": "100", "camera_color_object_size_max": "160000", "sound_shutter": "$shutter.mp3", "show_page_prefs": "true", "cv_image_factor": "2", "ctrl_hud_image": "", "button_func": "none", "ctrl_fw_elapse": "-1", "ctrl_tr_elapse": "-1", "move_power_angle_2": "60", "move_power_angle_3": "60", "camera_path_object_size_max": "160000", "move_motor_trim": "1", "camera_path_object_size_min": "4000", "cnn_default_model": "apple_kiwi_fast", "show_page_program": "true", "sound_start": "$startup.mp3", "camera_exposure_mode": "auto", "ctrl_tr_speed": "80", "prog_move_mpu": "yes", "ctrl_fw_speed": "100", "camera_jpeg_quality": "20", "prog_maxblocks": "-1", "camera_framerate": "30", "move_motor_mode": "dc", "move_power_angle_1": "45", "show_page_control": "true"}
1+
{"move_tr_speed": "85", "move_fw_elapse": "1", "camera_color_object_size_min": "4000", "camera_jpeg_bitrate": "2000000", "load_at_start": "", "move_tr_elapse": "0.5", "sound_stop": "$shutdown.mp3", "show_control_move_commands": "true", "prog_level": "adv", "prog_scrollbars": "true", "move_fw_speed": "100", "camera_color_object_size_max": "160000", "sound_shutter": "$shutter.mp3", "show_page_prefs": "true", "cv_image_factor": "2", "ctrl_hud_image": "", "button_func": "none", "ctrl_fw_elapse": "-1", "ctrl_tr_elapse": "-1", "move_power_angle_2": "60", "move_power_angle_3": "60", "camera_path_object_size_max": "160000", "move_motor_trim": "1", "camera_path_object_size_min": "4000", "cnn_default_model": "harry_3_50", "show_page_program": "true", "sound_start": "$startup.mp3", "camera_exposure_mode": "auto", "ctrl_tr_speed": "80", "prog_move_mpu": "yes", "ctrl_fw_speed": "100", "camera_jpeg_quality": "20", "prog_maxblocks": "-1", "camera_framerate": "30", "move_motor_mode": "dc", "move_power_angle_1": "45", "show_page_control": "true"}

cv/image.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ class Image():
5050
r_from = np.float32([[0, 0], [640, 0], [640, 480], [0, 480]])
5151
r_dest = np.float32([[0, -120], [640, -120], [380, 480], [260, 480]])
5252

53-
_aruco_dict = aruco.Dictionary_get(aruco.DICT_4X4_50)
53+
_aruco_dict = aruco.Dictionary_get(aruco.DICT_ARUCO_ORIGINAL)
5454
_aruco_parameters = aruco.DetectorParameters_create()
5555

5656
#_face_cascade = cv2.CascadeClassifier('/usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_default.xml')
@@ -271,6 +271,7 @@ def find_ar_code(self):
271271
codes = []
272272
positions = []
273273
if ids is not None:
274+
print ids
274275
for i in range(0, len(ids)):
275276
codes.append(ids[i][0])
276277
rect = corners[i][0]

photos/metadata.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

sonar_test.py

Lines changed: 0 additions & 12 deletions
This file was deleted.

templates/config.html

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,10 @@ <h3>{% trans %}Train new CNN Model{% endtrans %}</h3>
253253
     <option value="mobilenet_0.75_128">MobileNet 0.75 128</option>
254254
     <option value="mobilenet_0.50_128">MobileNet 0.50 128</option>
255255
     <option value="mobilenet_0.25_128">MobileNet 0.25 128</option>
256+
     <option value="mobilenet_1.0_224">MobileNet 1.0 224</option>
257+
     <option value="mobilenet_0.75_224">MobileNet 0.75 224</option>
258+
     <option value="mobilenet_0.50_224">MobileNet 0.50 224</option>
259+
     <option value="mobilenet_0.25_224">MobileNet 0.25 224</option>
256260
</select>
257261
<label for="i_cnn_model_train_steps">{% trans %}Training steps{% endtrans %}</label>
258262
<input type="range" id="i_cnn_train_steps" name="cnn_train_steps" min="10" max="100" step="10" value="50">

test.txt

Lines changed: 0 additions & 3 deletions
This file was deleted.

0 commit comments

Comments
 (0)