Site Loader

Содержание

простой детектор зева с использованием ориентиров на лице

MachNEase от Nam — Машинное обучение стало проще, Намитха Гурупрасад

Вы когда-нибудь задумывались, сколько раз вы зеваете каждый день ?! Неаайы…. У нас есть дела поважнее !!!

Хотите узнать, сколько у вас зевок? Что ж, вы всего в одном шаге !!

  • Человеческие лица значительно передают и эффективно выражают чувства благодаря сокращению различных лицевых мышц.
  • Крайняя усталость, скука и отсутствие интереса — это первопричины сонливости и, в конечном итоге, зевоты.
  • Определение ориентиров на лице — радикальный подход к обнаружению зевки.
  • Следовательно, логично ожидать, что эффективная система обработки изображений лица может быть разработана с использованием компьютерного зрения.

УСТАНОВИТЕ И ИМПОРТ ОСНОВНЫХ БИБЛИОТЕК:

  • OpenCV — библиотека функций программирования, в основном предназначенная для компьютерного зрения в реальном времени (Документация).
pip install opencv-python
  • DLib — универсальная кроссплатформенная программная библиотека, написанная на C ++ (Документация).
pip install dlib
  • NumPy — библиотека для языка программирования Python, добавляющая поддержку больших многомерных массивов и матриц, а также большой набор высокоуровневых математических функций для работы с этими массивами (Документация)
pip install numpy

Теперь импортируйте все эти библиотеки:

import cv2
import dlib
import numpy as np

ПОЛУЧИТЕ КООРДИНАТЫ ЗНАКОВ ЛИЦА:

  • Чтобы найти координаты ориентиров на лицах, используется оценщик формы, реализованный в библиотеке dlib.
detector = dlib.get_frontal_face_detector() #For detecting faces
landmark_path="shape_predictor_68_face_landmarks.dat" 
#Path of the file - if stored in the same directory.  Else, give the relative path
predictor = dlib.shape_predictor(landmark_path) #For identifying landmarks
  • Оценщик дает 68 ориентиров, включая уголки глаз, кончик носа, губы и т. Д.
  • Определите количество лиц, обнаруженных веб-камерой. Убедитесь, что есть только одна тема для обнаружения активности.
#Obtaining Facial Landmark coordinates
def get_facial_landmarks(image):
    face = detector(image, 1)
    #Detecting faces in image
    if len(face) > 1:
        return "Multiple faces detected in the frame!!"
    if len(face) == 0:
        return "No face detected in the frame!!"
    #Return the coordinates
    #Predictor identifies all the 68 landmarks for the detected face
    return np.matrix([[pred.x, pred.y] for pred in predictor(image, face[0]).parts()])
  • Добавьте 68 координат ориентира на лицо на обнаруженное лицо.
#Drawing the landmarks : yellow in color 
def landmarks_annotation(image, facial_landmarks):
    #Different image window for facial landmarks
    image = image.copy()
    for coord, p in enumerate(facial_landmarks):
        #Extracting coordinate values and the location / matrix of the coordinates
        position = (p[0, 0], p[0, 1])
        #Identify and draw the facial landmarks
        cv2.putText(image, str(coord), position, cv2.FONT_HERSHEY_COMPLEX, 0.3, (0, 255, 255))
    return image

ВЫЧИСЛИТЕ РАССТОЯНИЕ ГУБ:

  • Вычислите значение центроида
    верхней губы
    , используя ориентиры.
#Landmark coordinates for upper lip identified in the face 
def upperlip(facial_landmarks):
    ulip = []
    #create an array to store the landmark coordinates of the upper lip
    for i in range(50,53):
        #The range is predefined in "shape_predictor_68_face_landmarks. dat"
        ulip.append(facial_landmarks[i])
    for i in range(61,64):
        #The range is predefined in "shape_predictor_68_face_landmarks.dat"
        ulip.append(facial_landmarks[i])
    #Locate the mean value of the upper lip coordinates
   
ulip_mean = np.mean(ulip, axis=0) return int(ulip_mean[:,1])
#centroid value
  • Вычислите значение центроида нижней губы, используя ориентиры.
#Landmark coordinates for lower lip identified in the face 
def lowerlip(facial_landmarks):
    llip = []
    #create an array to store the landmark coordinates of the lower lip
    for i in range(65,68):
        #The range is predefined in "shape_predictor_68_face_landmarks.dat"
        llip.append(facial_landmarks[i])
    for i in range(56,59):
        #The range is predefined in "shape_predictor_68_face_landmarks.dat"
       
llip. append(facial_landmarks[i])
#Locate the mean value of the lower lip coordinates llip_mean = np.mean(llip, axis=0) return int(llip_mean[:,1])#centroid value
  • Определите зевоту, вычислив расстояние между верхней и нижней губами, используя их соответствующие центроиды.
#Detect the yawning activity
def yawning(image):
    #Obtain the facial Landmark coordinates
    facial_landmarks = get_facial_landmarks(image)
    if type(facial_landmarks) == str:
        return image, 0
    #Obtain the frame / image with annotated facial landmarks
landmarks_image = landmarks_annotation(image, facial_landmarks)
#Obtain Lip centroids upperlip_centroid = upperlip(facial_landmarks) lower_lip_centroid = lowerlip(facial_landmarks) #Calculate the distance between the centroids lips_dist = abs(upperlip_centroid - lower_lip_centroid) return landmarks_image, lips_dist

ОТОБРАЖЕНИЕ СОСТОЯНИЯ ЗЕЗЫВАНИЯ И ПОДСЧЕТА: (Игра начинается !!!!)

  • Инициализировать статус зевоты и считать
yawn_status = False 
yawn_count = 0
  • Создайте объект прямой трансляции
video_capture = cv2.
VideoCapture(0)
  • Определите зевоту, вызвав ее функцию
while True:
    _, image_frame = video_capture.read()
    #Identify the yawning activity
    landmarks_image, lips_dist = yawning(image_frame)
    #Update the yawn status
    previous_status = yawn_status
  • Убедитесь, что расстояние между губами эксцентрично

(порог: субъективно) [Здесь выявляется и учитывается ваш зевок: D]

  • Если да, то отобразите
    статус и количество ваших зевок.
#comes under while loop
#lips distance is subjective and changes from subject to subject based on their facial structures
    if lips_dist > 40:
        yawn_status = True
        output_text = " Number of Yawns: " + str(yawn_count + 1)
        cv2.putText(image_frame, "You are yawning", (50,450), cv2.FONT_HERSHEY_COMPLEX, 1,(255,255,0))
        cv2. putText(image_frame, output_text, (50,50), cv2.FONT_HERSHEY_COMPLEX, 1,(0,0,255))
        
    else:
        yawn_status = False 
         
    if previous_status == True and yawn_status == False:
        yawn_count += 1
  • Создайте 2 отдельных окна:
  1. Ориентиры на лице
  2. Активность зевки
cv2.imshow('Facial Landmarks', landmarks_image )
cv2.imshow('Yawning Activity Detection', image_frame )
  • Нажмите Q, чтобы остановить это обнаружение.
if cv2.waitKey(1)  & 0xFF == ord('q'):
        break
  • Это хорошая привычка наводить порядок, который вы натворили. Следовательно, завершите работу объекта веб-камеры и сбросьте все открытые окна.
video_capture.release()
cv2.destroyAllWindows()

ИСПОЛНЕНИЕ:

Зайдите в свой терминал и вставьте следующую команду:

Здесь имя файла: «yawn_detector. py»

python yawn_detector.py

