Benefits of Meditation: Improves Concentration







Meditation has been around for centuries and has been a popular practice for people looking to reduce stress, anxiety and even improve overall health. One of the many benefits of meditation is that it helps improve concentration. In fact, the practice of meditation has been shown to have a positive impact on cognitive abilities such as attention and focus.



Meditation is often viewed as a form of relaxation, but it can also be a powerful tool for improving concentration. When we meditate, we train our minds to focus on the present moment, which helps us to avoid distractions and stay focused on the task at hand. In addition, meditation helps improve the brain’s ability to process information, which can lead to better concentration skills.







Studies have shown that regular meditation practice can improve attention span and increase the brain’s ability to process information. Our brain is like a muscle, and just like any other muscle in our body, it needs practice and exercise to stay healthy and strong. Meditation provides that crucial exercise for our brains.



Meditation has also been shown to increase gray matter in the brain, which is responsible for processing information and making decisions. This means that regular meditation practice can not only improve concentration, but also improve overall cognitive abilities.



In addition to these cognitive benefits, meditation can also help reduce anxiety and stress, which can often be a distraction and negatively impact concentration. By calming the mind, meditation can help us to stay focused on the task at hand and avoid being overwhelmed by stress or anxiety.







Meditation has become increasingly popular in recent years, with many people turning to the practice to improve their overall health and wellbeing. There are many different types of meditation, including mindfulness meditation, transcendental meditation, and loving-kindness meditation. Each practice has its own unique benefits and can be tailored to meet the individual needs of the practitioner.



If you are interested in improving your concentration skills, consider incorporating meditation into your daily routine. It doesn’t have to be a long practice – just a few minutes a day can make a difference. There are many resources available, including classes, apps, and books, that can help you get started.



In conclusion, meditation is a powerful tool for improving concentration and cognitive ability. By training our minds to focus on the present moment, we can increase our attention span and avoid distractions, leading to better concentration skills. If you are looking to enhance your concentration abilities, give meditation a try and see the benefits for yourself.





see all posts!

Benefits of Meditation: Improves Concentration

Meditation has been around for centuries and has been a popular practice for people looking to reduce stress, anxiety and even improve overall health. One of the many benefits of meditation is that it helps improve concentration. In fact, the practice of meditation has been shown to have a positive impact on cognitive abilities such as attention and focus.

Meditation is often viewed as a form of relaxation, but it can also be a powerful tool for improving concentration. When we meditate, we train our minds to focus on the present moment, which helps us to avoid distractions and stay focused on the task at hand. In addition, meditation helps improve the brain’s ability to process information, which can lead to better concentration skills.

Studies have shown that regular meditation practice can improve attention span and increase the brain’s ability to process information. Our brain is like a muscle, and just like any other muscle in our body, it needs practice and exercise to stay healthy and strong. Meditation provides that crucial exercise for our brains.

Meditation has also been shown to increase gray matter in the brain, which is responsible for processing information and making decisions. This means that regular meditation practice can not only improve concentration, but also improve overall cognitive abilities.

In addition to these cognitive benefits, meditation can also help reduce anxiety and stress, which can often be a distraction and negatively impact concentration. By calming the mind, meditation can help us to stay focused on the task at hand and avoid being overwhelmed by stress or anxiety.

Meditation has become increasingly popular in recent years, with many people turning to the practice to improve their overall health and wellbeing. There are many different types of meditation, including mindfulness meditation, transcendental meditation, and loving-kindness meditation. Each practice has its own unique benefits and can be tailored to meet the individual needs of the practitioner.

If you are interested in improving your concentration skills, consider incorporating meditation into your daily routine. It doesn’t have to be a long practice – just a few minutes a day can make a difference. There are many resources available, including classes, apps, and books, that can help you get started.

In conclusion, meditation is a powerful tool for improving concentration and cognitive ability. By training our minds to focus on the present moment, we can increase our attention span and avoid distractions, leading to better concentration skills. If you are looking to enhance your concentration abilities, give meditation a try and see the benefits for yourself.

see all posts!

Benefits of Meditation: Improves Concentration







Meditation has been around for centuries and has been a popular practice for people looking to reduce stress, anxiety and even improve overall health. One of the many benefits of meditation is that it helps improve concentration. In fact, the practice of meditation has been shown to have a positive impact on cognitive abilities such as attention and focus.



Meditation is often viewed as a form of relaxation, but it can also be a powerful tool for improving concentration. When we meditate, we train our minds to focus on the present moment, which helps us to avoid distractions and stay focused on the task at hand. In addition, meditation helps improve the brain’s ability to process information, which can lead to better concentration skills.







Studies have shown that regular meditation practice can improve attention span and increase the brain’s ability to process information. Our brain is like a muscle, and just like any other muscle in our body, it needs practice and exercise to stay healthy and strong. Meditation provides that crucial exercise for our brains.



Meditation has also been shown to increase gray matter in the brain, which is responsible for processing information and making decisions. This means that regular meditation practice can not only improve concentration, but also improve overall cognitive abilities.







In addition to these cognitive benefits, meditation can also help reduce anxiety and stress, which can often be a distraction and negatively impact concentration. By calming the mind, meditation can help us to stay focused on the task at hand and avoid being overwhelmed by stress or anxiety.



Meditation has become increasingly popular in recent years, with many people turning to the practice to improve their overall health and wellbeing. There are many different types of meditation, including mindfulness meditation, transcendental meditation, and loving-kindness meditation. Each practice has its own unique benefits and can be tailored to meet the individual needs of the practitioner.



