3월, 2019의 게시물 표시

YOLO(영상처리)와 6DoF 로봇 팔(window)

이미지
➢ 전에 사용한 tensorflow가 아닌 YOLO( You Only Look Once)를 사용하여 영상을 촬영하고 미리 학습시켜둔 이미지와 매칭하여 물체를 찾는 방법을 사용했다. 공식 홈페이지 :  https://pjreddie.com/darknet/yolo/ ➢ 기존 다른 Object Detection보다 처리 속도가 빠르다. ➢ YOLO 설치는  https://github.com/AlexeyAB/darknet#how-to-train-to-detect-your-custom-objects  를 참고하여 설치를 진행하였다. ➢ 각자 원하는 환경과 구성된 환경이 다르기에 설치 시 설정를 정확히 해야한다. 나는 opencv와 cuda가 깔려 있는 상황에서 설치를 시작하였다. 확인후 설치를 시작한다. ✫gpu를 사용한다면 cuda 설치를 해주어야 하며 이때가 가장 중요하다. cuda는 각 gpu가 지원하는 드라이버가 다른데 nvidia 홈페이지에서 자신에게 맞는 드라이버를 선택하고 설치를 하여야 한다. (지금은 환경은 window지만 ubuntu 환경에서 설치시에 고생을 많이 했다.) https://www.nvidia.com/Download/Find.aspx?lang=en-us 에서 자신에게 맞는 드라이버를 선택하여 설치를 하여주면 된다. ➢ 다운로드 후 컴파일은  https://github.com/AlexeyAB/darknet#how-to-compile-on-windows-legacy-way  방법을 사용했다. ➢컴파일도 완료하였으면 이제 training을 실시하여야 한다. training에 필요한 사진은 많으면 많을 수록 좋으며, 다양한 환경(다른 색의 배경 및 바닥, 다른 밝기의 조명)에서 찍은 사진이 많을 수록 좋은 것으로 보인다. 수는 최소 200장 정도 하면 적당한 것으로 생각된다. 필요한 사진들을 수집 완료 했으면 각 사진에 자신이 원하는 이미지를 마킹 해 주어야 한다.  https://g

6축 로봇 팔

이미지
➢ 6축 로봇팔 제어 로봇팔은 각 낱개의 부품 형태로 배송되어짐. 조립은 동봉된 조립도를 보고 조립. ➢ 로봇팔의 구동 범위가 어디서부터 어디까지 구동 되는지 먼저 조사한다. ➢ 소스 #include <Servo.h> #define NO_OF_FIELDS 6 Servo base, shoulder, foreArm, wristFlex, wristRotate, claw; int inCommand[NO_OF_FIELDS]; int ledPin = 13; void EchoData(int echoWord[]) {  Serial.print("*");  float total;  for (int i = 0; i < NO_OF_FIELDS; i++)  {   Serial.print((int)echoWord[i]);    total+= inCommand[i];   Serial.print(",");  }  Serial.print((int)total);  Serial.print(",");  Serial.print("*");  Serial.print("&"); } void ClearOldData(int oldData[]) {  for (int i = 0; i < NO_OF_FIELDS; i++)  {   oldData[i] = 0;  } } void setup() {  Serial. begin(38400);  base.attach(3);  shoulder.attach(5);  foreArm.attach(6);  wristFlex.attach(9);  wristRotate.attach(10);  claw.attach(11);  //initialise all arms   base.write(2

Tensorflow Object_detect

이미지
➢ Object Detecting을 실행하기전 자신이 원하는 사진들을 찍어둔다. 사진은 많으면 많을 수록 좋으며 200장 이상 그리고 다른 배경에서 찍은 사진일수록 좋다. (찍어둔 사진들은 임의의 폴더를 만들고 그 안에 train폴더와 test폴더를 만들어 준다.) (.csv 파일은 아래 xml_to_csv.py 실행 시 생성된다.) ➢ 사진을 찍었으면 각 이미지에서 원하는 이미지를 박싱하여 라벨을 붙여 주어야 한다. 프로그램은 labelImg를 사용하였다. ➢ 각 이미지 마다 라벨링을 완료하였으면 맞지 않는 사이즈가 있을 수 있기에 사이즈 체크를 하여준다. $ cd tensorflow1/models/research/object_detection $ python3 sizeChecker.py  --move (뒤에 붙은 --move는 옵션이기에 빼주어도 상관없으며, --move 입력시 worng 폴더가 만들어지며 이 폴더 안에 맞지 않는 사진들이 들어간다.) (sizeChecker.py의 소스코드 중 디렉토리를 이미지가 저장되어 있는 폴더로 변경하여 주어야한다.) ➢ 사이즈 확인후 .xml 파일을 만들어 준다. $ python3 xml_to_csv.py (xml_to_csv.py 안에는 실행시 어디에 파일은 만들지에 대한 디렉토리가 있기에 사용자에 따라서 바꾸거나 그대로 둔다. 나는 내 임의의 경로로 새로 설정하여 주었다.) ➢ generate_tfrecord.py를 실행하여 준다. (실행전 파일에서 라벨 수와 이름을 변경하여 주어야 한다.) python3 generate_tfrecord.py --csv_input=images\train_labels.csv --image_dir=images\train --output_path=train.record python3 generate_tfrecord.py --csv_input=images\test_labels.csv --image_dir=images\te

Ubuntu(18.04)에 tensorflow 설치

➢Tensorflow를 설치하기 전 ubuntu를 업데이트와 업그레이드 해준다. $ sudo apt-get update $ sudo apt-get upgrade ➢OpenCV 설치 $ sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev $ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev $ sudo apt-get install libxvidcore-dev libx264-dev $ pip3 install opencv-python ➢Tensorflow설치 및 PATH설정 $ pip3 install tensorflow $ mkdir tensorflow1 $ cd tensorflow1 $ git clone --recurse-submodules https://github.com/tensorflow/models.git $ sudo nano ~/.bashrc 마지막 줄에 export PYTHONPATH=$PYTHONPATH:/home/user/tensorflow1/models/research:/home/user/tensorflow1/models/research/slim 추가 ➢Protobuf tensorflow1/models/research에서 실행 $  protoc --python_out=. .\object_detection\protos\anchor_generator.proto .\object_detection\protos\argmax_matcher.proto .\object_detection\protos\bipartite_matcher.proto .\object_detection\protos\box_coder.proto .\object_detection\protos\box_predictor.proto .\object_detection\protos\eval.pr