YIPPPEEEE !!! ВЫ ПРОСТО ЗАКОНЧИЛИ ЗЕВАТЬ И УВИДЕЛИ РТ НА ШИРОКУ !!!!!!

ЖДАТЬ !! Вы только что скопировали и вставили все долбанные блоки кода ????? Что ж, это было утомительно. Неважно, вы узнали что-то новое и захватывающее …

Вы можете найти ВСЕ КОДЫ здесь: https://github.com/nam1410/MachNEase—Simple-Yawn-Detector-using-Facial-Landmarks

Заинтересованы в машинном обучении, науке о данных и т. Д. ?? :

Погрузитесь в этот океан с помощью

MachNEase with Nam

Я буду загружать простые / реализуемые проекты в свой профиль. Следите за аккаунтом, чтобы получать потрясающие, адаптированные под любые запросы.

Свяжитесь со мной по адресу:

LinkedIn: https://www.linkedin.com/in/namitha-guruprasad-216362155/

Намитха Гурупрасад, студент, Бангалор, Индия

Простой детектор миганий с использованием небольшой сверточной нейронной сети с Python

Сегодня мы собираемся разработать приложение для компьютерного зрения, которое будет определять, открыты или закрыты глаза, и подсчитывать моргания. Для достижения нашей цели мы собираемся обучить небольшую сверточную нейронную сеть (CNN) с помощью Keras, а затем, используя OpenCV и dlib, мы реализуем наш детектор миганий.

Процесс создания нашего детектора моргания состоит из двух этапов: сначала обучение нейронной сети, а затем разработка детектора. Если хотите, можете пропустить первый этап и перейти ко второму и использовать сеть, которую мы уже подготовили для вас. Вы можете найти код в моем репозитории на github.

Этап первый

На этом этапе мы предположим, что вы уже достаточно много знаете о сверточных нейронных сетях. Это потому, что мы не будем говорить о том, как работает cnn. Если вы впервые слышите о cnn’s, переходите сразу ко второму этапу. В Стэнфорде есть отличный курс, который поможет вам многое понять о нейронных сетях и CNN.

Для начала давайте посмотрим, что нам нужно для обучения нашей cnn. Мы будем использовать библиотеку keras с бэкэндом tensorflow, keras дает вам возможность использовать его с бэкэндом tensorflow или theano. Также вы можете использовать python 2.7 или python 3.x. Если в вашей системе нет keras или tenorflow, вы можете

$ pip install --upgrade tensorflow

а также

$ pip install keras

, tensorflow поддерживает CUDA, если у вас есть графический процессор с поддержкой CUDA, но для этого руководства это не будет иметь большого значения.

Итак, мы собираемся обучить двоичный классификатор между открытыми и закрытыми глазами. Для этого нам понадобится набор данных для обучения нашего классификатора. Для закрытых глаз мы будем использовать кадрированные изображения размером 26×34 из набора данных Closed Eyes In The Wild (CEW), а для открытых глаз мы использовали изображения с ручным анотированием. Мы собираемся использовать только изображения для левого глаза, потому что наш набор данных невелик, и мы хотим, чтобы cnn был более точным, чтобы добиться того, чтобы мы перевернули правильные изображения, когда мы обрезали все изображения лица. Полный набор данных содержит 2874 изображения.

Вы можете найти набор данных в формате csv в папке поезда в моем репо.

Для начала импортируем необходимые пакеты:

import csv
import numpy as np
import keras
from keras.preprocessing.image import ImageDataGenerator
from keras.models import Sequential
from keras.layers import Conv2D,Flatten,Dense,Activation,Dropout,MaxPooling2D
from keras.activations import relu
from keras.optimizers import Adam

Теперь, когда мы импортировали все, что нам нужно для загрузки данных из набора данных, для этого мы собираемся написать функцию

def readCsv(path):
with open(path,’r’) as f:
 #read the scv file with the dictionary format 
 reader = csv.DictReader(f)
 rows = list(reader)
#imgs is a numpy array with all the images
 #tgs is a numpy array with the tags of the images
 imgs = np.empty((len(list(rows)),height,width,1),dtype=np.uint8)
 tgs = np.empty((len(list(rows)),1))
 
 for row,i in zip(rows,range(len(rows))):
 
 #convert the list back to the image format
 img = row[‘image’]
 img = img. strip(‘[‘).strip(‘]’).split(‘, ‘)
 im = np.array(img,dtype=np.uint8)
 im = im.reshape((26,34))
 im = np.expand_dims(im, axis=2)
 imgs[i] = im
#the tag for open is 1 and for close is 0
 tag = row[‘state’]
 if tag == ‘open’:
 tgs[i] = 1
 else:
 tgs[i] = 0
 
 #shuffle the dataset
 index = np.random.permutation(imgs.shape[0])
 imgs = imgs[index]
 tgs = tgs[index]
#return images and their respective tags
 return imgs,tgs

Эта функция принимает единственный обязательный параметр — путь к CSV-файлу с набором данных.

Сначала мы читаем файл csv в формате словаря, а затем составляем список с каждой строкой файла. Затем мы создаем два пустых массива numpy для хранения изображений и тега каждого изображения. После этого мы обращаемся к каждой строке списка, который содержит изображение и тег изображения, чтобы подтвердить предыдущие массивы их значений. В конце мы перемешиваем два массива и возвращаем их.

Итак, чтобы продолжить, мы собираемся построить нашу cnn, используя keras. В нашей сети есть три сверточных фильтра с активацией relu, за каждым фильтром следует слой максимального объединения. Затем мы добавляем dropout слой, за которым следуют два полностью связанных слоя с также активацией relu. Наконец, мы добавляем одиночный нейрон с сигмовидной активацией для нашего бинарного классификатора. В качестве оптимизатора мы будем использовать адам, а для нашей функции потерь мы будем использовать бинарную кроссэнтропию.

#make the convolution neural network
def makeModel():
 model = Sequential()
model.add(Conv2D(32, (3,3), padding = ‘same’,
 input_shape=(height,width,1)))
 model.add(Activation(‘relu’))
 model.add(MaxPooling2D(pool_size=(2,2)))
 model.add(Conv2D(64, (2,2), padding= ‘same’))
 model.add(Activation(‘relu’))
 model.add(MaxPooling2D(pool_size=(2, 2)))
 model.add(Conv2D(128, (2,2), padding=’same’))
 model.add(Activation(‘relu’))
 model.add(MaxPooling2D(pool_size=(2, 2)))
 model.add(Dropout(0.25))
model.add(Flatten())
 model.add(Dense(512))
 model. add(Activation(‘relu’))
 model.add(Dense(512))
 model.add(Activation(‘relu’))
 model.add(Dense(1))
 model.add(Activation(‘sigmoid’))
model.compile(optimizer=Adam(lr=0.001), 
 loss=’binary_crossentropy’,
 metrics=[‘accuracy’])
return model

Теперь у нас есть все, что нужно для обучения нашей маленькой и простой cnn.

def main():
xTrain ,yTrain = readCsv(‘dataset.csv’)
 
 #scale the values of the images between 0 and 1
 xTrain = xTrain.astype(‘float32’)
 xTrain /= 255
model = makeModel()
#do some data augmentation
 datagen = ImageDataGenerator(
 rotation_range=10,
 width_shift_range=0.2,
 height_shift_range=0.2,
 )
 datagen.fit(xTrain)
#train the model
 model.fit_generator(datagen.flow(xTrain,yTrain,batch_size=32),
 steps_per_epoch=len(xTrain) / 32, epochs=50)
 
 #save the model
 model.save(‘blinkModel.hdf5’)