If you are interested in improving your concentration skills, consider incorporating meditation into your daily routine. It doesn’t have to be a long practice – just a few minutes a day can make a difference. There are many resources available, including classes, apps, and books, that can help you get started.







In conclusion, meditation is a powerful tool for improving concentration and cognitive ability. By training our minds to focus on the present moment, we can increase our attention span and avoid distractions, leading to better concentration skills. If you are looking to enhance your concentration abilities, give meditation a try and see the benefits for yourself.





see all posts!

Benefits of Meditation: Improves Concentration







Meditation has been around for centuries and has been a popular practice for people looking to reduce stress, anxiety and even improve overall health. One of the many benefits of meditation is that it helps improve concentration. In fact, the practice of meditation has been shown to have a positive impact on cognitive abilities such as attention and focus.



Meditation is often viewed as a form of relaxation, but it can also be a powerful tool for improving concentration. When we meditate, we train our minds to focus on the present moment, which helps us to avoid distractions and stay focused on the task at hand. In addition, meditation helps improve the brain’s ability to process information, which can lead to better concentration skills.



Studies have shown that regular meditation practice can improve attention span and increase the brain’s ability to process information. Our brain is like a muscle, and just like any other muscle in our body, it needs practice and exercise to stay healthy and strong. Meditation provides that crucial exercise for our brains.







Meditation has also been shown to increase gray matter in the brain, which is responsible for processing information and making decisions. This means that regular meditation practice can not only improve concentration, but also improve overall cognitive abilities.



In addition to these cognitive benefits, meditation can also help reduce anxiety and stress, which can often be a distraction and negatively impact concentration. By calming the mind, meditation can help us to stay focused on the task at hand and avoid being overwhelmed by stress or anxiety.



Meditation has become increasingly popular in recent years, with many people turning to the practice to improve their overall health and wellbeing. There are many different types of meditation, including mindfulness meditation, transcendental meditation, and loving-kindness meditation. Each practice has its own unique benefits and can be tailored to meet the individual needs of the practitioner.



If you are interested in improving your concentration skills, consider incorporating meditation into your daily routine. It doesn’t have to be a long practice – just a few minutes a day can make a difference. There are many resources available, including classes, apps, and books, that can help you get started.



In conclusion, meditation is a powerful tool for improving concentration and cognitive ability. By training our minds to focus on the present moment, we can increase our attention span and avoid distractions, leading to better concentration skills. If you are looking to enhance your concentration abilities, give meditation a try and see the benefits for yourself.





Security Image captcha CNN RNN deeplearning

보안 문자 차단기를 구축하는 첫 번째 단계는 예제 보안 문자 이미지를 직접 다운로드하는 것입니다. 아래 그림에서 “Security Image”텍스트 옆에있는 captcha 이미지를 마우스 오른쪽 버튼으로 클릭하면 다음 URL이 표시됩니다.

https://www.e-zpassny.com/vector/jcaptcha.do

복사하는 경우 이 URL을 웹 브라우저에 붙여넣고 새로 고침을 여러 번 누르면 새로 고침 할 때마다 새 보안 문자를 생성하는 동적 프로그램임을 알 수 있습니다. 따라서 예제 보안 문자 이미지를 얻으려면이 이미지를 수백 번 요청하고 결과 이미지를 저장해야합니다.

새 보안 문자 이미지를 자동으로 가져 와서 디스크에 저장하려면 download_images.py를 사용할 수 있습니다.

2 ~ 5 행은 필수 Python 패키지를 가져옵니다. requests 라이브러리는 HTTP 연결 작업을 쉽게 만들어 주며 Python 환경에서 많이 사용됩니다. 시스템에 아직 requests가 설치되어 있지 않은 경우 다음을 통해 설치할 수 있습니다.

그런 다음 8-13 행에서 명령 줄 인수를 구문 분석합니다. 원시 보안 문자 이미지를 저장할 출력 디렉토리의 경로 인 단일 명령 줄 인수 –output이 필요합니다 (나중에 이미지의 각 숫자에 레이블을 지정합니다). 두 번째 옵션 인 –num-images 스위치는 다운로드 할 보안 문자 이미지의 수를 제어합니다. 이 값의 기본값은 총 500 개입니다. 각 보안 문자에 4 자리 숫자가 있으므로이 값 500은 네트워크 훈련에 사용할 수있는 총 500×4 = 2,000 자리 숫자를 제공합니다. 다음 코드 블록은 지금까지 생성 된 총 이미지 수와 함께 다운로드 할 보안 문자 이미지의 URL을 초기화합니다.

이제 captcha 이미지를 다운로드 할 준비가되었습니다.

22 행에서 다운로드하려는 –num-images에 대해 반복을 시작합니다. 25 행에서 이미지 다운로드를 요청합니다. 그런 다음 28-32 행의 디스크에 이미지를 저장합니다. 이미지를 다운로드하는 중에 오류가 발생하면 39 행과 40 행의 try / except 블록이 이를 포착하고 스크립트를 계속할 수 있도록합니다. 마지막으로, 우리가 요청하는 웹 서버에 대한 부하를 줄이기 위해 43 번 줄에 작은 쉬는 모드를 삽입합니다. 다음 명령을 사용하여 download_images.py를 실행할 수 있습니다.

이 스크립트는 (1) 이미지 다운로드를 네트워크에 요청하고 (2) 다운로드 할 때마다 0.1 초의 일시 중지를 삽입했기 때문에 실행하는 데 시간이 걸립니다. 프로그램 실행이 완료되면 다운로드 디렉토리가 이미지로 채워진 것을 볼 수 있습니다.​

