Detekce obličeje pomocí TensorFlow je možné provést pomocí knihoven jako je například TensorFlow Object Detection API. Tento API je navržen tak, aby umožnil rychlé vytváření vlastních detekčních modelů pro různé typy objektů, včetně obličejů. Zde je návod, jak detekovat obličeje pomocí TensorFlow Object Detection API:
Nainstalujte TensorFlow Object Detection API a závislosti. Postup naleznete v dokumentaci TensorFlow Object Detection API.
Stáhněte si trénovací data pro detekci obličeje. Existuje mnoho trénovacích datasetů, které jsou k dispozici online. Například dataset WIDER FACE obsahuje přibližně 32 000 obrázků s více než 393 000 označenými tvářemi.
Připravte si trénovací a testovací data. Trénovací data by měla obsahovat mnoho různých typů obličejů v různých pozicích a úhlech. Testovací data by měla obsahovat obrázky, které nejsou obsaženy v trénovacím datasetu.
Vytvořte konfigurační soubor pro trénování detekčního modelu. V konfiguračním souboru je nutné specifikovat parametry trénování, jako jsou hyperparametry sítě, velikost trénovacího datasetu, cesty k trénovacím a testovacím datům a mnoho dalšího.
Spusťte trénování modelu. Během trénování se model snaží naučit se rozpoznávat obličeje v obrázcích na základě trénovacích dat.
Ověřte výkon modelu na testovacím datasetu. Po dokončení trénování je třeba otestovat výkon modelu na testovacím datasetu, aby bylo možné vyhodnotit jeho přesnost a úspěšnost.
Detekujte obličeje v nových obrázcích. Po úspěšném trénování modelu můžete použít model k detekci obličejů v nových obrázcích.
Toto je pouze obecný postup, jak detekovat obličeje pomocí TensorFlow Object Detection API. Celý postup může být složitější v závislosti na konkrétních potřebách a podmínkách.
Zde je jednoduchý kód v Pythonu pro detekci obličeje pomocí knihoven OpenCV a Haar Cascade, který není založen na TensorFlow:
import cv2
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
# nahrání souboru s klasifikátorem Haar Cascade pro detekci obličejů
img = cv2.imread('image.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
# nalezení obličejů v obraze
for (x,y,w,h) in faces:
cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
# vyznačení obdélníkem nalezeného obličeje
cv2.imshow('Detekce obličeje',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
Tento kód načte obrázek, konvertuje ho do šedotónového režimu a pomocí Haar Cascade detektoru obličejů najde obličeje v obraze. Poté vyznačí nalezené obličeje obdélníkem a zobrazí výsledek na obrazovce.
A nyní s pomocí TensorFlow:
Samotný kód pro detekci obličeje pomocí TensorFlow by byl složitější, než je předchozí kód s knihovnou OpenCV a Haar Cascade. Nicméně, zde je jednoduchý kód v Pythonu, který využívá natrénovaný model z TensorFlow Object Detection API pro detekci obličeje:
import tensorflow as tf
import cv2
model = tf.saved_model.load('path/to/saved_model')
# nahrání natrénovaného modelu uloženého v adresáři
def detect_faces(image):
image_np = np.array(image)
input_tensor = tf.convert_to_tensor(image_np)
input_tensor = input_tensor[tf.newaxis, ...]
# konverze obrázku na tensor a přidání rozměru
detections = model(input_tensor)
boxes = detections['detection_boxes'][0].numpy()
scores = detections['detection_scores'][0].numpy()
# detekce obličejů v obraze
for i in range(len(scores)):
if scores[i] > 0.5:
ymin, xmin, ymax, xmax = tuple(boxes[i])
im_height, im_width, _ = image.shape
(left, right, top, bottom) = (xmin * im_width, xmax * im_width,
ymin * im_height, ymax * im_height)
cv2.rectangle(image, (int(left), int(top)), (int(right), int(bottom)),
(0, 0, 255), thickness=2)
# vyznačení obdélníkem nalezeného obličeje
return image
img = cv2.imread('image.jpg')
result = detect_faces(img)
cv2.imshow('Detekce obličeje', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
Tento kód používá natrénovaný model z TensorFlow Object Detection API, který je uložen v adresáři, aby detekoval obličeje v obraze. Po detekci obličejů je vyznačí obdélníky a výsledek zobrazí na obrazovce.