Сначала мы загружаем наши изображения и теги в два массива numpy, затем мы масштабируем значения изображений от 0 до 1, мы делаем это, потому что это ускоряет процесс обучения. После этого мы выполняем некоторое увеличение наших данных, чтобы искусственно увеличить количество обучающих примеров, потому что у нас небольшой набор данных, и мы должны уменьшить переобучение. Наконец, мы обучаем сеть для 50 эпох с размером пакета 32 и сохраняем наш обученный cnn.

Мы знаем, что обычно нам приходилось разделять наши данные на наборы train, val и test, выполнять некоторую тонкую настройку, а затем обучать нашу сеть оценивать их на нашем тестовом наборе, но цель этого руководства — быстро сделать простой детектор миганий и не как обучить классификатор cnn для открытых и закрытых глаз. Поэтому для этого мы не придаем большого значения действительно важным этапам обучения.

Второй этап

Теперь у нас есть обученный cnn, и мы готовы построить наш детектор миганий. Посмотрим, какие библиотеки нам понадобятся.

import cv2
import dlib
import numpy as np
from keras.models import load_model
from scipy.spatial import distance as dist
from imutils import face_utils

Библиотека компьютерного зрения, которую мы собираемся использовать, — это OpenCV. Если у вас ее нет, вы можете установить ее, следуя инструкциям, приведенным здесь для Ubuntu 16.04. Также мы будем использовать dlib, а для набора удобных функций, чтобы упростить работу с OpenCV, нам понадобится библиотека imutils. Если в вашей системе не установлен ни один из этих двух компонентов, вы можете легко установить их, используя

pip install — upgrade imutils

а для dlib вы можете следовать этому руководству.

Обзор металлоискателя: сначала мы считываем каждый кадр с камеры, затем обрезаем глаза и передаем их контроллеру, которого мы обучили делать по ним прогнозы. После этого мы берем среднее значение прогнозов, потому что мы ищем мигания, поэтому мы должны быть уверены. В конце концов, мы противодействуем последовательным предсказаниям закрытия, и если они превышают пороговое значение, мы считаем это миганием. Давайте посмотрим код.

Теперь мы определим функцию для распознавания лиц. Мы будем использовать детектор лиц haarcascade, потому что он быстрее, чем фронтальный детектор лица dlib.

face_cascade = cv2.CascadeClassifier(‘haarcascade_frontalface_alt.xml’)
# detect the face rectangle 
def detect(img, cascade = face_cascade , minimumFeatureSize=(20, 20)):
 if cascade.empty():
     raise (Exception(“There was a problem loading your Haar Cascade xml file.”))
 rects = cascade.detectMultiScale(img, scaleFactor=1.3, minNeighbors=1, minSize=minimumFeatureSize)
 
 # if it doesn’t return rectangle return array
 # with zero lenght
 if len(rects) == 0:
     return []
# convert last coord from (width,height) to (maxX, maxY)
 rects[:, 2:] += rects[:, :2]
return rects

Эта функция принимает единственный обязательный параметр на весь фрейм.

В первой строке мы загружаем классификатор haarcascede из файла xml, который вы можете найти в репо.

Строки 5–7 проверяем, правильно ли загрузился классификатор.

Строки 11–12 мы проверяем, не нашел ли классификатор прямоугольник с лицом, и возвращаем пустой список, если не нашел.

Наконец, в строке 15 мы преобразуем список прямоугольников из [x, y, a, b], где (x, y) — координаты левого угла прямоугольника, а a, b — пиксели, которые мы нужно добавить к x и y соответственно, чтобы сформировать весь прямоугольник, к [x, y, maxX, maxY]. Затем мы возвращаем список прямоугольников, который содержит ноль, один или несколько прямоугольников.

Теперь, когда у нас есть прямоугольник рамки, содержащий лицо, мы можем перейти к поиску глаз. Давайте сделаем для этого функцию.

predictor = dlib.shape_predictor(“shape_predictor_68_face_landmarks.dat”)
def cropEyes(frame):
 
 gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
 
 # detect the face at grayscale image
 te = detect(gray, minimumFeatureSize=(80, 80))
# if the face detector doesn’t detect face
 # return None, else if detects more than one faces
 # keep the bigger and if it is only one keep one dim
 if len(te) == 0:
     return None
 elif len(te) > 1:
     face = te[0]
 elif len(te) == 1:
     [face] = te

Также эта функция принимает один обязательный параметр — кадр.

В строке 1 мы инициализируем предсказатель лица библиотеки dlib. Вы можете узнать об этом подробнее в этой записи блога.

В строке 4 мы конвертируем наш кадр в оттенки серого. Затем в строках 6–17 мы назначаем значение функции обнаружения лица, а затем проверяем, пусто ли оно, и не возвращаем ничего, если это так, потому что нам не нужно отображение нашего предиктора. прекратить (станет более ясно через несколько минут).

# keep the face region from the whole frame
face_rect = dlib.rectangle(left = int(face[0]), top = int(face[1]),
right = int(face[2]), bottom = int(face[3]))
# determine the facial landmarks for the face region
shape = predictor(gray, face_rect)
shape = face_utils.shape_to_np(shape)
# grab the indexes of the facial landmarks for the left and
# right eye, respectively
(rStart, rEnd) = face_utils.FACIAL_LANDMARKS_IDXS[“left_eye”]
(lStart, lEnd) = face_utils.FACIAL_LANDMARKS_IDXS[“right_eye”]
# extract the left and right eye coordinates
leftEye = shape[lStart:lEnd]
rightEye = shape[rStart:rEnd]

Сначала мы в строке 2 берем область лица из всего кадра, а затем определяем ориентиры лица для области лица, а в строке 5 эти координаты преобразуются в массив NumPy.

В Строках 11–12 мы берем индексы лицевых ориентиров для левого и правого глаза из полного набора лицевых ориентиров dlib.

Затем мы извлекаем координаты левого и правого глаза, используя методы нарезки массива, используя только что полученные индексы.

# keep the upper and the lower limit of the eye
# and compute the height
l_uppery = min(leftEye[1:3,1])
l_lowy = max(leftEye[4:,1])
l_dify = abs(l_uppery — l_lowy)
# compute the width of the eye
lw = (leftEye[3][0] — leftEye[0][0])
# we want the image for the cnn to be (26,34)
# so we add the half of the difference at x and y
# axis from the width at height respectively left-right
# and up-down
minxl = (leftEye[0][0] — ((34-lw)/2))
maxxl = (leftEye[3][0] + ((34-lw)/2))
minyl = (l_uppery — ((26-l_dify)/2))
maxyl = (l_lowy + ((26-l_dify)/2))
# crop the eye rectangle from the frame
left_eye_rect = np.rint([minxl, minyl, maxxl, maxyl])
left_eye_rect = left_eye_rect.astype(int)
left_eye_image = gray[(left_eye_rect[1]):left_eye_rect[3], (left_eye_rect[0]):left_eye_rect[2]]

Наша cnn, чтобы иметь возможность предсказывать на изображении, изображение должно быть того же формата, что и изображения, с которыми он обучался. Поэтому нам нужно внести те же изменения в координаты глаз, которые у нас есть.

Сначала в строках 3–8 мы находим минимальное и максимальное значение y из наших координат и вычисляем высоту левого глаза. Dlib дает 6 пар координат для глаз,