그러나 이것은 원시 보안 문자 이미지 일뿐입니다. 훈련 세트를 만들기 위해 보안 문자의 각 숫자를 추출하고 레이블을 지정해야합니다. 이를 달성하기 위해 우리는 약간의 OpenCV 및 이미지 처리 기술을 사용하여 작업을 더 쉽게 만들 것입니다

AI artificial intelligence keras tensorflow CNN RNN deep learning pytorch ILSVRC 학습 captcha 캡차 무력화

지금까지 우리는 미리 컴파일되고 레이블이 지정된 데이터 세트로 작업했습니다.하지만 자체 사용자 지정 데이터 세트를 만든 다음 여기에서 CNN을 교육하려면 어떻게 해야 할까요? 이 장에서는 다음과 같은 예를 제공하는 완전한 딥러닝 사례를 제시합니다.

1. 이미지 세트 다운로드.

2. 교육을 위해 이미지에 레이블을 지정하고 주석을 추가합니다.

3. 사용자 지정 데이터 세트에서 CNN을 훈련합니다.

4. 훈련 된 CNN을 평가하고 테스트합니다.

다운로드 할 이미지 데이터 세트는 봇이 특정 웹 사이트에 자동으로 등록하거나 로그인하는 것을 방지하는 데 사용되는 보안 문자 이미지 세트입니다 (또는 더 나쁜 경우에는 다른 사람의 계정에 무차별 대입하려는 시도).

보안 문자 이미지 세트를 다운로드 한 후에는 보안 문자의 각 숫자에 수동으로 레이블을 지정해야합니다. 알게 되겠지만 데이터 세트를 얻고 라벨을 지정하는 것은 작업의 절반이 될 수 있습니다. 필요한 데이터의 양, 얻는 것이 얼마나 쉬운 지, 데이터에 레이블을 지정해야하는지 (예 : 이미지에 실제 레이블 지정) 여부에 따라 비용이 많이 드는 프로세스가 될 수 있습니다.

따라서 가능할 때마다 전통적인 컴퓨터 비전 기술을 사용하여 라벨링 프로세스의 속도를 높이려고 합니다. 이 장에서 Photoshop 또는 GIMP와 같은 이미지 처리 소프트웨어를 사용하여 captcha 이미지에서 숫자를 수동으로 추출하여 교육 세트를 만드는 경우 작업을 완료하는 데 며칠이 걸릴 수 있습니다.

그러나 몇 가지 기본적인 컴퓨터 비전 기술을 적용하면 한 시간 이내에 교육 세트를 다운로드하고 레이블을 지정할 수 있습니다. 이것이 제가 딥 러닝 실무자들에게 컴퓨터 비전 교육에 투자하도록 권장하는 여러 이유 중 하나입니다. 컴퓨터 비전에 적용되는 딥 러닝 마스터에 대해 진지하게 생각한다면 더 넓은 컴퓨터 비전 및 이미지의 기본 사항을 배우는 것이 좋습니다.

또한 실제 데이터 세트는 MNIST, CIFAR-10 및 ImageNet과 같은 벤치 마크 데이터 세트와 다릅니다. MNIST, CIFAR-10, ImageNet 등의 벤치 마크 데이터 세트는 이미지가 깔끔하게 분류되고 구성되고 평가할 수 있습니다. 이러한 벤치 마크 데이터 세트는 도전적 일 수 있지만 실제로는 (레이블이있는) 데이터 자체를 얻는 것이 쉽지 않습니다. 대부분의 경우 레이블이 지정된 데이터는 네트워크를 학습하여 얻은 딥러닝 모델보다 훨씬 더 가치가 있습니다.

예를 들어, 미국 정부를 위해 사용자 지정 자동 번호판 인식 (ANPR) 시스템을 만드는 회사를 운영하고 있다면 견고하고 방대한 데이터 세트를 구축하는 동시에 여러 딥러닝 접근 방식을 평가할 수 있습니다. 이렇게 레이블이 지정된 대규모 데이터 세트를 축적하면 다른 회사에 비해 경쟁력을 확보 할 수 있습니다.이 경우 데이터 자체가 최종 제품보다 더 가치가 있습니다. 레이블이 지정된 방대한 데이터 세트에 대한 독점적 권리 때문에 귀사가 인수 될 가능성이 더 높습니다.

번호판을 인식하는 놀라운 딥 러닝 모델을 구축하면 회사의 가치가 증가 할 뿐이지만 레이블이 지정된 데이터는 확보하고 복제하는 데 비용이 많이 들기 때문에 복제하기 어려운 (불가능하지는 않지만) 데이터 세트에 대한 키를 소유 하고있는 경우 회사의 주요 자산은 딥 러닝이 아니라 데이터입니다. 이 장의 나머지 부분에서는 이미지 데이터 세트를 얻고 레이블을 지정한 다음 딥 러닝을 적용하여 보안 문자 시스템을 뚷는 방법을 살펴 보겠습니다.

이 장은 체계적이고 읽기 쉽게 유지하기 위해 여러 부분으로 나뉩니다. 첫 번째 섹션에서는 우리가 작업하고있는 보안 문자 데이터 세트에 대해 논의하고 책임있는 공개의 개념에 대해 논의합니다. 컴퓨터 보안이 관련 될 때 항상해야 할 일입니다.

