আমার একাধিক চিত্রের ডায়াগ্রাম রয়েছে, যার মধ্যে কেবলমাত্র লেবেল লেবেলের পরিবর্তে বর্ণচিহ্ন হিসাবে লেবেল রয়েছে। আমি চাই আমার YOLO মডেলটি এতে উপস্থিত সমস্ত নম্বর এবং বর্ণচিহ্নগুলি সনাক্ত করতে পারে।
আমি কীভাবে আমার ইওলো মডেলটিকে প্রশিক্ষণ দিতে পারি। ডেটাসেটটি এখানে পাওয়া যাবে। https://drive.google.com/open?id=1iEkGcreFaBIJqUdAADDXJbUrSj99bvoi
উদাহরণস্বরূপ: সীমাবদ্ধ বাক্সগুলি দেখুন। আমি চাই যে পাঠ্য উপস্থিত রয়েছে সেখানে যোলো সনাক্ত করতে পারে। তবে বর্তমানে এটির ভিতরে লেখাটি সনাক্ত করার প্রয়োজন নেই।
এছাড়াও এই ধরণের চিত্রগুলির জন্য একই কাজ করা দরকার
ছবিগুলি এখানে ডাউনলোড করা যায়
এটি আমি ওপেনসিভি ব্যবহার করার চেষ্টা করেছি কিন্তু এটি ডেটাসেটের সমস্ত চিত্রের জন্য কাজ করে না।
import cv2
import numpy as np
import pytesseract
pytesseract.pytesseract.tesseract_cmd = r"C:\Users\HPO2KOR\AppData\Local\Tesseract-OCR\tesseract.exe"
image = cv2.imread(r'C:\Users\HPO2KOR\Desktop\Work\venv\Patent\PARTICULATE DETECTOR\PD4.png')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]
clean = thresh.copy()
horizontal_kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (15,1))
detect_horizontal = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, horizontal_kernel, iterations=2)
cnts = cv2.findContours(detect_horizontal, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cnts = cnts[0] if len(cnts) == 2 else cnts[1]
for c in cnts:
cv2.drawContours(clean, [c], -1, 0, 3)
vertical_kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (1,30))
detect_vertical = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, vertical_kernel, iterations=2)
cnts = cv2.findContours(detect_vertical, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cnts = cnts[0] if len(cnts) == 2 else cnts[1]
for c in cnts:
cv2.drawContours(clean, [c], -1, 0, 3)
cnts = cv2.findContours(clean, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cnts = cnts[0] if len(cnts) == 2 else cnts[1]
for c in cnts:
area = cv2.contourArea(c)
if area < 100:
cv2.drawContours(clean, [c], -1, 0, 3)
elif area > 1000:
cv2.drawContours(clean, [c], -1, 0, -1)
peri = cv2.arcLength(c, True)
approx = cv2.approxPolyDP(c, 0.02 * peri, True)
x,y,w,h = cv2.boundingRect(c)
if len(approx) == 4:
cv2.rectangle(clean, (x, y), (x + w, y + h), 0, -1)
open_kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (2,2))
opening = cv2.morphologyEx(clean, cv2.MORPH_OPEN, open_kernel, iterations=2)
close_kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3,2))
close = cv2.morphologyEx(opening, cv2.MORPH_CLOSE, close_kernel, iterations=4)
cnts = cv2.findContours(close, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cnts = cnts[0] if len(cnts) == 2 else cnts[1]
for c in cnts:
x,y,w,h = cv2.boundingRect(c)
area = cv2.contourArea(c)
if area > 500:
ROI = image[y:y+h, x:x+w]
ROI = cv2.GaussianBlur(ROI, (3,3), 0)
data = pytesseract.image_to_string(ROI, lang='eng',config='--psm 6')
if data.isalnum():
cv2.rectangle(image, (x, y), (x + w, y + h), (36,255,12), 2)
print(data)
cv2.imwrite('image.png', image)
cv2.imwrite('clean.png', clean)
cv2.imwrite('close.png', close)
cv2.imwrite('opening.png', opening)
cv2.waitKey()
এমন কোনও মডেল বা কোনও ওপেনসিভি কৌশল বা কিছু প্রাক প্রশিক্ষিত মডেল আমার জন্য একই কাজ করতে পারে? আমাকে কেবল চিত্রগুলিতে উপস্থিত সমস্ত বর্ণানুক্রমিক অক্ষরের চারদিকে বাউন্ডিং বাক্সগুলি দরকার। তারপরে আমার এতে উপস্থিত থাকাগুলি সনাক্ত করতে হবে। তবে দ্বিতীয় অংশটি বর্তমানে গুরুত্বপূর্ণ নয়।