как вы можете видеть, для вычисления высоты глаза нам нужен минимум y из второй и третьей пары и максимум y из пятой и шестой пары. Ширина намного проще, потому что нам просто нужно взять x из первой и четвертой пары и вычислить их разницу.

Это то, что мы делаем в строке 11.

Затем в строках 17–21 для вычисления координат прямоугольника глаза мы добавляем половину разностей формы, которую мы хотим, чтобы наше изображение было, с шириной и высотой глаза, которые у нас есть, к нашему x. и координаты y.

После в строках 24–26 мы обрезаем прямоугольник глаза со всего изображения.

Это было для левого глаза, теперь сделаем то же самое для правого.

# same as left eye at right eye
r_uppery = min(rightEye[1:3,1])
r_lowy = max(rightEye[4:,1])
r_dify = abs(r_uppery — r_lowy)
rw = (rightEye[3][0] — rightEye[0][0])
minxr = (rightEye[0][0]-((34-rw)/2))
maxxr = (rightEye[3][0] + ((34-rw)/2))
minyr = (r_uppery — ((26-r_dify)/2))
maxyr = (r_lowy + ((26-r_dify)/2))
right_eye_rect = np.rint([minxr, minyr, maxxr, maxyr])
right_eye_rect = right_eye_rect.astype(int)
right_eye_image = gray[right_eye_rect[1]:right_eye_rect[3], right_eye_rect[0]:right_eye_rect[2]]

Чтобы закончить нашу функцию

# if it doesn’t detect left or right eye return None
if 0 in left_eye_image.shape or 0 in right_eye_image.shape:
return None
# resize for the conv net
left_eye_image = cv2.resize(left_eye_image, (34, 26))
right_eye_image = cv2.resize(right_eye_image, (34, 26))
right_eye_image = cv2.flip(right_eye_image, 1)
# return left and right eye
return left_eye_image, right_eye_image

мы проверяем, не обнаружили ли мы левый или правый глаз, чтобы не вернуть ни одного, и, если мы обнаружили оба глаза, мы изменяем их размер, чтобы убедиться, что изображения имеют правильный размер, и перед тем, как вернуть изображения глаз, мы переворачиваем правый глаза, поэтому нам нужно налево для правильных прогнозов.

Прежде чем мы перейдем к основной функции нашего скрипта, мы напишем функцию для оставшейся предварительной обработки каждого изображения, которое мы должны сделать для нашей cnn.

# make the image to have the same format as at training
def cnnPreprocess(img):
img = img.astype(‘float32’)
img /= 255
img = np.expand_dims(img, axis=2)
img = np.expand_dims(img, axis=0)
return img

Здесь мы масштабируем значения изображений между 0 и 1 и добавляем еще два измерения, потому что keras нужно, чтобы изображение имело форму (строки, ширина, высота, каналы), где строка — это количество изображений, ширина и высота изображения и канал количества цветов. Итак, у нас есть одно изображение на каждый раз и 1 канал, и это то, что делают строки 5–6.

Наконец, мы готовы к нашей основной функции.

def main():
# open the camera,load the cnn model
camera = cv2.VideoCapture(0)
model = load_model(‘blinkModel.hdf5’)
# blinks is the number of total blinks ,close_counter
# the counter for consecutive close predictions
# and mem_counter the counter of the previous loop
close_counter = blinks = mem_counter= 0
state = ‘’
while True:
ret, frame = camera. read()
# detect eyes
eyes = cropEyes(frame)
if eyes is None:
continue
else:
left_eye,right_eye = eyes
# average the predictions of the two eyes
prediction = (model.predict(cnnPreprocess(left_eye)) + model.predict(cnnPreprocess(right_eye)))/2.0

Сначала мы открываем камеру, загружаем нашу модель cnn и определяем некоторую полезную переменную, которую мы будем использовать и объясним через минуту. Затем начинаем считывать последовательные кадры.

В строках 16–19 мы вызываем нашу функцию для обнаружения и обрезки глаз со всего кадра и проверяем, равно ли их значение «нулю». Если нет, сценарий остановится, чтобы избежать проверки значения и перехода к следующему циклу, если это так. После мы просто усредняем наши прогнозы для глаз.

# blinks
# if the eyes are open reset the counter for close eyes
if prediction > 0.5 :
state = ‘open’
close_counter = 0
else:
state = ‘close’
close_counter += 1
# if the eyes are open and previousle were closed
# for sufficient number of frames then increcement
# the total blinks
if state == ‘open’ and mem_counter > 1:
blinks += 1
# keep the counter for the next loop
mem_counter = close_counter
# draw the total number of blinks on the frame along with
# the state for the frame
cv2. putText(frame, “Blinks: {}”.format(blinks), (10, 30),
cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2)
cv2.putText(frame, “State: {}”.format(state), (300, 30),
cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2)
# show the frame
cv2.imshow(‘blinks counter’, frame)
key = cv2.waitKey(1) & 0xFF
# if the `q` key was pressed, break from the loop
if key == ord(‘q’):
break

В Строках 3–8 мы проверяем значение прогноза, если оно больше 0,5, потому что у нас есть двоичный классификатор с сигмовидным нейроном, который дает в качестве выходных данных вероятность открытия глаза, и если он более 50% мы относим к категории открытых. Если он открыт, мы устанавливаем переменную состояния open и close_counter в ноль. если он закрывается, мы добавляем единицу к счетчику, чтобы мы могли знать, для скольких последовательных кадров глаза были закрыты.

В строках 13–14 мы видим, открыты ли глаза и переменная счетчика памяти больше единицы, счетчик памяти имеет значение счетчика закрытия предыдущего цикла. Таким образом, мы можем проверить, открыты ли глаза и были ли они ранее закрыты для получения достаточных рамок. На этом этапе вы можете настроить количество последовательных кадров на вашей камере.

Затем мы рисуем на нашем кадре общее количество миганий и текущее состояние.

Наконец, мы отображаем рамку, и вы можете остановить счетчик, нажав кнопку q.

# do a little clean up
cv2.destroyAllWindows()
del(camera)

И здесь мы делаем небольшую уборку.

Теперь у вас есть детектор моргания. Построить его было легко и быстро. Это не идеально, но может быть лучше при более подходящем обучении. Вы можете использовать свой собственный набор данных, если хотите, и вы можете изменить все, что захотите.

Металлоискатель Garrett AT MAX — простой и надежный профессиональный детектор

С точки зрения производительности и возможностей AT MAX не уступает другим профессиональным металлодетекторам. По глубине у него максимальные для VLF-металлоискателей возможности. Он имеет отличную способность распознавать металлы и хороший дискриминатор.

Конструкция металлоискателя

 построен очень стандартно – он имеет S-образную штангу с блоком управления, катушкой на нижней штанге и довольно широкий подлокотник с мини-ножками под ним. Это самая классическая схема металлоискателя, которая уже зарекомендовала себя на протяжении нескольких десятилетий.
Детектор отлично сбалансирован, несмотря на свой вес 1,4 кг. Да, есть детекторы, которые легче, но 300-400 г не имеют большого значения для металлоискателя, если весь комплект (МД + катушка) не превышает 1,7-1,8 кг. Так что детектор находится в оптимальной весовой категории.
С точки зрения эргономики, это очень хорошо продуманный металлоискатель.

Новая ручка на AT MAX достаточно удобна. Даже если вы копаете без перчаток, она дает хорошее сцепление с ладонью. Сама ручка широкая, и если у вас большая ладонь, то это определенно плюс.