거기에서 우리 프로젝트의 디렉토리 구조에 대해 논의합니다. 그런 다음 학습 및 평가에 사용할 이미지 세트를 자동으로 다운로드하는 Python 스크립트를 만듭니다. 이미지를 다운로드 한 후에는 약간의 컴퓨터 비전을 사용하여 이미지에 레이블을 지정하는 데 도움을 주어야합니다. GIMP 또는 Photoshop과 같은 사진 소프트웨어 내에서 단순히 자르고 레이블을 지정하는 것보다 프로세스가 훨씬 쉽고 훨씬 빨라집니다. 데이터에 레이블을 지정하고 나면 LeNet 아키텍처를 교육 할 것입니다. 나중에 알게 되겠지만 보안 문자 시스템을 깨고 15 세대 미만으로 100 % 정확도를 얻을 수 있습니다.

참고 사항

책임있는 공개는 취약성을 공개하는 방법을 설명하는 컴퓨터 보안 용어입니다. 위협이 감지 된 직후 모든 사람이 볼 수 있도록 인터넷에 게시하는 대신 먼저 이해 관계자와 연락하여 문제가 있음을 확인합니다. 그런 다음 이해 관계자는 소프트웨어 패치를 시도하고 취약성을 해결할 수 있습니다. 단순히 취약성을 무시하고 문제를 숨기는 것은 잘못된 보안이므로 피해야합니다. 이상적인 세상에서는 취약점이 공개되기 전에 해결됩니다. 그러나 이해 관계자가 문제를 인정하지 않거나 적절한 시간 내에 문제를 해결하지 않으면 윤리적 수수께끼가 발생합니다.

이 지식은 어떠한 경우에도 사악하거나 비 윤리적 인 이유로 사용되어서는 안됩니다. 이 사례 연구는 사용자 지정 데이터 세트를 얻고 레이블을 지정하고 그 위에 딥 러닝 모델을 훈련시키는 방법을 보여주는 방법으로 존재합니다.​

캡쳐 무력화 디렉토리 구조

보안 문자 무력화 시스템을 구축하려면 utils 하위 모듈을 업데이트하고 captchahelper.py라는 새 파일을 포함해야 합니다.​

이 파일은 숫자를 심층 신경망에 공급하기 전에 숫자를 처리하는 데 도움이되는 preprocess라는 유틸리티 함수를 저장합니다. 또한 임의로 모듈 외부에 captcha_breaker라는 두 번째 디렉터리를 만들고 다음 파일과 하위 디렉터리를 포함합니다.​

captcha_breaker 디렉토리는 이미지 캡차를 깨기 위해 모든 프로젝트 코드가 저장되는 곳입니다. 데이터 세트 디렉토리는 레이블이 지정된 숫자를 저장하는 곳입니다. 다음 디렉터리 구조 템플릿을 사용하여 데이터 세트를 구성하는 것을 선호합니다.

따라서 데이터 세트 디렉토리는 다음과 같은 구조를 갖습니다.​

데이터 세트가 루트 디렉토리 인 경우 {1-9}는 가능한 숫자 이름이며 example.jpg는 주어진 숫자의 예입니다. 다운로드 디렉토리에는 E-ZPass 웹 사이트에서 다운로드 한 원시 captcha .jpg 파일이 저장됩니다. 출력 디렉토리 안에 훈련 된 LeNet 아키텍처를 저장합니다. 이름에서 알 수 있듯이 download_images.py 스크립트는 실제로 예제 캡차를 다운로드하여 디스크에 저장하는 역할을합니다.

캡차 세트를 다운로드 한 후에는 각 이미지에서 숫자를 추출하고 모든 숫자에 수동으로 라벨을 지정해야합니다. 이는 annotate.py로 수행됩니다.

train_model.py 스크립트는 레이블이 지정된 숫자에서 LeNet을 훈련시키는 반면 test_model.py는 LeNet을 captcha 이미지 자체에 적용합니다.

Smile CNN deep learning python RNN ILSVRC

이제 모델을 학습 했으므로 다음 단계는 웹캠 / 비디오 파일에 액세스하고 각 프레임에 미소 감지를 적용하는 Python 스크립트를 빌드하는 것입니다. 이 단계를 수행하려면 새 파일을 열고 detect_smile.py라는 이름을 지정하면 작업을 시작합니다.

2-7 행은 필수 Python 패키지를 가져옵니다. img_to_array 함수는 비디오 스트림의 각 개별 프레임을 적절한 채널 순서 배열로 변환하는 데 사용됩니다. load_model 함수는 훈련 된 LeNet 모델의 가중치를 디스크에서 로드하는 데 사용됩니다. detectsmile.py 스크립트에는 두 개의 명령 줄 인수와 세 번째 선택적 인수가 필요합니다

첫 번째 인수 인 –cascade는 이미지에서 얼굴을 감지하는 데 사용되는 Haar 캐스케이드의 경로입니다. Paul Viola와 Michael Jones가 2001 년에 처음 발표한 논문 Rapid Object Detection using a Boosted Cascade of Simple Features 에서 언급되었으며, 이 출판물은 컴퓨터 비전 문헌에서 가장 많이 인용되는 논문 중 하나가되었습니다.

Haar 캐스케이드 알고리즘은 위치와 크기에 관계없이 이미지에서 물체를 감지 할 수 있습니다. 아마도 가장 흥미롭고 (그리고 우리 애플리케이션과 관련이있는) 감지기는 최신 하드웨어에서 실시간으로 실행될 수 있습니다. 실제로 Viola와 Jones의 작업 뒤에있는 동기는 얼굴 감지기를 만드는 것이 었습니다. 기존의 컴퓨터 비전 방법을 사용한 물체 감지에 대한 자세한 검토는 이 책의 범위를 벗어나므로 객체 감지를위한 일반적인 Histogram of Oriented Gradients + Linear SVM 프레임 워크와 함께 Haar 캐스케이드를 검토해야합니다.