Garrett имеет свой собственный разъем и крепление для катушки. Разъем подходит довольно плотно, но сидит хорошо. Такое плотное соединение вызвано необходимостью поддержания водонепроницаемости.

Батарейный отсек спрятан в блоке металлоискателя, питание от 4-х стандартных батарей AA. Интересная особенность заключается в том, что при падении мощности батареи детектор работает стабильно, ни громкость, ни глубина не уменьшается. Заряда батарей хватает на два световых дня автономной работы.

Монтажные хомуты штанги также были существенно переработаны, они стали прочнее и лучше, их не так легко сломать. У Гаррета бывают проблемы в этом плане, но здесь проблема решена.

В комплекте AT MAX стандартная катушка PROformance DD 11×8.5″. Это отличный универсальный вариант для всех типов поиска.

На другой стороне блока управления у AT MAX имеется разъем для наушников, спрятанный под крышкой. Лучше держать его закрытым, если вы не собираетесь с прибором нырять, так как это дополнительная защита от воды.

Особенности Garrett AT MAX

С точки зрения производительности AT MAX не уступает другим профессиональным металлодетекторам. По глубине у него максимальные для VLF-металлоискателей возможности. Он имеет отличную способность распознавать металлы и хороший дискриминатор.
Вот несколько ключевых факторов, которые отличают этот металлоискатель от других.

Водонепроницаемость
Детектор отлично работает в любую погоду — на морозе, под дождем и в снегу. Так, после погружения в воду динамик на приборе работает по-прежнему отлично. Поэтому одним из способов помыть AT MAX является просто погружение его чистую в воду.

Беспроводные наушники Z-Lynk
Есть комплектация AT MAX с беспроводными наушниками MS-3. Наушники очень удобные и хорошо сидят, они не мешают движению, дают отличное качество звука и обладают быстрой передачей сигнала.
Наушники имеют кнопку включения/выключения и два индикатора — питание от аккумулятора и беспроводное подключение к металлодетектору. Чтобы использовать их просто нажмите кнопку, оденьте их на голову и идите копать!
Можно купить комплект AT MAX без наушников, но лучше не экономить на них. В наушниках все сигналы слышатся намного лучше и производительность обнаружения намного выше, т.е. меньше риск пропустить хорошую и небольшую находку.
Регулятор громкости на наушниках очень удобен — просто вращающаяся рукоятка. Это решение для многих удобнее, чем наличие кнопок регулировки громкости, — вы можете работать в перчатках и не отвлекаться на такие факторы, как регулировка громкости или включение/выключение наушников.
Кроме того, MS-3 от Garrett — одни из лучших наушников для поиска.

Одночастотность
Garrett AT MAX работает на частоте 13,6 кГц, что достаточно для обнаружения как мелких, так и крупных/средних объектов.

Меню и настройки

Глядя на настройки и меню, можно сказать, что является одним из самых простых, если не самым простым профессиональным металлоискателем. Простота, удобство, надежность и высокие поисковые характеристики — это не пустые слова применительно к AT MAX.

Все необходимые основные настройки находятся сразу под рукой – это баланс грунта, который детектор выполняет очень быстро и точно и пороговый уровень тона. Остальные настройки не столь важны для многих. С настроенной на максимум чувствительностью и громкостью в наушниках вы можете пойти копать.

Какие настройки возможны в AT MAX?

Выборочная дискриминация (Notch). 12 меток дискриминации, может быть активирована любая их комбинация. Причем в процессе поиска вы можете отключать звуковую индикацию ненужных целей по мере их нахождения, просто убирая соответствующую им метку на шкале.

Дискриминация железа (Iron Disc). От 0 (без дискриминации железа) до 44 (максимальная дискриминация железа). Для контроля, сколько железа может быть в виде цели. Очень полезно при маскировании железным объектом соседней цели. Убирая сигналы, например, от гвоздя (регистрируется 18-24 ед. по шкале ID), т.е. выставив Iron Disc на 24, вы не увидите сигнала от гвоздя, но обнаружите рядом лежащую монету, т.к. оба объекта (гвоздь и монета) имеют общую, комбинированную проводимость больше 24 ед.

Ручной и автоматический баланс грунта. Необходимая функция в любом профессиональном детекторе.

Регулировка порогового тона. От -9 до +23. Положительные значения добавляют слышимый шум к отклику цели, отрицательные вычитают. Чаще всего, чтобы слышать слабые сигналы, рекомендуют установить небольшое положительное смещение. При нежелательных откликах прибора можно установить нулевой порог или уйти в отрицательные значения. Для восприятия слабых сигналов очень помогут наушники.

Звук железа (Iron Audio). Используется, чтобы слышать сигнал от исключенного из поиска железа. Полезно в режимах дискриминации, когда, например, пробки звучат как хорошие цели. С Iron Audio сигнал от них будет переменным: низкий-высокий-низкий тон.

Подстройка частоты. Используется для минимизации электромагнитных помех от ЛЭП, других металлоискателей и т.п.

Регулировка громкости. Влияет только на максимальный звук сигнала, а не на уровень звука от слабых сигналов. Т.е. работает как ограничитель.

Чувствительность. 8 уровней. Ставьте ее больше при поиске мелких или глубоких целей. Уменьшайте в сильно замусоренных местах, при больших помехах, когда устойчивость работы не достигается балансом грунта и подстройкой частоты и проч.

Режимы (маски дискриминации). 4 режима.
Все металлы (All Metall). Непрерывный звуковой отклик. Максимальная глубина и чувствительность.
Пользовательский (Custom). Сохраняет ваши настройки и после выключения прибора.
Монеты (Coins). Для поиска большинства видов монет.
Многие копают в нулевом режиме Zero Mode. Zero — обычный режим, но с открытой дискриминацией, Iron Disc установлен на ноль, все 12 сегментов дискриминации включены. В режиме All Metall — детектор реагирует на любое изменение в грунте одним непрерывным пропорциональным средним тоном и обеспечивает максимальную глубину и чувствительность. В режиме Zero работает функция тональной идентификации, и звуковая информация о цели поступает в трехтональном виде.
Можно установить дискриминацию в режиме АМ, тогда получите уже более информативную программу — на цели ниже порога дискриминации будет один тон, а на цели выше порога другой.
Вы можете копать и в других режимах, но это зависит от задачи. Если место чистое, можно включить все металлы – вы получите максимально возможную глубину, но нулевой режим для обычного поиска является наиболее эффективным. Вы можете столкнуться с подозрительными и неустойчивыми сигналами, которые могут принести хорошие результаты – благодаря отличному дискриминатору AT MAX редко ошибается в определении типа металла.
Для мусорных мест придется использовать дискриминацию и даже вырезать некоторые сегменты, чтобы не сойти с ума от непрерывного звучания металлоискателя.

Коротко о звуковой индикации AT MAX

Быстрое восстановление процессора AT MAX помогает хорошо разделять соседние цели. И пропорциональный звуковой отклик означает, что громкость пропорциональна мощности сигнала.

Все металлы. Пользователь постоянно слышит, что видит металлоискатель в земле, с помощью пропорционального среднего тона. При этом могут использоваться функции Iron Disc и Iron Audio, и черные металлы будут давать низкий тон.
Режимы дискриминации. Изменение тонов целей в зависимости от типа металла и проводимости. Низкий тон — ферромагнитные цели, средний — цветные цели с низкой и средней проводимостью (небольшие монеты, фольга, тонкие предметы и т.п.), высокий — цветные цели со средней и высокой проводимостью (большие монеты, ювелирка).

Информация на дисплее AT MAX

Цель.
Цифровой ID объекта, курсор идентификации, примерная глубина залегания (5 сегментов, с шагом 5 см, зависит и от размера цели), легенда идентификации (что может представлять собой обнаруженный объект).

Настройки.
Выбранная маска дискриминации, отображение дискриминации железа, индикатор режима поиска, уровень чувствительности.

Состояние.
Заряд батарей, беспроводное соединение. 

Производительность металлоискателя

AT MAX очень чувствителен к любому металлу в земле, независимо от того, большой объект или маленький.

Есть смысл докупить катушку размером 13″/ 15″ и снайперку размером 7″ или 5″ — этот комплект решит все ваши поисковые задачи на многие годы вперед, и вам не нужно будет менять детектор.

Вывод

— профессиональный, легко настраиваемый, удобный, надежный, водонепроницаемый металлоискатель, который эффективно работает на любом грунте. Беспроводные наушники также просты и удобны.
Прибор дает вам возможность выбрать, как вы хотите с ним работать — просто включить и идти на поиск, воспользовавшись отличными стандартными настройками, или самому тонко настроить его под свои конкретные задачи — в любом случае у вас будут находки.

SSID, канал, диапазон, сигнал, и др.

NetSpot — это простой в использовании детектор для Mac.

NetSpot может помочь сделать быстрые снимки сетей Wi-Fi вокруг вас. Кроме того, вы еще можете использовать его для полного исследования всей вашей беспроводной сети.

Перейти к…

Как использовать Детектор Беспроводной Сети

Как использовать NetSpot для полного исследования зоны покрытия WLAN

Диагностика Wi-Fi с приложением NetSpot поможет вам

Детектор Wi-Fi полезен в различных ситуациях, например:

  • Когда вы путешествуете и необходимо найти открытую сеть для подключения. Наличие детектора Wi-Fi, загруженного на ваш Макбук или другой ноутбук, позволяет сделать это просто.
  • Когда вы хотите протестировать ограничения зоны действия вашей сети Wi-Fi, и определить, где ухудшается сигнал.
  • Когда у вас есть проблемы с сигналом и вы хотите выяснить, есть ли еще сети в этом же диапазоне, которые создают помехи вашей.

Как использовать Детектор Беспроводной Сети

Использовать NetSpot в качестве детектора WLAN — легко. Просто установите приложение NetSpot и поместите свой Макбук или другой ноутбук в том месте, которое хотите исследовать. Как только программа загрузится, нажмите на переключатель в верхнем левом углу экрана, чтобы изменить его с «Исследование» на «Обнаружение». NetSpot немедленно обнаружит все сети в диапазоне действия и отобразит их на экране.

Вы сразу сможете увидеть подробую информацию о каждой беспроводной сети, обнаруженной в данном диапазоне, такую как:

  • SSID — имя сети
  • Канал — по которому транслируется сеть (1, 6, 11, и др. )
  • Частота — на которой транслируется сеть (2.4 ГГц, 5 ГГц,
    20 МГц, 40 МГц)
  • Тип безопасности — который имеется у сети (WEP, WPA, WPA2, и др.)
  • Режим — какой у сети протокол 802.11 (a, b, g, n, ac или ax)
  • Уровень (ОСШ) — уровень отношения сигнал/шум в сети
  • Уровень сигнала — насколько сильный сигнал у сети
  • Уровень шума — как много шумовых помех в сети

Как использовать NetSpot для полного исследования зоны покрытия WLAN

Если вы желаете получить более полную картину своей беспроводной сети, вы можете использовать NetSpot для полного исследования зоны ее покрытия. Это позволит вам выполнить обнаружение WLAN в разных точках по всей зоне покрытия вашей сети.

Если вы ранее не пользовались NetSpot, прочтите перед этим «Как начать исследование?». Далее определите диапазон, в котором вы хотите обнаружить Wi-Fi и загрузите карту территории. Вы также можете нарисовать карту, используя инструменты NetSpot для построения карт.

Затем продолжайте исследование, получая данные по всей зоне покрытия. Как только вы завершите свое исследование, вы сможете увидеть визуализацию тепловой карты.

Визуализации NetSpot позволяют вам увидеть мощность вашего сигнала, отношения сигнал/шум и сигнал/помеха, охватывая весь диапазон, который вы исследовали. Также есть визуализация Количества точек доступа, которая покажет вам, сколько Точек доступа (или роутеров) обнаружено в каждой области измерения. NetSpot заботится обо всех ваших потребностях в обнаружении беспроводной сети.

Диагностика Wi-Fi с приложением NetSpot поможет вам

  • Бесплатно обнаружить
    помехи WiFi

  • Бесплатно обнаружить WiFi

  • Обнаружить точки доступа WiFi

  • Обнаружить все беспроводные сети

  • Обнаружить беспроводную сеть

  • Обнаружить сети WiFi для Mac

  • 4. 8
  • 969 Ratings
  • #1
  • Обзоры сайтов Wi-Fi, анализ, устранение неисправностей
  • 500K
  • Пользователи по всему миру
  • 8
  • годы на рынке
  • Cross-platform
  • Mac/Windows
  • Скачать NetSpot
  • Узнайте больше о NetSpot

FAQ

Как использовать детектор беспроводной сети?

NetSpot — отличный детектор WLAN — установите приложение и перенесите свой ноутбук в область, которую вы хотите исследовать. Откройте NetSpot, нажмите переключатель в верхнем левом углу, чтобы перейти в режим «Обнаружение». NetSpot обнаружит все сети в радиусе действия и отобразит их.

Какую конкретно информацию о каждой беспроводной сети можно обнаружить в данном диапазоне?

Вы сможете увидеть следующую информацию:

  • SSID — имя сети
  • Канал — по которому транслируется сеть (1, 6, 11, и др. )
  • Частота — на которой транслируется сеть (2.4 ГГц, 5 ГГц,
    20 МГц, 40 МГц)
  • Тип безопасности — который имеется у сети (WEP, WPA, WPA2, и др.)
  • Режим — какой у сети протокол 802.11 (a/b/g/n/ac/ax)
  • Уровень (ОСШ) — уровень отношения сигнал/шум в сети
  • Уровень сигнала — насколько сильный сигнал у сети
  • Уровень шума — как много шумовых помех в сети
Как использовать NetSpot для обследования сайтов WLAN?

Чтобы исследовать зону покрытия WiFi, загрузите карту территории и начните проводить измерения повсюду. Как только опрос будет завершен, вы сможете увидеть визуализацию тепловой карты.

Визуализации NetSpot позволяют вам увидеть мощность вашего сигнала, отношения сигнал/шум и сигнал/помеха, охватывая весь диапазон, который вы исследовали. Также есть визуализация Количества точек доступа, которая покажет вам, сколько Точек доступа (или роутеров) обнаружено в каждой области измерения.

Есть еще вопросы?

Оставьте заявку или напиши пару слов.

Читайте дальше Все о Wi-Fi

Если вы хотите получить больше информации о Wi-Fi, ознакомьтесь со следующими статьями о маршрутизаторах Wi-Fi, лучших приложениях для беспроводных сетей, сигналах Wi-Fi и т. Д.

Скачайте NetSpot бесплатно

Wi-Fi Обзоры сайтов, Анализ, Устранение неполадок работает на MacBook (macOS 10.10+) или любом ноутбуке (Windows 7/8/10/11) со стандартным адаптером беспроводной сети 802.11a/b/g/n/ac/ax.

Скачать NetSpot

  • 4.8
  • 969 Отзывы Пользователей
    Оставить отзыв