두 번째 공통 라인 인수 –model은 디스크에서 직렬화 된 LeNet 가중치에 대한 경로를 지정합니다. 스크립트는 기본적으로 USB 웹캠에서 프레임을 읽는 것입니다. 그러나 대신 파일에서 프레임을 읽으려면 선택적 –video 스위치를 통해 파일을 지정할 수 있습니다.

웃는 얼굴 감지하기 전에 먼저 몇 가지 초기화를 수행해야합니다.​

20과 21행은 각각 Haar 캐스케이드 얼굴 감지기와 사전 훈련된 LeNet 모델을 로드합니다. 비디오 경로가 제공되지 않은 경우 웹캠에 대한 포인터를 가져옵니다 (24 및 25 행). 그렇지 않으면 디스크의 비디오 파일에 대한 포인터를 엽니 다 (28 및 29 행).

이제 애플리케이션의 주요 처리 파이프 라인 입니다.

32 행은 (1) 스크립트를 중지하거나 (2) 비디오 파일의 끝에 도달 할 때까지 계속되는 루프를 시작합니다 (–video 경로가 적용된 경우).

34 행은 비디오 스트림에서 다음 프레임을 가져옵니다. 프레임을 잡을 수 없다면 비디오 파일의 끝에 도달 한 것입니다. 그렇지 않으면 300 픽셀 너비가 되도록 프레임 크기를 조정 (43 행)하고 그레이 스케일로 변환 (44 행)하여 얼굴 감지를 위해 프레임을 전처리합니다. ​

.detectMultiScale 메서드는 프레임에있는 면의 경계 상자 (x, y) 좌표 감지를 처리합니다.

여기에서 회색조 이미지를 전달하고 주어진 영역이 얼굴로 간주 되려면 최소 너비가 30×30 픽셀이어야 함을 나타냅니다. minNeighbors 속성은 거짓양성 값을 제거하는 데 도움이 되며 scaleFactor는 생성 된 이미지 피라미드 수를 제어합니다.

.detectMultiScale 메서드는 프레임에서 얼굴을 경계하는 사각형을 구성하는 4 개의 튜플 목록을 반환합니다. 이 목록의 처음 두 값은 시작 (x, y) 좌표입니다. rects list 두 번째 두 값은 각각 경계 상자(bounding box)의 너비와 높이입니다.

아래에서 각 bounding box 세트를 반복합니다.

각 경계 상자에 대해 NumPy 어레이 슬라이싱을 사용하여 얼굴 ROI를 추출합니다 (58 행).

ROI가 확보되면 크기를 조정하고, 크기를 조정하고, Keras와 호환되는 배열로 변환하고, 이미지를 추가 차원으로 채움 (59-62 행)으로써 LeNet을 통해 분류를 준비합니다.

ROI가 사전 처리되면 분류를 위해 LeNet을 통과 할 수 있습니다.

66 번 줄에서 .predict를 호출하면 각각 “not smiling”및 “smiling”확률이 반환됩니다. 67 행은 어떤 확률이 더 큰지에 따라 레이블을 설정합니다. 레이블이 있으면 프레임의 해당 경계 상자와 함께 레이블을 그릴 수 있습니다

마지막 코드 블록은 출력 프레임을 화면에 표시하는 작업을 처리합니다.

q 키를 누르면 스크립트를 종료합니다. 웹캠을 사용하여 detect_smile.py를 실행하려면 다음 명령을 실행하십시오.

대신 비디오 파일을 사용하려면 –video 스위치를 사용하도록 명령을 업데이트합니다.

아래 그림에 미소 감지 스크립트의 결과를 포함했습니다.

LeNet이 내 표정을 기반으로 “미소”또는 “미소”를 올바르게 예측하는 방법을 확인하십시오.

이 장에서는 미소 감지를 수행하기 위해 종단 간 컴퓨터 비전 및 딥 러닝 애플리케이션을 구축하는 방법을 배웠습니다. 이를 위해 먼저 SMILES 데이터 세트에서 LeNet 아키텍처를 훈련했습니다.

SMILES 데이터 세트의 클래스 불균형으로 인해 문제를 완화하는 데 사용되는 클래스 가중치를 계산하는 방법을 발견했습니다.

훈련을 마친 후 테스트 세트에서 LeNet을 평가 한 결과 네트워크가 93 %의 뛰어난 분류 정확도를 얻었습니다. 더 많은 훈련 데이터를 수집하거나 기존 훈련 데이터에 데이터 증가를 적용하면 더 높은 분류 정확도를 얻을 수 있습니다.

그런 다음 웹캠 / 비디오 파일에서 프레임을 읽고 얼굴을 감지 한 다음 사전 훈련 된 네트워크를 적용하는 Python 스크립트를 만들었습니다. 얼굴을 감지하기 위해 OpenCV의 Haar 캐스케이드를 사용했습니다. 얼굴이 감지되면 프레임에서 추출한 다음 LeNet을 통해 사람이 웃고 있는지 여부를 확인했습니다. 전반적으로 우리의 미소 감지 시스템은 최신 하드웨어를 사용하여 CPU에서 실시간으로 쉽게 실행할 수 있습니다.

딥러닝 AI artificial intelligence keras tensorflow CNN RNN deep learning pytorch ILSVRC 학습 smile 미소 인식

이 장에서는 전통적인 컴퓨터 비전 기술과 함께 딥 러닝을 사용하여 실시간으로 비디오 스트림에서 미소를 감지 할 수있는 완전한 end-to-end 애플리케이션을 구축 할 것입니다. 이 작업을 수행하기 위해 웃고, 있지 않은 사람들의 얼굴이 포함 된 이미지 데이터 세트에서 LetNet 아키텍처를 교육합니다. 네트워크가 훈련되면 별도의 Python 스크립트를 생성합니다.