Простой детектор электрического поля – схема для поиска обрыва провода на 220V в кабеле, шнуре питания « ЭлектроХобби

Все те устройства, что питаются от электрической сети имеют шнур питания, который соединяет нашу электротехнику с розеткой. Такие шнуры внутри себя содержать многожильные медные провода, что и позволяет этим шнурам перегибаться большое количество раз, оставаясь невредимыми. Но у любого электрического шнура, кабеля имеются наиболее слабые места, а именно там, где проводу приходится больше всего перегибаться. Со временем, какие бы хорошие провода у шнура, кабеля не были, все равно рано или поздно происходит обрыв медного проводника внутри этого кабеля.

Либо же повреждение может произойти из-за перегорания наиболее слабых мест самого провода (были переломлены несколько жил и рабочем состоянии остались только несколько токопроводящих жил), и при этом место такого обрыва может быть не видно невооруженному глазу. Либо же случаи, когда просто нужно определить местоположение электрического кабеля внутри стены, что его извлечь или просто не повредить во время сверлильных работ. И во всех этих случаях будет полезна простая схема детектора обрыва электрического кабеля, состоящая всего из нескольких деталей.

Принцип действия этой схемы, которая может обнаружить скрытую проводку в стене или обрыв медных жил в кабеле, достаточно прост. Это устройство улавливает электрические поля, которые существуют вокруг фазовых проводов. То есть, при наличии фазы на проводе вокруг этого проводника на некотором расстоянии имеется переменное электрическое поле. Если в это переменное поле ввести другой проводник тока (в нашем случае небольшую антенну из медного провода), то на его концах образуется небольшая разность потенциалов (электрическое напряжение). Поскольку это наведенное напряжение имеет очень маленькую величину, то возникает необходимость в усилении сигнала.

В итоге, схема детектора электрического поля, обнаруживает вокруг фазового провода это самое поле, после чего с антенны слабое переменное напряжение подается на вход, двух последовательно соединенных, простых транзисторных усилителей. Как известно транзисторы могут усиливать электрический ток. Причем это усиление даже у одного транзистора может быть десятки и сотни раз. А если эти транзисторы подсоединены друг за другом, то усиление становится еще больше и уже может достигать тысячи раз. Именно это усилительное свойство и применяется в данной схеме.

Как видно схема детектора электрического поля (скрытой проводки) состоит из антенны, двух усилительных транзисторных (биполярных) каскадов индикаторного светодиода и источника питания на 3 вольта, ну и еще кнопки включения схемы. Чувствительность схемы достаточно хорошая, и она еще также зависит от размеров антенны. Если в роли антенны использовать небольшую спираль, сделанную из небольшого куска медной проволоки  (намотанную допустим на ампулу обычной авторучки, содержащую 30 витков, и диаметр провода около 0,5 мм), как показано на рисунке схемы, то устройство может обнаруживать электрическое поле на расстоянии до 3-5 см. Для поиска обрыва медного провода внутри кабеля или шнура питания этого расстояния более чем достаточно, поскольку слишком чувствительный прибор также ухудшит точность нахождения места обрыва.

Биполярные транзисторы в схему лучше ставить любые маломощные, n-p-n проводимости с высоким коэффициентом усиления. На схеме я указал транзисторы типа C945 (зарубежные), или КТ3102, КТ315 (отечественные), или любые подобные. Если у вас имеются схожие транзисторы, но p-n-p проводимости, то в схему можно поставить и их, но при этом уже нужно изменить полярность подключения источника питания и светодиода на противоположную. Можно в схему поставить и один транзистор, но он должен быть составным (так называемые транзисторы Дарлингтона), которые имеют весьма большой коэффициент усиления. По сути в одно таком составном транзисторе располагаются два, также как и в нашей схеме.

Светодиод в этой схеме детектора обрыва сетевого провода выполняет роль индикатора этого самого электрического поля. То есть, как только мы антенну поднесли к фазному проводу, схема обнаружила электрическое поле, биполярные транзисторы открылись и светодиод зажегся. Параллельно светодиоду можно еще припаять обычную звуковую пищалку. В этом случае при обнаружении электрического поля устройство будет сигнализировать об этом и визуально, светодиодом, и звуком, через пищалку. Так что делайте, как вам будет удобней и лучше. Светодиод в схему можно поставить практически любой, лишь бы горел видимым светом.

Ну, и пару слов о том, как именно осуществлять поиск обрыва медного провода внутри электрического кабеля, шнура питания. Итак, мы имеем нерабочий кабель, на пример от сетевого удлинителя. Мы вилку удлинителя включаем в розетку. Как известно в розетке один контакт это фаза, а второй это ноль, ну и еще земля, если она есть. То есть, на удлинителе, по всей его длине (в случае его исправности) на одном проводе должна появится фаза. Вокруг этой фазы будет электрическое поле.

Когда мы антенной нашего детектора медленно будем проводить по всей длине кабеля удлинителя, то светодиод индикатора будет гореть, пока он видит наличие фазы в проводе. В месте обрыва, естественно, фаза прервется. И как только мы дойдем до места обрыва, после него светодиод просто погаснет. Если светодиод горит по всей длине кабеля, то значит один из двух проводов кабеля цел. Значит нужно вилку включить в розетку наоборот, то есть чтобы фаза появилась на другом проводе кабеля. После чего повторяем поиск обрыва. Если кабель действительно поврежден, то в любом случае вы это место обнаружите данной схемой детектора электрического поля.

Видео по этой теме:

P.S. Данная схема детектора поля позволяет легко обнаружить как обрыв провода в кабеле, шнуре питания, так и найти провод электрической проводки внутри стены. И даже при своей простоте и минимум деталей схема работает вполне нормально и хорошо. Изменяя длину антенны, можно также изменять чувствительность устройства. Хотя можно добавить еще одни транзистор и в этом случае чувствительность детектора увеличивается еще больше. Так что пробуйте, собирайте и используйте по своему назначению.

Детектор лжи – простой способ узнать правду | 59.ru

Пропала цепочка со стола коллеги, деньги из кассы или конкуренты узнали секрет фирмы? Вор в коллективе – явление неприятное, но, к сожалению, нередкое. Есть способ не только выяснить, кто виноват, но и не допускать таких ситуаций впредь. Лишь недавно «детектор лжи» перестал быть прерогативой спецслужб. В Перми проверкой сотрудников на полиграфе занимается «Ассоциация исследователей лжи».

Полиграф эффективен только в том случае, если с ним работает профессионал. Иначе это просто компьютер с проводками и датчиками. Отличить нервного, но честного сотрудника от уравновешенного мошенника под силу лишь хорошему психологу. О специфике работы с «детектором лжи» рассказал полиграфолог «Ассоциации исследователей лжи» Владимир Чебатков. Отвечал правду и только правду.

– Владимир, интересно, есть ли шансы обмануть полиграф?

– Вы можете контролировать ширину сосудов, гальваническую реакцию, дыхание верхнее и нижнее, тремор, который в любом случае будет. Говорят, что можно принять успокоительное. Да, принимайте, я это увижу. Первое, чему учат полиграфолога, – это методам противодействия.

– Все привыкли считать «детектор лжи» шпионской штучкой.

– Да, раньше так и было. Но недавно государство дало разрешение на использование полиграфа не только сотрудниками полиции. Кстати, при переаттестации каждый полицейский обязан был пройти исследование на «детекторе». Сейчас эта практика распространяется на многие сферы. На Западе такая проверка уже давно стала нормой. У нас все только начинается.