이 스크립트는 OpenCV의 내장 Haar 캐스케이드 얼굴 감지기를 통해 이미지에서 얼굴을 감지하고 이미지에서 관심 영역 (ROI)을 추출한 다음 ROI를 미소 감지를 위해 LeNet을 통해 전달합니다.

이미지 분류를위한 실제 애플리케이션을 개발할 때 종종 기존의 컴퓨터 비전과 이미지 처리 기술을 딥 러닝과 혼합해야합니다. OpenCV 및 기타 컴퓨터 비전 기술에 대한 전체 검토는이 책의 범위를 벗어납니다. OpenCV 및 이미지 처리 기본 사항에 익숙해 지려면 OpenCV 다른 책을 읽어 보는 것이 좋습니다.

컴퓨터 비전 및 이미지 처리의 배경에 관계 없이 이 장을 마치면 자신의 응용 프로그램에서 사용할 수있는 완전한 미소 감지 솔루션을 사용합니다.

SMILES 데이터 세트는 웃거나 웃지 않는 얼굴의 이미지로 구성됩니다. 총 13,165 개의 그레이 스케일 이미지가 데이터 세트에 있으며 각 이미지의 크기는 64×64 픽셀입니다. 아래 그림에서 알 수 있듯이,이 데이터 세트의 이미지는 얼굴 주변에서 잘려서 입력 이미지에서 직접 “smiling”또는 “not smiling”패턴을 배울 수 있으므로 훈련 과정이 더 쉬워집니다. 이 책 앞부분의 유사한 작업을 했었던과 같습니다.

위 : “웃는”얼굴의 예. 아래 : “웃지 않는”얼굴 샘플. 이 장에서는 실시간 비디오 스트림에서 웃는 얼굴과 웃는 얼굴이 아닌 얼굴을 인식하는 컨볼 루션 신경망을 훈련 할 것입니다.

그러나 근접해 자르기는 테스트 중에 문제가됩니다. 입력 이미지에는 얼굴뿐만 아니라 이미지의 배경도 포함되므로 먼저 이미지에서 얼굴을 로컬라이즈 하기 전에 얼굴 ROI를 추출해야합니다. 운 좋게도 Haar cascades와 같은 전통적인 컴퓨터 비전 방법을 사용하면 생각보다 훨씬 쉬운 작업입니다.

SMILES 데이터 세트에서 처리해야하는 두 번째 문제는 클래스 불균형입니다. 데이터 세트에 13,165 개의 이미지가 있지만 이 예제 중 9,475 개는 not smiling이고 3,690 개만 smiling 클래스에 속합니다. “smiling”예제보다 “not smiling” 이미지의 수가 2.5 배 이상이라는 점을 감안할 때, 우리는 훈련 절차를 고안 할 때 주의해야합니다.

우리의 네트워크는 자연스럽게 “not smiling”레이블을 선택할 수 있습니다. 왜냐하면 (1) 분포가 고르지 않고 (2) “not smiling” 얼굴이 어떻게 생겼는지에 대한 더 많은 예가 있기 때문입니다.이 장의 뒷 부분에서 훈련 시간 동안 각 클래스의 “weight”를 계산하여 클래스 불균형을 해결할 수 있습니다.


데이터셋 위치 : https://github.com/hromi/SMILEsmileDhromi/SMILEsmileDopen source smile detector haarcascade and associated positive & negative image datasets – hromi/SMILEsmileDgithub.com

미소 감지기를 구축하는 첫 번째 단계는 SMILES 데이터 세트에서 CNN을 훈련하여 미소 짓는 얼굴과 미소 짓지 않는 얼굴을 구분하는 것입니다. 이 작업을 수행하기 위해 train_model.py라는 새 파일을 만들어 보겠습니다. 다음 코드를 삽입하십시오.

2 ~ 14 행은 필수 Python 패키지를 가져옵니다. 이전에 모든 패키지를 사용했지만 LeNet (14 장) 클래스를 가져 오는 7행 에 주의 하십시오. 이것이 스마일 감지기를 만들 때 사용할 아키텍처입니다. 다음으로 명령 줄 인수를 구문 분석해 보겠습니다.

스크립트에는 두 개의 명령 줄 인수가 필요하며, 각 인수는 아래에서 자세히 설명합니다.

1. –dataset : 디스크에있는 SMILES 디렉토리의 경로입니다.

2. –model : 훈련 후 직렬화 된 LeNet 가중치가 저장되는 경로입니다. 이제 디스크에서 SMILES 데이터 세트를 로드하여 메모리에 저장할 준비가되었습니다.

29 행에서는 –dataset 입력 디렉토리의 모든 이미지를 반복합니다. 이러한 각 이미지에 대해 다음을 수행합니다.

1. 디스크에서 로드합니다 (31 행).

2. 그레이 스케일로 변환합니다 (32 행).

3. 고정 입력 크기가 28 × 28 픽셀 (33 행)이 되도록 크기를 조정합니다.

4. 이미지를 Keras 및 채널 순서와 호환되는 배열로 변환합니다 (34 행).

5. LeNet이 학습 할 데이터 목록에 이미지를 추가합니다.

39-41 행은 imagePath에서 클래스 레이블을 추출하고 레이블 목록을 업데이트합니다. SMILES 데이터 세트는 웃는 얼굴을 SMILES / positives / positives7 하위 디렉토리에 저장하고 웃는 얼굴이 아닌 경우 SMILES / negatives / negatives7 하위 디렉토리에 있습니다.