Сейчас в кризис главная проблема предпринимателей – сохранить деньги. Существуют аудиторы, фирмы по безопасности бизнеса, но они проверяют только бумаги, не людей. А это большое упущение. «Ассоциация исследователей лжи» как раз и восполняет этот пробел. Если человек работает больше года и если в компании работа построена таким образом, что легко можно что-либо унести, кто-то этим обязательно воспользуется. Ну а если сотрудники видят, что их периодически проверяют, то воровства в компании не будет!

Представьте обыкновенный магазинчик. Мы тестируем людей и выясняем, что за три месяца было украдено более 100 тысяч. А сколько хозяева потеряли до этого? Просто из-за того, что у них недобросовестные продавцы. Поэтому проще заплатить 3-4 тысячи и избавиться от этих вопросов. Многие говорят: «Ну уволю я этих, придут другие и тоже будут воровать». Я отвечаю – не будут. Если сразу же протестировать и сказать, что это будет повторяться раз в полгода, то не будут.

Возможны проверки по следующим фактам:

  • воровство;
  • финансовые махинации;
  • шпионаж в пользу третьих лиц, сговор с конкурентами;
  • взяточничество, коррупция, откаты;
  • служебный проступок;
  • нарушение коммерческой и банковской тайны;
  • материальный и моральный ущерб компании;
  • использование служебного положения;
  • негласное использование ресурсов предприятия.

Также возможно определить:

  • особенности отношений в коллективе;
  • благонадежность, лояльность сотрудников;
  • верность выбора кандидатуры на руководящую должность;
  • порядочность сотрудника при увольнении.

– Некоторые крупные компании уже имеют в штате своего полиграфолога.

– Это ошибка и очень серьезная. Полиграфолог должен быть независимым лицом и когда говорят: «У нас есть свой специалист» – они не понимают, что сейчас он в стороне, а через полгода все знают, где его кабинет и ходят к нему пить чай. Он перестает быть полиграфологом, а становится просто человеком за компьютером. И рано или поздно это начинает бить по карману собственнику компании.

– Сколько времени занимает тестирование?

– В среднем человека можно протестировать за час. Сначала я просто беседую, исследую по «профайлингу», хотя я предпочитаю термин «верификация». Пол Экман все-таки ввел именно это понятие. А только потом я уже включаю аппарат. Бывают ситуации, когда у человека плохое самочувствие, он не выспался, его накрутили или он сам по себе тревожно-мнительный. В таких случаях требуется дополнительное время. После 45 минут делаю перерыв. Как-то в случае с супружеской неверности я проводил тест три часа.

Пол Экман – американский психолог, специалист по распознаванию лжи по мимике и жестам. Прототип доктора Лайтмана в сериале «Обмани меня» (другой вариант – «Теория лжи»).

Часто я пытаюсь дознаться до каких-нибудь секретов. А это очень-очень важно. Полиграфологу надо рассказывать все, как священнику. И вот почему. Например, я спрашиваю: «Принимали наркотики?» А потом интересуюсь пропажей денег, из-за которой меня и вызвали. Человек денег не брал, но когда-то принимал наркотики. И сейчас у него фоном идет реакция на первый вопрос. Да, может быть руководство узнает о наркотиках, но это лучше необоснованных подозрений.

Бывают действительно сложные тестирования. Например, в женских коллективах, где все всё знают. Дамы уже несколько раз обсудили ситуацию, примерили ее на себя. А при таком «вживании в роль» может появиться минимальная реакция. В таком случае приходится делать повторное тестирование.

– Вы говорите, что полиграфологу надо практически исповедоваться. А как же тайна исповеди, конфиденциальность?

– Я приведу пример. Директор предприятия заказал тест. Курьер утверждал, что деньги передал, бухгалтер не получала. Вопрос серьезный. Я вижу, что бухгалтер волнуется, но чувствую, что не из-за этих денег. Бывают такие ситуации, что приходится задавать очень личные вопросы. Я спрашиваю: «С руководством спала»? У нее реакция высокая. «Деньги брала», – низкая. То есть вот от чего волнение было.

Полиграфолог – это не юрист. О каких-то вещах будет сказано обязательно. Заказчик получил информацию, за которую он заплатил. Все остальное неважно.

– С тестируемыми вы общаетесь как добрый друг или плохой полицейский?

– «Полицейский» бывает редко. Я скорее «друг». Ко мне они пришли не по своей воле. И если они честны, то почему я должен быть «плохим полицейским». Наоборот, я должен снять тревожность, чтобы она не мешала тесту. Правда бывают ситуации, когда человек явно агрессивен. Он не виноват, но агрессивен, и это мешает работе. Тогда приходится разговаривать и резко. Но в большинстве случаев – я друг.

– Мы подошли к очень серьезной теме – этика полиграфолога.

– Полиграфолог дает информацию только тому, кто его заказывает. И никому другому. Я придерживаюсь старой школы и тесты предоставляю только в печатном виде. Мы не даем аудио- и видеоматериалы. Представьте, а если это попадет в Сеть? Только резюме и только в печатном виде, чтобы избежать подделок.

– У вас не возникла профдеформация, что «все люди врут»? Вы не перестали верить людям?

– Представьте человека, который всегда говорит правду. Радикальная честность – это тоже не норма. Мы все где-то говорим неправду. Учим детей одному, а сами живем по-другому. Такое бывает. Но в глобальном смысле я считаю, что люди все же честны. Если не говорить о патологических врунах и воришках.

«Ассоциация исследователей лжи»
адрес: г. Пермь, ул. Рязанская, 80, оф. 408;
телефон: (342) 259-78-60;
Сайт.

Мульти газовый зажим простой | Gas Clip Technologies

Напоминание: опубликуйте свою фотографию с детектором Gas Clip на нашей странице в LinkedIn, чтобы получить шанс выиграть приз! Каждые две недели определяется новый победитель.

Деталь № MGC-S

Продается через дистрибьюторов по всему миру.

4 ГАЗОВЫЙ ДЕТЕКТОР со СРОКОМ РАБОТЫ 2 ГОДА

Простое обнаружение газа

Никакой зарядки! Калибровка не требуется! (При необходимости можно откалибровать)

Надежный тест на сероводород (H 2 S), окись углерода (СО), кислород (O 2 ) и горючих газов (НПВ) с помощью этого простого в использовании и обслуживании детектора. Просто включите его и получите гарантию защиты от токсичных газов 24 часа в сутки 7 дней в неделю в течение двух полных лет.

Ключевым фактором является низкое энергопотребление!

Компания Gas Clip Technologies продолжает совершенствовать передовые маломощные фотометрическая инфракрасная технология для измерения горючих газов помогает упростить обнаружение газа и безопаснее, чем когда-либо. Новейший член их семейства газовых детекторов, Multi Gas Clip Simple, никогда не требует подзарядки и нет необходимости в калибровке. Это ПРОСТО в использовании!

Особенности

  • 2 года работы — 2 года жизни!
  • 2 года гарантии. Для любой услуги, пожалуйста, позвоните в наш сервисный центр.
  • Никогда не заряжать! Калибровка не требуется!
  • Большой, легко читаемый экран
  • Простое управление одной кнопкой
  • Работает в средах с повышенным содержанием кислорода и с недостатком кислорода
  • Непрерывная регистрация данных в течение 1 секунды
  • Датчик НПВ невосприимчив к H 2 S и силиконовому яду
  • Собрано в США
  • Совместим с простой док-станцией MGC или простой настенной док-станцией MGC

Техническая спецификация