따라서 이미지 경로를 보면 :

이미지 경로 구분자를 분할하고 마지막에서 세 번째 하위 디렉토리 인 positives를 잡아서 클래스 레이블을 추출 할 수 있습니다. 이 역할은 39행이 수행합니다.

이제 데이터와 레이블이 구성되었으므로 원시 픽셀 강도를 [0,1] 범위로 확장 한 다음 레이블에 원-핫 인코딩을 적용 할 수 있습니다

다음 코드 블록은 클래스 가중치를 계산하여 데이터 불균형 문제를 처리합니다.​

52 행은 클래스 당 총 예제 수를 계산합니다. 이 경우 classTotals는 각각 “not smiling”및 “smiling”에 대한 [9475, 3690] array가 됩니다. 그런 다음 53 행에서 이 합계를 조정하여 클래스 불균형을 처리하는 데 사용되는 classWeight를 구하여 [1, 2.56] 배열을 생성합니다. 이 가중치는 우리 네트워크가 모든 “smiling” 인스턴스를 2.56 개의 “not smiling”인스턴스로 취급하고 “smiling” 예제를 볼 때 인스턴스 당 손실을 더 큰 가중치로 확대하여 클래스 불균형 문제를 해결하는 데 도움이 된다는 것을 의미합니다.

클래스 가중치를 계산 했으므로 이제 데이터의 80 %를 학습에 사용하고 20 %를 테스트에 사용하여 데이터를 학습 및 테스트 분할로 분할 할 수 있습니다.

이제 LeNet으로 학습합니다.

62행은 28 × 28 단일 채널 이미지를 수용하는 LeNet 아키텍처를 초기화합니다. 두 개의 클래스 (smiling 또는 not smiling)만 있다는 점을 감안할 때 classes = 2를 설정합니다.

또한 손실 함수로 categorical_crossentropy 대신 binary_crossentropy를 사용할 것입니다. 다시 말하지만 범주형 교차 엔트로피는 클래스 수가 2 개 이상일 때만 사용됩니다.

지금까지 우리는 네트워크를 훈련하기 위해 SGD 최적화 프로그램을 사용해 왔습니다. 여기서는 Adam (63 행)을 사용합니다. 더 진보 된 옵티 마이저 (Adam, RMSprop, Adadelta 포함)는 나중에 다룹니다. 그러나 이 예제에서는 Adam이 특정 상황에서 SGD보다 빠르게 수렴 할 수 있다는 것만 이해하면 됩니다.

다시 말하지만, 옵티마이저 및 관련 매개 변수는 종종 네트워크를 훈련 할 때 조정해야 하는 초 매개 변수로 간주됩니다. 이 예제를 종합했을 때 Adam이 SGD보다 훨씬 더 나은 성과를 냈다는 것을 알게 되었습니다. 68과 69행은 클래스 불균형에 맞서기 위해 제공된 classWeight를 사용하여 총 15 epoch 동안 LeNet을 훈련시킵니다.

네트워크가 훈련되면 이를 평가하고 가중치를 디스크에 직렬화 할 수 있습니다.

또한 성능을 시각화 할 수 있도록 네트워크에 대한 학습 곡선을 구성 할 것입니다.​

스마일 감지기를 훈련 시키려면 다음 명령을 실행하십시오.​

15 epoch 후에 네트워크가 93 %의 분류 정확도를 얻고 있음을 알 수 있습니다. 아래 그림은 학습 곡선을 나타냅니다.

6 epoch 이후의 validation loss가 정체되기 시작합니다. 15 epoch 이후의 추가 훈련은 과적합을 초래합니다. 원하는 경우 다음과 같은 방법으로 더 많은 훈련 데이터를 사용하여 미소 감지기의 정확도를 향상시킬 수 있습니다.

1. 추가 훈련 데이터 수집.

2. 데이터 증가를 적용하여 기존 훈련 세트를 무작위로 변환, 회전 및 이동합니다. 데이터 증대는 나중에 자세히 다룹니다.

Flower-17 convolution neural networks minivggne

이 예에서는 이전 섹션과 동일한 학습 프로세스의 예를 하나만 추가하여 적용 할 것입니다. 데이터 augmentaion을 적용 할 것입니다. 데이터 augmentaion이 과적합을 방지하면서 분류 정확도를 높이는 방법을 확인하려면 새 파일을 열고 이름을 minivggnet_flowers17_data_aug.py로 지정한 다음 작업을 시작해 보겠습니다.

import는 데이터 증가에 사용되는 ImageDataGenerator 클래스를 가져 오는 9 행을 제외하고 minivggnet_flowers17.py에서와 동일합니다. 다음으로 명령 줄 인수를 구문 분석하고 이미지 경로에서 클래스 이름을 추출해 보겠습니다.

디스크에서 데이터 세트를로드하고 학습 / 테스트 분할을 구성하고 라벨을 인코딩합니다.

다음 코드 블록은 ImageDataGenerator를 초기화하므로 매우 중요합니다.

여기에서 이미지를 다음과 같이 설정할 수 있습니다.

1. 무작위로 ± 30도 회전

2. 수평 및 수직으로 0.2 배 이동

3. 0.2만큼 기울임

4. [0.8, 1.2] 범위에서 균일하게 샘플링하여 확대 / 축소

5. 무작위 수평으로 플립

정확한 데이터 세트에 따라 이러한 데이터 증가 값을 조정하고 싶을 것입니다. 응용 프로그램에 따라 [10,30] 사이의 회전 범위를 보는 것이 일반적입니다. 수평 및 수직 이동은 일반적으로 [0.1,0.2] 범위에 속합니다 (확대 / 축소 값도 동일). 이미지를 수평으로 뒤집 으면 클래스 레이블이 변경되지 않는 한 항상 수평 뒤집기를 포함해야합니다.

이전 실험에서와 같이 SGD 최적화 프로그램을 사용하여 MiniVGGNet을 학습합니다.

네트워크 훈련에 사용되는 코드는 이제 이미지 생성기를 사용하고 있으므로 약간 변경해야합니다

모델의 .fit 메서드를 호출하는 대신 이제 .fit_generator를 호출해야합니다. .fit_generator의 첫 번째 매개 변수는 훈련 데이터에서 새로운 훈련 샘플을 생성하는 데 사용되는 데이터 증가 함수 인 aug.flow입니다. aug.flow에서는 학습 데이터와 해당 레이블을 전달해야합니다. 또한 생성기가 네트워크를 훈련 할 때 적절한 배치를 구성 할 수 있도록 배치 크기를 제공해야합니다.

그런 다음 validation_data를 (testX, testY)의 2- 튜플로 제공합니다.이 데이터는 모든 epoch이 끝날 때 유효성 검사에 사용됩니다. steps_per_epoch 매개 변수는 epoch 당 배치 수를 제어합니다. 총 훈련 샘플 수를 배치 크기로 나누고 정수로 변환하여 적절한 steps_per_epoch 값을 프로그래밍 방식으로 결정할 수 있습니다. 마지막으로 epochs는 네트워크가 훈련되어야하는 총 epoch 수를 제어합니다 (이 경우 100 epoch). 네트워크를 훈련 한 후 이를 평가하고 해당 정확도 / 손실 플롯을 플로팅합니다

검증 데이터에 데이터 증가를 적용하지 않는 방법에 주목하십시오. 훈련 세트에만 데이터 증대를 적용합니다. 데이터 증가를 사용하여 Flowers-17에서 MiniVGGNet을 훈련하려면 다음 명령을 실행하십시오.

네트워크가 훈련을 마치면 즉시 정확도가 64 %에서 71 %로 증가하여 이전 실행보다 10.9 % 향상되었음을 알 수 있습니다. 그러나 정확성이 전부는 아닙니다. 실제 문제는 데이터 증대가 과적 합을 방지하는 데 도움이되었는지 여부입니다. 이 질문에 답하려면 아래 그림의 손실 및 정확도 플롯을 조사해야합니다.

MiniVGGNet을 데이터 증가로 Flowers-17에 적용합니다. 과적합은 여전히 ​​문제입니다. 그러나 우리는 상당히 높은 분류 정확도와 낮은 손실을 얻을 수 있습니다.

여전히 과적합이 발생하고 있지만 데이터 증가를 사용하면 그 효과가 크게 감소합니다. 다시 말하지만,이 두 실험은 동일하다는 점을 명심하십시오. 우리가 만든 유일한 변경 사항은 데이터 증대 적용 여부 였습니다. 정규화에 영향을 미치는 데이터 증대를 확인할 수도 있습니다. 우리는 검증 정확도를 높일 수 있었기 때문에 훈련 정확도가 낮아 졌음에도 불구하고 모델의 일반화 가능성을 개선 할 수있었습니다.

시간이 지남에 따라 학습률을 감소 시키면 더 많은 정확도를 얻을 수 있습니다. 학습률은 이 장에서 특별히 제외되었으므로 Convolutional Neural Networks를 훈련 할 때 정규화자가 갖는 영향 데이터 증가에만 집중 하도록 합니다.

데이터 augmentation은 훈련 데이터에서 작동하는 정규화 기법의 한 유형입니다. 이름에서 알 수 있듯이 데이터 augmentation은 일련의 무작위 변환, 회전, 전단 및 뒤집기를 적용하여 훈련 데이터를 무작위로 변환합니다. 이러한 단순 변환을 적용해도 입력 이미지의 클래스 레이블은 변경되지 않습니다. 그러나 각 augmentation 이미지는 훈련 알고리즘이 이전에 보지 못했던 “새로운”이미지로 간주 될 수 있습니다. 따라서 우리의 훈련 알고리즘은 새로운 훈련 샘플과 함께 지속적으로 제공되어 더 강력하고 차별적인 패턴을 학습 할 수 있습니다.

결과에서 알 수 있듯이 데이터 증가를 적용하면 분류 정확도가 향상되는 동시에 과적합의 영향을 완화하는 데 도움이됩니다. 또한 데이터 증대를 통해 클래스 당 60 개의 샘플에 대해서만 Convolutional Neural Network를 훈련시킬 수있었습니다. 이는 클래스 당 제안 된 1,000 ~ 5,000 개 샘플보다 훨씬 적습니다.

“자연스러운”교육 샘플을 수집하는 것이 항상 더 좋지만, 데이터 확대는 작은 데이터 세트 제한을 극복하는 데 사용할 수 있습니다. 자신의 실험에 관해서는 실행하는 거의 모든 실험에 데이터 augmentation을 적용해야합니다. CPU가 입력을 무작위로 변환하는 룰이 있기 때문에 약간의 성능 저하가 있습니다. 그러나 이 성능 저하는 스레딩을 사용하고 네트워크 훈련을 담당하는 스레드로 전달되기 전에 백그라운드에서 데이터를 보강하여 완화됩니다.

시간을내어 이 기술에 익숙해지면 더 나은 성능의 딥 러닝 모델 (더 적은 데이터 사용)을 더 빨리 얻을 수 있습니다.